AWS Android SDK调用签名​​的HTTP请求

时间:2016-03-11 08:58:00

标签: aws-sdk http-request amazon-cognito

我有AWSCredentials对象包括accesskey,sessiontoken等。但是,虽然看起来很简单,但我找不到任何文档如何使用这些凭据调用简单的http请求(例如到Api网关服务)。我尝试过AmazonWebServiceClient,AmazonHttpClient等等。

如何使用aws凭据调用简单的http post或get request?获取响应?

2 个答案:

答案 0 :(得分:2)

这个代码块解决了我的问题,多亏了它,我可以发送简单的签名http请求。

BasicSessionCredentials credentials = new BasicSessionCredentials(accessKey, secretKey, sessionToken);

            AmazonWebServiceRequest amazonWebServiceRequest = new AmazonWebServiceRequest() {
            };

            ClientConfiguration clientConfiguration = new ClientConfiguration();

            Request request = new DefaultRequest(amazonWebServiceRequest,Constants.API_GATEWAY_SERVICE_NAME);
            request.setEndpoint(URI.create(posturl));
            request.setHttpMethod(HttpMethodName.POST);

            AWS4Signer signer = new AWS4Signer();
            signer.setServiceName(Constants.API_GATEWAY_SERVICE_NAME);
            signer.setRegionName(Region.getRegion(Regions.US_WEST_2).getName());
            signer.sign(request, credentials);

            AmazonCustomWebClient webClient = new AmazonCustomWebClient(clientConfiguration, mContext);
            webClient.Execute(request, new HttpResponseHandler<AmazonWebServiceResponse<String>>() {
                @Override
                public AmazonWebServiceResponse<String> handle(HttpResponse response) throws Exception {
                    return null;
                }

                @Override
                public boolean needsConnectionLeftOpen() {
                    return false;
                }
            });

API_GATEWAY_SERVICE_NAME常量对于api网关请求很重要,它是'execute-api',而AmazonCustomWebClient是从AmazonWebServiceClient派生的。

答案 1 :(得分:-1)

您尝试执行的操作称为签署AWS API请求。

此文档包含所有详细信息:http://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html

但是,如果您使用的是SDK,则无需手动签署请求。

从文档中引用:

如果您使用的是AWS SDK,AWS命令行界面(CLI)或特定于服务的CLI之一,则无需担心签名请求。您需要做的就是使用一个或多个访问键配置工具。这些工具为您构建并向AWS发送请求,并且作为该过程的一部分,他们使用您提供的访问密钥对请求进行签名。它们负责处理许多连接细节,例如计算签名,处理请求重试和错误处理。