기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Data Exchange 포함된 APIs에 대한 데이터 권한 생성
다음 주제에서는 REST API 데이터 세트를 생성하고 APIs가 포함된 데이터 권한 부여에 추가하는 프로세스를 설명합니다 AWS Data Exchange. AWS Data Exchange 콘솔이나 AWS Command Line Interface을 사용하여 프로세스를 완료할 수 있습니다.
Amazon API Gateway REST API를 설정한 후에는 AWS Data Exchange에서 새 API 데이터 세트를 생성할 수 있습니다. 그런 다음 개정을 생성하고 API 자산을 추가할 수 있습니다.
API 자산을 사용하여 데이터 권한 부여를 생성하면 AWS Data Exchange 엔드포인트에 대한 수신자 요청이 API Gateway API로 프록시할 수 있습니다.
이 프로세스는 다음과 같은 단계로 이루어집니다.
사전 조건
API가 포함된 제품을 게시하려면 먼저 다음 사전 조건을 충족해야 합니다.
-
AWS 서비스를 포함하여를 사용하려면 먼저에 가입 AWS 하고 관리 사용자를 생성 AWS Data Exchange해야 합니다. 자세한 내용은AWS IAM Identity Center 사용 설명서에서 시작하기를 참조하세요.
-
REST API는 데이터 액세스를 위한 적절한 요청 및 응답 모델(예: Amazon DynamoDB 또는 AWS Lambda)을 사용하는 통합 기능을 갖춘 Amazon API Gateway에 있어야 합니다. 자세한 내용은Amazon API Gateway 개발자 안내서의 API Gateway에서 REST API 개발과 REST APIs 작업을 참조하세요.
참고
공개 API Gateway API만 지원합니다.
-
API Gateway REST API는 AWS Data Exchange 서비스 주체의 호출을 인증하고 권한을 부여할 수 있어야 합니다. API AWS Data Exchange 에 대한의 모든 요청은 AWS Data Exchange credentials. AWS Data Exchange works로 서명된 서명 버전 4(SigV4) 프로토콜을 사용자 지정 도메인 및 도메인 키 매핑과 함께 사용합니다.
참고
AWS Data Exchange 는 Amazon Cognito, 인증 없음 및 AWS Lambda 권한 부여자를 지원하지 않습니다.
-
API Gateway REST API가 인증 및 권한 부여에 사용자 지정 자격 증명 시스템을 사용하는 경우 IAM 인증을 사용하도록 구성하고 API를 설명하는 OpenAPI 스키마를 가져옵니다. AWS Data Exchange 는 자체 서비스 자격 증명으로 API Gateway REST API를 호출하고 계정 ID와 같은 구독자 정보를 포함합니다.
-
API Gateway REST API는 백엔드 통합 역할을 합니다. 이렇게 하려면 다음 중 한 가지를 수행합니다.
-
API Gateway REST API를 통해 들어오는 모든 요청에 백엔드에서 확인할 수 있는 수명이 긴 인증 토큰을 연결합니다.
-
API Gateway를 사용하여 자격 증명을 생성하고 API를 간접적으로 호출할 수 있는 Lambda 함수를 호출합니다.
-
API는 API 통합 요청 사양에 따라 호출됩니다.
자세한 정보는 다음의 주제를 참조하세요.
API 데이터 세트 보안
AWS Data Exchange 는 TLS(전송 계층 보안) 1.2를 사용하여 트래픽 종단 간을 암호화합니다. 모든 메타데이터는 저장 시 암호화됩니다. AWS Data Exchange 는 구독자 요청 또는 백엔드의 응답을 저장하지 않습니다.
API 통합 요청 사양
의 API는 고객 요청에서 모든 헤더(에 나열된 헤더 제외헤더 전달), 본문, http 메서드, 경로 및 쿼리 문자열을 있는 그대로 AWS Data Exchange 전달하고 다음 헤더를 추가합니다.
// These headers help prevent Confused Deputy attacks. They enable the SourceAccount // and SourceArn variables in IAM policies. 'x-amz-source-account': ACCOUNT_ID, 'x-amz-source-arn': `arn:aws:dataexchange:${REGION}:${OWNER_ACCOUNT_ID}:data-sets/${DATA_SET_ID}/revisions/${REVISION_ID}/assets/${ASSET_ID}`, // These headers identify the API Asset in Data Exchange. 'x-amzn-dataexchange-asset-id': ASSET_ID, 'x-amzn-dataexchange-data-set-id': DATA_SET_ID, 'x-amzn-dataexchange-revision-id': REVISION_ID, // This header identifies the Data Exchange Product. 'x-amzn-dataexchange-product-id': PRODUCT_ID, // This header identifies the caller of Data Exchange. It will contain subscriber // information. 'x-amzn-dataexchange-requester-account-id': REQUESTER_ACCOUNT_ID, // Providers can attach custom metadata in the form of key/value pairs // to a particular subscription. We will send these key/value pairs as stringified // JSON. 'x-amz-dataexchange-subscription-metadata': STRINGIFIED_METADATA,
헤더 전달
AWS Data Exchange 는 데이터 소유자 백엔드로 전달하기 전에 Amazon에 네임스페이스된 인증과 관련된 헤더를 제거합니다. 특히 AWS Data Exchange 다음을 제거합니다.
-
Authentication
헤더 -
x-amz
로 시작되는 헤더
프록시의 결과로 host
헤더를 덮어씁니다.
1단계: API 리소스 정책 업데이트
사전 조건을 충족하는 Amazon API Gateway REST API가 있는 경우 구독자가 API 스키마를 가져오도록 요청할 때 API를 호출할 수 있는 AWS Data Exchange 기능을 부여하도록 API 리소스 정책을 업데이트해야 합니다.
API 리소스 정책을 업데이트하려면
-
API의 리소스 정책에 다음 정책을 추가합니다.
{ "Effect": "Allow", "Principal": {"Service": "dataexchange.amazonaws.com"}, "Action": "execute-api:Invoke", "Resource": "*", "Condition": {"StringEquals": {"aws:SourceAccount": "<account-id>"}} }
-
account-id
를 API 데이터 세트를 생성할 계정으로 변경하세요.API Gateway 리소스가 있는 계정은 데이터 세트를 생성하는 계정과 동일한 계정에 속하지 않아도 됩니다.
이 정책은 이러한 권한을 AWS Data Exchange 서비스 보안 주체의 호출로 제한하며 계정만 API와 통합할 수 있는 권한을 부여 AWS Data Exchange 할 수 있도록 요구합니다.
참고
이 호출 AWS Data Exchange 을 명시적으로 거부하는 리소스 정책이 있는 경우이 거부를 제거하거나 제한해야 합니다.
이제 API 데이터 세트를 생성할 준비가 되었습니다.
2단계: 데이터 세트 생성
의 데이터 세트 AWS Data Exchange 는 동적이며 개정을 사용하여 버전이 지정되며 각 개정에는 하나 이상의 자산이 포함됩니다. 자세한 내용은 의 데이터 AWS Data Exchange 단원을 참조하십시오.
AWS Data Exchange 콘솔 또는를 사용하여 API 데이터 세트를 AWS Command Line Interface 생성합니다.
API 데이터 세트(콘솔) 생성
API 데이터 세트(콘솔)를 생성하려면
-
웹 브라우저를 열어 AWS Data Exchange 콘솔
에 로그인합니다. -
왼쪽 탐색 창의 내 데이터에서 소유한 데이터 세트를 선택합니다.
-
소유한 데이터 세트에서 데이터 세트 생성을 선택하여 데이터 세트 생성 단계 마법사를 엽니다.
-
데이터 세트 유형 선택에서 Amazon API Gateway API를 선택합니다.
-
데이터 세트 정의에서 데이터 세트의 이름 및 설명을 입력합니다. 자세한 내용은 데이터 세트 모범 사례 단원을 참조하십시오.
-
(선택 사항) 태그 추가 — 선택 사항에 태그를 추가합니다.
-
생성(Create)을 선택합니다.
개정을 생성할 준비가 완료되었습니다.
API 데이터 세트(AWS CLI) 생성
API 데이터 세트(CLI)를 생성하려면
-
create-data-set
명령을 사용하여 API 데이터 세트를 생성합니다.$ AWS dataexchange create-data-set \ -\\-asset-type API_GATEWAY_API \ -\\-description 'Data Set Description' \ -\\-name 'Data Set Name' { "Arn": "arn:aws:dataexchange:us-east-1:123456789012:data-sets/$DATA_SET_ID", "AssetType": "API_GATEWAY_API", "CreatedAt": "2021-09-11T00:16:46.349000+00:00", "Description": "Data Set Description", "Id": "$DATA_SET_ID", "Name": "Data Set Name", "Origin": "OWNED", "UpdatedAt": "2021-09-11T00:16:46.349000+00:00" }
-
새 자산 유형
API_GATEWAY_API
을 참고하세요.
개정을 생성할 준비가 완료되었습니다.
3단계: 개정 생성
다음 절차에서는 데이터 세트를 만든 후 개정 버전을 생성합니다. 자세한 내용은 개정 단원을 참조하십시오.
AWS Data Exchange 콘솔 또는를 사용하여 개정을 AWS Command Line Interface 생성합니다.
개정 생성(콘솔)
수정을 생성하려면(콘솔)
-
데이터 세트 세부 정보 페이지의 데이터 세트 개요 섹션에서
-
(선택사항) 이름 편집을 선택하여 데이터 세트에 대한 정보를 수정합니다.
-
(선택 사항) 데이터 세트를 삭제하려면 삭제를 선택합니다.
-
-
개정 섹션에서 개정 생성을 선택합니다.
-
개정 정의에서 개정 목적을 설명하는 개정에 대한 선택적 설명을 제공하세요.
-
(선택 사항) 태그 추가 - 선택 사항에서 리소스와 관련된 태그를 추가합니다.
-
개정 생성을 선택합니다.
-
이전 단계에서 변경한 내용을 검토, 편집 또는 삭제합니다.
이제 API 자산을 개정에 추가할 준비가 되었습니다.
개정 생성 (AWS CLI)
개정을 생성하려면 (AWS CLI)
-
create-revision
명령을 사용하여 개정을 생성합니다.$ AWS dataexchange create-revision \ -\\-data-set-id $DATA_SET_ID \ -\\-comment 'First Atlas Revision' { "Arn": "arn:aws:dataexchange:us-east-1:123456789012:data-sets/$DATA_SET_ID/revisions/$REVISION_ID", "Comment": "First Atlas Revision", "CreatedAt": "2021-09-11T00:18:49.160000+00:00", "DataSetId": "$DATA_SET_ID", "Finalized": false, "Id": "$REVISION_ID", "UpdatedAt": "2021-09-11T00:18:49.160000+00:00" }
-
참고
API Gateway REST API 단계는 물론 가져오려는 API Gateway REST API의 ID도 알아야 합니다.
4단계: 자산을 개정으로 가져오기
API 자산에는 구독자가 API를 호출하는 데 필요한 정보가 포함되어 있습니다. 자세한 내용은 자산 단원을 참조하십시오.
다음 절차를 통해 데이터 자산을 가져온 다음 개정을 완료합니다.
AWS Data Exchange 콘솔 또는를 사용하여 개정에 자산을 AWS CLI 추가합니다.
개정에 API 자산 추가 (콘솔)
개정에 API 자산을 추가하려면 (콘솔)
-
데이터 세트 세부 정보 페이지의 API 자산 섹션에서 API 단계 추가를 선택합니다.
-
Amazon API Gateway API의 경우 API 단계 선택에서 입력 상자에 API를 입력하거나 드롭다운 목록에서 다음 중 하나를 선택합니다.
-
다른의 API AWS 계정 - 액세스 권한이 부여된 교차 계정 API입니다.
-
여기서 AWS 계정는의 API입니다 AWS 계정.
-
다른에서 API AWS 계정를 선택한 경우 입력 상자에 API ID와 API 단계 이름을 입력합니다.
-
이 단계에서 AWS 계정를 선택한 경우 드롭다운 목록에서 API 단계 이름을 선택합니다.
참고
새로 생성을 선택하고 Amazon API Gateway에서 새 API 생성모달의 단계를 따라 새 API 단계를 생성할수 있습니다. 새 단계가 생성되면 2단계를 반복합니다.
-
-
고급 구성 — 선택 사항에서 기존 Amazon API Gateway 사용량 계획 연결하여 기존 사용량 계획으로 정의된 제한 및 할당량 제한을 사용하도록 선택하고 API 키를 입력할 수 있습니다.
-
구독자를 위한 문서 API에서 수신자가 데이터 권한을 수락한 후 보게 될 API에 대한 세부 정보를 입력합니다.
-
API 이름에 수신자가 API 자산을 식별하는 데 사용할 수 있는 이름을 입력합니다.
참고
이 AWS 계정을 선택한 경우 API 이름이 자동으로 입력되며, 필요한 경우 이를수정할 수 있습니다.
다른 AWS 계정 API를 선택한 경우 API 이름이 기본 이름이 되기 때문에 수신자가 해당 이름을 쉽게 이해할 수 있도록 수정해야 합니다.
-
OpenAPI 3.0 사양의 경우
-
OpenAPI 3.0 사양 파일을 입력하거나 복사하여 붙여넣습니다.
-
.JSON 파일에서 가져오기를 다음 로컬 컴퓨터에서 가져올 .json 파일을 선택합니다.
가져온 사양이 상자에 표시됩니다.
-
Amazon API Gateway에서 가져오기를 선택한 다음 가져올 사양을 선택합니다.
가져온 사양이 상자에 표시됩니다.
-
-
추가 설명서 - 선택 사항에 구독자가 API를 파악할 수 있는 유용한 추가 정보를 입력하세요. 마크다운이 지원됩니다.
참고
이 자산을 개정판에 추가한 후에는 OpenAPI 사양 및 추가 설명서를 편집할 수 없습니다.
개정이 아직 완료되지 않은 상태에서 이 정보를 업데이트하려는 경우 자산을 변경할 수 있습니다.
개정이 아직 완료되지 않은 상태에서 이 정보를 업데이트하려는 경우 업데이트된 자산으로 새 개정을 만들 수 있습니다.
-
-
API 단계 추가를 선택합니다.
API 자산을 데이터 세트로 가져오는 작업이 시작되었습니다.
참고
Amazon API Gateway에 API가 없는 경우에는 하나를 생성하라는 메시지가 표시됩니다.
-
작업이 완료되면 작업 섹션의 상태 필드가 완료됨으로 업데이트됩니다.
-
추가할 API가 더 있으면 2단계를 반복하세요.
-
개정 개요에서 개정과 자산을 검토합니다.
-
완료를 선택합니다.
데이터 세트의 개정을 성공적으로 완료했습니다.
데이터 권한에 추가하기 전에 개정 내용을 수정하거나 삭제할 수 있습니다.
이제 API가 포함된 새 데이터 권한을 생성할 준비가 되었습니다.
개정에 API 자산 추가 (AWS CLI)
IMPORT_ASSET_FROM_API_GATEWAY_API
작업을 실행하여 API 자산을 추가할 수 있습니다.
개정에 API 자산을 추가하려면 (AWS CLI)
-
create-job
명령을 사용하여 API 자산을 개정에 추가합니다.$ AWS dataexchange create-job \ -\\-type IMPORT_ASSET_FROM_API_GATEWAY_API \ -\\-details '{"ImportAssetFromApiGatewayApi":{"DataSetId":"$DATA_SET_ID","RevisionId":"$REVISION_ID","ApiId":"$API_ID","Stage":"$API_STAGE","ProtocolType":"REST"}}' { "Arn": "arn:aws:dataexchange:us-east-1:123456789012:jobs/$JOB_ID", "CreatedAt": "2021-09-11T00:38:19.875000+00:00", "Details": { "ImportAssetFromApiGatewayApi": { "ApiId": "$API_ID", "DataSetId": "$DATA_SET_ID", "ProtocolType": "REST", "RevisionId": "$REVISION_ID", "Stage": "$API_STAGE" } }, "Id": "$JOB_ID", "State": "WAITING", "Type": "IMPORT_ASSET_FROM_API_GATEWAY_API", "UpdatedAt": "2021-09-11T00:38:19.875000+00:00" } $ AWS dataexchange start-job -\\-job-id $JOB_ID $ AWS dataexchange get-job -\\-job-id $JOB_ID { "Arn": "arn:aws:dataexchange:us-east-1:0123456789012:jobs/$JOB_ID", "CreatedAt": "2021-09-11T00:38:19.875000+00:00", "Details": { "ImportAssetFromApiGatewayApi": { "ApiId": "$API_ID", "DataSetId": "$DATA_SET_ID", "ProtocolType": "REST", "RevisionId": "$REVISION_ID", "Stage": "$API_STAGE" "ApiEndpoint": "string", "ApiKey": "string", "ApiName": "string", "ApiDescription": "string", "ApiSpecificationDownloadUrl": "string", "ApiSpecificationDownloadUrlExpiresAt": "string" } }, "Id": "$JOB_ID", "State": "COMPLETED", "Type": "IMPORT_ASSET_FROM_API_GATEWAY_API", "UpdatedAt": "2021-09-11T00:38:52.538000+00:00" }
-
list-revision-assets
명령을 사용하여 새 자산이 제대로 생성되었는지 확인합니다.$ AWS dataexchange list-revision-assets \ -\\-data-set-id $DATA_SET_ID \ -\\-revision-id $REVISION_ID { "Assets": [ { "Arn": "arn:aws:dataexchange:us-east-1:123456789012:data-sets/$DATA_SET_ID/revisions/$REVISION_ID/assets/$ASSET_ID", "AssetDetails": { "ApiGatewayApiAsset": { "ApiEndpoint": "https://$API_ID.execute-api.us-east-1.amazonaws.com/$API_STAGE", "ApiId": "$API_ID", "ProtocolType": "REST", "Stage": "$API_STAGE" } }, "AssetType": "API_GATEWAY_API", "CreatedAt": "2021-09-11T00:38:52.457000+00:00", "DataSetId": "$DATA_SET_ID", "Id": "$ASSET_ID", "Name": "$ASSET_ID/$API_STAGE", "RevisionId": "$REVISION_ID", "UpdatedAt": "2021-09-11T00:38:52.457000+00:00" } ] }
이제 API가 포함된 새 데이터 권한을 생성할 준비가 되었습니다.
개정 편집
개정을 완료한 후 수정하려면
-
개정 개요에서 완료 취소를 선택합니다.
개정이 완료 상태가 아니라는 메시지가 표시됩니다.
-
개정을 수정하려면 개정 개요에서 작업, 편집을 선택합니다.
-
변경한 다음 업데이트를 선택합니다.
-
변경 사항을 검토한 다음 완료를 선택합니다.
개정 삭제
개정을 완료한 후 삭제하려면
-
개정 개요에서 삭제를 선택합니다.
-
개정 삭제 대화 상자에
Delete
를 입력한 후 삭제를 선택합니다.
주의
이렇게 하면 개정과 모든 자산이 삭제됩니다. 이 작업은 실행 취소할 수 없습니다.
5단계: API가 포함된 새 데이터 권한 생성
데이터 세트를 하나 이상 만들고 자산이 포함된 개정 작업을 완료했으면 해당 데이터 세트를 데이터 권한의 일부로 게시할 준비가 된 것입니다.
새 데이터 권한 생성
-
AWS Data Exchange 콘솔의 왼쪽 탐색 창의 교환된 데이터 권한 부여에서 전송된 데이터 권한 부여를 선택합니다.
-
전송한 데이터 권한에서 데이터 권한 생성을 선택하여 데이터 권한 정의 마법사를 엽니다.
-
소유한 데이터 세트 선택 섹션에서 추가하려는 데이터 세트 옆의 확인란을 선택합니다.
참고
선택한 데이터 세트에는 최종 개정이 있어야 합니다. 수정이 완료되지 않은 데이터 세트는 데이터 권한 부여에 추가할 수 없습니다.
공유되는 데이터 제품에 포함된 데이터 세트와 달리 AWS Marketplace데이터 권한 부여에 추가된 데이터 세트에는 개정 액세스 규칙이 없습니다. 즉, 데이터 권한 부여가 승인되면 데이터 권한 부여 수신자는 지정된 데이터 세트의 모든 최종 개정에 액세스할 수 있습니다(데이터 권한 부여 생성 전에 완료된 이전 개정 포함).
-
권한 개요 섹션에서 데이터 권한 이름 및 데이터 권한 설명을 포함하여 수신자에게 표시되는 데이터 권한 관련 정보를 입력합니다.
-
다음을 선택합니다.
-
수신자 액세스 정보 섹션의 AWS 계정 ID에 데이터 권한을 받아야 하는 수신자 계정의 AWS 계정 ID를 입력합니다.
-
또한 수신자 액세스 정보 섹션의 액세스 종료 날짜에서 데이터 권한을 영구적으로 실행할지 여부(종료 날짜 없음)를 선택하거나 종료 날짜가 있어야 하는 경우 특정 종료 날짜를 선택한 다음 원하는 종료 날짜를 선택합니다.
-
Next(다음)를 선택합니다.
-
검토 및 전송 섹션에서 데이터 권한 정보를 검토합니다.
-
데이터 권한을 생성하여 선택한 수신자에게 보내려면 데이터 권한 생성 및 전송을 선택합니다.
이제 데이터 권한 생성의 수동 부분을 완료했습니다. 데이터 권한 부여는 전송된 데이터 권한 부여 페이지의 전송된 데이터 권한 부여 탭에 나타나며 수신자 계정이 수락할 때까지 수락 보류 중 상태입니다.