Как разрешить анонимный доступ к изображениям, сжатым Lambda
Я использую функцию AWS Lambda под названием «compress» от «evanchiu».
Я установил исходную папку и папку назначения. Обе папки имеют разрешение «Объекты могут быть общедоступными».
Я загружаю изображения в исходную папку, которая представляет собой корзину S3 с общедоступным разрешением на чтение.
"ACL": 'public-read',
Я заметил, что функция Lambda сжала входящее изображение и сохранила его в папке назначения, которая также является корзиной S3.
Однако объект в папке назначения НЕ имеет общего разрешения на чтение.
Как мне направить функцию «сжать», чтобы объект, который он сжал и сохранил в папке назначения, имел общедоступный доступ для чтения?
Это функция. Как мне сделать так, чтобы он сохранялся с помощью 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-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/*"]
}
]
}