SwiftAWSSignatureV4

跨平台 Swift 中的 AWS 签名版本 4

给定一个(可变的)URLRequest,使用 AWSAccount 的实例,用 AWS Signature v4 进行签名,其中包含您的 IAM 凭证。

var request:URLRequest = ...
let account:AWSAccount = ...
request.sign(for:account)

如果请求的 .httpBody 是一个简单的 Data,则不使用分块。

在签名过程中,会自动添加适当的日期标头。您应该添加所有其他属于该服务的标头,但并非专门用于签名的标头,因为签名过程会签名这些标头。

要使用分块,请提供一个 InputStream 作为请求的 .httpBodyStream,并且/或者为块大小(以字节为单位)提供一个值。

request.sign(for:account, chunkSize:32568)

分块会改变 .httpBodyStream,因此请不要在签名后修改 .httpBodyStream

测试/平台状态

不使用分块的签名已在 macOS 和 Linux 上测试过。分块仅在 macOS 上测试过。分块主要用于流,它会在 RAM 中读取整个主体之前发送数据。在不久的将来,Linux 上的流支持可能会被更改或改进。

依赖于 IBM 的 BlueCryptor 实现平台独立的哈希运算。