本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Amazon S3 庫存報告中的空白版本 ID 字串轉換為空字串
注意
下列處理程序僅適用於包含所有版本的 Amazon S3 庫存報告,且僅當「所有版本」報告用作已啟用 S3 版本控制之儲存貯體上 S3 批次操作的資訊清單時。您不需要為僅指定最新版本的 S3 庫存報告轉換字串。
您可以使用 S3 庫存報告作為 S3 批次操作的資訊清單。不過,在儲存貯體上啟用 S3 版本控制時,包含所有版本的 S3 庫存報告會在版本 ID 欄位中以空字串標示任何未進行版本控制的物件。當清查報告包含所有物件版本 IDs 時,批次操作會將null
字串識別為版本 IDs,但不能將字串視為空白字串。
當 S3 批次操作任務使用「所有版本」S3 庫存報告作為資訊清單時,在版本 ID 欄位中具有空字串之物件上的所有任務都會失敗。若要將 S3 庫存報告的版本 ID 欄位中的空字串轉換為批次操作的 null
字串,請使用以下處理程序。
更新 Amazon S3 庫存報告以搭配批次操作使用
登入 AWS Management Console 並在 Word 開啟 Amazon S3 主控台。 https://console.aws.amazon.com/s3/
-
導覽至您的 S3 庫存報告。庫存報告位於您在設定庫存報告時所指定的目的地儲存貯體。如需有關尋找庫存報告的詳細資訊,請參閱 尋找您的清查清單。
-
選擇目的地儲存貯體。
-
選擇 資料夾。以原始來源儲存貯體命名資料夾。
-
選擇以庫存組態命名的資料夾。
-
選取名為 hive 資料夾旁邊的核取方塊。在頁面頂端,選擇複製 S3 URI 以複製資料夾的 S3 URI。
-
-
在 Word 開啟 Amazon Athena 主控台。 https://console.aws.amazon.com/athena/
-
在查詢編輯器中,選擇 Settings (設定),然後選擇 Manage (管理)。在 Manage settings (管理設定) 頁面,對於 Location of query result (查詢結果的位置),請選擇 S3 儲存貯體來存放查詢結果。
-
在查詢編輯器中,建立 Athena 資料表,以使用下列命令保留庫存報告中的資料。
將 取代為您選擇的名稱,並在table_name
LOCATION
子句中插入您先前複製的 S3 URI。然後選擇 Run (執行) 來執行查詢。CREATE EXTERNAL TABLE
table_name
(bucket string, key string, version_id string) PARTITIONED BY (dt string)ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat' LOCATION 'Copied S3 URI
'; -
若要清除查詢編輯器,請選擇 Clear (清除)。之後,使用下列命令將庫存報告載入資料表。使用您在上一個步驟中選擇的項目取代
。然後選擇 Run (執行) 來執行查詢。table_name
MSCK REPAIR TABLE
table_name
; -
若要清除查詢編輯器,請選擇 Clear (清除)。執行下列
SELECT
查詢以擷取原始庫存報告中的所有項目,並以null
字串取代任何空的 IDs 版本。使用您之前選擇的項目取代
,並使用您想要此工具在庫存報告上執行的日期取代table_name
WHERE
子句中的
。然後選擇 Run (執行) 來執行查詢。YYYY-MM-DD-HH-MM
SELECT bucket as Bucket, key as Key, CASE WHEN version_id = '' THEN 'null' ELSE version_id END as VersionId FROM
table_name
WHERE dt = 'YYYY-MM-DD-HH-MM
'; -
返回 Amazon S3 主控台 (https://console.aws.amazon.com/s3/
),然後導覽至您先前為查詢結果位置選擇的 S3 儲存貯體。其中應該有一系列以日期結尾的資料夾。 例如,您應該會看到類似 s3://
/amzn-s3-demo-bucket
query-result-location
/未儲存/2021/10/07/。您應該會看到包含您所執行之SELECT
查詢結果的.csv
檔案。選擇具有最新修改日期的 CSV 檔案。將此檔案下載到您的本機電腦,以進行下一個步驟。
-
產生的 CSV 檔案包含標頭列。若要使用此 CSV 檔案作為 S3 批次操作任務的輸入,您必須移除標頭列,因為批次操作不支援 CSV 資訊清單上的標頭列。
若要移除標頭列,您可以對檔案執行下列其中一個命令。Replace (取代)
您的 CSV 檔案名稱。file.csv
對於 macOS 和 Linux 電腦,請在終端機視窗中執行
tail
命令。tail -n +2
file.csv
> tmp.csv && mv tmp.csvfile.csv
對於 Windows 機器,請在 Windows PowerShell 視窗中執行下列指令碼。將
替換為您的檔案路徑,並將File-location
替換為檔案名稱。file.csv
$ins = New-Object System.IO.StreamReader
File-location
\file.csv
$outs = New-Object System.IO.StreamWriterFile-location
\temp.csv try { $skip = 0 while ( !$ins.EndOfStream ) { $line = $ins.ReadLine(); if ( $skip -ne 0 ) { $outs.WriteLine($line); } else { $skip = 1 } } } finally { $outs.Close(); $ins.Close(); } Move-ItemFile-location
\temp.csvFile-location
\file.csv
-Force -
從 CSV 檔案中移除標頭列後,您就可以在 S3 批次操作任務中將其用作資訊清單。將 CSV 檔案上傳到您選擇的 S3 儲存貯體或位置,然後使用 CSV 檔案作為清單建立批次操作任務。
如需有關建立 S3 批次操作任務的詳細資訊,請參閱 建立 S3 批次操作任務。