OpenSearch Serverless 클러스터 또는 대시보드에 연결할 때 표시되는 403 또는 401 오류 문제를 해결하려면 어떻게 해야 합니까?
Amazon OpenSearch Serverless 클러스터에 대해 OpenSearch API 명령을 실행하거나 대시보드에 액세스하려고 할 때 403 또는 401 오류가 발생합니다.
해결 방법
참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
403 Forbidden 오류
403 Forbidden 오류 메시지는 일반적으로 AWS Identity and Access Management(IAM) ID에 올바른 권한이 없거나 요청이 올바르지 않게 서명된 경우에 발생합니다.
클라이언트에서 상세 로깅을 켜거나 IAM 콘솔에서 네트워크 탭을 선택하면 "x-aoss-response-hint': 'X01:gw-helper-deny” 오류 메시지가 표시될 수 있습니다.
OpenSearch Dashboards 및 OpenSearch Serverless 데이터 플레인 API 액세스의 경우 IAM ID의 권한 정책에 aoss:DashboardsAccessAll 및 aoss:APIAccessAll 작업을 포함하십시오. 정책 예시를 보려면 OpenSearch API 작업 사용을 참조하십시오.
OpenSearch Serverless 데이터 플레인 API 액세스의 경우 잘못 서명된 요청으로 인해 403 Forbidden 오류가 발생할 수도 있습니다. IAM 권한이 올바른지 확인한 후 클라이언트가 OpenSearch API와 상호 작용하는 방식을 검토하십시오.
간단한 버전의 코드를 작성하려면 Amazon OpenSearch Serverless 컬렉션으로 데이터 수집을 참조하십시오.
curl을 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 엔드포인트를 테스트합니다.
레코드를 인덱스로 수집하는 curl 명령 예시:
curl -XPOST \ —user "$AWS_ACCESS_KEY_ID":"$AWS_SECRET_ACCESS_KEY" \ —aws-sigv4 "aws:amz:us-east-1:aoss" \ —header "x-amz-content-sha256: $REQUEST_PAYLOAD_SHA_HASH" \ —header "x-amz-security-token: $AWS_SESSION_TOKEN" \ "https://my-collection-endpoint.us-east-1.aoss.amazonaws.com/movies-index/_doc" \ -H "Content-Type: application/json" -d '{"title": "Shawshank Redemption"}'
참고: 예시로 나온 액세스 키 ID, 비밀 키, 세션 토큰을 해당되는 값으로 바꾸십시오. 이러한 값을 가져오려면 get-session-token AWS CLI 명령을 실행하십시오.
페이로드를 보내는 경우 다음 명령을 실행하여 헤더의 일부로 페이로드의 보안 해시 알고리즘 256비트(SHA-256)를 생성합니다.
echo -n '{"title": "Shawshank Redemption"}' | shasum -a 256
GitHub 웹사이트에서 awscurl도 사용할 수 있습니다. awscurl은 EC2 인스턴스 프로파일과 같은 기본 자격 증명을 사용하므로 페이로드를 헤더로 해시할 필요가 없습니다.
awscurl 요청 예시:
awscurl --service aoss --region us-east-1 -XPOST \ "https://my-collection-endpoint.us-east-1.aoss.amazonaws.com/movies-index/_doc" \ -H "Content-Type: application/json" -d '{"title": "Shawshank Redemption"}'
awscurl --service aoss --region us-east-1 -XGET \ "https://my-collection-endpoint.us-east-1.aoss.amazonaws.com/_cat/indices"
참고: us-east-1을 AWS 리전으로 바꾸고 예시로 나온 엔드포인트를 해당되는 엔드포인트로 바꾸십시오.
상세 로깅을 사용하여 위의 헤더가 서비스에 전송된 요청의 일부인지 확인합니다. 잘못된 서명은 잘못된 헤더 값으로 인해 발생합니다. 또한 상세 로깅을 사용하여 수집 엔드포인트, 리전 및 서비스가 올바른지 확인할 수 있습니다.
기타 403 오류
수행하는 작업에 따라 다른 403 오류 메시지가 표시될 수 있습니다.
인덱스 관련 수집 작업의 경우 “Authorization failure for the following indices: [index/collectionname/indexname]”와 비슷한 오류 메시지가 표시될 수 있습니다.
검색 요청의 경우 “all shards failed” 또는 “Bad Authorization”과 같은 오류 메시지가 표시될 수 있습니다.
인덱스 관련 작업이 아닌 경우 “User does not have permissions for the requested resource”와 비슷한 오류 메시지가 표시될 수 있습니다.
이러한 오류를 해결하려면 컬렉션의 데이터 액세스 정책에 컬렉션 및 인덱스 리소스에 대한 올바른 권한이 포함되어 있는지 확인하십시오. 또한 보안 주체 섹션의 정책에 올바른 IAM ID가 포함되어 있는지 확인하십시오.
데이터 액세스 정책 구문에 대한 자세한 내용은 정책 구문을 참조하십시오.
401 Unauthorized 오류
401 오류 메시지는 일반적으로 네트워크 정책이 OpenSearch Serverless API 또는 대시보드에 대한 액세스를 거부할 때 발생합니다.
클라이언트에서 상세 로깅을 켜거나 브라우저의 개발자 콘솔에서 네트워크 탭을 볼 때 “x-aoss-response-hint': 'X01:network-policy-deny” 오류 메시지가 표시될 수 있습니다.
퍼블릭 인터넷에서 OpenSearch Serverless API와 대시보드에 액세스하려면 네트워크 정책에서 퍼블릭 액세스를 켜십시오.
JSON 형식으로 된 네트워크 정책 예시:
[ { "Rules": [ { "Resource": [ "collection/collectionname" ], "ResourceType": "dashboard" }, { "Resource": [ "collection/collectionname" ], "ResourceType": "collection" } ], "AllowFromPublic": true } ]
참고: collectionname을 컬렉션 이름으로 바꾸십시오.
API와 대시보드에 대한 프라이빗 액세스의 경우 OpenSearch Serverless용 클라이언트 VPC에에서 VPC 엔드포인트를 생성합니다.
JSON 형식으로 된 네트워크 정책 예시:
[ { "Rules": [ { "Resource": [ "collection/collectionname" ], "ResourceType": "dashboard" }, { "Resource": [ "collection/collectionname" ], "ResourceType": "collection" } ], "AllowFromPublic": false, "SourceVPCEs": [ "vpce-0c9xxxxxxxxxxa680" ] } ]
참고: collectionname을 컬렉션 이름으로 바꾸십시오.
다른 네트워크 정책 예시는 Amazon OpenSearch Serverless 네트워크 액세스를 참조하십시오.
다른 VPC에서 OpenSearch Serverless 도메인에 액세스하려면 VPC에서 OpenSearch Serverless VPC 엔드포인트를 생성하십시오. 자세한 내용은 인터페이스 엔드포인트(AWS PrivateLink)를 사용하여 Amazon OpenSearch Serverless에 액세스를 참조하십시오.
참고: 클라이언트가 VPC에서 OpenSearch Serverless API 엔드포인트를 호출하도록 선택할 수 있습니다. 퍼블릭 인터넷을 사용하는 브라우저에서 대시보드에 액세스할 수 있습니다.
기업 네트워크에서 대시보드에 비공개로 액세스하려면 인바운드 DNS 리졸버 엔드포인트를 사용하십시오. DNS 쿼리는 올바른 프라이빗 IP 주소를 반환합니다. 자세한 내용은 VPC 엔드포인트를 사용하여 Amazon OpenSearch Serverless 컬렉션에 액세스를 참조하십시오.
관련 정보
내 컬렉션을 보기 위해 OpenSearch Serverless 대시보드 액세스 문제를 해결하려면 어떻게 해야 합니까?
- 언어
- 한국어
