AWS Lambda访问被拒绝

时间:2018-10-27 09:19:41

标签: amazon-web-services amazon-s3 aws-lambda

我的设置的简要说明。

  1. 我有一个AWS S3存储桶,其访问权限设置为Not Public,称为myBucket
  2. 我在myBucket上有一个CloudFront分布
  3. 我创建了一个lambda函数(无服务器图像处理程序)

期望的行为是,只能通过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访问我的图像时,为什么仍会拒绝访问?

0 个答案:

没有答案