【发布时间】:2020-01-31 02:46:58
【问题描述】:
我正在尝试使用 nodejs 和 aws sdk 将图像上传到 s3。它不断返回一个奇怪的错误:“无法访问主机:`images.dynamodb.us-east-1.amazonaws.com'。此服务可能在 'us-east-1' 区域不可用
这是我的 lambda 代码:
exports.handler = function(event,context,callback){
var s3 = new AWS.S3();
const image = event.body.imageBinary;
var buf = new Buffer.from(image.replace(/^data:image\/\w+;base64,/, ""),'base64');
const type = image.split(';')[0].split('/')[1];
var params = {
Bucket: process.env.BUCKET,
Key: `${AccountId}.${type}`,
Body: buf,
ContentEncoding: 'base64',
ContentType: `image/${type}`
};
s3.upload(params, function(err, resp){
if (err) {
console.log(err);
} else {
console.log('succesfully uploaded the image!: ' + JSON.stringify(resp));
}
});
}
我什至尝试设置 AWS 对象配置(使用密钥、密钥和区域)但得到相同的响应
我的 aws sdk 版本:“aws-sdk”:“^2.610.0” 任何帮助都会很好
谢谢!!!
【问题讨论】:
-
很奇怪。您是否 100% 确定这是导致该错误的代码?您是否正在打包和上传 aws-sdk?试试不上传。 Lambda 运行时包含 aws-sdk(版本稍早,但应该足够了)。
-
images这个词不应出现在主机名中。听起来好像与您的代码有关。 -
看起来像是 DNS 问题。您是否位于可能阻止您访问
images.dynamodb.us-east-1.amazonaws.com的防火墙后面? -
@jarmod 是的,aws sdk 在包中,我什至删除了 node_modules 文件夹并再次安装 npm 并不断收到此错误
-
@JohnRotenstein 我已经多次更改该名称,但它会引发相同的错误
标签: node.js amazon-web-services amazon-s3 aws-lambda