Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon cloudformation 无服务器部署资源不支持Fn::GetAtt中的属性类型Arn_Amazon Cloudformation_Serverless - Fatal编程技术网

Amazon cloudformation 无服务器部署资源不支持Fn::GetAtt中的属性类型Arn

Amazon cloudformation 无服务器部署资源不支持Fn::GetAtt中的属性类型Arn,amazon-cloudformation,serverless,Amazon Cloudformation,Serverless,我以前将我的表定义为MyData。我的策略资源如下所示: functions: myfn: handler: lambda/handler.my role: DataIamPolicy environment: DynamoTableName: "my-data" 我认为这可能是政策中的资源,但改变这一点似乎没有帮助 因此,问题在于为您的功能定义一个特定的角色。默认情况下,serverless将角色和策略应用于所有函数 我申请了: DataIamPoli

我以前将我的表定义为MyData。我的策略资源如下所示:

functions:
  myfn:
    handler: lambda/handler.my
    role: DataIamPolicy
    environment:
      DynamoTableName: "my-data"

我认为这可能是政策中的资源,但改变这一点似乎没有帮助

因此,问题在于为您的功能定义一个特定的角色。默认情况下,serverless将角色和策略应用于所有函数

我申请了:

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"
这不起作用,因为在后台它为策略获取arn,而不是我们尚未创建的角色

您需要设置一个具有自定义策略的角色,此方法才能工作。即:

role: DataIamPolicy
role: DataIamPolicy
role: DataIamRole