【问题标题】:aws-sdk: NoSuchKey: The specified key does not exist?aws-sdk: NoSuchKey: 指定的键不存在?
【发布时间】:2019-11-13 18:47:35
【问题描述】:

在我的 nodejs 项目中,我正在使用 aws-sdk 从我的 s3 存储桶中下载所有图像,但是我收到了这个错误 - NoSuchKey: The specified key does not exist。但是密钥是正确的,我可以使用这些密钥上传图片。

我的代码是:

var AWS = require('aws-sdk');
  s3 = new AWS.S3();
  var params = {
        Bucket:  config.get("aws.s3.bucket"),
        Key: config.get("aws.credentials.secretAccessKey")
    };
    s3.getObject(params, function (err, data) {
        console.log("data");
        if (err) console.log(err, err.stack); // an error occurred
        else console.log(data);
    });
}

谁能告诉我哪里做错了?

【问题讨论】:

    标签: javascript aws-sdk aws-sdk-nodejs


    【解决方案1】:

    aws-sdk的使用有一些问题,应该是下面的例子:

    var aws = require('aws-sdk');
    aws.config.update({
      accessKeyId: {{AWS_ACCESS_KEY}},
      secretAccessKey: {{AWS_SECRET_KEY}}
    });
    var s3 = new aws.S3();
    var s3Params = {
        Bucket:  {{bucket name}},
        Key: {{path to dedicated S3 Object (folder name + file/object 
        name)}}
    };
    s3.getObject(s3Params, function (err, data) {
      //Continue handling the returned results.
    });
    

    用正确的数据替换 {{}} 中的字符串,它应该可以正常工作。

    【讨论】:

    • 看来OP的误解是"Key" is in S3。您的代码示例是正确的。尽管理想情况下,应该使用roles,而不是硬编码访问密钥/秘密。 Configuring local environ。虽然这一切都超出了 OP 的问题范围:)
    • 这超出了这个问题的范围,但你是对的,你解释的我在我的代码中实际上曾经做过的事情:)
    • 正确,我确实注意到了。我添加链接是为了 OP 的利益,而不是你的 :)
    【解决方案2】:

    您可能需要 sudo 才能读取密钥。

    【讨论】:

    • 谢谢@mikep,我该怎么做?能具体点吗?
    • 在 linux shell 中,执行 sudo 。系统将提示您输入密码。
    • 但是我在我的项目中这样做了,那么它将如何工作?
    • 上传的怎么样?
    • 第二次看,第一行的要求似乎失败了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2016-12-23
    • 2020-08-23
    • 2021-05-12
    • 1970-01-01
    相关资源
    最近更新 更多