我有一个大约16mb的文件,正在使用python boto3 upload_file api将该文件上传到S3存储桶中。然而,我认为API在内部选择了多部分上传,并给了我一个“匿名用户无法启动多部分上传”错误。
在应用程序的某些运行中,生成的文件可能较小(几 KB)。一般情况下处理这种情况或修复我上面提到的错误的最佳方法是什么?
我目前有一个Django应用程序,它在运行时生成一个文件,并将此文件直接上传到S3存储桶中。
好的,所以除非你已经打开了你的S3存储桶供全世界上传(这是非常不推荐的),否则听起来你需要正确设置访问你的S3存储桶的权限。
如何做将根据您如何运行该应用程序而有所不同——所以让我们涵盖几个选项——在所有情况下,您将需要做两件事:
Lambda函数——您需要为您的应用程序创建一个IAM角色,并将其与您的Lambda函数相关联。一旦配置完成,Boto3应该能够透明地承担这个角色。
EC2实例或ECS任务-您需要为您的应用程序创建一个IAM角色,并将其与您的EC2实例/ECS任务相关联。Boto3将能够通过实例元数据访问角色的凭据,并且应该自动承担该角色。
本地工作站脚本——如果您从本地工作站运行这个脚本,那么boto3应该能够找到并使用您为AWS CLI设置的凭证。如果这些不是您想要使用的凭证,您将需要生成一个访问密钥和秘密访问密钥(如果您走这条路,请注意如何保护它们,并且一定要遵循最小特权)。
现在,一旦您获得了主体,您可以附加一个IAM策略,该策略授予IAM用户或角色允许上传到存储桶的权限,或者您可以在存储桶策略中添加一个子句,授予该IAM用户或角色访问权限。您只需要执行其中一项。
多部分上传是通过与单部分上传相同的S3:PutObject调用来执行的(尽管如果你的文件很小,我会很惊讶它对它们使用了多部分)。如果你使用KMS,需要注意的一个小技巧是,如果加密多部分上传,你需要使用KMS密钥的加密和解密权限。
我得到以下错误- 当我调用AWS API从JS启动多部分上传时,正如其他用户在其他讨论中建议的那样,我也在我的策略中添加了PutObjectACL。然而,我仍然不断地得到这个错误- 以下是我的政策- 我使用下面ajax调用,也通过授权在头- 授权是- AWS4-HMAC-SHA256凭证=访问密钥ID/20160331/us-east-1/服务/AWS4_请求,签名头=授权;主办x-amz-dat
如果有人帮我解决这个问题,我会非常感激。 我正在为我的项目使用codeigniter框架。并想将我的图像上传到amazon s3桶中。当我尝试使用S3.php文件时 string(92)“不支持您提供的授权机制。请使用AWS4-HMAC-SHA256。” 有人能帮我解决这个问题吗。
根据Amazon多部分上传文档,除最后一部分外,每个部分的大小必须至少为5MB。http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPart.html 问题是我如何通过多部分上传api将小于5MB的文件上传到AWS S3存储桶。我问这个问题的原因是,我想在上传到S3时对所有文件使用多部分上传API
我正试图通过一个预先签名的URL将一个文件上传到Amazon S3 bucket,这是我从第三个服务获得的。意思是,我没有生成这个URL。我已经阅读了AWS文档,但我不能把它们全部放在一起。这就是我指的。 预选。php 目前,我的代码是这样的。请注意,
我想从Kinesis多部分上传到我的Amazon S3存储桶。由于Amazon S3是一个文件系统,对于每个条目,它都会在给定的bucket名称下创建一个文件。 我的亚马逊S3为AWS粘合作业提供信息,因为只要亚马逊S3的特定文件夹中有新文件,它就会触发Lambda函数。对于流数据,每秒将有多个文件。 如何在 Kinesis 端控制文件的大小,以便 Kinesis 仅在达到特定阈值后推送 Amaz
我试图在AWSS3中上传错误文件,但它显示错误,如“您试图访问的存储桶必须使用指定的endpoint寻址。请将所有未来的请求发送到此endpoint:”test9011960909。s3。亚马逊。com“ 我还指定了“区域”= 当我指定时,它正在工作 但我想把文件上传到主bucket的子文件夹中 我已经应用了AWS S3批准的答案:您试图访问的桶必须使用指定的终结点进行寻址 但仍然得到同样的错误,