본문 바로가기
Amazon AWS

Opensearch 생성 시, vpc access 불가로 인한 생성 불가 오류 해결

by 홍띠 2022. 6. 19.

Cloudformation을 이용해서 Opensearch 도메인을 생성하는데, 아래와 같은 에러가 발생하면서 생성이 실패되었다.

Resource handler returned message: "Invalid request provided: Before you can proceed, you must enable a service-linked role to give Amazon OpenSearch Service permissions to access your VPC. (Service: OpenSearch, Status Code: 400)

에러를 검색하고 찾아보니, "서비스 연결 역할" 이라는 IAM 역할이 없어서 발생한 문제 였다.

서비스연결역할은  서비스에서 다른 AWS 서비스를 자동으로 호출하는 데 필요한 모든 권한을 포함하는것으로, 이를 통해서 다른 서비스에 접근할 수 있는것이다.

(자세한 설명은 https://docs.aws.amazon.com/ko_kr/opensearch-service/latest/developerguide/slr.html 참고하면 된다.)


시도 1. CreateServiceLinkedRole 정책 추가

공식문서를 보면, 서비스 연결역할은 일반적으로 서비스를 생성하는 IAM사용자에게 CreateServiceLinkedRole 정책에 대한 권한이 있으면 자동으로 생성된다고 한다. 

 

내 경우에는 admin권한을 갖고 있는 사용자이기 때문에 위의 권한도 포함되어 있을것 같았으나, 혹시 모르니 일단 추가를 해 보았다.

 

1. AWS CLI를 이용해 정책을 추가 한다.

aws iam put-user-policy --user-name <사용자이름> --policy-name CreateServiceLinkedRole --policy-document file://inlinePolicy-CreateServiceLinkedRole.json

2. 정책이 정상적으로 추가 되었는지 콘솔에서 확인한다.

3. 이제 다시 Opensearch 생성을 시도한다.

=> 결과는 실패... 위의 정책이 추가되면 자동으로 opensearch가 생성되면서 서비스연결역할도 생성되어야 하나, 동일한 오류만 발생한다.


시도 2. Opensearch 서비스 연결 역할을 직접 생성한다.

1. IAM 콘솔에서 역할메뉴를 선택하고 역할만들기를 클릭한다.

2. AWS 서비스를 선택하고, 사용사례에서 다른 서비스 -> Amazon Opensearch Service를 선택한다.

3. 앞에서 opensearch를 선택했기 때문에, 권한 정책이 한가지만 나올 것이다. 아래의 권한정책을 확인하고 다음으로 넘어간다.

4. 요약 확인 후 역할 생성을 선택하면 역할 생성이 완료 된다!

 

5. 다시 opensearch 생성을 시도한다.

=> 성공! 정상적으로 Opensearch 도메인이 생성되었다!