我的设置的简要说明。
Not Public
,称为myBucket
myBucket
上有一个CloudFront分布期望的行为是,只能通过CloudFront发行版访问我的图像(而不能直接使用S3 URL),并且我应该能够通过CloudFront URL调用我的lambda函数。
现在发生的是,我能够得到这样的图像:
https://d32by75bmg47jh.cloudfront.net/portrait.jpeg
但是,我无法通过调用lambda来获取图像:
https://d32by75bmg47jh.cloudfront.net/fit-in/500x500/portrait.jpeg
当我尝试使用lambda调用它时,出现访问被拒绝错误。
我的存储桶策略如下:
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E2FGH21TNURTU9"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::myBucket/*"
}
}
在我的Lambda Console
中,将我的Lambda函数设置为使用执行角色:lambda_basic_execution 。在IAM Console
中,其策略如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::myBucket/*"
}
]
}
当我尝试通过lambda访问我的图像时,为什么仍会拒绝访问?