Без сервера - не может прочитать файл с S3 - PullRequest
0 голосов
/ 28 июня 2019

У меня есть 2 лямбда-функции, написанные на NodeJS, и с ролью IAM Serverless Framework для этих функций можно поставить и получить объект:

iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "s3:ListBucket"
        - "s3:GetObject"
        - "s3:PutObject"
        - "s3:GetBucketNotification"
        - "s3:PutBucketNotification"
      Resource:
        - Fn::Join: [
            "", [
              "arn:aws:s3:::",
              {
                "Ref": "DataBucket"
              },
              "/*"
            ]
          ]
        - Fn::Join: [
            "", [
              "arn:aws:s3:::",
              {
                "Ref": "DataBucket"
              },
            ]
          ]

Одна функция помещает файл в S3 и работает правильно, а следующаявторая функция вызывается (через событие S3) и не может прочитать этот файл из-за отказа в доступе.

Он работал правильно, пока я не изменил имя ресурса dataBucketName:

resources:
  Resources:
    DataBucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: ${self:custom.dataBucketName}

Может кто-топодскажите, где может быть проблема и как ее отладить?

1 Ответ

1 голос
/ 28 июня 2019

Это не исправление вашей проблемы, а упрощение и исправление незначительных проблем с вашей ролью в IAM:

iamRoleStatements:
- Effect: Allow
  Action:
  - s3:ListBucket
  - s3:GetBucketNotification
  - s3:PutBucketNotification
  Resource: arn:aws:s3:::${self:custom.dataBucketName}
- Effect: Allow
  Action:
  - s3:GetObject
  - s3:PutObject
  Resource: arn:aws:s3:::${self:custom.dataBucketName}/*
...