amazon-web-services - 使用 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 中与作为标题)。
解决方案
从此处的 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 进行身份验证之前,我已经使用了令牌请求并在标头中发送密钥。这听起来像是一种更安全的身份验证方法。
推荐阅读
- python - 无法将 Flask 应用程序部署到 Heroku(Heroku 尝试安装 SQlite,即使我根本不使用它)
- javascript - 使用公共类属性时未定义
- c# - 在 C# 中取消定义关键字
- google-app-engine - 如何在 google firestore 中实现唯一的用户名/电子邮件
- c# - Xamarin Forms 在 MVVM 中调整网格动画的大小
- javascript - 读取文本值并更改字符串值?
- docker - 在 dockerfile 中使用秘密
- node.js - 如何使用 node.js 为 spotify api 使用查询参数?
- r - 指数方程 ^ 和 exp 给出不同的答案
- azure - Azure DevOps 托管代理:如何构建到容器中,然后提取构建工件