【发布时间】:2021-05-10 17:33:06
【问题描述】:
在尝试 SAM Deploy 时,我收到以下拒绝:
1 validation error detected: Value 'arn:aws:iam::${AWS::AccountId}:role/Lambda-Exec-And-CloudWatch' at 'role' failed to satisfy constraint: Member must satisfy regular expression pattern: arn:(aws[a-zA-Z-]*)?:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+ (Service:AWSLambdaInternal; Status Code: 400; Error Code: ValidationException;
当我将 Lambda 函数的 arn 角色构造中的账户 ID 替换为伪参数时会发生这种情况:${AWS::AccountId}。
这是发生这种情况的 YAML 模板中 Function 的 Role 属性:
Role:
arn:aws:iam::${AWS::AccountId}:role/Lambda-Exec-And-CloudWatch
预期的正则表达式似乎只接受硬编码的帐户 ID。
如果有帮助,我将使用 Cloud9 作为我的 IDE。
我错过了什么?
谢谢!
【问题讨论】:
-
我们可能需要 !Sub 内部函数来替换 accountId!类似
Role: !Sub arn:aws:iam::${AWS::AccountId}:role/Lambda-Exec-And-CloudWatch同样如果角色在同一个模板中创建,我们可以很容易地引用资源而不是构建Arn。
标签: amazon-web-services amazon-cloudformation aws-sam