Ich möchte ein CodeBuild-Projekt starten, um meine Integrationstests auszuführen. Meine Anwendung verwendet den AWS ElasticSearch-Dienst als Index für den Hibernate-Suchspeicher.AWS Elastisearch-Zugriffsrichtlinie für CodeBuild-Integrationstests mit Hibernate-Suche mithilfe eines ElasticSearch-Indexspeichers
Ich habe meiner ES-Domäne eine Richtlinie hinzugefügt, die privaten ec2-Instanzen den Zugriff auf ES über ein NAT-Gateway ermöglicht. Leider kann ich die richtige Richtlinie nicht finden, um CodeBuild Zugriff ES zu erlauben. Wenn ich CodeBuild-Projekt ausführe, erhalte ich einen Fehler 403, wenn Hibernate versucht, ein Indexexistenz zu überprüfen.
Caused by: org.hibernate.search.exception.SearchException: HSEARCH400007: Elasticsearch request failed.
Request:
Operation: IndicesExists
URI:com.mycompany.myproject.model.tenant
Data:
null
Response:
=========
Status: 403
Error message: 403 Forbidden
Cluster name: null
Cluster status: null
Ich habe versucht, konfiguriert ES Access Policy offenen Zugriff auf die Domäne zu ermöglichen, prüft dann läuft ok ("AWS": "*").
Dies ist die ES-Richtlinie
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::AWS_ACCOUNT_ID:role/CodeBuildRole-XXXXXXXX"
},
"Action": "es:*",
"Resource": "arn:aws:es:eu-west-1:AWS_ACOUNT_ID:domain/elastic-search-domain/*"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:*",
"Resource": "arn:aws:es:eu-west-1:AWS_ACCOUNT_ID:domain/elastic-search-domain/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "NAT_GW_IP"
}
}
}
]
}
Als Haupt habe ich auch die folgende versucht:
wird"arn:aws:sts::AWS_ACCOUNT_ID:assumed-role/CodeBuildRole-XXXXXXXXX/*"
"arn:aws:iam::AWS_ACCOUNT_ID:role/CodeBuildRole-XXXXXXXXX"
"arn:aws:iam::AWS_ACCOUNT_ID:root"
"arn:aws:iam::AWS_ACCOUNT_ID:user/MI_USER_ADMIN"
Jede Hilfe sehr geschätzt.
Danke
Wir haben in der Hibernate-Suche einige gute Fortschritte gemacht: http://in.relation.to/2017/06/13/hibernate-search-5-8-0-Beta3/ – Sanne