AWS CloudFormation部署报错:Role属性模式验证失败求助
AWS SAM部署Lambda函数时Role属性Pattern验证错误的排查与解决
可能原因
- YAML模板缩进错误:你的SAM模板中
Role属性的层级不正确,当前它与Events同级(属于MyFunction的顶级属性),而非Properties的子属性。CloudFormation会将这个位置的Role值视为不符合AWS::Serverless::Function资源的属性规范,触发格式验证失败。 - 角色值格式不符合约束:虽然你确认角色存在,但如果
MyLambdaExecutionRole的名称包含IAM角色命名规则外的特殊字符、长度超出1-64字符限制,通过!Ref获取的角色名也会触发格式验证错误(这种情况较少见)。
解决方法
- 修正模板缩进:将
Role: !Ref MyLambdaExecutionRole移动到Properties层级下,与CodeUri、Handler等属性同级。修正后的模板片段如下:
Resources: MyFunction: Type: AWS::Serverless::Function Properties: CodeUri: s3://my-bucket/my-function.zip Handler: app.lambda_handler Runtime: python3.8 Role: !Ref MyLambdaExecutionRole # 修正缩进,放到Properties下 Events: MyApi: Type: Api Properties: Path: /my-api Method: GET MyLambdaExecutionRole: Type: AWS::IAM::Role Properties: # 补充完整角色属性,比如AssumeRolePolicyDocument、ManagedPolicyArns等
- 验证角色格式(可选):如果缩进修正后仍报错,检查
MyLambdaExecutionRole的名称是否符合IAM角色命名规则(仅允许字母、数字、连字符、下划线),或直接使用角色ARN赋值(格式如arn:aws:iam::123456789012:role/MyLambdaExecutionRole)替代!Ref。
内容的提问来源于stack exchange,提问作者Ajay Lal C
相关产品推荐
相关产品推荐

