Как разрешить анонимный доступ к изображениям, сжатым 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'
    
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
181
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Не забудьте также отключить настройки 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/*"]
    }
  ]
}

Да, функция «Блокировать публичный доступ» отключена. Однако сжатый объект сохраняется лямбда-функцией «compress» и НЕ устанавливает разрешение объекта на «общедоступное чтение».

Chakra 14.12.2020 07:55

@Chakra Итак, вам нужно изменить свою функцию, чтобы установить этот ACL при загрузке объекта в корзину.

Marcin 14.12.2020 07:56

Я добавил конфигурацию функции к вопросу. Где я могу изменить функцию для установки ACL?

Chakra 14.12.2020 08:17

@Chakra Для вашей функции не предоставлен исходный код. Но в любом случае, как я предположил, вероятно, проще было бы использовать политику ведра. Я обновил ответ с примером.

Marcin 14.12.2020 08:20

Другие вопросы по теме