AWS APIゲートウェイで構築された複数のメソッドを呼び出すSwiftプロジェクトに取り組んでいます。これらのメソッドにはIAM Authorizationが必要です。AWS Signature V4を使用してPostman RESTクライアントでこのメソッドをテストしましたが、ドキュメントやその他のものが不足しているかどうかはわかりませんが、適用方法を理解できませんSwiftプロジェクトのAWS署名。Swift 3のIAM認可を使用したAPIゲートウェイメソッドの呼び出し
私は、クライアントがシングルトンであるため、デリゲートにまたはコールする前にこのコードを追加することです(それは同様SDKでAWSの船は、クライアントクラスにコメントしている)が見つかり最も関連トピック:
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YourIdentityPoolId")
let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
私はこのコードがCognitoを使ってサインインしていると確信していますが、プロジェクトにCognitoを追加したくない場合は、自分のデータベースにAWS以外のユーザープールがあります。
注:APIメソッドでIAM Authorizationを無効にすると、Swift呼び出しがうまく機能します。
コール:
let client = PRUEBAPruebaClient.defaultClient()
client.petstorewalkthroughFlattenallGet().continueWithBlock({(task: AWSTask) -> AnyObject? in
self.showResult(task)
return nil
})
func showResult(task: AWSTask) {
if let error = task.error {
print("Error: \(error)")
} else if let result = task.result {
print(result)
}
}
応答:
Error: Error Domain=com.amazonaws.AWSAPIGatewayErrorDomain Code=1 "(null)" UserInfo={HTTPBody={
message = "Missing Authentication Token";
}, HTTPHeaderFields=<CFBasicHash 0x17407f600 [0x1a81b4bb8]>{type = immutable dict, count = 9,
entries =>
0 : X-Cache = <CFString 0x170054ee0 [0x1a81b4bb8]>{contents = "Error from cloudfront"}
1 : Content-Type = <CFString 0x170054c70 [0x1a81b4bb8]>{contents = "application/json"}
2 : x-amzn-ErrorType = <CFString 0x17007b0c0 [0x1a81b4bb8]>{contents = "MissingAuthenticationTokenException"}
3 : x-amzn-RequestId = <CFString 0x17007b300 [0x1a81b4bb8]>{contents = "3c410741-d38e-11e6-9d84-09cbdcab48a7"}
4 : Via = <CFString 0x1700bd040 [0x1a81b4bb8]>{contents = "1.1 9d0536684daddf203ff3b546b85c5dfe.cloudfront.net (CloudFront)"}
6 : Date = <CFString 0x170054b50 [0x1a81b4bb8]>{contents = "Thu, 05 Jan 2017 21:30:53 GMT"}
10 : Content-Length = 43
11 : X-Amz-Cf-Id = <CFString 0x1700996e0 [0x1a81b4bb8]>{contents = "dEYo5M0iFCthvydhiViK2L-DlzwoeX0mSHQ1YTBAtQZL0m_w_jdc2g=="}
12 : Connection = <CFString 0x170037760 [0x1a81b4bb8]>{contents = "keep-alive"}
}
}
はあなたの助けをありがとう!