Ravindra BagaleCourses & study guides English

AWS CLI API Gateway Commands: REST आणि HTTP API बनवा

आपल्या code ला पुढचा दरवाजा: एका command मध्ये Lambda साठी HTTP API, मग routes, stages आणि classic REST API step by step.

या chapter मध्ये तुम्ही काय शिकाल

  • HTTP API quick-create
  • Routes आणि integrations
  • Stages वापरा
  • Resources सह REST API
  • Test आणि cleanup

1. मोठं चित्र: reception desk

हे का लागतं?

Office reception प्रत्येक visitor घेते, check करते, योग्य cabin ला पाठवते. API Gateway प्रत्येक HTTP request योग्य Lambda किंवा URL ला पाठवतो.

हे काय आहे?

HTTP APIs aws apigatewayv2 (स्वस्त, सोपे). REST APIs aws apigateway (API keys, usage plans, validation).

कसं करायचं (step by step)

API workflowLambda function तयार--target सह create-apiapigateway साठी add-permissionendpoint curl कराroutes / stages जोडा
add-permission नसेल तर 500 error.

2. HTTP API quick-create

हे का लागतं?

Lambda आहे, एका मिनिटात public URL हवा.

हे काय आहे?

--target सह create-api API, default route, integration आणि $default stage एकत्र बनवतो.

कसं करायचं (step by step)

  1. Function साठी API बनवा.
FN=arn:aws:lambda:ap-south-1:111122223333:function:cli-hello
API=$(aws apigatewayv2 create-api --name cli-http --protocol-type HTTP --target $FN --query ApiId --output text)
echo $API

अपेक्षित output:

a1b2c3d4e5
  1. API Gateway ला invoke ची permission.
aws lambda add-permission --function-name cli-hello --statement-id apigw --action lambda:InvokeFunction --principal apigateway.amazonaws.com --source-arn "arn:aws:execute-api:ap-south-1:111122223333:$API/*" --query Statement --output text

अपेक्षित output:

{"Sid":"apigw","Effect":"Allow",...}
  1. Call करा.
curl -s https://$API.execute-api.ap-south-1.amazonaws.com/

अपेक्षित output:

{"msg": "hello world"}

3. Routes आणि integrations

हे का लागतं?

वेगवेगळे paths वेगवेगळ्या code ला: GET /users, POST /orders.

हे काय आहे?

Integration सांगतो कुठे पाठवायचं. "GET /users" सारखा route key integration ला point करतो.

कसं करायचं (step by step)

  1. Integration बनवा.
INT=$(aws apigatewayv2 create-integration --api-id $API --integration-type AWS_PROXY --integration-uri $FN --payload-format-version 2.0 --query IntegrationId --output text)
echo $INT

अपेक्षित output:

x9y8z7
  1. Route जोडा.
aws apigatewayv2 create-route --api-id $API --route-key "GET /users" --target integrations/$INT --query RouteKey --output text

अपेक्षित output:

GET /users
  1. Routes list.
aws apigatewayv2 get-routes --api-id $API --query "Items[].RouteKey" --output text

अपेक्षित output:

$default  GET /users

4. Stages

हे का लागतं?

dev आणि prod URLs वेगळे, स्वतःच्या settings सह.

हे काय आहे?

Stage म्हणजे API चं नाव दिलेलं snapshot. auto-deploy प्रत्येक बदल push करतो.

कसं करायचं (step by step)

  1. dev stage बनवा.
aws apigatewayv2 create-stage --api-id $API --stage-name dev --auto-deploy --query StageName --output text

अपेक्षित output:

dev
  1. Stage URL call.
curl -s https://$API.execute-api.ap-south-1.amazonaws.com/dev/users

अपेक्षित output:

{"msg": "hello world"}

5. Classic REST API

हे का लागतं?

API keys, usage plans, validation हवे — फक्त REST API मध्ये.

हे काय आहे?

Steps: create-rest-api, create-resource, put-method, put-integration, मग stage ला create-deployment.

कसं करायचं (step by step)

  1. API बनवा, root शोधा.
R=$(aws apigateway create-rest-api --name cli-rest --query id --output text)
ROOT=$(aws apigateway get-resources --rest-api-id $R --query "items[?path=='/'].id" --output text)
echo $R $ROOT

अपेक्षित output:

k1l2m3n4o5 p6q7r8
  1. /hello ला GET → Lambda.
RES=$(aws apigateway create-resource --rest-api-id $R --parent-id $ROOT --path-part hello --query id --output text)
aws apigateway put-method --rest-api-id $R --resource-id $RES --http-method GET --authorization-type NONE
aws apigateway put-integration --rest-api-id $R --resource-id $RES --http-method GET --type AWS_PROXY --integration-http-method POST --uri arn:aws:apigateway:ap-south-1:lambda:path/2015-03-31/functions/$FN/invocations --query type --output text

अपेक्षित output:

AWS_PROXY
  1. Deploy आणि test.
aws apigateway create-deployment --rest-api-id $R --stage-name prod --query id --output text
aws apigateway test-invoke-method --rest-api-id $R --resource-id $RES --http-method GET --query status

अपेक्षित output:

abc123
200

6. हीच action Python, Node.js, Java, Go, .NET आणि PHP मध्ये

हे का लागतं?

Scripts CLI मध्ये सुरू होतात. Apps तोच API SDK मधून call करतात. दोन्ही माहीत असले की test केलेली command थेट code मध्ये नेता येते.

हे काय आहे?

प्रत्येक CLI command म्हणजे एक API call. उदा. aws apigatewayv2 create-api --name cli-http --protocol-type HTTP म्हणजे Create HTTP API API.

कसं करायचं (step by step)

हीच action (HTTP API बनवा) code मधून. प्रत्येक SDK CLI सारखेच profile, region आणि credentials वाचतो.

StackCode
Python (boto3)boto3.client("apigatewayv2").create_api(Name="cli-http",ProtocolType="HTTP")
Node.js (v3)await gw.send(new CreateApiCommand({Name:"cli-http",ProtocolType:"HTTP"}));
Java (v2)gw.createApi(r -> r.name("cli-http").protocolType(ProtocolType.HTTP));
Go (v2)c.CreateApi(ctx, &apigatewayv2.CreateApiInput{Name: aws.String("cli-http"), ProtocolType: types.ProtocolTypeHttp})
.NETawait gw.CreateApiAsync(new CreateApiRequest{Name="cli-http",ProtocolType=ProtocolType.HTTP});
PHP$gw->createApi(["Name"=>"cli-http","ProtocolType"=>"HTTP"]);

7. काहीही खर्च चालू राहू नये म्हणून cleanup

हे का लागतं?

चालू ठेवलेले lab resources पैसे खातात आणि security risk बनतात.

हे काय आहे?

उलट्या क्रमाने delete करा: आधी children, मग parents.

कसं करायचं (step by step)

  1. HTTP API delete.
aws apigatewayv2 delete-api --api-id $API

अपेक्षित output:

(no output means success)
  1. REST API delete.
aws apigateway delete-rest-api --rest-api-id $R

अपेक्षित output:

(no output means success)
  1. Permission काढा.
aws lambda remove-permission --function-name cli-hello --statement-id apigw

अपेक्षित output:

(no output means success)
  1. Verify.
aws apigatewayv2 get-apis --query "Items[?Name=='cli-http']"

अपेक्षित output:

[]

Ravindra Bagale's Tip

Create नंतर लगेच 500 म्हणजे बहुतेक Lambda permission नाही. source-arn मध्ये API id आहे का बघा.

8. मुलाखत प्रश्न आणि उत्तरं

प्र. HTTP vs REST API?

HTTP स्वस्त, जलद; REST मध्ये keys, usage plans, validation.

प्र. Stage काय?

dev/prod सारखी deployed version.

प्र. AWS_PROXY काय?

पूर्ण request Lambda ला, response जसाच्या तसा.

प्र. add-permission का?

Invoke साठी function वर resource policy.

प्र. REST मध्ये create-deployment का?

Stage ला deploy केल्याशिवाय बदल live नाहीत.

घरी करून बघा

  1. एकाच Lambda ला GET /users आणि POST /users असलेला HTTP API बनवा.
  2. dev आणि prod stages बनवून दोन्ही URLs call करा.

थोडक्यात सांगायचं तर

  1. apigatewayv2 = HTTP API.
  2. --target quick-create.
  3. add-permission नाहीतर 500.
  4. Routes → integrations.
  5. REST ला create-deployment.

सराव Tasks

या scenario बद्दल

Dubai Gold Souk हा दुबई मधला दागिने व्यवसाय आहे. Fatima Al Mansoori त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे AED मध्ये मोजले जातात आणि AWS resources me-central-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 12

सोपं एक function invoke

का: Caller ने फक्त लागणारा function invoke करावा.

काय करायचं: फक्त arn:aws:lambda:me-central-1:112884599412:function:dubaigold-orders-fn वर lambda:InvokeFunction allow करा.

कसं करायचं:
  1. { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
  2. प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
  3. Task ला लागेल तेवढंच द्या (least privilege).
  4. Double quotes व commas नीट वापरा. Check answer दाबा.

सोपं Functions ची list

का: या Region मध्ये कोणते functions आहेत ते पाहा.

काय करायचं: me-central-1 मधले Lambda functions दाखवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम REST API बनवा

का: REST APIs API keys, usage plans व request validation देतात.

काय करायचं: dubaigold-rest नावाची REST API बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम REST API stage वर deploy करा

का: REST API चे बदल stage वर deployment नंतरच live होतात.

काय करायचं: REST API a1b2c3d4e5 prod stage वर deploy करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Timeout व memory बदला

का: जास्त memory म्हणजे जास्त CPU; timeout अडकलेले runs थांबवतो.

काय करायचं: dubaigold-orders-fn चा timeout 30 seconds व memory 512 MB करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Function invoke करा

का: Invoke function आत्ता चालवतो व उत्तर file मध्ये ठेवतो.

काय करायचं: dubaigold-orders-fn invoke करा व response out.json मध्ये ठेवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Function ला logs लिहू द्या

का: या actions शिवाय Lambda logs CloudWatch मध्ये दिसत नाहीत.

काय करायचं: फक्त arn:aws:logs:*:*:* वर logs:CreateLogGroup, logs:CreateLogStream, logs:PutLogEvents allow करा.

कसं करायचं:
  1. { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
  2. प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
  3. Task ला लागेल तेवढंच द्या (least privilege).
  4. Double quotes व commas नीट वापरा. Check answer दाबा.

अवघड Lambda साठी HTTP API quick-create

का: Quick create HTTP API, default route व stage बनवतो.

काय करायचं: dubaigold-api नावाची HTTP API बनवा जिचा target arn:aws:lambda:me-central-1:112884599412:function:dubaigold-orders-fn.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड S3 ला function call करू द्या

का: S3 function invoke करण्याआधी resource-based permission लागते.

काय करायचं: dubaigold-orders-fn ला s3invoke permission statement द्या: s3.amazonaws.com ने bucket arn:aws:s3:::dubaigold-uploads कडून lambda:InvokeFunction करावं.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Lambda GB-seconds

का: Lambda memory × time bill करतो.

काय करायचं: 1,000,000 invocations, 512 MB, प्रत्येकी 200 ms. किती GB-seconds?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

अवघड Lambda function बनवा

का: Lambda ला code zip, runtime, handler नाव व execution role लागतो.

काय करायचं: dubaigold-orders-fn function बनवा: runtime python3.12, handler app.handler, role arn:aws:iam::112884599412:role/lambda-basic, code function.zip मध्ये.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Environment variables द्या

का: Table नावांसारख्या settings code बाहेर ठेवा.

काय करायचं: dubaigold-orders-fn वर environment variable TABLE=dubaigold-orders द्या.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

Quick HTTP API. Lambda आहे, एका मिनिटात public URL हवा. create-api --target route, integration, stage बनवतो. मग apigateway.amazonaws.com साठी add-permission. Verify: execute-api URL curl.
उजळणी card: Quick HTTP API · PNG download करा · Card page उघडा
REST API deploy. API keys किंवा usage plans हवेत. create-resource, put-method, put-integration. create-deployment पर्यंत काही live नाही. test-invoke-method ने test.
उजळणी card: REST API deploy · PNG download करा · Card page उघडा
HTTP API vs REST API. स्वस्त, जलद. / महाग, जास्त features.
तुलना: HTTP API vs REST API · PNG download करा · Card page उघडा
create-api नंतर 500 का?. बहुतेक Lambda permission नाही. apigateway.amazonaws.com principal सह add-permission. source-arn मध्ये API id तपासा.
मुलाखत card: create-api नंतर 500 का? · PNG download करा · Card page उघडा

अजून cards: Ravi Sir's Cards.