簡體   English   中英

EC2 上 S3 區域之間的 aws cli 復制

[英]aws cli copy between S3 regions on EC2

我正在嘗試使用 EC2 服務器上的命令行界面在不同區域的兩個 S3 存儲桶之間進行復制。

地區信息:
EC2 實例:us-west-2
S3 來源:us-east-1
S3 目的地:us-west-2

以下命令可在 EC2 服務器上完美運行:
aws s3 cp s3://n-virginia/origin s3://n-virginia/destination --recursive --source-region us-east-1 --region us-east-1 --profile my_profile

aws s3 cp s3://oregon/origin s3://oregon/destination --recursive --source-region us-west-2 --region us-west-2 --profile my_profile

我需要從 EC2 服務器運行以下命令:
aws s3 cp s3://n-virginia/origin s3://oregon/destination --recursive --source-region us-east-1 --region us-west-2 --profile my_profile

如果我從本地計算機運行該命令,它可以工作,但如果我從用於前兩個命令的 EC2 服務器運行它,我會收到以下錯誤:

錯誤: "A client error (AccessDenied) occurred when calling the CopyObject operation: VPC endpoints do not support cross-region requests"

我能夠將文件從源存儲桶復制到 EC2 服務器,然后從 EC2 服務器復制到目標存儲桶,但這不是生產中可接受的解決方案。 我不明白為什么它可以在本地機器上工作,但不能在 EC2 服務器上工作(“my_profile”在兩台機器上都是相同的)

正如評論中指出的,問題是您的 VPC 有一個端點,並且不支持跨區域副本

要解決此問題,請通過更新您的 VPC 路由表暫時禁用 VPC 終端節點,或者只是創建一個沒有 VPC 終端節點的新 VPC 並在那里啟動 EC2。

跨區域復制將是理想的,但正如所指出的,這只會影響存儲桶中的新項目

您可能想使用aws s3 sync而不是使用aws s3 cp 同步只會復制更改過的文件,因此您可以在它被中斷的情況下再次重新運行它。 例如:

aws s3 sync s3://n-virginia/origin s3://oregon/destination

還要注意的是兩個cpsync保留ACL。 因此,如果您更改了單個文件的 ACL 權限,它們將在復制后全部設置為默認值。 還有一些其他工具應該可以保留 ACL,例如https://s3tools.org ,這似乎對我有用。

如果由於需要磁盤空間而無法在本地下載整個存儲桶,您可以下載、上傳和刪除 5 秒的文件。

下面的 shell 片段的第一行開始將整個源存儲桶后台下載到本地磁盤。 當當前目錄中有文件時,調用aws s3 mv將文件復制到目標存儲桶並在本地刪除它們。

mkdir tempdir
aws s3 sync s3://source-bucket . &
sleep 5
while [ $(ls | wc -l) -gt 0 ] ; do mv *.txt tempdir ; aws s3 mv --recursive tempdir/* s3://destination-bucket ; done

aws s3 sync 命令在將文件寫入磁盤時創建具有隨機擴展名的臨時文件。 不幸的是,aws s3 mv 命令有時會上傳這些文件。 為避免這種情況,請將一批文件(例如所有 .txt 文件)移動到臨時目錄並僅上傳它們。

在實踐中,我看到本地使用的磁盤不超過 50M(少於 500 個文件,其中每個文件小於 100k)

我知道這是一個舊帖子,但我們最近遇到了同樣的問題。

為了更新 @astrotom 響應,Amazon S3 跨區域復制 (CRR) 現在支持復制現有對象。 您只需要請求 aws 支持團隊來解鎖該功能。 此處此處的完整說明

就我們而言,我們更喜歡@brendan 解決方案,即使它會使網絡飽和。 你可以在這里找到一個可以幫助你自動化它的 Kubernetes 工作。

您可以在此博客中找到多種方法來跨區域跨賬戶遷移我們的存儲桶

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM