1.2.5 Integrate Lambda with AWS Services

Integrate Lambda with AWS Services

Permission Model

Lambda cần 2 loại permissions:

TypeMô tảVí dụ
Execution Role (IAM Role)Lambda cần permissions để GỌI AWS servicesLambda → DynamoDB PutItem
Resource-based PolicyCho phép AWS services INVOKE LambdaS3 → invoke Lambda

Execution Role

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:GetItem",
        "dynamodb:PutItem"
      ],
      "Resource": "arn:aws:dynamodb:*:*:table/Orders"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "*"
    }
  ]
}
  • Mỗi Lambda function có 1 execution role
  • Least privilege: chỉ cấp permissions cần thiết
  • AWSLambdaBasicExecutionRole — managed policy cho CloudWatch Logs

Resource-based Policy

{
  "Effect": "Allow",
  "Principal": {"Service": "s3.amazonaws.com"},
  "Action": "lambda:InvokeFunction",
  "Resource": "arn:aws:lambda:*:*:function:MyFunction",
  "Condition": {
    "ArnLike": {"AWS:SourceArn": "arn:aws:s3:::my-bucket"}
  }
}

Common Integration Patterns

ServicePatternMô tả
API GatewaySync invokeREST/HTTP API → Lambda
S3Async invokeObject events → Lambda
SQSEvent source mappingLambda polls SQS
DynamoDB StreamsEvent source mappingLambda polls stream
KinesisEvent source mappingLambda polls stream
SNSAsync invokePush notification → Lambda
EventBridgeAsync invokeEvent rules → Lambda
Step FunctionsSync/AsyncOrchestration workflow

Event Source Mapping

  • Lambda polls source (SQS, Kinesis, DynamoDB Streams)
  • Lambda service cần permissions để đọc từ source (trong execution role)
  • Batch size, batch window configurable

Exam Tip: Execution Role = Lambda gọi services khác. Resource-based Policy = services khác gọi Lambda. Event Source Mapping = Lambda polls (SQS, Kinesis, DynamoDB Streams).