명령줄 도구를 사용하여 Neptune DB 클러스터에 쿼리 제출 - Amazon Neptune

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

명령줄 도구를 사용하여 Neptune DB 클러스터에 쿼리 제출

이 설명서의 여러 예제에서 볼 수 있듯이 Neptune DB 클러스터에 쿼리를 제출하는 명령줄 도구를 사용하면 매우 편리합니다. curl 도구는 IAM 인증이 활성화되지 않은 경우 Neptune 엔드포인트와 통신하기 위한 훌륭한 옵션입니다.

하지만 데이터를 안전하게 보호하려면 IAM 인증을 활성화하는 것이 가장 좋습니다.

IAM 인증이 활성화되면 모든 요청은 Signature Version 4(Sig4)를 사용하여 서명해야 합니다. 타사 awscurl 명령줄 도구는 curl와 동일한 구문을 사용하며 Sig4 서명을 통해 쿼리에 서명할 수 있습니다. 아래 awscurl 사용하기 섹션에서는 임시 보안 인증 정보로 안전하게 awscurl을 사용하는 방법을 설명합니다.

HTTPS를 사용하도록 명령줄 도구 설정

Neptune에서는 모든 연결에 HTTPS를 사용해야 합니다. curl, awscurl 등의 모든 명령줄 도구에서 HTTPS를 사용하려면 적절한 인증서에 액세스해야 합니다. curl 또는 awscurl이 적절한 인증서를 찾을 수 있어야 추가 파라미터 없이 HTTP 연결과 같이 HTTPS 연결을 처리할 수 있습니다. 이 설명서의 예제는 해당 시나리오를 기반으로 합니다.

curl 설명서의 SSL 인증서 확인에는 이러한 인증서를 가져오는 방법과 curl에서 사용할 수 있는 인증 기관(CA) 인증서 스토어로 적절하게 형식을 지정하는 방법이 나와 있습니다.

이렇게 하면 CURL_CA_BUNDLE 환경 변수를 사용하여 이 CA 인증서 스토어의 위치를 지정할 수 있습니다. Windows에서 curlcurl-ca-bundle.crt라는 파일에서 자동으로 이 인증서를 찾습니다. 먼저 curl.exe와 동일한 디렉터리에서 찾은 다음 경로의 다른 곳을 찾습니다. 자세한 내용은 SSL Certificate Verification을 참조하십시오.

임시 보안 인증 정보와 awscurl을 사용하여 IAM 인증이 활성화된 상태에서 DB 클러스터에 안전하게 연결

awscurl 도구는 curl과 같은 구문을 사용하지만, 추가 정보도 필요합니다.

  • --access_key   –   유효한 액세스 키입니다. 이 파라미터를 사용하여 지정하지 않는 경우 AWS_ACCESS_KEY_ID 환경 변수 또는 구성 파일에 입력해야 합니다.

  • --secret_key   –   액세스 키에 해당하는 비밀 키입니다. 이 파라미터를 사용하여 지정하지 않는 경우 AWS_SECRET_ACCESS_KEY 환경 변수 또는 구성 파일에 입력해야 합니다.

  • --security_token   –   유효한 세션 토큰입니다. 이 파라미터를 사용하여 지정하지 않는 경우 AWS_SECURITY_TOKEN 환경 변수 또는 구성 파일에 입력해야 합니다.

과거에는 IAM 사용자 보안 인증 정보나 루트 보안 인증 정보와 같은 영구 보안 인증 정보를 awscurl과 사용하는 것이 일반적이었지만, 이는 권장되지 않습니다. 대신 AWS Security Token Service(STS) API 또는 AWS CLI 래퍼 중 하나를 사용하여 임시 보안 인증 정보를 생성하세요.

STS 호출에서 반환된 AccessKeyId, SecretAccessKey, SessionToken 값을 구성 파일이 아닌 쉘 세션의 적절한 환경 변수에 배치하는 것이 가장 좋습니다. 이 경우 쉘이 종료되면 보안 인증 정보가 자동으로 삭제되지만, 구성 파일의 경우에는 그렇지 않습니다. 마찬가지로, 필요한 기간보다 긴 기간 동안 임시 보안 인증 정보를 요청하지 마세요.

다음 예제는 sts assume-role을 사용하여 Linux 쉘에서 30분 동안 사용할 수 있는 임시 보안 인증 정보를 얻은 후 awscurl에서 해당 보안 인증 정보를 찾을 수 있는 환경 변수에 배치하는 단계를 보여줍니다.

aws sts assume-role \ --duration-seconds 1800 \ --role-arn "arn:aws:iam::(account-id):role/(rolename)" \ --role-session-name AWSCLI-Session > $output AccessKeyId=$(cat $output | jq '.Credentials''.AccessKeyId') SecretAccessKey=$(cat $output | jq '.Credentials''.SecretAccessKey') SessionToken=$(cat $output | jq '.Credentials''.SessionToken') export AWS_ACCESS_KEY_ID=$AccessKeyId export AWS_SECRET_ACCESS_KEY=$SecretAccessKey export AWS_SESSION_TOKEN=$SessionToken

그러면 다음과 같이 awscurl을 사용하여 DB 클러스터에 서명된 요청을 보낼 수 있습니다.

awscurl (your cluster endpoint):8182/status \ --region us-east-1 \ --service neptune-db