1

c# を使用して AWS ElasticSerch サービスにアクセスする AWS ラムダを作成しようとしています。ElasticSeach にアクセスできる、ラムダ関数が使用するように構成されたロールを作成しました。しかし、許可は機能していないようです。

これが私のセットアップです:

  1. ES サービスへの読み取りおよび書き込みアクセス権を持つアクセス ポリシーを作成しました。 ここに画像の説明を入力

  2. 役割を作成し、上記のポリシーを割り当てました

  3. このロール、ES クラスターへのアクセス許可を付与しました。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::XXXXXXXXXXX:role/lambda-es-role"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-west-2:XXXXXXXXXXXXXx:domain/es-test-es/*"
    }
  ]
}

  1. ラムダに接続できるかどうかを確認するための簡単なコードがあります。

    public async Task<string> FunctionHandler()
        {
    
            HttpClient client = new HttpClient();
            var response = await client.GetStringAsync("https://XXXXX.us-west-2.es.amazonaws.com/firstindex");
    
            return response;
        }
    

これにより、403 Forbidden エラーが発生します。ロールの es.amazonaws.com との信頼関係を設定してみました。それもうまくいきませんでした。

ES クラスターを公開すると、応答が表示されます。

この方法は Lambda で機能しますか? いくつかの権限がありませんか?

4

1 に答える 1

0

署名バージョン 4 を使用してリクエストに署名する必要があると思います。これを参照してください

于 2018-11-29T22:17:54.273 に答える