Ravindra BagaleCourses & study guides English

EC2 आणि Lambda साठी IAM Role व Policy तयार करा — Step by Step

S3 read least-privilege: एक customer-managed policy, EC2 instance role, Lambda execution role. Prove करून cleanup.

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

  • घट्ट S3 read policy
  • EC2 instance role
  • Lambda role + logs
  • CLI + छोटी function
  • Cleanup

1. Lab: click by click

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

Region ap-south-1. Bucket yourname-iam-lab + hello.txt=ok.

A. Policy

  1. IAM → Create policy JSON.
  2. Paste:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ListBucket",
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": "arn:aws:s3:::BUCKET"
    },
    {
      "Sid": "ReadObjects",
      "Effect": "Allow",
      "Action": ["s3:GetObject"],
      "Resource": "arn:aws:s3:::BUCKET/*"
    }
  ]
}
  1. Name lab-s3-read-one-bucket.

B. EC2 role

  1. Create role → EC2.
  2. Attach policy. Name lab-ec2-s3-read.
  3. Attach role to instance.
  4. EC2 वर:
aws sts get-caller-identity
aws s3 cp s3://BUCKET/hello.txt -
# expect: ok
# aws s3 cp s3://SOME-OTHER-BUCKET/x .   # should fail AccessDenied

C. Lambda role

  1. Lambda role + S3 read + basic logs.
  2. Function + existing role.
  3. Code:
import boto3, os
def lambda_handler(event, context):
    b = os.environ["BUCKET"]
    body = boto3.client("s3").get_object(Bucket=b, Key="hello.txt")["Body"].read().decode()
    return {"ok": True, "body": body}
  1. Env BUCKET. Test → body ok.

Cleanup

  1. Lambda delete; EC2 role काढा.
  2. Roles + policy delete.
  3. Bucket delete.

2. Interview

प्र. Keys का नको?

Disk leak; role rotate होते.

प्र. दोन statements?

Bucket ARN vs object ARN.

प्र. Basic execution?

CloudWatch Logs.

प्र. Admin on Lambda?

Least privilege मोडतो.

घरी करून बघा

  1. PutObject फक्त prefix; बाहेर deny.
  2. DynamoDB GetItem साठी तेच.

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

  1. Policy → roles.
  2. EC2 + Lambda roles.
  3. Allow/deny prove; cleanup.

सराव Tasks

या scenario बद्दल

Bavaria Motors हा म्युनिक मधला ऑटोमोबाईल व्यवसाय आहे. Lukas Becker त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे EUR मध्ये मोजले जातात आणि AWS resources eu-central-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 12

सोपं Functions ची list

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

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

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

मध्यम Lambda role साठी trust policy

का: Trust policy role कोण घेऊ शकतो ते सांगते.

काय करायचं: lambda.amazonaws.com ला role assume करू देणारी trust policy लिहा.

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

मध्यम Function invoke करा

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

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

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

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

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

काय करायचं: bavariamotors-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 ला 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 दाबा.

मध्यम EC2 role साठी trust policy

का: Trust policy role कोण घेऊ शकतो ते सांगते.

काय करायचं: ec2.amazonaws.com ला role assume करू देणारी trust policy लिहा.

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

अवघड Lambda function बनवा

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

काय करायचं: bavariamotors-orders-fn function बनवा: runtime python3.12, handler app.handler, role arn:aws:iam::106249807804: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 बाहेर ठेवा.

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

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

अवघड JSON payload सह invoke करा

का: CLI v2 मध्ये raw JSON साठी --cli-binary-format raw-in-base64-out लागतो.

काय करायचं: bavariamotors-orders-fn ला payload {"orderId":"o-101"} (raw JSON) सह invoke करा व उत्तर out.json मध्ये.

कसं करायचं:
  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 दाबा.

अवघड SQS queue Lambda ला जोडा

का: Event source mapping मुळे Lambda queue poll करून batches मध्ये messages process करतो.

काय करायचं: Queue arn:aws:sqs:eu-central-1:106249807804:bavariamotors-orders पासून bavariamotors-orders-fn ला batch size 10 सह event source mapping बनवा.

कसं करायचं:
  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 लागते.

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

कसं करायचं:
  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 उघडतो.

उजळणी card: Least-privilege S3 read policy. S3FullAccess demo = चुकीची सवय. GetObject (+ ListBucket) एका bucket ARN वर. Create policy → bucket ARN. get-object OK; delete Denied.
उजळणी card: Least-privilege S3 read policy · PNG download करा · Card page उघडा
उजळणी card: Role EC2 ला attach. AKIA on instance = GitHub leak. Instance role + policy; CLI auto creds. Trust EC2 → attach → Modify IAM role. aws s3 cp without keys.
उजळणी card: Role EC2 ला attach · PNG download करा · Card page उघडा
उजळणी card: Lambda execution role. Lambda role + logs permission हवी. Trust lambda + BasicExecution + S3 read. Permissions → role → test GetObject. Test OK; logs दिसतात.
उजळणी card: Lambda execution role · PNG download करा · Card page उघडा
तुलना: AWS managed policy vs Customer managed policy. AWS managed policy: AWS broad reusable. Customer managed policy: तुम्ही tight JSON.
तुलना: AWS managed policy vs Customer managed policy · PNG download करा · Card page उघडा
मुलाखत card: Least privilege कसं prove कराल?. Allow + Deny test; simulator/CLI. S3FullAccess दावा नको — evidence. get OK; rm AccessDenied.
मुलाखत card: Least privilege कसं prove कराल? · PNG download करा · Card page उघडा
मुलाखत card: Lambda ला BasicExecutionRole का?. Logs नसतील तर debug अशक्य. Log streams create करू देते. BasicExecution + tight S3.
मुलाखत card: Lambda ला BasicExecutionRole का? · PNG download करा · Card page उघडा

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