Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 配置中缺少AWS SDK凭据_Node.js_Amazon Web Services_Amazon Dynamodb_Aws Sdk_Aws Cli - Fatal编程技术网

Node.js 配置中缺少AWS SDK凭据

Node.js 配置中缺少AWS SDK凭据,node.js,amazon-web-services,amazon-dynamodb,aws-sdk,aws-cli,Node.js,Amazon Web Services,Amazon Dynamodb,Aws Sdk,Aws Cli,错误:可能未处理的承诺拒绝(id:0): CredentialsError:配置中缺少凭据,如果使用AWS_config_文件,请将AWS_SDK_LOAD_config=1 我正在react native(0.64.0)项目中使用“aws sdk”:“^2.918.0”。我正在使用节点v14.17.0和Windows 10版本21H1 OS build 19043.985运行该程序: / Load the AWS SDK for Node.js var AWS = require('aws-s

错误:可能未处理的承诺拒绝(id:0): CredentialsError:配置中缺少凭据,如果使用AWS_config_文件,请将AWS_SDK_LOAD_config=1

我正在react native(0.64.0)项目中使用“aws sdk”:“^2.918.0”。我正在使用节点v14.17.0和Windows 10版本21H1 OS build 19043.985运行该程序:

/ Load the AWS SDK for Node.js
var AWS = require('aws-sdk');

AWS.config.update({
  region: 'us-east-1',
  maxRetries: 3,
  httpOptions: {timeout: 30000, connectTimeout: 5000},
});

// Create the DynamoDB service object
var ddb = new AWS.DynamoDB({
  apiVersion: '2012-08-10',
});

console.log('ddb: ', ddb);
~/.aws/config

[default]
region=us-east-1
output=json

[profile myName]
region = us-east-1
output = json
~/.aws/凭证

[default]
aws_access_key_id=XXX...
aws_secret_access_key=XXX...

[mateo\.lara]
aws_access_key_id=XXX...
aws_secret_access_key=XXX...

使用ddb查询数据库时,尽管已在AWS CLI(AWS CLI/2.2.6 Python/3.8.8 Windows/10 exe/AMD64提示符/关闭)中配置了凭据,但仍出现此凭据错误。你知道可能是什么问题吗?如何解决呢

--------------------------------------编辑-------------------------------------

根据@nishkaush的建议,我尝试将AWS_SDK_LOAD_CONFIG=1添加到配置文件中,并尝试删除凭证文件,将AWS_access_key_id和AWS_secret_access_key添加到配置文件中,但没有成功

以下是ddb日志的输出:

ddb:  {"CALL_EVENTS_BUBBLE": [Function CALL_EVENTS_BUBBLE], "MONITOR_EVENTS_BUBBLE": [Function EVENTS_BUBBLE], "_clientId": 1, "_events": {"apiCall": [[Function CALL_EVENTS_BUBBLE]], "apiCallAttempt": [[Function EVENTS_BUBBLE]]}, "config": {"apiVersion": "2012-08-10", "apiVersions": {}, "clientSideMonitoring": 
false, "computeChecksums": true, "convertResponseTypes": true, "correctClockSkew": false, "credentialProvider": null, "credentials": null, "customUserAgent": null, "dynamoDbCrc32": true, "endpoint": "dynamodb.us-east-1.amazonaws.com", "endpointCacheSize": 1000, "endpointDiscoveryEnabled": undefined, "hostPrefixEnabled": true, "httpOptions": {"connectTimeout": 5000, "timeout": 30000}, "logger": null, "maxRedirects": 10, "maxRetries": 3, "paramValidation": true, "region": "us-east-1", "retryDelayOptions": {}, "s3BucketEndpoint": false, "s3DisableBodySigning": true, "s3ForcePathStyle": false, "s3UsEast1RegionalEndpoint": "legacy", 
"s3UseArnRegion": undefined, "signatureCache": true, "signatureVersion": "v4", "sslEnabled": true, "stsRegionalEndpoints": "legacy", "systemClockOffset": 0, "useAccelerateEndpoint": false}, "endpoint": {"host": "dynamodb.us-east-1.amazonaws.com", "hostname": "dynamodb.us-east-1.amazonaws.com", "href": "https://dynamodb.us-east-1.amazonaws.com/", "path": "/", "pathname": "/", "port": 443, "protocol": "https:"}, "isGlobalEndpoint": false}

在您的
~/.aws/config
文件中,您是否也可以尝试设置此选项:

。。
..
AWS\u SDK\u加载\u配置=1
或者,您可以尝试删除
~/.aws/credentials
文件,并将
aws\u-access\u-key\u-id
aws\u-secret\u-access\u-key
移到
~/.aws/config
文件中,如下所示:

[默认值]
地区=美国东部-1
输出=json
aws\u访问\u密钥\u id=XXX
aws\u密码\u访问\u密钥=XXX

首先,感谢nishkaush和Jatin Mehrotra的帮助。最后,我解决问题的唯一方法是将“accessKeyId”和“secretAccessKey”直接添加到我的AWS.config.update中。这决不是最终的解决方案,您应该避免将凭据直接放在代码中(出于安全原因)。请注意,如果要使用此解决方案,应通过.env文件设置凭据,并将其添加到gitignore以保护凭据。我本想使用共享凭据文件配置凭据,但时间不够了,问题仍然存在。如果有任何帮助,请检查:

话虽如此,问题可能与我正在使用react native有关,无论如何,以下是解决方案:

AWS.config.update({
  maxRetries: 3,
  httpOptions: {timeout: 30000, connectTimeout: 5000},
  region: 'us-east-1',
  accessKeyId: 'XXXX...',
  secretAccessKey: 'XXXX...',
});

感谢您的帮助,不幸的是,您提出的更改没有解决问题:相同的错误消息(CredentialsError)将AWS_SDK_LOAD_CONFIG=1添加到配置文件中的两个配置文件后,是否可以尝试删除
~/.AWS/credentials文件
,并将
AWS_access_key_id
AWS_secret_access_key
移到
~/.AWS/CONFIG
文件中。我也在我的答案中添加了相同的信息。我尝试过,但错误仍然存在。我有一个类似的问题,你介意检查一下这个问题及其答案和评论吗,它可以帮助我吗?根据建议,我在~/.aws/credentials中的配置文件中添加了DynamoDB表的IAM角色,但错误仍然存在。您是否可以在终端中尝试此命令,然后尝试运行node.js code
export aws\u SDK\u LOAD\u CONFIG=1
,如果错误仍然存在,请尝试在代码中添加密钥
aws.CONFIG.update({region:“eu-west-1”,端点:http://localhost:8080,accessKeyId:“xxxxxx”,secretAccessKey:“xxxxxx”});