Ошибка подписи запроса.AWS ElasticSearch - PullRequest
0 голосов
/ 02 октября 2018

Когда я хочу удалить элемент из индекса, он выходит из строя и показывает нам следующую трассировку ОШИБКИ:

org.springframework.data.elasticsearch.ElasticsearchException: Невозможно выполнить действие jest, ответкод: 403, ошибка: 403 Запрещено, сообщение: рассчитанная нами подпись запроса не соответствует предоставленной вами подписи.Проверьте свой секретный ключ доступа AWS и метод подписи.За подробностями обратитесь к документации по сервису.

Я создал метод «removeBy ...» в репозитории ElasticsearchRepository для удаления элементов из нашего индекса:

public interface IndexSynonymRepository extends ElasticsearchRepository<IdxSynonym, Long> {
    void removeByIdDashboardAndIdTable(Long idDashBoard, Long idTable);
}

Включенные версиив мой проект JAVA входят следующие версии конфигурации POM:

<!-- Spring Data Jest ElasticSearch AWS -->
<dependency>
    <groupId>com.github.vanroy</groupId>
    <artifactId>spring-boot-starter-data-jest</artifactId>
    <version>2.3.1.RELEASE</version>
</dependency>

<!-- Spring Data ElasticSearch -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-elasticsearch</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>

<!-- Jest -->
<dependency>
    <groupId>io.searchbox</groupId>
    <artifactId>jest</artifactId>
    <version>2.0.4</version>
</dependency>

<!-- ElasticSearch -->
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>2.4.4</version>
</dependency>

<!-- Spring Boot -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
    <relativePath />
    <!-- lookup parent from repository -->
</parent>

<!-- Aws Signing Request Interceptor -->
<dependency>
    <groupId>vc.inreach.aws</groupId>
    <artifactId>aws-signing-request-interceptor</artifactId>
    <version>0.0.20</version>
    <scope>compile</scope>
    <exclusions>
      <exclusion>
          <artifactId>*</artifactId>
          <groupId>com.amazonaws</groupId>
      </exclusion>
    </exclusions>
</dependency>

Политики ролей, которые мы настроили в AWS, следующие:

Access Policy ElasticSearch:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Resource": [ "arn:aws:es:us-east-1:XXXXXXXXXXXX:domain/my-domain/*", "arn:aws:es:us-east-1:XXXXXXXXXXXX:domain/my-domain" ] } ] }

EC2 Role Policy:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "es:*" ], "Resource": [ "arn:aws:es:us-east-1:XXXXXXXXXXXX:domain/my-domain", "arn:aws:es:us-east-1:XXXXXXXXXXXX:domain/my-domain/*" ], "Effect": "Allow" } ] }

Я не знаю, если это проблема разрешений или я сделал ошибку при подписании приложения.

Мне нужна помощь, чтобы решить эту проблему,Заранее большое спасибо.

1 Ответ

0 голосов
/ 03 октября 2018

Когда настроен доступ VPC, нет необходимости перехватывать запрос-подпись aws при использовании шаблона политики доступа ES:

enter image description here

ВыМожно настроить доступ через ES Security Group.Вы должны добавить входящее правило, например, так:

Type: HTTPS
Protocol: TCP
Port: 443
Source: sg-abcdefghijklmno (Your EC2 instance Security group)

Надеюсь, это поможет

...