Безсерверный ресурс развертывания не поддерживает тип атрибута Arn в Fn :: GetAtt - PullRequest
0 голосов
/ 02 апреля 2020
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"

Я думал, что это могут быть ресурсы в политике, но изменение этого не помогает.

1 Ответ

0 голосов
/ 02 апреля 2020

Таким образом, проблема заключается в определении определенной c роли для вашей функции. по умолчанию безсерверный применяет роли и политики ко всем функциям.

Я применил:

role: DataIamPolicy

, который не работает, поскольку в фоновом режиме он выбирает арн для политики вместо роли, которую мы еще не создали.

Вам нужно установить роль с пользовательской политикой, чтобы этот метод работал. ie:

role: DataIamRole
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...