0

我有一个使用 React JS 构建的放大应用程序,我有一个场景,我在我的 AWS 账户的 SSM 参数存储中手动存储 API 密钥。但是,我想根据我的 React JS 应用程序(客户端)中的键来检索/获取这些值(JSON 对象)。所以,我已经安装了 aws-sdk、AWS JavaScript sdk,并使用下面的代码片段我试图访问 ssms 参数存储

const AWS = require('aws-sdk');
AWS.config.update({region:'us-east-1'});
const ssm = new AWS.SSM();


const getSecret = async (secretName) => {
  console.log(`Getting secret for ${secretName}`);
  const params = {
    Name: secretName, 
    WithDecryption: true
  };

  const result = await ssm.getParameter(params).promise();
  return result.Parameter.Value;
};

module.exports = {getSecret};

我在运行我的应用程序和使用 getSecret 函数访问商店时收到此错误。

未处理的拒绝 (CredentialsError):配置中缺少凭据,如果使用 AWS_CONFIG_FILE,请设置 AWS_SDK_LOAD_CONFIG=1

我相信 amplify 会隐式配置环境,但由于 Amplify 尚不支持 SSM Secrets manager,因此我必须为此目的使用 JS AWS SDK。在使用 AWS 开发工具包配置服务时,谁能帮我发现问题?还是有另一种或更好的方法从客户端访问参数存储?

另外,冲浪后我发现了一个名为dotenv的包

以这种方式存储 aws 凭证可以吗?

4

1 回答 1

1

考虑到安全隐患,您获取parameter store键/值的代码不应该在客户端。它应该在服务器端完成,并且可以通过端点为客户端公开功能。

您可以通过编程方式读取凭据,如下所示:

var AWS = require("aws-sdk");

var credentials = new AWS.SharedIniFileCredentials({profile: 'profile name'});
AWS.config.credentials = credentials;

参考:

  1. 加载节点凭据共享
  2. 全局配置对象
于 2021-06-17T12:01:24.340 回答