Получение отказа в доступе при доступе к s3 с узла js лямбда

#node.js #amazon-web-services #amazon-s3 #aws-lambda #amazon-iam

Вопрос:

Я получаю ошибки отказа в доступе при загрузке файла из lambda в корзину s3. Ниже приведены настройки для корзины и роли. Разрешение на ведро S3

       "Version": "2008-10-17",
      "Id": "PolicyForDevelopment",
      "Statement": [
          {
              "Sid": "BucketAccess",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::AccountA:role/service-role/lambda-execute"
              },
              "Action": [
                  "s3:PutObject",
                  "s3:GetObject",
                  "s3:DeleteObject"
              ],
              "Resource": "arn:aws:s3:::test/*"
          }
      ]
  }
 

Разрешение роли, установленное для доступа к S3

 {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:*",
                "cloudwatch:*",
                "logs:*"
            ],
            "Resource": "*"
        }
    ]
  }
 

Я использую nodejs lambda и не хочу помещать сведения о доступе в функции s3 и предоставлять доступ из функции lambda только для размещения объектов в корзинах s3.

 let s3 = new AWS.S3({ apiVersion: '2006-03-01' });
        const params = {
                Bucket: `test`,
                Key: `test.pdf`,
                Body: base64data,
                ACL: 'public-read'
        };
        let s3Response = await s3.upload(params).promise();
....
 

Я перешел по ссылке https://aws.amazon.com/premiumsupport/knowledge-center/lambda-execution-role-s3-bucket/ amp; https://aws.amazon.com/premiumsupport/knowledge-center/access-denied-lambda-s3-bucket/

Комментарии:

1. Использует ли ваше ведро или объект шифрование kms?

2. К вашему сведению, если в «Разрешении роли» отображаются разрешения, которые вы назначили роли IAM, прикрепленной к функции AWS Lambda, то этих разрешений достаточно для предоставления доступа к любым корзинам S3 в той же учетной записи. В политике корзины нет необходимости , так как роль уже имеет необходимые разрешения. (На самом деле предоставление s3:* не является хорошим с точки зрения безопасности. Это эффективно дает функции AWS Lambda разрешение на любые действия в S3, включая удаление всех ваших корзин и объектов!)