如何在AWS SAM模板中为Lambda函数添加特定DynamoDB表内联策略
在AWS SAM模板中添加内联DynamoDB访问策略
你只需要把内联策略的JSON对象直接加入到Policies列表中,和已有的标准托管策略放在一起就可以了。下面是修改后的完整SAM模板示例:
Resources: QueryFunction: Type: AWS::Serverless::Function Properties: CodeUri: query/ Handler: app.lambda_handler Policies: # 保留原有的标准托管策略 - AmazonDynamoDBFullAccess - AWSLambdaVPCAccessExecutionRole # 添加你的内联策略 - Version: '2012-10-17' Statement: - Effect: Allow Action: dynamodb:* Resource: "arn:aws:dynamodb:us-east-1:123456789012:table/YourSpecificTableName" Runtime: python3.7
几个关键注意事项:
- 务必把
Resource字段的值替换成你实际的DynamoDB表ARN,格式为arn:aws:dynamodb:<区域>:<账号ID>:table/<表名> - 如果你的DynamoDB表是在同一个SAM模板里定义的资源,可以用SAM内置函数动态获取ARN,比如:
Resource: !GetAtt YourDynamoDBTableResourceName.Arn - 要是表名通过模板参数定义,还能使用
!Sub拼接ARN:Resource: !Sub "arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${YourTableNameParameter}"
这样配置后,你的Lambda函数就会同时拥有标准托管策略的权限,以及这条内联策略限定的特定表访问权限啦。
内容的提问来源于stack exchange,提问作者rivamarco
相关产品推荐
相关产品推荐

