作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用以下 Python/Boto 代码生成一次性文件上传 URL 到 Amazon S3 存储桶:
from boto.s3.connection import S3Connection
def get_signed_upload_url():
s3 = S3Connection(ACCESS_KEY_ID, SECRET_ACCESS_KEY, is_secure=True)
return s3.generate_url(300, 'PUT', bucket=BUCKET, key=KEY,
headers={'Content-Type': 'text/plain'})
ACCESS_KEY_ID
和
SECRET_ACCESS_KEY
.因此,我删除了硬编码的 key ,生成了以下代码:
from boto.s3.connection import S3Connection
def get_signed_upload_url():
s3 = S3Connection(is_secure=True)
return s3.generate_url(300, 'PUT', bucket=BUCKET, key=KEY,
headers={'Content-Type': 'text/plain'})
PUT
从我的客户端 Web 应用程序(通过 Ajax)请求它,我得到一个
HTTP 400 Bad Request
来自 S3 的错误:
<Error>
<Code>InvalidToken</Code>
<Message>The provided token is malformed or otherwise invalid.</Message>
<!-- account-specific stuff removed -->
</Error>
generate_url()
生成 GET
的调用URL - 使用 ACCESS_KEY_ID
工作正常自动传递到 EC2 实例的环境。 PUT
这是行不通的。 Content-Type
标题,这就是标题在那里的原因。我尝试删除 Content-Type
来自此 Boto 代码和前端逻辑的 header ,但问题仍然存在。 最佳答案
对于它的值(value),我无法复制这个问题。我设置了一个全新的 EC2 实例,为其分配了一个 IAM 角色,该角色附加了 AmazonS3FullAccess 权限
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
[root@ip-172-31-13-14 ~]# python -V
Python 2.7.12
[root@ip-172-31-13-14 ~]# pip freeze|grep boto
boto==2.38.0
botocore==1.5.95
from boto.s3.connection import S3Connection
def get_signed_upload_url():
BUCKET = 'test'
KEY = 'test-2'
s3 = S3Connection(is_secure=True)
return s3.generate_url(300, 'PUT', bucket=BUCKET, key=KEY,
headers={'Content-Type': 'text/plain'})
if __name__ == "__main__":
url = get_signed_upload_url()
print "curl -v -X PUT -H 'Content-Type: text/plain' -d @hello2.txt '" + url + "'"
> Host: test.s3.amazonaws.com
> User-Agent: curl/7.53.1
> Accept: */*
> Content-Type: text/plain
> Content-Length: 8585
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 200 OK
< x-amz-id-2: redacted
< x-amz-request-id: redacted
< Date: Tue, 19 Dec 2017 05:45:15 GMT
< x-amz-version-id: redacted
< ETag: "redacted"
< Content-Length: 0
< Server: AmazonS3
关于amazon-web-services - S3 PUT 的 Boto generate_url 不适用于 IAM 角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47671669/
我使用以下 Python/Boto 代码生成一次性文件上传 URL 到 Amazon S3 存储桶: from boto.s3.connection import S3Connection def g
我是一名优秀的程序员,十分优秀!