«iamRoleStatements должен быть массивом объектов» при попытке добавить несколько ролей к лямбда-функции - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь добавить 2 роли для своей лямбда-функции. Я получаю эту ошибку:

iamRoleStatements должен быть массивом объектов, где каждый объект имеет поля Effect, Action, Resource,В частности, в операторе 1 отсутствуют следующие свойства: Ресурс

Мой код:

InsertImageDB:
  handler: index.lambda_handler
  module: InsertImageDB
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:UpdateItem
        - dynamodb:GetItem
        - dynamodb:PutItem
      Resource:
        Fn::GetAtt:
          - imageLibraryTable
          - Arn

    - Effect: "Allow"
      Action:
        - sns:*
      Ressource:
        Ref: DetectLabelTopic

Обратите внимание, что я использую serverless-iam-role-per-функция , которая позволяет добавлять отдельные роли к каждой функции.

1 Ответ

0 голосов
/ 22 декабря 2018

Я полагаю, что ваша проблема в том, что вы используете Cloudformation встроенные функции в разделе Serverless Framework function .

В частности:

Resource:
    Fn::GetAtt:
      - imageLibraryTable
      - Arn

И

Ressource:
    Ref: DetectLabelTopic

Вы не хотите использовать встроенные функции здесь, а скорее ARN, использующие переменные без сервера

Проверить имена ролей в документах serverless-iam-role-per-function

...