インフラ

curlの–aws-sigv4を使って、IAMロールでアクセス制限したOpenSearch(旧: ElasticSearch)にリクエストする

awsロゴ

こんにちは、ちゃりおです。

curlでAWSの署名を含んだリクエストができるようになったことを最近知りました。

以前は、アクセスポリシーで特定のIAMロールからアクセス許可を行っているOpenSearchドメインでは、curlだけではリクエストできませんでした。
SDKを使ったり、awscurlなどのツールを使う必要がありました。

IAMロールでアクセス制限したAmazon ElasticSearchにcurlする方法(aws curl)

しかし、このアップデートでcurlだけで、OpenSearchへのリクエストを行うことができます。

curlの–aws-sigv4を使ってOpenSearchへリクエスト

OpenSearchへリクエストできるIAMロールが付与されたEC2上から実行してみます。

EC2からIAMロールの認証情報を使ってOpenSearchへリクエストする

こちらのGistの通りで、Searviceとリクエスト先を変えるだけです。
mryhryki/requst-aws-api-by-curl.sh

以下のやり方では、curl 7.75以上とjqも必要です。

$ ROLE_NAME=`curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/`
$ CRED=`curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/${ROLE_NAME}`
$ AWS_ACCESS_KEY_ID=`echo $CRED | jq -r ".AccessKeyId"`
$ AWS_SECRET_ACCESS_KEY=`echo $CRED | jq -r ".SecretAccessKey"`
$ AWS_SESSION_TOKEN=`echo $CRED | jq -r ".Token"`
$ REGION="ap-northeast-1"
$ SERVICE="es"

$ curl OpenSearchエンドポイント_cat/indices -H "X-Amz-Security-Token: ${AWS_SESSION_TOKEN}" \
--aws-sigv4 "aws:amz:${REGION}:${SERVICE}" \
--user "${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}"
green open .kibana_1 hogehogehoge 1 0 0 0 283b 283b

ラッパースクリプトを作ってみる

毎回全部打つのは面倒なので、ラッパースクリプト作って置くと便利です。

#!/bin/env bash
ROLE_NAME=`curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/`
CRED=`curl -s http://169.254.169.254/latest/meta-data/iam/security-credentials/${ROLE_NAME}`
AWS_ACCESS_KEY_ID=`echo $CRED | jq -r ".AccessKeyId"`
AWS_SECRET_ACCESS_KEY=`echo $CRED | jq -r ".SecretAccessKey"`
AWS_SESSION_TOKEN=`echo $CRED | jq -r ".Token"`
REGION="ap-northeast-1"
SERVICE="es"

curl "$@" -H "X-Amz-Security-Token: ${AWS_SESSION_TOKEN}" \
      --aws-sigv4 "aws:amz:${REGION}:${SERVICE}" \
      --user "${AWS_ACCESS_KEY_ID}:${AWS_SECRET_ACCESS_KEY}"

例えば、上記を「es-curl」のような名前でパスの通っているディレクトリに置いておけば、簡単にOpesSearchリクエストできます。

$ es-curl OpenSearchエンドポイント_cat/indices
green open .kibana_1 hogehogehoge 1 0 0 0 283b 283b

Amzonで「AWS」の本を見てみる

楽天で「AWS」の本をみてみる!!

es workshop
Amazon Elasticsearch Service Intro Workshopをやってみたこんにちは、ちゃりおです。 最近ElasticsearchServiceを触る機会があり、チュートリアル的なものをやりたいと思っていま...
es書評
【書評】ElasticSearch実践ガイドこんにちは、ちゃりおです。 今回は、下記の本の書評です。 基本的な用語から解説されていて、初めてElasticSearch触る人にもお...
aws es 推奨
Amazon ElasticSearch Searviceの推奨構成についてこんにちは、ちゃりおです。 AWSのElasticSearchを使っているのですが、たまにトラブルが発生していました。 (データノード...