View a markdown version of this page

了解匯出交付 - AWS 資料匯出

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

了解匯出交付

在下列各節中,您將找到匯出交付的相關資訊。

  • 匯出 S3 父目錄結構:匯出資料在將匯出交付至其中的 S3 目錄中的結構。

  • 匯出重新整理:S3 目錄中的匯出更新頻率。

  • 匯出覆寫並建立新的:匯出交付如何透過覆寫進行變更,並建立新的交付偏好設定。

  • 匯出資料檔案名稱和區塊:匯出檔案 (gzip/csv 或 Parquet) 的命名方式。

匯出 S3 父目錄結構

每個匯出都會將查詢中的資料交付至 S3 (一或多個 gzip/csv 或 Parquet 檔案),以及Manifest.json中繼資料檔案,其中包含執行匯出時匯出定義的相關資訊。

資料

匯出查詢所產生的資料會存放在下列 S3 檔案路徑中:

s3://<bucket-name>/<prefix>/<export-name>/data/<partition>/

分割區對應至正在查詢的資料表。對於 CUR 2.0,分割區對應至指定 CUR 2.0 匯出的「帳單期間」。

prefix:您指派給匯出的 S3 檔案字首。

export-name:您指派給匯出的名稱。

partition:分割區說明如何將單一資料表分割為個別資料表以進行交付。對於 CUR 2.0,分割區對應至格式為 的「帳單期間」BILLING_PERIOD=YYYY-MM。例如,2023 年 11 月的分割區是 2023 年 11 月。

以下是 S3 檔案路徑的範例:

s3://my-data-export-s3-bucket/my-cur-files/business_group_a_cur/data/BILLING_PERIOD=2023-11

中繼資料

查詢的Manifest.json中繼資料檔案會存放在下列 S3 檔案路徑中:

s3://<bucket-name>/<prefix>/<export-name>/metadata/<partition>/<export-name>-Manifest.json

每次重新整理匯出時,Manifest.json檔案都會更新。系統會為匯出建立的每個新分割區建立新的Manifest.json檔案。對於 CUR 2.0,這表示在新的計費期間開始時會產生新的Manifest.json檔案。

資訊清單檔案包含下列資訊:

  • 匯出中包含的所有資料欄。

  • 匯出檔案及其檔案路徑的清單。我們建議您以程式設計方式讀取此清單來識別要擷取哪些檔案。

  • 匯出涵蓋的期間。

  • 稱為 additionalOutputFiles的區段,列出如果您有 Athena 或 Amazon Redshift 整合時所交付的其他檔案。

只有在所有匯出資料檔案都已交付至 S3 時,Manifest.json才會交付 。

匯出重新整理

資料匯出會在每次更新來源資料時重新整理匯出。對於 CUR 2.0,這至少每天發生一次。目前計費期間 (分割區) 會重新整理,直到計費期間結束為止,此時下一個計費期間的交付就會開始。下一個帳單期間的交付僅包含該帳單期間的費用和帳單資料。在計費期間結束後, AWS 可以在計費期間結束後的前兩週內更新前一個計費期間的匯出交付。

匯出覆寫並建立新的

建立匯出時,您可以選擇建立新的匯出檔案,或在每次重新整理時覆寫現有的匯出檔案。

建立新的

建立新的匯出檔案會使用更多 S3 儲存體,因為所有匯出重新整理都會保留。覆寫先前的匯出檔案會使用較少的 S3 儲存體,因為只會保留每個計費期間重新整理的最新版本。

在「建立新」模式下,匯出檔案會傳送到下列 S3 路徑:

s3://<bucket-name>/<prefix>/<export-name>/data/<partition>/<timestamp>-<execution-id>

timestamp 是執行匯出的日期和時間。execution-id 是指派給執行的唯一 ID。

對於「建立新的」,每個匯出執行都會交付兩個Manifest.json檔案。一個存放在 metadata/<partition>/<timestamp>-<execution-id>目錄中,另一個則覆寫在 metadata/<partition>目錄中。metadata/<partition> 目錄中的資訊清單一律代表最新的重新整理,其資料用於識別最近重新整理的匯出檔案的位置。

覆寫

覆寫僅適用於相同分割區的重新整理 (即計費期間)。一旦新的計費期間開始,匯出會建立名稱以最新分割區或計費期間為基礎的新 S3 目錄,並開始在該處交付新的匯出分割區。除非更新該特定分割區的資料,否則不會覆寫前一個分割區的匯出。

在「覆寫」模式下,匯出檔案會傳送到下列 S3 路徑:

s3://<bucket-name>/<prefix>/<export-name>/data/<partition>/

此檔案目錄中的匯出檔案會在每次交付相同分割區時 (也就是計費期間) 覆寫。

當匯出變得足夠大時,匯出檔案會以多個「區塊」(分開的 gzip/csv 或 Parquet 檔案) 形式交付。如果匯出在當月曾減少大小 (由於查詢變更或資料更正),則可能需要較少區塊才能提供匯出重新整理。在此情況下,Data Exports 會使用空白資料覆寫來自上次重新整理的任何額外區塊。

對於覆寫,每個匯出執行都會傳送一個Manifest.json檔案。它會存放在 metadata/<partition>目錄中,並在每次重新整理時覆寫。

匯出資料檔案名稱和區塊

匯出會以一個檔案 (gzip/csv 或 Parquet) 或在多個「區塊」(分開 gzip/csv 或 Parquet 檔案) 中提供一次執行的結果,當匯出變得夠大時。

gzip/csv 檔案格式的匯出名稱如下:

<export-name>-<chunk-number>.csv.gz

Parquet 格式的匯出名稱如下:

<export-name>-<chunk-number>.snappy.parquet

區塊號碼一律有五位數。區塊號碼會從 開始列舉00001

注意

如果您在建立 CUR 2.0 時選擇 Athena 或 Redshift 報告整合選項,以下有關 Redshift 和 Athena 整合的章節可能與您相關。

Amazon Redshift 整合

如果您選擇 Amazon Redshift 整合的選項, AWS 也會建立並提供檔案,其中包含將報告上傳至 Amazon Redshift 所需的 SQL 命令。若要將資料匯出上傳至 Amazon Redshift,請完成下列步驟。

上傳資料匯出至 Amazon Redshift
  1. 建立 Amazon Redshift 叢集。如需詳細資訊,請參閱《Amazon Redshift 管理指南》中的建立叢集

  2. 登入 AWS 管理主控台,並在 https://https://console.aws.amazon.com/s3/ 開啟 Amazon S3 主控台。

  3. 導覽至您存放 AWS 資料匯出的 Amazon S3 位置。

  4. 下載與 S3 中資訊清單檔案一起存放RedshiftCommands.sql的檔案,以及位於下列位置的 Redshift 協助程式檔案:

    <bucket>/<prefix>/<export-name>/metadata/<partition>/<export-name>-RedshiftCommands.sql

  5. copy命令中,<AWS_ROLE>將 取代為 IAM 角色的 ARN,該角色具有存取您存放 AWS 資料匯出之 Amazon S3 儲存貯體的許可。

  6. 將 取代<S3_BUCKET_REGION>為 Amazon S3 儲存貯體所在的區域。例如 us-east-1

  7. 使用 SQL 用戶端連接到叢集。如需詳細資訊,請參閱《Amazon Redshift 管理指南》中的存取 Amazon Redshift 叢集和資料庫

  8. 依下列順序,從 RedshiftCommands.sql 檔案複製 SQL 命令到您的 SQL 用戶端:

    1. 建立資料表 — 建立具有自訂結構描述的 Amazon Redshift 資料表,以符合您的報告。

    2. copy — 使用提供的 IAM 角色,將 AWS 資料匯出檔案從 S3 上傳到 Amazon Redshift。

    3. 建立標籤資料表 — 建立資料表,可讓您將 AWS定義的標籤映射至使用者定義的標籤。

    4. insert — 將使用者定義的標籤插入標籤資料表。

  9. 將 AWS 資料匯出中的所有資料複製到 Amazon Redshift 之後,您可以使用 SQL 查詢資料。如需詳細資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的 Amazon Redshift SQL。

Amazon Athena 整合

如果您選擇 Amazon Athena 整合的選項, AWS 也會建立並交付多個檔案,以協助設定您需要的所有資源。 AWS 會交付 CloudFormation 範本、手動建立 Athena 資料表的 SQL 檔案,以及檢查匯出重新整理狀態的狀態資料夾。這些檔案會使用以下命名慣例。

用於設定 Athena 資源的 CloudFormation 範本:

<prefix>/<export-name>/crawler-cfn.yml

手動建立 Athena 資料表的 SQL 檔案:

<prefix>/<export-name>/metadata/<partition>/<export-name>-create-table.sql

匯出重新整理狀態資料夾:

<prefix>/<export-name>/execution_status/

使用 CloudFormation 範本設定 Athena

使用 Athena CloudFormation 範本
  1. 導覽至 S3 儲存貯體中的 crawler-cfn.yml 檔案,然後選取物件 URL 旁的複製按鈕。

  2. 開啟位在 https://console.aws.amazon.com/cloudformation/ 的 CloudFormation​ 主控台。

  3. 如果您之前從未使用過 CloudFormation,請選擇建立新堆疊。否則,請選擇 Create Stack (建立堆疊)

  4. 準備範本下,選取選擇現有範本

  5. 指定範本下,針對範本來源選擇 Amazon S3 URL

  6. 將 S3 物件 URL 貼到 Amazon S3 URL 方塊中。

  7. 選擇下一步

  8. Stack name (堆疊名稱) 中,輸入範本的名稱,然後選擇 Next (下一步)

  9. 在頁面底部,選取我確認 AWS CloudFormation 可能會建立 IAM 資源。

  10. 選擇下一步,然後選擇提交

更新現有的 Athena CloudFormation 範本
  1. 開啟位於 https://console.aws.amazon.com/s3/ 的 Amazon S3 主控台。

  2. 從儲存貯體清單中,選擇您選擇接收 AWS 資料匯出的儲存貯體。

  3. 選擇您的報告路徑字首 (your-report-path-prefix/),然後選擇您的報告名稱 (your-report-name/)。

  4. 選擇.yml範本檔案,然後選取物件 URL 旁的複製按鈕。

  5. 開啟位在 https://console.aws.amazon.com/cloudformation/ 的 CloudFormation​ 主控台。

  6. 選取先前建立的堆疊,然後選擇更新堆疊 > 直接更新

  7. 準備範本下,選擇取代現有範本

  8. 範本來源下,選擇 Amazon S3 URL

  9. 將 S3 物件 URL 貼到 Amazon S3 URL 方塊中。

  10. 選擇下一步

  11. 指定堆疊詳細資訊頁面上,修改任何詳細資訊,然後選擇下一步

  12. 在頁面底部,選取我確認 AWS CloudFormation 可能會建立 IAM 資源。

  13. 選擇下一步,然後選擇提交

手動設定 Athena

如果您不想使用 CloudFormation 範本,您可以使用提供的 SQL 檔案手動建立 Athena 資料表。

手動建立 Athena 資料表
  1. 匯出create-table.sql的檔案位於:

    <bucket>/<prefix>/<export-name>/metadata/BILLING_PERIOD=YYYY-MM/<export-name>-create-table.sql

  2. 新增查詢 1 查詢窗格中,從 檔案貼上 SQL。對於 <database name>.<table name>,請使用 SQL 第一行的資料庫和資料表名稱。

  3. 執行下列動作來建立資料庫:

    CREATE DATABASE <database name>

若要載入新的報告分割區,請執行下列 SQL:

ALTER TABLE `<database name>`.<table name> ADD PARTITION (billing_period='YYYY-MM') LOCATION 's3://<bucket>/<prefix>/<export-name>/data/BILLING_PERIOD=YYYY-MM/'; 其中 YYYY-MM 是以 4 位數年份和 2 位數月份表示的計費期間。例如 2026-05。

如需詳細資訊,請參閱使用 Amazon Athena 查詢成本和用量報告

摘要

使用 目錄匯出資料檔案名稱以建立新的

Parquet:

s3://<bucket-name>/<prefix>/<export-name>/data/<partition>/<timestamp>-<execution-id>/<export-name>-<chunk-number>.snappy.parquet

gzip/csv:

s3://<bucket-name>/<prefix>/<export-name>/data/<partition>/<timestamp>-<execution-id>/<export-name>-<chunk-number>.csv.gz

使用用於覆寫的目錄匯出資料檔案名稱

Parquet:

s3://<bucket-name>/<prefix>/<export-name>/data/<partition>/<export-name>-<chunk-number>.snappy.parquet

gzip/csv:

s3://<bucket-name>/<prefix>/<export-name>/data/<partition>/<export-name>-<chunk-number>.csv.gz

具有建立新目錄的清單檔案名稱

「建立新的」模式會交付Manifest.json至兩個位置。

第一個位置位於代表匯出特定執行的資料夾中 (以 timestamp和 命名execution-id)。此資訊清單對應至該特定執行。檔案路徑如下所示:

s3://<bucket-name>/<prefix>/<export-name>/metadata/<partition>/<timestamp>-<execution-id>

第二個位置位於包含所有執行的分割區資料夾中。此資訊清單與最近一次執行匯出時相同的檔案。您可以讀取此資訊清單來識別所有最近匯出檔案的確切檔案路徑。檔案路徑如下所示:

s3://<bucket-name>/<prefix>/<export-name>/metadata/<partition>/Manifest.json

具有覆寫目錄的清單檔案名稱

「覆寫」模式會Manifest.json傳送到一個位置。

s3://<bucket-name>/<prefix>/<export-name>/metadata/<partition>

每次重新整理指定的分割區 (即計費期間) 都會覆寫此目錄中的資訊清單。