То, что я хотел бы сделать, это создать роль для вашей лямбда-функции следующим образом:
Resources:
MyFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: path/to/something
Handler: index.handler
Runtime: nodejs10.x
Events:
Get:
Type: Api
Properties:
RestApiId: !Ref MyApi
Path: /path/to/other/thing
Method: post
Role: !GetAtt MyDynamoDBRole.Arn
, а затем прикрепить политику к этой роли. Примерно так:
MyDynamoDBRole:
Type: AWS::IAM::Role
Properties:
Path: "/"
Policies:
-
PolicyName: "myDynamoDBPolicy"
PolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Action:
- "dynamodb:BatchGetItem"
- "dynamodb:BatchWriteItem"
- "dynamodb:PutItem"
- "dynamodb:GetItem"
- "dynamodb:Scan"
- "dynamodb:Query"
- "dynamodb:UpdateItem"
- "dynamodb:UpdateTable"
- "dynamodb:GetRecords"
Resource: "arn:aws:dynamodb:us-east-1:123456789012:table/table1"
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
-
Effect: Allow
Principal:
Service:
- dynamodb.amazonaws.com
Action: sts:AssumeRole
Обратите внимание: что вам может потребоваться настроить конкретные разрешения в соответствии с вашим вариантом использования, приведенный выше код является просто примером, иллюстрирующим конструкцию, которой я являюсьпредлагая.