Попытка дать моему лямбда-путОбъекту доступ к существующей корзине S3 через сервер - PullRequest
0 голосов
/ 26 сентября 2018

Я застрял, пытаясь назначить разрешения для корзины S3 для моей лямбды при использовании Serverless Framework.

У меня есть одна функция lamba, которая в конечном итоге записывает файл конфигурации JSON в корзину S3, которую я бынравится подавать через Интернет в приложение.Сначала я настроил корзину S3 отдельно (не в serverless.yml), и моя lamba успешно создает файл в правильной корзине S3, но при развертывании его в AWS я получаю «внутреннюю ошибку сервера».Я предполагаю, что это потому, что разрешения, установленные при развертывании, не предоставляют ему права на запись в корзину.

Я немного не согласен, как это сделать.Я прочитал эту ветку например, и попытался дополнить мой serverless.yml этим:

provider:
  name: aws
  runtime: nodejs8.10
  stage: dev
  region: eu-west-1
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "s3:PutObject"
      Resource:
        Fn::Join:
          - ""
          - - "arn:aws:s3:::"
            - Ref: arn:aws:s3:::com.joostschuur.quizdata

В этом случае arn:aws:s3:::com.joostschuur.quizdata - это созданное вручную ведро S3, которое я настроил ихотел бы, чтобы моя развернутая лямбда имела доступ к записи.Однако это приводит к ошибке при развертывании:

Шаблон CloudFormation недопустим: Ошибка формата шаблона: неразрешенные зависимости ресурса [arn: aws: s3 ::: com.joostschuur.quizdata] в ресурсахблок шаблона

Если есть способ поместить все настройки S3 в serverless.yml (т. е. указать корзину, указать, что файлы в ней должны быть доступны через Интернет и т. д.), я 'Я тоже так счастлив.

Предложения?

1 Ответ

0 голосов
/ 26 сентября 2018

В спецификации iamRoleStatements есть и ошибка, она должна быть:

 iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "s3:PutObject"
      Resource: arn:aws:s3:::com.joostschuur.quizdata

Или

 iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "s3:PutObject"
      Resource:
        Fn::Join:
          - ":"
          - - "arn:aws:s3::"
            - "com.joostschuur.quizdata"

Эта ошибка:

The CloudFormation template is invalid: Template format error: Unresolved resource dependencies [arn:aws:s3:::com.joostschuur.quizdata] in the Resources block of the template

связана с:

    - Ref: arn:aws:s3:::com.joostschuur.quizdata

Потому что это не ссылка на переменную параметра o.

Наслаждайтесь!

...