Amazon S3 File Gateway 설명서가 Amazon S3 File Gateway란 무엇인가요?로 이동되었습니다.
Amazon FSx 파일 게이트웨이 설명서가 Amazon FSx 파일 게이트웨이란? 으로 이동되었습니다.
Tape Gateway 설명서가 Tape Gateway란 무엇인가요?로 이동되었습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
APIStorage Gateway에 대한 참조
콘솔을 사용하는 것 외에도 를 사용하여 AWS Storage Gateway API 게이트웨이를 프로그래밍 방식으로 구성하고 관리할 수 있습니다. 이 섹션에서는 AWS Storage Gateway 작업, 인증을 위한 요청 서명 및 오류 처리에 대해 설명합니다. Storage Gateway에 사용할 수 있는 리전 및 엔드포인트에 대한 자세한 내용은AWS 일반 참조에서 AWS Storage Gateway 엔드포인트 및 할당량을 참조하세요.
참고
를 사용하여 애플리케이션을 개발할 AWS SDKs 때도 를 사용할 수 AWS Storage Gateway있습니다. Java의 AWS SDKs 경우. NET기본 AWS Storage Gateway API 요소를 PHP 래핑하여 프로그래밍 작업을 단순화합니다. SDK라이브러리 다운로드에 대한 자세한 내용은 샘플 코드 라이브러리를
Storage Gateway 필수 요청 헤더
이 섹션에서는 모든 POST 요청과 함께 Storage Gateway에 전송해야 하는 필수 헤더에 대해 설명합니다. HTTP헤더를 포함하여 호출하려는 작업, 요청 날짜, 요청 발신자의 승인을 나타내는 정보 등 요청의 주요 정보를 식별할 수 있습니다. 헤더는 대소문자를 구별하고 헤더의 순서는 중요하지 않습니다.
다음 예제는 작업에 사용되는 헤더를 보여줍니다. ActivateGateway
POST / HTTP/1.1 Host: storagegateway.us-east-2.amazonaws.com Content-Type: application/x-amz-json-1.1 Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120425/us-east-2/storagegateway/aws4_request, SignedHeaders=content-type;host;x-amz-date;x-amz-target, Signature=9cd5a3584d1d67d57e61f120f35102d6b3649066abdd4bf4bbcf05bd9f2f8fe2 x-amz-date: 20120912T120000Z x-amz-target: StorageGateway_20120630.ActivateGateway
Storage Gateway에 대한 POST 요청에 포함해야 하는 헤더는 다음과 같습니다. “x-amz”로 시작하는 아래 헤더는 특정 헤더입니다. AWS나열된 다른 모든 헤더는 트랜잭션에 사용되는 공통 헤더입니다. HTTP
헤더 | 설명 |
---|---|
Authorization |
권한 부여 헤더는 Storage Gateway가 해당 요청이 요청자에게 유효한 작업인지 판단할 수 있게 해주는 요청에 대한 몇 가지 정보를 포함합니다. 이 헤더의 형식은 다음과 같습니다(가독성을 높이기 위해 줄 바꿈 추가).
위 구문에서는 년, 월 YourAccessKey, 일 (yyyymmdd), 지역 및 시간을 지정합니다. CalculatedSignature 승인 헤더의 형식은 V4 서명 프로세스의 요구 사항에 따라 달라집니다. AWS 서명 관련 세부 정보는 요청에 서명하기 단원에 나와 있습니다. |
Content-Type |
|
Host |
호스트 헤더를 사용하여 요청을 전송하는 Storage Gateway 엔드포인트를 지정합니다. 예를 들어,
|
x-amz-date |
HTTP
|
x-amz-target |
이 헤더는 요청하려는 작업 API 및 의 버전을 지정합니다. 대상 헤더 값은 API 버전과 API 이름을 연결하여 구성되며 형식은 다음과 같습니다.
operationName값 (예: "ActivateGateway“) 은 API 목록에서 찾을 수 있습니다. APIStorage Gateway에 대한 참조 |
요청에 서명하기
Storage Gateway에서는 요청에 서명하여 전송하는 모든 요청을 인증해야 합니다. 요청에 서명하려면 암호화 해시 함수를 이용해 디지털 서명을 계산해야 합니다. 암호화 해시는 입력을 근거로 하여 고유 해시 값을 반환하는 함수입니다. 해시 함수에 대한 입력에는 요청 텍스트와 보안 액세스 키가 포함됩니다. 해시 함수는 요청에 서명으로 포함하는 해시 값을 반환합니다. 서명은 요청에서 Authorization
헤더의 일부입니다.
Storage Gateway는 요청을 수신한 후, 사용자가 요청에 서명할 때와 동일한 해시 함수 및 입력을 사용하여 서명을 재계산합니다. 결과 서명이 요청 서명과 일치할 경우 Storage Gateway에서 요청을 처리합니다. 그렇지 않으면 요청이 거부됩니다.
Storage Gateway는 AWS Signature Version 4를 이용한 인증을 지원합니다. 서명을 계산하기 위한 프로세스는 다음 세 작업으로 나뉠 수 있습니다.
-
HTTP요청을 표준 형식으로 재배열하십시오. 정규 형식을 사용해야 하는 이유는 Storage Gateway에서 서명을 재계산하여 사용자가 보낸 서명과 비교할 때 동일한 정규 형식을 사용하기 때문입니다.
-
암호화 해시 함수에 대한 입력 값 중 하나로 사용할 문자열을 만듭니다. 서명할 문자열이라는 문자열은 해시 알고리즘의 이름, 요청 날짜, 자격 증명 범위 문자열, 이전 작업에서 정규화된 요청을 연결한 것입니다. 자격 증명 범위 문자열 자체는 날짜, 리전 및 서비스 정보를 연결한 것입니다.
-
서명할 문자열과 파생된 의 두 입력 문자열을 허용하는 암호화 해시 함수를 사용하여 요청에 대한 서명을 만듭니다. 파생된 키는 보안 액세스 키로 시작하여 자격 증명 범위 문자열을 사용하여 일련의 해시 기반 메시지 인증 코드 () 를 생성하여 계산됩니다. HMACs
서명 계산 예시
다음 예제에서는 서명을 만드는 방법에 대한 세부 정보를 안내합니다. ListGateways 이 예시는 서명 계산 방법을 점검하기 위한 참조로 사용할 수 있습니다. 다른 참조 계산은 Amazon Web Services 글로서리의 서명 버전 4 테스트 제품군에 포함되어 있습니다.
이 예시에서는 다음과 같이 가정합니다.
-
요청의 타임스탬프는 “2012년 9월 10일 월요일 00:00:00 “입니다. GMT
-
엔드포인트는 미국 동부(오하이오) 리전입니다.
일반 요청 구문 (본문 포함) 은 JSON 다음과 같습니다.
POST / HTTP/1.1 Host: storagegateway.us-east-2.amazonaws.com x-amz-Date: 20120910T000000Z Authorization:
SignatureToBeCalculated
Content-type: application/x-amz-json-1.1 x-amz-target: StorageGateway_20120630.ListGateways {}
POST / content-type:application/x-amz-json-1.1 host:storagegateway.us-east-2.amazonaws.com x-amz-date:20120910T000000Z x-amz-target:StorageGateway_20120630.ListGateways content-type;host;x-amz-date;x-amz-target 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
정규 요청의 마지막 줄은 요청 본문의 해시입니다. 또한 정규 요청에서 비어 있는 세 번째 줄에 주의해야 합니다. 이 API (또는 Storage GatewayAPIs) 에 대한 쿼리 매개 변수가 없기 때문입니다.
AWS4-HMAC-SHA256 20120910T000000Z 20120910/us-east-2/storagegateway/aws4_request 92c0effa6f9224ac752ca179a04cecbede3038b0959666a8160ab452c9e51b3e
서명할 문자열의 첫째 줄은 알고리즘, 둘째 줄은 타임스탬프, 셋째 줄은 자격 증명 범위, 마지막 줄은 작업 1 정규 요청의 해시입니다.
을 위한 파생된 키는 다음과 같이 표시할 수 있습니다.
derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20120910"),"us-east-2"),"storagegateway"),"aws4_request")
보안 액세스 키인 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY를 사용하는 경우, 계산된 서명은 다음과 같습니다.
6d4c40b8f2257534dbdca9f326f147a0a7a419b63aff349d9d9c737c9a0f4c81
마지막 단계는 Authorization
헤더를 생성하는 것입니다. 데모 액세스 키의 AKIAIOSFODNN7EXAMPLE 경우 헤더 (가독성을 위해 줄 바꿈을 추가함) 는 다음과 같습니다.
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120910/us-east-2/storagegateway/aws4_request, SignedHeaders=content-type;host;x-amz-date;x-amz-target, Signature=6d4c40b8f2257534dbdca9f326f147a0a7a419b63aff349d9d9c737c9a0f4c81
오류 응답
이 섹션에서는 AWS Storage Gateway 오류에 대한 참조 정보를 제공합니다. 이 오류는 오류 예외 및 작업 오류 코드로 표시됩니다. 예를 들어 요청 서명에 문제가 있는 경우 모든 API 응답에서 오류 InvalidSignatureException
예외가 반환됩니다. 그러나 작업 오류 ActivationKeyInvalid
코드는 에 대해서만 반환됩니다 ActivateGatewayAPI.
오류 유형에 따라 Storage Gateway는 예외만 반환하거나 예외와 작업 오류 코드를 모두 반환할 수 있습니다. 오류 응답 예시는 오류 응답에 있습니다.
예외
다음 표에는 AWS Storage Gateway API 예외가 나열되어 있습니다. AWS Storage Gateway 작업에서 오류 응답을 반환하는 경우 응답 본문에는 이러한 예외 중 하나가 포함됩니다. InternalServerError
와 InvalidGatewayRequestException
은 특정 작업 오류 코드를 부여하는 작업 오류 코드(작업 오류 코드) 메시지 코드 중 하나를 반환합니다.
예외 | 메시지 | HTTP상태 코드 |
---|---|---|
IncompleteSignatureException |
지정한 서명이 불완전합니다. | 400 잘못된 요청 |
InternalFailure |
알 수 없는 오류, 예외 또는 장애로 인해 요청 처리가 실패했습니다. | 500 Internal Server Error |
InternalServerError |
작업 오류 코드 작업 오류 코드 메시지 중 하나입니다. | 500 Internal Server Error |
InvalidAction |
요청된 동작 또는 작업이 유효하지 않습니다. | 400 잘못된 요청 |
InvalidClientTokenId |
제공된 X.509 인증서 또는 AWS 액세스 키 ID는 당사 기록에 존재하지 않습니다. | 403 금지됨 |
InvalidGatewayRequestException |
작업 오류 코드의 작업 오류 코드 메시지 중 하나입니다. | 400 잘못된 요청 |
InvalidSignatureException |
우리가 계산한 요청 서명이 사용자가 제공한 서명과 일치하지 않습니다. AWS 액세스 키와 서명 방법을 확인하세요. | 400 잘못된 요청 |
MissingAction |
요청에서 작업 또는 작업 파라미터가 누락되었습니다. | 400 잘못된 요청 |
MissingAuthenticationToken |
요청에는 유효한 (등록된) AWS 액세스 키 ID 또는 X.509 인증서가 포함되어야 합니다. | 403 금지됨 |
RequestExpired |
요청이 만료 날짜 또는 요청 날짜(15분 패딩)를 지났거나 요청 날짜가 향후 15분 초과 후에 효력이 발생합니다. | 400 잘못된 요청 |
SerializationException |
직렬화 도중에 오류가 발생했습니다. JSON페이로드의 형식이 올바른지 확인하세요. | 400 잘못된 요청 |
ServiceUnavailable |
서버의 일시적 장애로 인해 요청이 실패했습니다. | [503 Service Unavailable] |
SubscriptionRequiredException |
AWS 액세스 키 ID를 사용하려면 서비스에 가입해야 합니다. | 400 잘못된 요청 |
ThrottlingException |
속도를 초과하였습니다. | 400 잘못된 요청 |
TooManyRequests |
요청이 너무 많음. | 429 요청이 너무 많음 |
UnknownOperationException |
알 수 없는 작업을 지정하였습니다. 유효한 작업은 Storage Gateway의 작업에 나열되어 있습니다. | 400 잘못된 요청 |
UnrecognizedClientException |
요청에 포함된 보안 토큰이 유효하지 않습니다. | 400 잘못된 요청 |
ValidationException |
입력 파라미터의 값이 잘못되었거나 범위를 벗어났습니다. | 400 잘못된 요청 |
작업 오류 코드
다음 표에는 작업 오류 코드와 해당 코드를 반환할 수 APIs 있는 AWS Storage Gateway 작업 오류 코드 간의 매핑이 나와 있습니다. 모든 작업 오류 코드는 예외에 설명된 두 가지 일반 예외(InternalServerError
및 InvalidGatewayRequestException
) 중 하나와 함께 반환됩니다.
작업 오류 코드 | 메시지 | 이 오류 코드를 반환하는 작업 |
---|---|---|
ActivationKeyExpired |
지정한 정품 인증 키가 만료되었습니다. | ActivateGateway |
ActivationKeyInvalid |
지정한 정품 인증 키가 유효하지 않습니다. | ActivateGateway |
ActivationKeyNotFound |
지정한 정품 인증 키를 찾을 수 없습니다. | ActivateGateway |
BandwidthThrottleScheduleNotFound |
지정한 대역폭 제한을 찾을 수 없습니다. | DeleteBandwidthRateLimit |
CannotExportSnapshot |
지정한 스냅샷을 내보낼 수 없습니다. | |
InitiatorNotFound |
지정된 초기자를 찾을 수 없습니다. | DeleteChapCredentials |
DiskAlreadyAllocated |
지정한 디스크가 이미 할당되었습니다. | |
DiskDoesNotExist |
지정한 디스크가 존재하지 않습니다. | |
DiskSizeNotGigAligned |
지정한 디스크가 기가바이트 정렬되어 있지 않습니다. | |
DiskSizeGreaterThanVolumeMaxSize |
지정한 디스크 크기가 최대 볼륨 크기보다 큽니다. | CreateStorediSCSIVolume |
DiskSizeLessThanVolumeSize |
지정한 디스크 크기가 볼륨 크기보다 작습니다. | CreateStorediSCSIVolume |
DuplicateCertificateInfo |
지정한 인증서 정보가 중복되어 있습니다. | ActivateGateway |
GatewayInternalError |
게이트웨이 내부 오류가 발생하였습니다. | |
GatewayNotConnected |
지정한 게이트웨이가 연결되지 않았습니다. | |
GatewayNotFound |
지정한 게이트웨이를 찾을 수 없습니다. | |
GatewayProxyNetworkConnectionBusy |
지정한 게이트웨이 프록시 네트워크 연결이 사용 중입니다. | |
InternalError |
내부 오류가 발생했습니다. | |
InvalidParameters |
지정한 요청에 잘못된 파라미터가 포함되어 있습니다. | |
LocalStorageLimitExceeded |
로컬 스토리지 한도를 초과했습니다. | |
LunInvalid |
지정된 내용이 LUN 올바르지 않습니다. | CreateStorediSCSIVolume |
MaximumVolumeCountExceeded |
최대 볼륨 수를 초과하였습니다. | |
NetworkConfigurationChanged |
게이트웨이 네트워크 구성이 변경되었습니다. | |
NotSupported |
지정한 작업을 지원하지 않습니다. | |
OutdatedGateway |
지정한 게이트웨이의 날짜가 만료되었습니다. | ActivateGateway |
SnapshotInProgressException |
지정한 스냅샷이 진행 중입니다. | DeleteVolume |
SnapshotIdInvalid |
지정한 스냅샷이 유효하지 않습니다. | |
StagingAreaFull |
스테이징 영역이 가득 찼습니다. | |
TargetAlreadyExists |
지정한 대상이 이미 존재합니다. | |
TargetInvalid |
지정한 대상이 유효하지 않습니다. | |
TargetNotFound |
지정한 대상을 찾을 수 없습니다. | |
UnsupportedOperationForGatewayType |
지정한 작업이 게이트웨이 유형에 유효하지 않습니다. | |
VolumeAlreadyExists |
지정한 볼륨이 이미 존재합니다. | |
VolumeIdInvalid |
지정한 볼륨이 유효하지 않습니다. | DeleteVolume |
VolumeInUse |
지정한 볼륨이 이미 사용 중입니다. | DeleteVolume |
VolumeNotFound |
지정한 볼륨을 찾을 수 없습니다. | |
VolumeNotReady |
지정한 볼륨이 아직 준비되지 않았습니다. |
오류 응답
오류가 있는 경우, 응답 헤더 정보에는 다음 내용이 포함됩니다.
-
콘텐츠 유형: 애플리케이션/ -1.1 x-amz-json
-
적절한 또는 상태 코드
4xx
5xx
HTTP
오류 응답의 본문에는 발생한 오류에 대한 정보가 포함됩니다. 다음 샘플 오류 응답은 모든 오류 응답에 공통된 응답 요소의 출력 구문을 나타냅니다.
{ "__type": "String", "message": "String", "error": { "errorCode": "String", "errorDetails": "String" } }
다음 표에서는 위 구문에 표시된 JSON 오류 응답 필드를 설명합니다.
- __타입
-
예외의 예외 중 하나.
유형: 문자열
- 오류
-
API특정 오류 세부 정보가 들어 있습니다. 일반적인 오류 (즉, 특정 오류가 아닌 경우API) 에는 이 오류 정보가 표시되지 않습니다.
유형: 컬렉션
- errorCode
-
작업 오류 코드 중 하나입니다 .
유형: 문자열
- errorDetails
-
이 필드는 최신 버전의 에서는 사용되지 않습니다API.
유형: 문자열
- message
-
작업 오류 코드 메시지 중 하나입니다.
유형: 문자열
오류 응답 예시
를 사용하고 존재하지 않는 게이트웨이 ARN 요청 입력을 지정하면 다음 JSON 본문이 반환됩니다. DescribeStoredi SCSIVolumes API
{ "__type": "InvalidGatewayRequestException", "message": "The specified volume was not found.", "error": { "errorCode": "VolumeNotFound" } }
Storage Gateway에서 요청과 함께 전송된 서명과 일치하지 않는 서명을 계산하면 다음 JSON 본문이 반환됩니다.
{ "__type": "InvalidSignatureException", "message": "The request signature we calculated does not match the signature you provided." }
Storage Gateway의 작업
Storage Gateway 작업 목록은 AWS Storage Gateway API참조 자료의 작업을 참조하십시오.