【问题标题】:Resize Images on the Fly with AWS Lambda and Amazon API Gateway使用 AWS Lambda 和 Amazon API Gateway 动态调整图像大小
【发布时间】:2017-11-29 15:34:37
【问题描述】:

我按照此页面上的教程进行操作 HERE 但是当我尝试调整大小的图片时,我得到“拒绝访问”

好的:https://xxxx.amazonaws.com/mybucket/test.jpg
错误:https://xxxx.amazonaws.com/mybucket/300x300/test.jpg(拒绝访问)

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
</Error>

在我的设置下:

存储桶策略编辑器

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucket/*"
        }
    ]
}

创建触发器时,我选择了安全性:打开。我只是对 YOUR_API_HOSTNAME_HERE 感到困惑。在示例中,api 主机名是 h3ll0w0rld?

【问题讨论】:

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


    【解决方案1】:

    GetObject 动作是不够的。您还应该授予 lambda 列出内容的权限。另请注意我放置的Resources 部分。

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "AddPerm",
                "Effect": "Allow",
                "Action": [
                    "s3:Get*",
                    "s3:List*"
                ],
                "Principal": { "Service": "lambda.amazonaws.com" },
                "Resource": [
                    "arn:aws:s3:::mybucket/*",
                    "arn:aws:s3:::mybucket"
                ]
            }
        ]
    }
    

    【讨论】:

    • 感谢 Abdennour。我添加了您的代码,但出现错误:缺少必需的提交主体。所以我添加了“校长”:“*”。现在我有一个新错误:&lt;Error&gt; &lt;Code&gt;NoSuchKey&lt;/Code&gt; &lt;Message&gt;The specified key does not exist.&lt;/Message&gt; &lt;Key&gt;300x300/test.jpg&lt;/Key&gt; /KjC8yZnqmI1uLZq523OkiNrIn+p08qz+SzDU=&lt;/HostId&gt; &lt;/Error&gt; 我会调查为什么会出现这个错误。
    • @TylerDurden 这个错误意味着对象不在桶中。
    • @AbdennourTOUMI 您应该提到 s3:List* 不应该提供给匿名用户,因为这允许任何地方的任何人列出您存储桶中的所有对象,这几乎可以肯定不是你想要的。
    【解决方案2】:

    @AbdennourTOUMI 你是对的。 “桶策略”必须是:
    { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::bucketNAME/*" } ] }

    【讨论】:

      【解决方案3】:

      您确定您的存储桶包含包含该文件的 300x300 文件夹。因为,正如@Michael-sqlbot 所说,它可以表明该文件不存在。 是的,在示例中,api 主机名是 h3ll0w0rld.execute-api.us-west-2.amazonaws.com。 要获得调整大小的图片,您需要使用静态网站托管端点 - http://bucket_name.s3-website-us-west-2.amazonaws.com/300x300/test.jpg 然后在您的存储桶中将创建一个 300x300 的文件夹,其中将包含“test.jpg”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-07
        • 1970-01-01
        • 2017-07-09
        相关资源
        最近更新 更多