使用 aws sdk 在存储桶之间复制对象

Copy objects between buckets using aws sdk

使用 AWS CLI;我们可以将文件直接从一个存储桶复制或同步到另一个存储桶。使用开发工具包;我可以看到 api 用于下载和上传。但是我们可以使用 sdk 直接将文件从一个存储桶复制到另一个存储桶(在不同的 aws 帐户中)!

很简单,在帮助下查看所有 CLI 命令:

aws s3 --help

上传文件:

aws s3 cp <path-to-file-from-local> s3://<S3_BUCKET_NAME>/<file-name> 

下载文件:

aws s3 cp s3://<S3_BUCKET_NAME>/<file-name> <path-to-file-from-local> 

移动文件:

aws s3 mv s3://<S3_BUCKET_NAME>/<file-name> s3://<S3_BUCKET_NAME>/<file-name>

可以用.指定当前目录,eg:

aws s3 cp s3://MyBucket/Test.txt .

是的。 CopyObject API 调用可以在Amazon S3 bucket之间复制一个对象,包括不同地区和不同账户的bucket。

要在帐户之间复制对象,一组凭据需要足够的权限才能从源存储桶读取和写入目标存储桶。您可以:

  • 使用来自目标账户的凭据,并在源存储桶上使用存储桶策略授予读取访问权限,
  • 使用来自源帐户的凭据,并在目标存储桶上使用存储桶策略来授予写入权限。确保将 ACL=public-read 设置为 将对象的所有权 传递给目标帐户。

请注意,它一次仅复制 一个对象,因此您需要遍历对象列表并为每个对象单独调用 CopyObject,如果您希望复制多个对象。