4

AmazonESFullAccess ポリシーがアタッチされたロールとして実行されている Python Lambda スクリプトから Elasticsearch インデックスにドキュメントを送信しようとしています。Python Elasticsearch ライブラリでリクエストを作成し、aws_requests_auth ライブラリで署名しています。

cred = boto3.session.Session().get_credentials()
es_host = '<elasticsearch-server>'

auth = AWSRequestsAuth(
    aws_access_key=cred.access_key,
    aws_secret_access_key=cred.secret_key,
    aws_host=es_host,
    aws_region='us-east-1',
    aws_service='es')

ES_CLIENT = Elasticsearch(
    host=es_host,
    port=80,
    connection_class=RequestsHttpConnection,
    http_auth=auth)

次に、次のように一括作成リクエストを送信します。

ES_CLIENT.bulk(
    index='test_index',
    body=docs)

これは次の場合に失敗します。

TransportError(403, u'{"メッセージ": "リクエストに含まれるセキュリティ トークンが無効です。" }'): AuthorizationException ...

ただし、管理者ユーザー アクセス キーを使用して実行すると、同じコードが機能します。

「フル ES アクセス」を持つロールとして実行すると、これらのリクエストが失敗するのはなぜですか?

4

1 に答える 1