我正在编写代码以从AWS S3获取文件数据。在此过程中,我尝试使用最新的 AWS SDK V3。 npm SDK @aws-sdk/client-s3 给我错误:getaddrinfo ENOTFOUND 代码。但如果我使用相同 SDK 的 V2,代码会顺利运行并给出正确的响应。
@aws-sdk/client-s3 代码
const { S3Client, GetObjectCommand } = require('@aws-sdk/client-s3');
const { createReadStream } = require('fs');
const sslCertificate = createReadStream('./securityCert.pem');
const s3 = new S3Client({
endpoint: 'https://customeUrl.dummy.net',
region: 'us-east-1',
service: 's3',
credentials: {
accessKeyId: 'ACCESS_KEY',
secretAccessKey: 'SECURITY_KEY'
},
tls: {
ca: sslCertificate
},
signatureVersion: 'v4',
s3ForcePathStyle: true,
});
const bucketName = 'bucket_name';
const objectKey = 's3upload123.txt';
const getObjectCommand = new GetObjectCommand({
Bucket: bucketName,
Key: objectKey
});
s3.send(getObjectCommand)
.then(data => {
console.log("data", data.Body.toString());
})
.catch(err => {
console.error(err);
});
上面的代码给我错误。但下面的代码运行正常。
const AWS = require('aws-sdk');
const fs = require("fs");
const https = require('https');
const sslCertificate = fs.readFileSync('./securityCert.pem');
const s3 = new AWS.S3({
// signatureVersion: 'v4',
// region: "us-east-1",
accessKeyId: 'ACCESS_KEY',
secretAccessKey: 'SECURITY_KEY',
endpoint: `https://customeUrl.dummy.net`,
s3ForcePathStyle: true,
httpOptions: {
agent: new https.Agent({
ca: sslCertificate
})
}
});
const bucketName = 'bucket_name';
const objectKey = 's3upload123.txt';
const getObjectParams = {
Bucket: bucketName,
Key: objectKey
};
s3.getObject(getObjectParams, (err, data) => {
if (err) {
console.error(err);
} else {
console.log("data", data.Body.toString());
}
});
我尝试使用 NodeJS 运行这两个代码,得到相同的结果。
我也面临同样的问题,你找到解决办法了吗?