繁体   English   中英

将文件从一个 AWS 帐户的 S3 存储桶复制到另一个 AWS 帐户的 S3 存储桶 + 使用 NodeJS

[英]Copy files from one AWS account's S3 bucket to another AWS account's S3 bucket + using NodeJS

如何使用 NodeJS将源 AWS 帐户的 S3 存储桶中的文件复制到位于不同 AWS 帐户上的目标 S3 存储桶中?

即,从AWS 账户 A中的 S3 到AWS 账户 B中的 S3

您是否尝试过copyObject方法?

使用BucketKey指示目标, CopySource指示源 object。确保您的 creds 具有读取源 object 和写入目标 object 的权限。

理想情况下,如果您知道,可以通过在ExpectedBucketOwner中声明目标存储桶的 AWS 账户 ID 来提高副本的安全性。

这是一个未经测试的例子:

const s3 = new AWS.S3();

const params = {
  Bucket: 'destbucket', 
  CopySource: 'srcbucket/srcfolder/file.txt', 
  Key: 'destfolder/file.txt'
};

const result = await s3.copyObject(params).promise();

如果您需要担任允许访问两个存储桶的角色,请使用此代码的某些变体来获取 STS 凭证和 S3 客户端 object:

const sts = new AWS.STS({ region: 'us-west-2' });

const role_params = {
  RoleArn: 'arn:aws:iam::1234567890:role/yourrole',
  RoleSessionName: 'optional-name',
  ExternalId: 'some-optional-value',
  DurationSeconds: 3600,
};

const res = await sts.assumeRole(role_params).promise();

const cred_params = {
  accessKeyId: res.Credentials.AccessKeyId,
  secretAccessKey: res.Credentials.SecretAccessKey,
  sessionToken: res.Credentials.SessionToken,
};

const s3 = await new AWS.S3(cred_params);

要了解跨账户 S3 访问所需的权限,请参阅如何提供对 Amazon S3 存储桶中对象的跨账户访问?

暂无
暂无

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

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