为提交至亚马逊网络服务 (Amazon Web Services) 生成签名 URL 或请求头。向库提供您的 URL、HTTP 方法、标头和正文,并获取签名 URL 或签名标头以在您的 HTTP 请求中使用。
创建一个 AWSSigner 对象。使用访问亚马逊网络服务的安全凭证、您使用的服务的签名名称以及您所工作的 AWS 区域来初始化它。您可以直接创建一个凭证对象并输入您的凭证,也可以使用 EnvironmentCredential
结构从环境变量 AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
中获取它们。还有其他访问 AWS 安全凭证的方式,但这不是该库的目的。一般来说,签名名称与服务名称相同,例如 s3
、sns
、iam
,但并非总是如此。
以下示例代码创建一个签名 URL 以访问 S3 中的文件。
let credentials = StaticCredential(accessKeyId: "MYACCESSKEY", secretAccessKey: "MYSECRETACCESSKEY")
let signer = AWSSigner(credentials: credentials, name: "s3", region: "us-east-1")
let signedURL = signer.signURL(
url: URL(string:"mybucket.s3.us-east-1.amazonaws.com/myfile")!,
method: .GET)
或者,您可以将身份验证详细信息存储在请求头中。以下代码返回签署请求所需的标头以及原始标头。签名存储在“Authorization”标头中。此请求将返回一个包含来自 AWS 区域 us-east-1 的 SNS 主题列表的响应。
let credentials = StaticCredential(accessKeyId: "MYACCESSKEY", secretAccessKey: "MYSECRETACCESSKEY")
let signer = AWSSigner(credentials: credentials, name: "sns", region: "us-east-1")
let body = "Action=ListTopics&Version=2010-03-31"
let signedHeaders = signer.signHeaders(
url: URL(string:"sns.us-east-1.amazonaws.com/")!,
method: .GET,
headers: ["Content-Type": "application/x-www-form-urlencoded; charset=utf-8"],
body: .string(body))