AWS WAF, AWS Firewall Manager 및 AWS Shield Advanced
개발자 가이드 (API 버전 2015-08-24)

AWS WAF 또는 Shield Advanced에 HTTPS 요청 수행

RFC 2616에 정의되어 있는 것처럼, AWS WAF 및 Shield Advanced 요청은 HTTPS 요청입니다. HTTP 요청과 마찬가지로, AWS WAF 또는 Shield Advanced에 대한 요청에는 요청 방법, URI, 요청 헤더 및 요청 본문이 포함됩니다. 응답에는 HTTP 상태 코드, 응답 헤더, 그리고 때로는 응답 본문이 포함됩니다.

요청 URI

요청 URI는 항상 슬래시(/)입니다.

HTTP 헤더

AWS WAF 및 Shield Advanced는 HTTP 요청 헤더에서 다음 정보를 요구합니다.

호스트(필수)

리소스가 생성되는 위치를 지정하는 엔드포인트입니다. AWS 리전 및 엔드포인트에서 다양한 엔드포인트를 찾을 수 있습니다. 예를 들어, CloudFront 배포의 경우 AWS WAF에 대한 Host 헤더의 값은 waf.amazonaws.com:443입니다.

x-amz-date 또는 날짜(필수)

Authorization 헤더에 포함된 서명을 만드는 데 사용되는 날짜입니다. 다음 예와 같이 ISO 8601 표준 형식을 사용하여 UTC 시간으로 날짜를 지정합니다.

x-amz-date: 20151007T174952Z

x-amz-date 또는 Date를 포함시켜야 합니다. 일부 HTTP 클라이언트 라이브러리에서는 Date 헤더를 설정할 수 없습니다. x-amz-date 헤더가 있으면 AWS WAF에서 요청을 인증할 때 모든 Date 헤더가 무시됩니다.

타임스탬프는 요청을 수신할 때 AWS 시스템 시간으로 15분 이내여야 합니다. 그렇지 않으면 다른 사람이 요청을 재생하는 것을 방지하기 위해 RequestExpired 오류 코드와 함께 요청이 실패합니다.

권한 부여(필수)

요청 인증에 필요한 정보. 이 헤더를 구성하는 방법에 대한 자세한 내용은 요청 인증 단원을 참조하십시오.

X-Amz-Target(필수)

AWSWAF_ 또는 AWSShield_, 문장 부호 없는 API 버전, 마침표(.), 작업 이름을 연결합니다. 예를 들면 다음과 같습니다.

AWSWAF_20150824.CreateWebACL

Content-Type(조건부)

다음 예와 같이 콘텐츠 유형이 JSON 및 JSON의 버전임을 지정합니다.

Content-Type: application/x-amz-json-1.1

조건: POST 요청에 필수입니다.

Content-Length(조건부)

RFC 2616에 따른 메시지의 길이(헤더 제외).

조건: 요청 본문 자체에 정보가 포함되어 있는 경우에 필요합니다(대부분의 도구 키트는 이 헤더를 자동으로 추가함).

다음은 AWS WAF에서 웹 ACL을 생성하기 위한 HTTP 요청의 헤더 예제입니다.

POST / HTTP/1.1 Host: waf.amazonaws.com:443 X-Amz-Date: 20151007T174952Z Authorization: AWS4-HMAC-SHA256 Credential=AccessKeyID/20151007/us-east-2/waf/aws4_request, SignedHeaders=host;x-amz-date;x-amz-target, Signature=145b1567ab3c50d929412f28f52c45dbf1e63ec5c66023d232a539a4afd11fd9 X-Amz-Target: AWSWAF_20150824.CreateWebACL Accept: */* Content-Type: application/x-amz-json-1.1; charset=UTF-8 Content-Length: 231 Connection: Keep-Alive

HTTP 요청 본문

많은 AWS WAF 및 Shield Advanced API 작업에는 JSON 형식의 데이터를 요청 본문에 포함시켜야 합니다.

다음 예제 요청에서는 간단한 JSON 문을 사용하여 IP 주소 192.0.2.44(CIDR 표기법에서는 192.0.2.44/32로 표시됨)을 포함하도록 IPSet(콘솔에서는 IP 일치 조건이라고 알려짐)을 업데이트합니다.

POST / HTTP/1.1 Host: waf.amazonaws.com:443 X-Amz-Date: 20151007T174952Z Authorization: AWS4-HMAC-SHA256 Credential=AccessKeyID/20151007/us-east-2/waf/aws4_request, SignedHeaders=host;x-amz-date;x-amz-target, Signature=145b1567ab3c50d929412f28f52c45dbf1e63ec5c66023d232a539a4afd11fd9 X-Amz-Target: AWSWAF_20150824.UpdateIPSet Accept: */* Content-Type: application/x-amz-json-1.1; charset=UTF-8 Content-Length: 283 Connection: Keep-Alive { "ChangeToken": "d4c4f53b-9c7e-47ce-9140-0ee5ffffffff", "IPSetId": "69d4d072-170c-463d-ab82-0643ffffffff", "Updates": [ { "Action": "INSERT", "IPSetDescriptor": { "Type": "IPV4", "Value": "192.0.2.44/32" } } ] }