amazon-web-services - 如何使用 lambda 函数跨区域复制存储桶内容
问题描述
如何通过 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'"
解决方案
该问题似乎与 AWS 签名计算有关。我认为 s3 客户端正在使用 lambda 函数的区域(us-east-1)。但我认为出于签名计算的目的,它期望该区域是目标存储桶的区域(eu-west-1)。您可以尝试将区域传递给 s3 客户端并查看签名是否被接受?
const aws = require('aws-sdk');
const s3 = new aws.S3({region: 'eu-west-1'});
推荐阅读
- logging - 摄取应用程序创建的日志 GCP 日志记录以显示应用程序错误和信息日志
- javascript - 无法在 Windows 上使用 Node 对文件进行 base64 编码/解码
- typescript - Bot 在使用保存的对话引用重新启动并调用 trustServiceUrl 后无法进行身份验证
- python - 函数中的文档输入和返回值:python
- java - 如何在 go 中读取二进制数据?(智能卡)将代码转换为 java
- php - 隐藏特定页面 WooCommerce 描述和附加信息和评论选项卡使用 Wordpress 自定义字段
- javascript - 获取值为数组的对象数组中的所有键
- python - 如何将我的代码放在 Python 中?
- node.js - .js 被绕过并转到 .ejs Node.js Express 路由器
- mariadb - 是否有一种有效、可靠的方法来确定 mysql 中表集合的最后更新时间?