使用Amazon AWS Lambda Function无服务器图像处理器调整程序功能模板将导致无法访问S3

时间:2019-08-11 23:05:06

标签: aws-lambda amazon-cloudfront aws-serverless

这正是我所做的。

我有一个S3存储桶,并且S3存储桶中的图像是完全公开的。您可以将URL直接粘贴到任何浏览器中,并显示图像。 CORS设置为允许所有来源。

我遵循了AWS教程,并单击启动堆栈以启动用于无服务器图像处理的默认模板。

https://docs.aws.amazon.com/solutions/latest/serverless-image-handler/deployment.html#step1

在创建堆栈时,要求您输入参数。它询问源存储桶。我完全输入了SOURCE_BUCKET名称!我什至仔细检查了。因此,我在其中输入了存储桶名称。这也是那个桶中的公众形象。现在这是链接吗?我正在使用默认模板,它要求输入存储桶名称,我正确输入了存储桶名称,然后准确地尝试使用调整大小器,但找不到密钥。

当我输入cloudfront URL和密钥时,会得到:

{“状态”:500,“代码”:“ NoSuchKey”,“消息”:“指定的密钥不存在。”}

我不知道还能做什么!图像是完全公开的!我确定我正确输入了密钥和URL,之前我已经使它起作用了,但是突然之间有些变化。因此,我之前删除了整个堆栈并从头开始创建它,现在它甚至都没有与密钥建立连接!

我该怎么办?我还需要打开什么其他权限?为什么在创建堆栈时他们不为您设置呢?

更新

因此,我发现是否可以将图像添加到存储桶的根目录中,就可以了!但是,如果它们的键是子文件夹中的路径,则它不起作用。

1 个答案:

答案 0 :(得分:0)

键与S3中的路径不同。如果要将所有图像粘贴到S3伪文件夹中,则将其命名为images并确保它是授予Lambda函数的权限的一部分。仅仅因为某些东西是公开的并不意味着Lambda就可以访问它。