我正在使用由 'evanchiu' 命名为 'compress' 的 AWS Lambda 函数
我已经设置了源文件夹和目标文件夹。这两个文件夹都具有“对象可以公开”权限。
我正在将图像上传到源文件夹,这是一个具有公共读取权限的 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'
问问题
126 次
1 回答
1
具有公共读取权限“ACL”的 S3 存储桶:'public-read'
存储桶级public-read
权限适用于列出存储桶中的对象,不适用于下载对象。要实际读取一个对象,还public-read
应该在每个对象上单独设置 ACL 。
确保还禁用Block Public Access
帐户和存储桶级别的设置。
简单来说,您还可以使用存储桶策略,而不是 ACL。可用于授予匿名只读访问权限的存储桶策略示例如下:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"PublicRead",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject","s3:GetObjectVersion"],
"Resource":["arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"]
}
]
}
于 2020-12-14T06:45:38.847 回答