메뉴
Amazon Relational Database Service
사용 설명서 (API Version 2014-10-31)

Query API 사용

다음 섹션에서는 Query API와 함께 사용되는 파라미터 및 요청 인증에 대해 설명합니다.

쿼리 파라미터

HTTP 쿼리 기반 요청은 GET 또는 POST와 같은 HTTP 동사와 Action 쿼리 매개 변수를 사용하는 HTTP 요청입니다.

각 쿼리 요청은 인증 및 작업을 처리할 수 있도록 일부 공통 파라미터를 포함해야 합니다.

일부 작업은 파라미터의 목록을 허용합니다. 이러한 목록은 param.n 표기법을 사용하여 지정됩니다. n의 값은 1부터 시작하는 정수입니다.

Amazon RDS 리전과 엔드포인트에 대한 자세한 내용은 Amazon Web Services 일반 참조의 리전 및 엔드포인트 섹션의 Amazon Relational Database Service(RDS) 단원을 참조하십시오.

쿼리 요청 인증

HTTPS를 통해서만 쿼리 요청을 보낼 수 있으며 모든 쿼리 요청에는 서명이 포함되어야 합니다. 서명 버전 2 또는 서명 버전 4를 사용해야 합니다. 이 섹션에서는 서명 버전 2를 만드는 방법을 설명합니다. 서명 버전 4를 만드는 자세한 방법은 Signature Version 4 Signing Process을(를) 참조하십시오.

다음은 AWS에 대한 요청을 인증하는 데 사용되는 기본 단계입니다. 이 프로세스에서는 사용자가 AWS에 등록되어 있으며 액세스 키 ID 및 보안 액세스 키를 가지고 있다고 가정합니다.

작은 정보

AWS Your Account 페이지의 Security Credentials 섹션에서 액세스 키 ID와 보안 액세스 키를 찾을 수 있습니다.

AWS에 대한 요청 인증 방법

  1. 발신자가 AWS에 대한 요청을 구성합니다.

  2. 발신자가 이 항목의 다음 섹션에 정의된 방법으로 SHA-1 해시 기능을 사용하는 HMAC(Keyed-Hashing for Message Authentication Code) 요청 서명을 계산합니다.

  3. 요청의 발신자가 요청 데이터, 서명 및 액세스 키 ID(사용된 보안 액세스 키의 키 식별자)를 AWS로 보냅니다.

  4. AWS는 액세스 키 ID를 사용하여 보안 액세스 키를 찾습니다.

  5. AWS는 요청의 서명 계산에 사용된 동일한 알고리즘을 사용하여 요청 데이터 및 보안 액세스 키에서 서명을 생성합니다.

  6. 서명이 일치하는 경우 요청이 인증되는 것으로 간주됩니다. 서명이 일치하지 않는 경우 요청이 삭제되고 AWS는 오류를 반환합니다.

참고

Timestamp 매개 변수가 요청에 포함된 경우 요청에 대해 계산된 서명은 그 매개 변수 값보다 15분 후에 만료됩니다. Expires 매개 변수가 요청에 포함된 경우 그 서명은 Expires 매개 변수에 의해 지정된 시간에 만료됩니다.

요청 서명을 계산하려면

  1. 정규화된 쿼리 문자열을 만듭니다. 이 절차의 뒷부분에서 필요합니다.

    1. UTF-8 쿼리 문자열 구성 요소를 매개 변수 이름의 일반 바이트 순서로 정렬합니다. 이 매개 변수는 GET URI 또는 POST 요청 본문(Content-Type이 application/x-www-form-urlencoded일 경우)의 내용이 사용될 수 있습니다.

    2. 다음 규칙에 따라 매개 변수 이름과 값을 URL 인코딩합니다.

      1. RFC 3986에 정의된 예약되지 않은 모든 문자는 URL 인코딩하지 않습니다. 이러한 예약되지 않은 문자는 A ~ Z, a ~ z, 0 ~ 9, 하이픈( - ), 밑줄( _ ), 마침표(. ) 및 물결표( ~ )입니다.

      2. %XY와 같이 모든 기타 문자를 퍼센트 인코딩합니다(여기서 X 및 Y는 16진 문자 0 ~ 9 및 대문자 A ~ F).

      3. 확장된 UTF-8 문자는 %XY%ZA... 형식으로 퍼센트 인코딩합니다.

      4. 공백 문자는 %20(일반 인코딩 구조인 +가 아님)으로 퍼센트 인코딩합니다.

    3. 매개 변수 값이 비어있는 경우에도 인코딩된 매개 변수 이름을 인코딩된 매개 변수 값과 등호(=)(ASCII 문자 61)로 구별합니다.

    4. 앰퍼샌드(&)(ASCII 코드 38)로 이름-값 쌍을 구별합니다.

  2. 다음의 의사(pseudo) 문법("\n"은 ASCII 줄 바꿈을 나타냄)에 따라 서명할 문자열을 만듭니다.

    Copy
    StringToSign = HTTPVerb + "\n" + ValueOfHostHeaderInLowercase + "\n" + HTTPRequestURI + "\n" + CanonicalizedQueryString <from the preceding step>

    HTTPRequestURI 구성 요소는 URI의 HTTP 절대 경로 구성 요소이고 쿼리 문자열은 포함하지는 않습니다. HTTPRequestURI가 비어있는 경우 슬래시(/)를 사용합니다.

  3. 사용자의 보안 액세스 키를 키로, SHA256 또는 SHA1을 해시 알고리즘으로 하여 방금 만든 문자열로 RFC 2104 호환 HMAC를 계산합니다.

    자세한 내용은 RFC 2104을(를) 참조하십시오.

  4. 결과 값을 base64로 변환합니다.

  5. 요청에서 Signature 매개 변수 값을 값으로 포함합니다.

예를 들어, 다음은 요청에 대한 예입니다(줄 바꿈이 명확성을 위해 추가됨).

Copy
https://rds.amazonaws.com/ ?Action=DescribeDBInstances &DBInstanceIdentifier=myinstance &Version=2010-01-01 &Timestamp=2010-05-10T17%3A09%3A03.726Z &SignatureVersion=2 &SignatureMethod=HmacSHA256 &AWSAccessKeyId=<Your AWS Access Key ID>

이전 쿼리 문자열의 경우 다음 문자열을 통해 HMAC 서명을 계산합니다.

Copy
GET\n rds.amazonaws.com\n AWSAccessKeyId=<Your AWS Access Key ID> &Action=DescribeDBInstances &DBInstanceIdentifier=myinstance &Timestamp=2010-05-10T17%3A09%3A03.726Z &SignatureMethod=HmacSHA256 &SignatureVersion=2 &Version=2009-10-16

이 결과는 다음의 서명된 요청입니다.

Copy
https://rds.amazonaws.com/ ?Action=DescribeDBInstances &DBInstanceIdentifier=myinstance &Version=2010-01-01 &Timestamp=2010-05-10T17%3A09%3A03.726Z &Signature=<URLEncode(Base64Encode(Signature))> &SignatureVersion=2 &SignatureMethod=HmacSHA256 &AWSAccessKeyId=<Your AWS Access Key ID>