首页 > 解决方案 > 使用 REST API 的 AWS S3 PUT 示例

问题描述

AWS S3 PUT REST API 文档缺少Authorization string请求语法中的明确示例。

Request Syntax

PUT /Key+ HTTP/1.1
Host: Bucket.s3.amazonaws.com
x-amz-acl: ACL
Cache-Control: CacheControl
Content-Disposition: ContentDisposition
Content-Encoding: ContentEncoding
Content-Language: ContentLanguage
Content-Length: ContentLength
Content-MD5: ContentMD5
Content-Type: ContentType
Expires: Expires
x-amz-grant-full-control: GrantFullControl
x-amz-grant-read: GrantRead
x-amz-grant-read-acp: GrantReadACP
x-amz-grant-write-acp: GrantWriteACP
x-amz-server-side-encryption: ServerSideEncryption
x-amz-storage-class: StorageClass
x-amz-website-redirect-location: WebsiteRedirectLocation
x-amz-server-side-encryption-customer-algorithm: SSECustomerAlgorithm
x-amz-server-side-encryption-customer-key: SSECustomerKey
x-amz-server-side-encryption-customer-key-MD5: SSECustomerKeyMD5
x-amz-server-side-encryption-aws-kms-key-id: SSEKMSKeyId
x-amz-server-side-encryption-context: SSEKMSEncryptionContext
x-amz-request-payer: RequestPayer
x-amz-tagging: Tagging
x-amz-object-lock-mode: ObjectLockMode
x-amz-object-lock-retain-until-date: ObjectLockRetainUntilDate
x-amz-object-lock-legal-hold: ObjectLockLegalHoldStatus

Body

文档进一步显示了这个请求示例......


PUT /my-image.jpg HTTP/1.1
Host: myBucket.s3.<Region>.amazonaws.com
Date: Wed, 12 Oct 2009 17:50:00 GMT
Authorization: authorization string
Content-Type: text/plain
Content-Length: 11434
x-amz-meta-author: Janet
Expect: 100-continue
[11434 bytes of object data]

但同样,该文档没有 Auth String 的示例格式。我试过AccessKeyID Secret了,但没有用。我什至在示例中的任何地方都没有看到请求语法中的逻辑参数来传递凭证的两个部分(AccessKeyID 和 Secret)!

有没有人有一个简单的例子来说明如何使用 PUT 使用 REST API 将 .json 文件添加到 S3?最好是 PostMan 设置的屏幕截图,以更好地解释值的去向(在 URL 中与作为标题)。

标签: amazon-web-servicesrestamazon-s3put

解决方案


从此处的 AWS 文档中,似乎无法单独使用 REST API 创建对 S3 存储桶的 PUT 请求:

For authenticated requests, unless you are using the AWS SDKs, you have to write code to calculate signatures that provide authentication information in your requests.

这对我来说是一个新概念。在通过 REST API 进行身份验证之前,我已经使用了令牌请求并在标头中发送密钥。这听起来像是一种更安全的身份验证方法。


推荐阅读