簡體   English   中英

在 aws amplify react js 應用程序中訪問 SSM 參數存儲值

[英]Access SSM Parameter store value in an aws amplify react js application

我有一個使用 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 function 訪問商店時收到此錯誤。

未處理的拒絕 (CredentialsError):配置中缺少憑據,如果使用 AWS_CONFIG_FILE,請設置 AWS_SDK_LOAD_CONFIG=1

我相信 amplify 會隱式配置環境,但由於 Amplify 尚不支持 SSM Secrets 管理器,因此我必須為此目的使用 JS AWS SDK。 在使用 AWS SDK 配置服務時,任何人都可以幫助我發現問題嗎? 或者是否有另一種或更好的方法從客戶端訪問參數存儲?

另外,在沖浪之后我發現了一個名為 dotenv 的package

以這種方式存儲aws憑據可以嗎?

考慮到安全隱患,您獲取parameter store鍵/值的代碼不應位於客戶端。 它應該在服務器端完成,功能可以通過端點公開給客戶端。

您可以像下面這樣以編程方式讀取憑據:

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

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

參考:

  1. 加載節點憑證共享
  2. 全局配置對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM