如何使用Lambda函数跨区域复制存储桶内容

时间:2020-04-05 12:56:28

标签: amazon-web-services aws-lambda amazon-cloudformation

如何通过lambda函数将弗吉尼亚州的存储桶中的内容复制到爱尔兰的存储桶中?

我正在尝试在弗吉尼亚州创建lambda函数:

const aws = require('aws-sdk');
const s3 = new aws.S3();
s3.copyObject({
    Bucket: 'my-bucket-in-ireland',
    CopySource: 'my-bucket-in-virginia' + '/' + 'myKey.zip',
    Key: 'myKey.zip'
}, function (err, data) {
    // further handling logic goes here
});

但是我得到一个错误:

"The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'eu-west-1'"

1 个答案:

答案 0 :(得分:2)

该问题似乎与AWS签名计算有关。我认为s3客户端正在使用lambda函数的区域(us-east-1)。但是我认为,出于签名计算的目的,它期望该区域是目标存储桶(eu-west-1)的区域。您可以尝试将区域传递给s3客户端并查看签名是否被接受吗?

const aws = require('aws-sdk');
const s3 = new aws.S3({region: 'eu-west-1'});