AWS SAM配置Lambda访问DynamoDB和S3时Policies校验报错
故障原因
Policies段校验失败的核心原因是配置多个SAM内置策略模板时,未使用列表(数组)格式包裹。
SAM对AWS::Serverless::Function资源的Policies字段有明确语法规则:
- 仅配置1个内置策略/托管策略时,支持简写,直接将策略以键值对形式写在Policies层级下即可
- 配置2个及以上策略时,必须将所有策略放入YAML列表结构,每个策略作为列表的独立条目
你当前的写法把DynamoDBCrudPolicy和S3CrudPolicy直接作为Policies下的同级映射键,不符合多策略的语法规范,因此校验报错;仅保留任意单个策略时,刚好符合单策略的简写规则,所以可以正常通过校验。
修正方案
只需要给两个策略条目前添加列表标识符-,将Policies段调整为列表格式即可,修正后的相关配置片段如下:
Policies: - DynamoDBCrudPolicy: TableName: pending-response - S3CrudPolicy: BucketName: mresponse
调整时注意保持正确缩进:策略名跟在-后,策略的属性(TableName、BucketName)要相对策略名缩进两个空格,避免YAML层级解析错误。
内容的提问来源于stack exchange,提问作者Mandar Joshi
相关产品推荐
相关产品推荐

