Доступ к значению хранилища параметров SSM в приложении aws ampify response js

У меня есть приложение расширения, созданное с использованием React JS, у меня есть сценарий, для которого я вручную сохраняю ключи API в моем хранилище параметров SSM в моей учетной записи AWS. Однако я хочу получить / получить эти значения (объект JSON) на основе ключа из моего приложения React JS (на стороне клиента). Итак, я установил 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

Я считаю, что ampify неявно настраивает среду, но поскольку менеджер секретов SSM еще не поддерживается Amplify, я должен использовать для этой цели JS AWS SDK. Может ли кто-нибудь помочь мне определить проблему при настройке сервиса с помощью AWS SDK? Или есть другой или лучший способ доступа к хранилищу параметров со стороны клиента?

Кроме того, после серфинга я нашел пакет с именем dotenv

Можно ли таким образом хранить учетные данные AWS?


person Azher Aleem    schedule 16.06.2021    source источник
comment
Проблема в том, что ваш код не может найти учетные данные для подключения к сервисам AWS. когда вы запускаете с локального компьютера, он выбирается из файла .users / credentials. И вы не должны хранить учетные данные на стороне клиента.   -  person Sangam Belose    schedule 16.06.2021
comment
вам может потребоваться поместить код для доступа к хранилищу параметров в приложении на стороне сервера и предоставить его через некоторую конечную точку.   -  person Sangam Belose    schedule 16.06.2021
comment
Да, у меня есть учетные данные в общем пути Windows C: \ Users \ USER_NAME \ .aws \ config, но я все равно получаю эту ошибку. Есть зацепки? Примечание. У меня задано собственное имя профиля, а не имя по умолчанию.   -  person Azher Aleem    schedule 16.06.2021


Ответы (1)


Ваш код для получения parameter store ключей / значений не должен находиться на стороне клиента, учитывая последствия для безопасности. Это должно быть сделано на стороне сервера, а функциональность может быть предоставлена ​​через конечную точку для стороны клиента.

Вы можете программно прочитать учетные данные, как показано ниже:

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

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

Ссылка:

  1. loading-node- общие учетные данные
  2. global-config-object < / а>
person Sangam Belose    schedule 17.06.2021
comment
Да, учитывая последствия для безопасности, я переместил эту логику в Dynamodb, где я храню и извлекаю ключи через crypto-js, библиотеку шифрования / дешифрования на стороне клиента. Кроме того, для этой цели используется GraphQL. В любом случае спасибо за ответ :) - person Azher Aleem; 17.06.2021