use*_*545 2 amazon-web-services aws-lambda serverless-framework
我编写了一个lambda函数,它返回S3 Buckets中文档的预签名URL.
代码非常简单:
const url = s3.getSignedUrl('getObject', {
Bucket: BUCKET_NAME,
Key: myFile.Key,
Expires: 20
})
const response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Origin": "*"
},
body: JSON.stringify({
"url": url
}),
};
Run Code Online (Sandbox Code Playgroud)
有趣的是当我在本地调用此函数(使用无服务器框架)时,如下所示:
sls invoke local -f getEconomyFile -d '{ "queryStringParameters": { "key": "myfile.pdf" } }'
Run Code Online (Sandbox Code Playgroud)
它的工作原理!我有一个网址给我文件.
但是当我部署到AWS Lambda时,该函数返回一个URL,该URL总是在文件上显示"access denied":
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>93778EA364B3506B</RequestId>
<HostId>
yqnPC0SeIVE3/Pl7/d+xHDJ78=
</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)
为什么它在本地工作而未部署?
谢谢 !
jar*_*mod 10
以下是预签名网址不起作用时要检查的事项列表:
**您可以通过预先签署对象(例如s3:// notmybucket/fred)来判断这是本地计算并且不涉及对AWS的任何调用.这将起作用并生成预签名的URL,但实际上它不可用于检索该对象.
归档时间: |
|
查看次数: |
2714 次 |
最近记录: |