Как разрешить анонимный доступ к изображениям, сжатым Lambda

  1. Я использую функцию AWS Lambda под названием «compress» от «evanchiu».

  2. Я установил исходную папку и папку назначения. Обе папки имеют разрешение «Объекты могут быть общедоступными».

  3. Я загружаю изображения в исходную папку, которая представляет собой корзину S3 с общедоступным разрешением на чтение. "ACL": 'public-read',

  4. Я заметил, что функция Lambda сжала входящее изображение и сохранила его в папке назначения, которая также является корзиной S3.

  5. Однако объект в папке назначения НЕ имеет общего разрешения на чтение.

  6. Как мне направить функцию «сжать», чтобы объект, который он сжал и сохранил в папке назначения, имел общедоступный доступ для чтения?

  7. Это функция. Как мне сделать так, чтобы он сохранялся с помощью ACL «Общедоступное чтение»?

             AWSTemplateFormatVersion: '2010-09-09'
    Transform: 'AWS::Serverless-2016-10-31'
    Description: Transforms images by compression to a configured quality level
    Resources:
      serverlessrepocompresstransform1KO4BLJ7HSRDZ:
        Type: 'AWS::Serverless::Function'
        Properties:
          Handler: src/index.handler
          Runtime: nodejs12.x
          CodeUri: .
          Description: Transforms images by compression to a configured quality level
          MemorySize: 1536
          Timeout: 300
          Role: >-
            arn:aws:iam::841291176818:role/serverlessrepo-compress-transformRole-2ZS0W0CC7F4M
          Environment:
            Variables:
              DEST_BUCKET: bucket-name
              QUALITY: '25'
          Tags:
            'serverlessrepo:semanticVersion': 1.1.0
            'lambda:createdBy': SAM
            'serverlessrepo:applicationId': 'arn:aws:serverlessrepo:us-east-1:233054207705:applications/compress'
    

1 ответ

Сегмент S3 с общедоступным разрешением на чтение «ACL»: «общедоступное чтение»

Разрешения на уровне корзины применяются к перечислению объектов в корзине, а не к загрузке объектов. Чтобы действительно прочитать объект, public-readACL также должен быть настроен на каждый объект отдельно .

Не забудьте также отключить Block Public Accessнастройки на уровнях учетной записи и корзины.

Для простоты вы также можете использовать политики корзин, а не списки управления доступом. Пример политики корзины, которую вы можете использовать для предоставления анонимного доступа только для чтения, находится здесь:

      {
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"PublicRead",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject","s3:GetObjectVersion"],
      "Resource":["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"]
    }
  ]
}
Другие вопросы по тегам