翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
APIs AWS Data Exchange を含む でのデータ許可の作成
以下のトピックでは、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 Data Exchange、 にサインアップ AWS して管理ユーザーを作成する必要があります。詳細については、AWS IAM Identity Center ユーザーガイド の「使用開始」を参照してください。
-
REST API は、Amazon DynamoDB や AWS Lambdaなど、データにアクセスするために適切なリクエストとレスポンスモデルを使用する統合が設定された Amazon API Gateway 上にある必要があります。詳細については、Amazon API Gateway デベロッパーガイド の「API Gateway での REST API の開発」と「REST API の操作」を参照してください。
注記
サポートされるのはパブリック 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、No-Auth、および 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 は、Transport Layer Security (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: API データセットを作成する
のデータセット AWS Data Exchange は動的で、リビジョンを使用してバージョニングされ、各リビジョンには少なくとも 1 つのアセットが含まれます。詳細については、「のデータ AWS Data Exchange」を参照してください。
AWS Data Exchange コンソールまたは を使用して API AWS Command Line Interface データセットを作成します。
API データセットの作成 (コンソール)
API データセットを作成する (コンソール)
-
ウェブブラウザを開き、AWS Data Exchange コンソール
にサインインします。 -
左側のナビゲーションペインで、[マイデータ] の [所有データセット] を選択します。
-
[所有データセット] で [データセットを作成] を選択し、[データセット作成のステップ] ウィザードを開きます。
-
[データセットタイプを選択] で、[Amazon API Gateway API] を選択します。
-
[データセットを定義] で、データセットの [名前] と [説明] を入力します。詳細については、「データセットのベストプラクティス」を参照してください。
-
(オプション) [タグを追加 – オプション] でタグを追加します。
-
[作成] を選択します。
これで、リビジョンを作成する準備が整いました。
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 の ID も把握しておく必要があります。
ステップ 4: リビジョンに API アセットを追加する
API アセットには、サブスクライバーが API を呼び出すために必要な情報が含まれています。詳細については、「アセット」を参照してください。
以下の手順では、データアセットをインポートし、その後リビジョンを確定します。
リビジョン AWS CLI にアセットを追加するには、 AWS Data Exchange コンソールまたは を使用します。
リビジョンへの API アセットの追加 (コンソール)
リビジョンにアセットを追加する (コンソール)
-
データセットの詳細ページの [API アセット] セクションで、[追加] を選択します。
-
[API ステージを選択] にある [Amazon API Gateway API] で、入力ボックスに API を入力するか、ドロップダウンリストから以下のいずれかを選択します。
-
別の の API AWS アカウント – これは、アクセス許可が付与されたクロスアカウント API です。
-
これ AWS アカウント — これは の API です AWS アカウント。
-
別の で API AWS アカウント を選択した場合は、入力ボックスに API ID と API ステージ名を入力します。
-
これ AWS アカウントを選択した場合は、ドロップダウンリストから API ステージ名を選択します。
注記
新しい API ステージを作成するには、[新規作成] を選択し、[Amazon API Gateway で新しい API を作成] モーダルの手順に従います。新しいステージが作成されたら、ステップ 2 を繰り返します。
-
-
[Advanced configuration – optional] (高度な設定 – オプション) では、[Connect existing Amazon API Gateway usage plan] (既存の Amazon API Gateway の使用量プランを接続) することを選択して既存の使用プランに定義されているスロットリングとクォータ制限を使用し、[API key] (API キー) を入力することができます。
-
[サブスクライバーのドキュメント API] で、受取人がデータ許可を承諾した後に表示する API の詳細を指定します。
-
[API 名] に、受取人が API アセットを識別するために使用できる名前を入力します。
注記
[この AWS アカウントの中で] が選択されている場合、[API 名] が自動入力されていますが、これは必要に応じて変更できます。
[別の AWS アカウントの API] を選択した場合、[API 名] にはデフォルトの名前が入力されます。これを、受取人が API を簡単に理解できるような名前に変更してください。
-
[OpenAPI 3.0 specification] (OpenAPI 3.0 仕様) には、以下のいずれかを実行します。
-
OpenAPI 3.0 仕様ファイルを入力するか、コピーして貼り付ける。
-
[.JSON ファイルからインポート] を選択して、ローカルコンピュータからインポートする.json ファイルを選択する。
インポートされた仕様がボックスに表示されます。
-
[Import from Amazon API Gateway] (Amazon API Gateway からインポート) を選択して、インポートする仕様を選択する。
インポートされた仕様がボックスに表示されます。
-
-
[その他のドキュメント – オプション] には、サブスクライバーが API について知っておくと役に立つ追加情報を入力します。Markdown がサポートされています。
注記
このアセットをリビジョンに追加した後で、OpenAPI 仕様とその他のドキュメントを編集することはできません。
リビジョンが確定されていないときにこの情報を更新する場合は、アセットを置き換えることができます。
リビジョンが確定されているときにこの情報を更新する場合は、更新されたアセットで新しいリビジョンを作成できます。
-
-
[API ステージを追加] を選択します。
アセット (この場合は API) をデータセットにインポートするジョブが開始されます。
注記
Amazon API Gateway に API がない場合は、API を作成するように求められます。
-
ジョブが終了したら、[ジョブ] セクションの [状態] フィールドが [完了] に更新されます。
-
追加する API がある場合は、ステップ 2 を繰り返します。
-
[リビジョンの概要] で、リビジョンとそのアセットを確認します。
-
[確定] を選択します。
データセットのリビジョンが正常に確定されました。
リビジョンをデータ許可に追加する前に、リビジョンを編集または削除できます。
これで、API を含む新しいデータ許可を作成する準備ができました。
リビジョンへの API アセットの追加 (AWS CLI)
API アセットは、IMPORT_ASSET_FROM_API_GATEWAY_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 を含む新しいデータ許可を作成する準備ができました。
リビジョンを編集する
確定後にリビジョンを編集する
-
[リビジョンの概要] で [確定解除] を選択します。
このリビジョンは確定済み状態ではなくなりましたというメッセージが表示されます。
-
リビジョンを編集するには、[リビジョンの概要] で、[アクション] 、[編集] の順に選択します。
-
変更を行ってから、[Update] (アップデート) を選択します。
-
変更内容を確認してから、[確定] を選択します。
リビジョンを削除する
確定後にリビジョンを削除する
-
[リビジョンの概要] で [削除] を選択します。
-
[リビジョンを削除しますか?] ダイアログボックスに
Delete
を入力してから、[削除] を選択します。
警告
これで、リビジョンとそのアセットのすべてが削除されます。この操作は元に戻すことができません。
ステップ 5: API を含む新しいデータ許可を作成する
少なくとも 1 つのデータセットを作成して、アセットを含むリビジョンを確定すると、そのデータセットをデータ許可の一部として発行する準備が整います。
新しいデータ許可を作成するには
-
AWS Data Exchange コンソールの左側のナビゲーションペインで、Exchanged data grants で、Sent data grants を選択します。
-
[送信されたデータ許可] から [データ許可を作成] を選択し、[データ許可を定義] ウィザードを開きます。
-
[所有しているデータセットを選択] セクションで、追加するデータセットの横にあるチェックボックスをオンにします。
注記
選択したデータセットには、確定されたリビジョンが必要です。確定されたリビジョンのないデータセットは、データ許可に追加できません。
で共有されるデータ製品に含まれるデータセットとは異なり AWS Marketplace、データ許可に追加されたデータセットにはリビジョンアクセスルールはありません。つまり、データ許可が承認されると、データ許可の受信者は、特定のデータセットのすべての確定済みリビジョン (データ許可の作成前に確定された過去のリビジョンを含む) にアクセスできます。
-
[許可の概要] セクションに、データ許可名やデータ許可の説明など、データ許可に関して受取人に表示する情報を入力します。
-
次へ を選択します。
-
「受信者アクセス情報」セクションの AWS アカウント ID に、データ許可を受け取る受信者アカウントの AWS アカウント ID を入力します。
-
また、[受信者アクセス情報] セクションの [アクセスの終了日] で、[終了日なし] を選択してデータ許可を永続的に実行するか、[特定の終了日] を選択して希望の終了日を選択します。
-
[Next (次へ)] を選択します。
-
[確認して送信] セクションで、データ許可情報を確認します。
-
データ許可を作成して、選択した受取人に送信することを確定する場合は、[データ許可を作成して送信] を選択します。
これで、データ許可を手動で作成する部分が完了しました。データ許可は、送信データ許可ページの送信データ許可タブに表示され、受信者アカウントが承諾するまで承認保留中のステータスになります。