繁体   English   中英

AWS S3 同步 --force-glacier-transfer

[英]AWS S3 Sync --force-glacier-transfer

几天前,我正在试验 S3 和 Glacier,我的数据已存档,因此我不得不使用他们的加急服务(费用很高)来恢复它。 我想将我的所有内容从一个存储桶移动到同一区域同一帐户中的另一个存储桶。

当我尝试同步数据时,出现以下错误 Completed 10.9 MiB/~10.9 MiB (30.0 KiB/s) with ~0 file(s) remaining (calculatingwarning: Skipping file s3://bucket/zzz0dllquplo1515993694.mp4. Object is存储 class GLACIER。无法对 GLACIER 对象执行复制操作。您必须恢复 object 才能执行该操作。请参阅 aws s3 复制帮助以了解其他参数选项以忽略或强制这些传输。

我正在使用以下命令,我想知道它会花费多少美元? 因为我所有的文件存储 class 都从“标准”更改为“冰川”。 所以,我被迫使用 --force-glacier-transfer 标志

aws s3 sync s3://bucketname1 s3://bucketname2 --force-glacier-transfer --storage-class STANDARD

将 Glacier 存储文件 class 复制到另一个存储桶

您写道:“我想将我所有的内容从一个存储桶移动到同一地区同一帐户中的另一个存储桶。”

如果您想要将保存在 Glacier 存储 class 中的文件从一个存储桶复制到另一个存储桶,即使是通过sync命令,您也必须先恢复文件,即在实际复制它们之前让文件可供检索。 例外情况是当文件存储在“Amazon S3 Glacier Instant Retrieval”存储 class 中时。在这种情况下,您不需要显式恢复文件。

因此,您必须向每个文件发出restore-object命令以发起恢复请求。 然后你必须等到恢复请求完成。 之后,您将能够在恢复请求期间指定的天数内复制文件。

检索定价

您还写道:“我想知道这会花费我多少美元”。

使用您提供的命令aws s3 sync s3://bucketname1 s3://bucketname2 --force-glacier-transfer --storage-class STANDARD ,您将文件从 Glacier 复制到标准存储 class。在这种情况下,您有首先支付检索费用(一次性),然后您将支付(每月)存储文件的两个副本:一份在冰川他们的副本,另一份在标准存储 class。

根据亚马逊(引述),

要将对象的存储 class 更改为 Amazon S3 标准,请使用复制(通过覆盖现有的 object 或将 object 复制到另一个位置)。

但是,对于存储在 Glacier 存储 class 中的文件,您只能将其复制到同一存储桶中 S3 的另一个位置,除非您恢复它,即使其可用于检索,否则您无法真正检索文件内容。

既然你问的是“按美元计算,我要花多少钱”,你就得按照亚马逊公布的检索价格和存储价格来支付。

您可以在https://aws.amazon.com/s3/glacier/pricing/查看检索定价

存储价格可在https://aws.amazon.com/s3/pricing/

检索价格取决于您最初选择哪种 Glacier 存储 class 来存储文件:“S3 Glacier Instant Retrieval”、“S3 Glacier Flexible Retrieval”或“S3 Glacier Deep Archive”。 存储空间 class 可以通过生命周期规则进行修改,因此更准确地说,每个文件的当前存储空间 class 才是重要的。

除非您将文件存储在“S3 Glacier Instant Retrieval”存储 class 中,否则最便宜的选择是首先使用“批量”检索选项(还原层)还原文件(使它们可用于检索),这是“的免费选项” S3 Glacier 灵活检索”和非常便宜的“S3 Glacier Deep Archive”。 因此,您可以以最小的恢复成本复制文件(如果有的话)。

由于您更喜欢使用命令行,因此可以使用Perl 脚本通过“批量”检索选项(还原层)使文件可用于检索。 否则,您提供的aws s3 sync命令将使用“标准”还原层。

截至今日,在美国俄亥俄州,检索价格如下。

对于“S3 Glacier Instant Retrieval”,在撰写本文时,恢复成本为每 GB 0.03 美元,没有其他选择。 对于“S3 Glacier 灵活检索”,“标准”检索每 GB 收费 0.01 美元,而“批量”检索免费。 对于“S3 Glacier Deep Archive”,“标准”检索费用为 0.02 美元,而“批量”费用为每 GB 0.0025 美元。

无论数据大小如何,您还将为检索请求付费。 但是,对于“S3 Glacier Instant Retrieval”,您无需为检索请求付费; 对于“批量”,检索请求成本最低(对于 S3 Glacier Deep Archive),如果不是免费的话(S3 Glacier Flexible Retrieval)。

如果您还原了它们并且在到期日期之前,那么您应该能够同步它们而无需进行其他还原。 对于所有递归命令,您都会遇到Glacier错误,因为它们使用的API不会检查是否已还原。 您可以在他们添加--force-glacier-transfer的票证中对其进行阅读。

https://github.com/aws/aws-cli/issues/1699

当使用--force-glacier-transfer标志时,它不会进行其他还原,只是忽略了API,指出该对象位于Glacier中,并且仍然尝试尝试。 如果未还原该对象,它将失败(它不会尝试还原它)。

请注意,这仅适用于递归命令(例如,使用--recursive的sync和cp / mv),如果仅复制1个文件,它将在没有force标志的情况下工作。

BUCKET=my-bucket
DATE=$1
BPATH=/pathInBucket/FolderPartitioDate=$DATE
DAYS=5
 for x in `aws s3 ls s3://$BUCKET$BPATH --recursive | awk '{print $4}'`;
 do
  echo "1:Restore $x"
  aws s3api --profile sriAthena restore-object --bucket $BUCKET --key $x --restore-request Days=$DAYS,GlacierJobParam
eters={"Tier"="Standard"};
  echo "2:Monitor $x"
  aws s3api head-object --bucket $BUCKET --key $x;
done

https://aws.amazon.com/premiumsupport/knowledge-center/restore-s3-object-glacier-storage-class/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM