首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无需凭据即可使用aws-sdk

无需凭据即可使用aws-sdk
EN

Stack Overflow用户
提问于 2021-09-17 12:56:59
回答 1查看 203关注 0票数 1

我有一个s3存储桶,它被设置为允许为公众列出。当我这样做的时候:

代码语言:javascript
复制
aws s3 ls s3://bucket_name/prefix/ --no-sign-request

我成功地列出了存储桶。我想把它列在一个使用aws-sdk for Node.js的应用程序中。在这里,我这样做:

代码语言:javascript
复制
import AWS from 'aws-sdk';
const s3 = new AWS.S3();
s3.listObjectsV2({Bucket: bucket_name, Prefix: prefix, Delimiter: "/"}, ...

但我得到一个错误:

代码语言:javascript
复制
message: 'Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1',
2021-09-17T12:40:33.459881+00:00 app[web.1]:   code: 'CredentialsError',
2021-09-17T12:40:33.459881+00:00 app[web.1]:   errno: 'ECONNREFUSED',
2021-09-17T12:40:33.459882+00:00 app[web.1]:   syscall: 'connect',...
2021-09-17T12:40:33.459883+00:00 app[web.1]:   time: 2021-09-17T12:40:33.459Z,
2021-09-17T12:40:33.459884+00:00 app[web.1]:   originalError: 
2021-09-17T12:40:33.459884+00:00 app[web.1]:    { message: 'Could not load credentials from any providers',
2021-09-17T12:40:33.459884+00:00 app[web.1]:      code: 'CredentialsError',
2021-09-17T12:40:33.459884+00:00 app[web.1]:      errno: 'ECONNREFUSED',
2021-09-17T12:40:33.459885+00:00 app[web.1]:      syscall: 'connect',...
2021-09-17T12:40:33.459886+00:00 app[web.1]:      time: 2021-09-17T12:40:33.459Z,
2021-09-17T12:40:33.459886+00:00 app[web.1]:      originalError: 
2021-09-17T12:40:33.459886+00:00 app[web.1]:       { message: 'EC2 Metadata roleName request returned error',
2021-09-17T12:40:33.459887+00:00 app[web.1]:         code: 'ECONNREFUSED',
2021-09-17T12:40:33.459887+00:00 app[web.1]:         errno: 'ECONNREFUSED',
2021-09-17T12:40:33.459888+00:00 app[web.1]:         syscall: 'connect',... }

看起来SDK似乎正在尝试获取凭据,即使资源在没有凭据的情况下也可用。是否可以在不要求凭据的情况下将请求标记为发出?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-17 13:32:22

为了防止SDK需要凭据,您需要使用makeUnauthenticatedRequest方法进行任何调用。这允许您调用“具有给定输入参数的服务上的操作,而不需要任何身份验证数据”。

代码语言:javascript
复制
var AWS = require('aws-sdk');
AWS.config.update({region: 'us-west-2'});
s3 = new AWS.S3();

s3.makeUnauthenticatedRequest(
    'listObjects', 
    { Bucket : '-example-bucket-name-', }, 
    function(err, data) {
        if (err) {
            console.log("Error", err);
        } else {
            console.log("Success", data);
        }
    }
);

旧版本的软件开发工具包可以在调用validatesign侦听器上的removeListener之后调用send()来完成相同的任务。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69223827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档