Je veux lancer un projet CodeBuild pour exécuter mes tests d'intégration. Mon application utilise AWS ElasticSearch Service comme stockage d'index Hibernate Search.AWS Elastisearch Politique d'accès pour l'intégration CodeBuild Tests avec Hibernate Search en utilisant un stockage ElasticSearch pour les index
J'ai ajouté une politique à mon domaine ES qui permet aux instances ec2 privées d'accéder à ES via une passerelle NAT. Malheureusement, je ne peux pas trouver la bonne politique pour permettre à CodeBuild d'accéder à ES. Lorsque j'exécute le projet CodeBuild, j'obtiens une erreur 403 quand Hibernate essaie de vérifier l'existence d'un index.
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
J'ai essayé de configurer ES Politique d'accès pour permettre l'accès libre au domaine, teste puis exécute ok (« AWS »: « * »).
C'est la politique ES Accès
{
"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"
}
}
}
]
}
Comme principale, j'ai aussi essayé ce qui suit:
"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"
Toute aide sera très appréciée.
Merci
Nous avons fait de bons progrès à ce sujet dans Hibernate Search: http://in.relation.to/2017/06/13/hibernate-search-5-8-0-Beta3/ – Sanne