在Swift 4中使用AccessKey,SecretKey和临时会话密钥调用AWS Gateway API

时间:2018-07-03 10:08:02

标签: ios swift amazon-web-services aws-api-gateway

假设我有一个使用AWSSTS的登录方法,作为回应,我可以检索“ AccessKey,SecretKey和Temporary Session Key”。而且我必须在Swift中使用HTTP协议才能访问AWS Gateway API。在HTTP请求正文中,我将JSON值作为原始值传递:{"employeeNumber": "2"}。 而且我无法从API网关生成iOS的SDK。(是的,我知道这是强制性的,请相信我)

我已经阅读了以下内容,但是即使是以swift编写的(需要对swift 4进行一些更新),我也无法找到解决方法使其能够通过HTTP调用连接AWS GateWay API。无论是快速的urlsession还是Alamofire调用,我都很好,我很想知道如何为HTTP标头正确添加。

http://www.codeography.com/2016/03/20/signing-aws-api-requests-in-swift.html https://github.com/Erudika/para-client-ios/blob/master/Sources/Signer.swift

我已经阅读了官方文档,是的,我是菜鸟。我不能得到太多的伪代码。

https://github.com/aws/aws-sdk-ios/blob/440d3141/AWSCore/Authentication/AWSSignature.m https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html

我的情况如上述文档所述:

  

何时需要签署请求?

     

在编写自定义代码以将HTTP请求发送到AWS时,您需要   包括用于签署请求的代码。您可以为以下目的进行此操作   原因:

     

您正在使用没有AWS的编程语言   SDK。

     

您希望完全控制如何将请求发送到AWS。

为了澄清我的情况,我将写更多内容。我想模仿在使用“ AWS签名”进行快速授权时选择Postman Client的行为。在现阶段的Postman中,我们要填写5个字段:

  • 快捷键:“ SIAJIH24PI5WGRQDYVAA”
  • SecretKey:“ s-d0xIyBz5XYmh6N9MWbJsiHKxjwe46TERo6ESbE”
  • AWS地区:“ us-east-1”
  • 服务名称:“ execute-api”(我认为是强制性的
  • 会话令牌:“一些长字符串”(临时令牌

在HTTP标头中,我将Content-Type添加到Application/Json中,其余的是邮递员在发送请求或预览时的默认设置。这是 HTTP POST 请求。在“正文”中,添加{"employeeNumber": "2"},并选择原始

我可以从中得到一些JSON响应。而且,我已经花了很多时间来模仿Swift 4中的这种行为。我做了很多事情,例如尝试从API Gateway获取SDK,使用身份池中的自定义名称,将其他语言的方法重写为Swift的方法。您命名,我已经完成。

我真的很感激任何帮助我告诉我如何从Swift 4发出“已签名”请求的方法。这不用于家庭作业。 :P

编辑1: 忘记添加示例URL。就像这样"https://api-testing.example.com/example_directory/example_list"

0 个答案:

没有答案