NodeJS 从本地react应用程序调用时出现AWS creds错误“配置中缺少凭据,如果使用AWS_CONFIG_FILE,请设置AWS_SDK_LOAD_CONFIG=1”

osh3o9ms  于 2023-10-17  发布在  Node.js
关注(0)|答案(2)|浏览(193)

我在本地运行react应用程序时收到以下错误,该应用程序通过AWS-SDK向AWS发出API请求:

CredentialsError: Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1

我试过:

我是这样提出请求的

import AWS from 'aws-sdk';
import { useState, useEffect } from 'react';

const ssm = new AWS.SSM({ region: 'eu-west-1' });

export const useFetchParams = (initialValue) => {
    const [result, setResult] = useState(initialValue);

    useEffect(() => {
        const params = {
            Path: '/',
            MaxResults: '2',
            Recursive: true,
            WithDecryption: true
        };

        ssm.getParametersByPath(params, function (err, data) {
            if (err) console.log(err, err.stack);
            else setResult(data);
        });
    }, []);

    return result;
};

export default useFetchParams;

任何帮助将不胜感激。谢谢.

pgccezyw

pgccezyw1#

该错误指出凭据丢失,因此这是一个身份验证问题,您可以尝试直接在SSM构造函数上设置accessKeyIdsecretAccessKeycredentials字段。
因此,只需保持代码原样,只需进行以下更改:

// From
const ssm = new AWS.SSM({ region: 'eu-west-1' });

// To
const ssm = new AWS.SSM({
    region: 'eu-west-1',
    accessKeyId: 'your-access-key',
    secretAccessKey: 'your-secret-key'
});

// Or To
const ssm = new AWS.SSM({
    region: 'eu-west-1',
    credentials: {
        accessKeyId: 'your-access-key',
        secretAccessKey: 'your-secret-key'
    }
});
kdfy810k

kdfy810k2#

像这样硬编码凭证是一种不好的做法。我会使用像dotenv这样的库,然后用你的凭证创建一个.env.local文件,如下所示:

REACT_APP_AWS_ACCESS_KEY_ID=YOUR-KEY
REACT_APP_AWS_SECRET_ACCESS_KEY=YOUR-ACCESS-ID

在您的脚本中,使用以下命令配置AWS SDK:

AWS.config.update({
    accessKeyId: process.env.REACT_APP_AWS_ACCESS_KEY_ID,
    secretAccessKey: process.env.REACT_APP_AWS_SECRET_ACCESS_KEY,
    region: 'us-east-1', 
});

相关问题