ENOTFOUND 使用 aws-sdk/client-s3 时出错

问题描述 投票:0回答:1

我正在编写代码以从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 运行这两个代码,得到相同的结果。

node.js aws-sdk aws-sdk-js
1个回答
0
投票

我也面临同样的问题,你找到解决办法了吗?

© www.soinside.com 2019 - 2024. All rights reserved.