【问题标题】:Not able to connect to AWS through aws-sdk node js无法通过 aws-sdk 节点 js 连接到 AWS
【发布时间】:2019-07-25 08:52:17
【问题描述】:

我是 AWS 开发工具包的新手,并试图按照那里的文档进行操作。 https://aws.amazon.com/developers/getting-started/nodejs/ 我正在尝试创建一个存储桶并在那里上传一些文本文件。但是我收到了下面提到的错误。

{ 错误:连接 ETIMEDOUT 52.216.206.51:443 在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1104:14) 消息:'连接 ETIMEDOUT 52.216.206.51:443', 错误号:'ETIMEDOUT', 代码:“网络错误”, 系统调用:'连接', 地址:'52.216.206.51', 端口:443, 地区:'us-east-1', 主机名: 'node-sdk-sample-c58bc12a-70be-4578-9c18-1c815962653b.s3.amazonaws.com', 可重试:真, 时间:20

我尝试在 userid/.aws/credentials 下的凭证文件中提供凭证

[default]
aws_access_key_id = my cred...
aws_secret_access_key = my cred....

我也尝试在代码本身中提供凭据

AWS.config.update({accessKeyId: 'my cred', secretAccessKey: 'my secret key', region: 'us-east-1'});

`// Load the SDK and UUID
var AWS = require('aws-sdk');
var uuid = require('node-uuid');
AWS.config.update({accessKeyId: '......', secretAccessKey: '.....', region: 'us-east-1'});

var s3 = new AWS.S3();
var bucketName = 'node-sdk-sample-' + uuid.v4();
var keyName = 'hello_world.txt';
s3.createBucket({Bucket: bucketName}, function() {
  var params = {Bucket: bucketName, Key: keyName, Body: 'Hello World!'};
  s3.putObject(params, function(err, data) {
    if (err)
      console.log(err)
    else
      console.log("Successfully uploaded data to " + bucketName + "/" + keyName);
  });
});`

【问题讨论】:

  • 您确定您已允许公开访问 AWS 上此 IP 的 443 端口吗?
  • 不确定,如何检查?

标签: node.js aws-sdk-nodejs


【解决方案1】:

我能够解决这个问题。该问题与代理有关。我试图从防火墙后面访问它。配置代理设置后,我可以连接到 AWS。

var proxy = require('proxy-agent'); 
AWS.config.update({ httpOptions: { agent: proxy('ur proxy url') } });

【讨论】:

    【解决方案2】:
    const AWS = require('aws-sdk'); //require aws sdk library
    
    var params = {
    Bucket: awsBucketName,
    Key: path + fileName,
    Body: value.data
    };
    
    //s3 upload start
    s3bucket.upload(params, (err, data) => {
    if (err) {
      return reject(err);
    }
    return resolve(data.key);
    });
    
    //get signed url for downloading the uploaded file
    const url = await s3bucket.getSignedUrl('getObject', {
      Bucket: awsBucketName,
      Key: key,
      Expires: 60*3
    });
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2020-08-12
    • 2014-05-08
    相关资源
    最近更新 更多