AWS Lambda для прокси сервиса ElasticSearch с использованием C # - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь создать AWS-лямду, используя c # для доступа к сервису AWS ElasticSerch.Я создал роль, для которой настроена моя лямбда-функция, которая имеет доступ к ElasticSeach.Но разрешение, похоже, не работает.

Вот мои настройки:

  1. Я создал политику доступа с доступом на чтение и запись к службе ES.enter image description here

  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/*"
    }
  ]
}

У меня есть простой код в лямбде, чтобы посмотреть, смогу ли я к нему подключиться.

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 Запрещенную ошибку.Я даже пытался установить доверительные отношения с es.amazonaws.com для этой роли.Это также не сработало.

Если я сделаю кластер ES общедоступным, я увижу ответ.

Будет ли этот метод работать с Lambda?Мне не хватает некоторых разрешений?

1 Ответ

0 голосов
/ 30 ноября 2018

Я думаю, что вам нужно подписать ваш запрос, используя Signature Version 4. См. this

...