Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8696

Node.jsでAWS ElasticSearchへのHTTP リクエストの署名

$
0
0

はじめに

情報保護を難しくなっている現代社会では、セキュリティ対応はますます重要になってきています。
Cloud技術の進化によって、セキュリティ対応しやすくなる部分もあります。

AWSのElasticeSearchサービスへのHTTP リクエストの署名方法を簡単にまとめてみます。

1. AWS SDKのライブラリを使う

AWSのドキュメントにある通り、署名したリクエストを送信できますが、検索のクエリなどはちょっと手間ですね。

参考URL: https://docs.aws.amazon.com/ja_jp/elasticsearch-service/latest/developerguide/es-request-signing.html

node.js
varcredentials=newAWS.EnvironmentCredentials('AWS');varsigner=newAWS.Signers.V4(request,'es');signer.addAuthorization(credentials,newDate());varclient=newAWS.HttpClient();client.handleRequest(request,null,function(response){// ....}

2. aws-elasticsearch-connectorモジュールを使う

Node.jsからElasticSearchへアクセスするには、ElasticSearchクライアントを使うと検索などに便利です。
aws-elasticsearch-connectorを利用して署名も簡単にできます。

2.1 aws-elasticsearch-connectorインストール

npm install --save aws-elasticsearch-connector @elastic/elasticsearch aws-sdk

2.2 profile利用例

node.js
constAWS=require('aws-sdk');const{Client}=require('@elastic/elasticsearch');const{AmazonConnection}=require('aws-elasticsearch-connector');// Load AWS profile credentialsAWS.config.update({profile:'my-profile'});constclient=newClient({node:'my-elasticsearch-cluster.us-east-1.es.amazonaws.com',Connection:AmazonConnection});

2.3 .envにアクセスキー、シークレットキー利用例

AWS_ACCESS_KEY_ID=foo      # alias: AWS_ACCESS_KEYAWS_SECRET_ACCESS_KEY=bar  # alias: AWS_SECRET_KEYAWS_SESSION_TOKEN=xxx  //optional
node.js
const{Client}=require('@elastic/elasticsearch');const{AmazonConnection}=require('aws-elasticsearch-connector');constclient=newClient({node:'my-elasticsearch-cluster.us-east-1.es.amazonaws.com',Connection:AmazonConnection,});

参考URL:https://github.com/compwright/aws-elasticsearch-connector#readme

2.4 検索結果

node.js
letsearchResult=awaitclient.search({index:'xxx_index',body:{//...});// ヒットしたデータlethits=searchResult.body.hits.hits;// ヒットしたデータ数lethitsCount=searchResult.body.hits.total;

ElasticSearchのクライアントAPI:
https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/client-usage.html

以上


Viewing all articles
Browse latest Browse all 8696

Trending Articles