背景
Amazon签名版本4是将身份验证信息添加到HTTP发送的AWS请求的过程。为了安全起见,大多数对AWS的请求必须使用访问密钥进行签名,该访问密钥由访问密钥ID和秘密访问密钥组成。
在使用AWS的ElasticSearch服务时需要对请求鉴权,需要将你的aws_access_key_id
和aws_secret_access_key
作为请求的安全凭证进行安全校验。本文讲述的是进行Web开发时,如何在Java中调用相关的API进行验证并向ES进行请求。
注:关于AWS V4鉴权的详细资料,请查阅官方文档:AWS V4 Signature Documentation
内容
由于之前在开发ES这一块的时候,同事在网上找到了一段验证的代码,在初期开发时使用了一段时间,但上线前需要进行修改。然后我接到这个任务之后,通过查阅一些资料,对这部分的代码进行了重写。代码及解释如下:
注意:以下两部分代码中的payload为请求ES拼接成的JSON格式的参数,详细格式请参见ES官网
// 构建一个map,用来存放ES请求的头信息
Map<String, String> headers = new TreeMap<>();
headers.put("Content-Type", "application/json; charset=UTF-8");
// 构建一个请