elasticsearch,apache-httpcomponents,elasticsearch-jest,Java,Amazon Web Services,elasticsearch,Apache Httpcomponents,Elasticsearch Jest" /> elasticsearch,apache-httpcomponents,elasticsearch-jest,Java,Amazon Web Services,elasticsearch,Apache Httpcomponents,Elasticsearch Jest" />

Java 使用Apache HttpComponents客户端对AWS HTTP请求进行签名

Java 使用Apache HttpComponents客户端对AWS HTTP请求进行签名,java,amazon-web-services,elasticsearch,apache-httpcomponents,elasticsearch-jest,Java,Amazon Web Services,elasticsearch,Apache Httpcomponents,Elasticsearch Jest,我正在尝试向受IAM访问策略保护的域发出HTTP请求。我需要将这些请求提交给AWS授权。 我在用,这反过来又在用 这似乎是一个常见的用例,但我找不到我应该做什么,以便Jest可以签署所有请求。我想我找到了它!:) 这个项目似乎正是我想要的:,被描述为“Apache客户端的请求拦截器,用于签署AWS的请求。最初创建该项目是为了使用Jest客户端支持AWS的Elasticsearch服务。” 编辑:我可以根据自己的需要(Java7,临时STS凭证)进行编辑,并且工作得很好 下面是一个使用示例(此处没

我正在尝试向受IAM访问策略保护的域发出HTTP请求。我需要将这些请求提交给AWS授权。 我在用,这反过来又在用

这似乎是一个常见的用例,但我找不到我应该做什么,以便Jest可以签署所有请求。

我想我找到了它!:)

这个项目似乎正是我想要的:,被描述为“Apache客户端的请求拦截器,用于签署AWS的请求。最初创建该项目是为了使用Jest客户端支持AWS的Elasticsearch服务。”

编辑:我可以根据自己的需要(Java7,临时STS凭证)进行编辑,并且工作得很好

下面是一个使用示例(此处没有STS临时凭据):


这在异步请求的情况下不起作用

更新:

忽略我之前的评论。它在为异步请求添加拦截器后也可以工作:

final AWSSigningRequestInterceptor requestInterceptor = new AWSSigningRequestInterceptor(awsSigner);
            factory = new JestClientFactory() {
                @Override
                protected HttpClientBuilder configureHttpClient(HttpClientBuilder builder) {
                    builder.addInterceptorLast(requestInterceptor);
                    return builder;
                }
                @Override
                protected HttpAsyncClientBuilder configureHttpClient(HttpAsyncClientBuilder builder) {
                    builder.addInterceptorLast(requestInterceptor);
                    return builder;
                }
            };

嗨,埃里克,我正在关注你提供的github链接。我们面临着被禁止的错误。另一个问题是在普通jest客户端中,我们通过弹性搜索端点。但这里我们只传递服务名称和区域。你能提供示例代码或指导来解决我们的问题吗。你好@MohanShanmugam。禁止的错误可能是由于访问策略配置错误或凭据错误。我在答案中添加了一个用法示例。希望这有帮助。嗨,埃里克,谢谢你的回复。我们使用jestclient创建索引,在此索引中放置映射和插入记录,创建和删除索引工作正常。放置映射和插入记录显示禁止的错误。当我浏览所有社区成员的讨论时,看起来很奇怪。我们正在使用JEST2.0.0和AWSE2.3。你知道为什么put映射和insert记录不起作用吗?我们正在AWS lambda上运行这个程序。lambda角色具有Es完全权限。我们在弹性搜索策略中使用了此角色ARN。如果不了解详细信息,很难为您解决此问题。您应该在AWS论坛上发布您的问题或联系支持部门。他们俩都帮了大忙。
final AWSSigningRequestInterceptor requestInterceptor = new AWSSigningRequestInterceptor(awsSigner);
            factory = new JestClientFactory() {
                @Override
                protected HttpClientBuilder configureHttpClient(HttpClientBuilder builder) {
                    builder.addInterceptorLast(requestInterceptor);
                    return builder;
                }
                @Override
                protected HttpAsyncClientBuilder configureHttpClient(HttpAsyncClientBuilder builder) {
                    builder.addInterceptorLast(requestInterceptor);
                    return builder;
                }
            };