Error: The CloudFormation template is invalid: Template error: resource <Policy in serverless.yml> does not support attribute type Arn in Fn::GetAtt
在部署项目时,出现上述错误。似乎Fn:GetAttr会在转换为CloudFormation时发生,因为我尚未明确定义该函数的任何用法
functions:
myfn:
handler: lambda/handler.my
role: DataIamPolicy
environment:
DynamoTableName: "my-data"
我之前已将表定义为MyData。我的政策资源如下:
DataIamPolicy:
Type: AWS::IAM::Policy
DependsOn: MyData
Properties:
PolicyName: "my-data-dynamodb-policy"
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: "Allow"
Action:
- "dynamodb:DescribeTable"
- "dynamodb:GetItem"
Resource:
Fn::Join:
- ""
- - "arn:aws:dynamodb:::"
- "Ref" : "MyData"
我认为这可能是政策中的资源,但是改变它似乎无济于事。
答案 0 :(得分:1)
因此,问题在于为您的功能定义特定角色。默认情况下,无服务器将角色和策略应用于所有功能。
我应用了:
role: DataIamPolicy
这不起作用,因为它在后台获取策略的arn,而不是我们尚未创建的角色。
您需要使用自定义策略设置角色才能使此方法起作用。即:
role: DataIamRole