Bre*_*ter 5 amazon-s3 boto amazon-web-services boto3 aws-lambda
我有一些 Python 可以请求预先签名的 POST URL 将对象上传到 S3 存储桶。它可以在我的具有管理员权限的 IAM 用户下在本地运行,我可以使用 Postman 和 cURL 将内容上传到存储桶。但是,当尝试在 Lambda 中运行相同的代码时,它会显示“您提供的 AWS 访问密钥 ID 在我们的记录中不存在。”。
唯一的区别是 Lambda 函数在没有管理员权限的情况下运行(但它确实具有允许它在存储桶上运行任何 S3 操作的策略)并且使用的是不同(旧)版本的 Boto3。
这是我尝试使用的代码:https : //boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html#generating-a-presigned-url-to-upload -一份文件
我尝试以与使用本地返回的详细信息完全相同的方式使用从 Lambda 函数返回的详细信息,但 Lambda 详细信息不起作用。
好问题。您没有描述如何获取 Lambda 函数的凭据。你的代码,具体来说是这样的:
s3_client = boto3.client('s3')
Run Code Online (Sandbox Code Playgroud)
期望使用 ~/.aws/credentials 文件查找默认凭证。您不会(也不应该)在 Lambda 执行环境中拥有该文件,但您的本地环境中可能有它。我怀疑您根本没有获得 Lambda 函数的凭据。
在 Lambda 中可以使用两个选项来获取凭证。
归档时间: |
|
查看次数: |
1561 次 |
最近记录: |