AWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。

HANDS LAB

HANDS LAB ENGINEERS BLOG

ハンズラボエンジニアブログ

AWS ElasticSearch Service の認証にIAM Roleを使う [PHP編]


こんにちは、井上です。

AWS ElasticSearch Serviceを使ってみました。
ElasticSearchはVPC外に置かれるとのことで、アクセス管理はどうするんだろうと思っていたら、AccessPolicyにて何かしら制限しないといけないようです。(VPC内に置いて欲しいなぁ…)

制限方法としては、

  • IPアドレスによる制限
  • アカウントIDによる制限
  • IAM Roleによる制限

などができるようです。

試しに、IAM Roleで制限をかけたEndpointにcurlでアクセスするとエラーがでることは確認できました。

ではどうやって認証を通るようにするかを探していてたどり着いたページ、
Amazon Elasticsearch ServiceのIAM Roleによるアクセス制御 | Developers.IO を見ると、

と、書かれていてメンドクサそうだな、と思ったのですが、下記にライブラリと共存させるやり方が書いてありました。

Signing an Amazon Elasticsearch Service Search Request — AWS SDK for PHP documentation

ElasticsearchのClientBuilderのHandler を定義することで、リクエスト署名を挿入してリクエストを送ることが出来るようです。

これを es_aws_test.php というファイル名で保存します。

inoue_test というインデックスが作られていることが確認できました。
この一連の手続きは結構長いので、この部分は Clientを生成する共通処理として作っておくとよさそうです。

あと、Node.js で Lambdaから ElasticSearch を更新するサンプルが awslabs に上がっていました。

amazon-elasticsearch-lambda-samples/s3_lambda_es.js at master · awslabs/amazon-elasticsearch-lambda-samples

実際に社内でも、Lambda からElasticSearchを更新する処理は稼働中とのことでした。早い!

Lambdaと同様に、ElasticSearch もVPC対応、期待しています。

[2016/01/28 追記]
アイキャッチ画像がクラスメソッドさん作成の画像との指摘を受け変更いたしました。ご迷惑をおかけしました。


投稿者:

Taiji Inoue

こんにちは!