本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 AWS Data Exchange 包含 APIs的 上建立資料授權
下列主題說明建立 REST API 資料集並將其新增至包含 APIs的資料授予的程序 AWS Data Exchange。您可以使用 AWS Data Exchange 主控台或 來完成程序 AWS Command Line Interface。
設定 Amazon API Gateway REST API 之後,您可以在其中建立新的 API 資料集 AWS Data Exchange。然後,您可以建立修訂,並新增 API 資產。
使用 API 資產建立資料授予可讓收件人請求 AWS Data Exchange 端點,以透過 代理至您的 API Gateway API。
程序包含下列步驟:
先決條件
您必須先符合下列先決條件,才能發佈包含 APIs 的產品:
-
您必須先註冊 AWS 並建立管理使用者 AWS Data Exchange,才能使用任何 AWS 服務,包括 。如需詳細資訊,請參閱《AWS IAM Identity Center 使用者指南》中的「入門」。
-
您的 REST API 必須位於具有 整合的 Amazon API Gateway 上,該整合使用適當的請求和回應模型來存取您的資料,例如 Amazon DynamoDB 或 AWS Lambda。如需詳細資訊,請參閱《Amazon API Gateway 開發人員指南》中的在 API Gateway 中開發 REST API 和使用 REST APIs。 Amazon API Gateway
注意
僅支援公有 API Gateway APIs。
-
您的 API Gateway REST API 必須能夠驗證和授權來自服務主體的 AWS Data Exchange 呼叫。從 AWS Data Exchange 到 API 的每個請求都會使用以 AWS Data Exchange credentials 簽署的 Signature 第 4 版 (SigV4) 通訊協定。 可與自訂網域和網域金鑰映射 AWS Data Exchange 搭配使用。
注意
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 使用 Transport Layer Security (TLS) 1.2 加密端對端的流量。所有中繼資料都會靜態加密。 AWS Data Exchange 不會儲存訂閱者請求或來自後端的回應。
API 整合請求規格
上的 API 會依原樣從客戶請求 AWS Data Exchange 傳遞所有標頭 (除了 中列出的標頭標頭轉送)、內文、http 方法、路徑和查詢字串,並附加下列標頭。
// 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 在轉送到資料擁有者後端之前, 會移除任何與身分驗證或命名空間相關的標頭。具體而言, AWS Data Exchange 移除:
-
Authentication
標頭 -
任何開頭為 的標頭
x-amz
host
標頭將覆寫為代理的結果。
步驟 1:更新 API 資源政策
如果您有符合先決條件的 Amazon API Gateway REST API,則必須更新您的 API 資源政策,以在訂閱者提出取得 API 結構描述的請求時,授予叫用 API AWS Data Exchange 的能力。
更新您的 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 服務主體進行的呼叫,並要求只有您的帳戶才能授權 AWS Data Exchange 與您的 API 整合。
注意
如果您有明確拒絕 AWS Data Exchange 執行此調用的資源政策,您必須移除或限制此拒絕。
您現在已準備好建立 API 資料集。
步驟 2:建立 API 資料集
中的資料集 AWS Data Exchange 是動態的,並使用修訂進行版本控制,每個修訂至少包含一個資產。如需詳細資訊,請參閱中的資料 AWS Data Exchange。
您可以使用 AWS Data Exchange 主控台或 AWS Command Line Interface 來建立 API 資料集:
建立 API 資料集 (主控台)
建立 API 資料集 (主控台)
-
開啟您的 Web 瀏覽器並登入 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 Data Exchange 主控台或 AWS CLI 將資產新增至修訂:
將 API 資產新增至修訂 (主控台)
將資產新增至修訂版 (主控台)
-
在資料集詳細資訊頁面的 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 模態中的步驟來建立新的 API 階段。建立新階段後,請重複步驟 2。
-
-
在進階組態 - 選用下,您可以選擇連接現有的 Amazon API Gateway 用量計劃,以使用現有用量計劃中定義的限流和配額限制,然後輸入 API 金鑰。
-
在訂閱者的文件 API 下,提供收件人在接受資料授予後將看到之 API 的詳細資訊。
-
針對 API 名稱,輸入收件人可用來識別 API 資產的名稱。
注意
如果選取此選項, AWS 帳戶則會自動填入 API 名稱,您可以視需要加以修改。
如果選取了另一個 API AWS 帳戶,則 API 名稱會填入預設名稱,您應該將其修改為 ,以便收件人輕鬆了解它是什麼。
-
對於 OpenAPI 3.0 規格,請執行下列其中一項操作:
-
輸入或複製並貼上 OpenAPI 3.0 規格檔案。
-
選擇從 .JSON 檔案匯入,然後從本機電腦選取要匯入的 .json 檔案。
匯入的規格會出現在方塊中。
-
選擇從 Amazon API Gateway 匯入,然後選擇要匯入的規格。
匯入的規格會出現在方塊中。
-
-
對於其他文件 - 選用,輸入任何有助於訂閱者了解 API 的其他資訊。支援 Markdown。
注意
在將此資產新增至修訂版之後,您無法編輯 OpenAPI 規格和其他文件。
如果您想要更新此資訊,而且修訂尚未完成,您可以取代資產。
如果您想要更新此資訊,且修訂已完成,您可以使用更新的資產建立新的修訂。
-
-
選擇新增 API 階段。
任務已開始將資產 (在此案例中為 API) 匯入資料集。
注意
如果您在 Amazon API Gateway 上沒有 API,系統會提示您建立一個 API。
-
任務完成後,任務區段中的狀態欄位會更新為已完成。
-
如果您要新增更多 APIs,請重複步驟 2。
-
在修訂概觀下,檢閱您的修訂及其資產。
-
選擇完成。
您已成功完成資料集的修訂。
您現在已準備好建立新的包含 APIs的資料授權。
將 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" } ] }
您現在已準備好建立新的包含 APIs的資料授權。
編輯修訂
在完成後編輯修訂
-
在修訂概觀上,選擇取消最終化。
您看到修訂不再處於最終狀態的訊息。
-
若要編輯修訂,請從修訂概觀中,選擇動作、編輯。
-
進行變更,然後選擇更新。
-
檢閱您的變更,然後選擇完成。
刪除修訂
在完成修訂之後刪除修訂
-
在修訂概觀上,選擇刪除。
-
Delete
在刪除修訂對話方塊中輸入 ,然後選擇刪除。
警告
這會刪除修訂版及其所有資產。這個動作無法復原。
步驟 5:建立新的包含 APIs的資料授權
建立至少一個資料集並使用資產完成修訂後,您就可以將該資料集發佈為資料授權的一部分。
建立新的資料授權
-
在 AWS Data Exchange 主控台的左側導覽窗格中,在交換資料授權下,選擇傳送資料授權。
-
從傳送的資料授權中,選擇建立資料授權以開啟定義資料授權精靈。
-
在選取擁有的資料集區段中,選取您要新增之資料集旁的核取方塊。
注意
您選擇的資料集必須具有最終修訂。沒有最終修訂的資料集無法新增至資料授權。
與資料授權中共用的資料產品中包含的資料集不同 AWS Marketplace,新增至資料授權的資料集沒有修訂存取規則,這表示資料授權的接收者一旦核准,將有權存取特定資料集的所有最終修訂 (包括在資料授權建立之前完成的歷史修訂)。
-
在授予概觀區段中,輸入收件人將看到的資料授予相關資訊,包括資料授予名稱和資料授予描述。
-
選擇下一步。
-
在收件人存取資訊區段的 AWS 帳戶 ID 下,輸入應接收資料授權的收件人帳戶 AWS 帳戶 ID。
-
此外,在收件人存取資訊區段的存取結束日期下,選擇資料授予是否應該永久執行、選擇無結束日期,還是應該有結束日期、選擇特定結束日期,然後選擇所需的結束日期。
-
選擇下一步。
-
在檢閱和傳送區段中,檢閱您的資料授權資訊。
-
如果您確定要建立資料授權並將其傳送給所選的收件人,請選擇建立並傳送資料授權。
您現在已完成建立資料授權的手動部分。資料授權會出現在已傳送資料授權頁面上的已傳送資料授權索引標籤上,狀態為待接受,直到收件人帳戶接受為止。