Dostat aws_access_key_id a aws_secret_access_key v zesilovat

0

Otázka

Stavím aplikace pomocí reagovat create-react-app, který používá javascript aws sdk pro připojení k dynamodb. Mám to práci na místě, ale nejsem schopen to dostat do práce, když hostil na AWS Zesílit. Můj kámen úrazu je, že nevím jak předat aws_access_key_id a aws_secret_access_key v Zesilovat na reagovat aplikace.

Lokálně, mám .env soubor s REACT_APP_AWS_ACCESS_KEY_ID a REACT_APP_AWS_SECRET_ACCESS_KEY. Tyto samozřejmě nejsou definovány v Zesilovat.

Uvnitř balíčku.json, snažil jsem se nastavit proměnné v build skriptu. Dokonce jsem se snažil jen s access_key_id sám vyloučit problémy v nastavení dvou proměnných najednou.

"scripts": {
    "build": "REACT_APP_AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID REACT_APP_AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY react-scripts build",
  },

Nicméně, to má za následek prázdnou hodnotu pro REACT_APP_ proměnných.

Zkoušel jsem úpravy Zesílit aplikace build settings v dvěma různými způsoby a to jak s a bez obalu.json změnit, také bez úspěchu.

build:
      commands:
        - npm run build
        - echo "REACT_APP_AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID" >> .env
build:
      commands:
        - npm run build
        - echo "REACT_APP_AWS_ACCESS_KEY_ID=$REACT_APP_AWS_ACCESS_KEY_ID" >> .env

Nevím, co jiného mám dělat, nebo jestli jsem zcela na špatné cestě. Byla jsem si jistá, že AWS prostředí vstřikuje nich, když aplikace je spuštěn v rámci ekosystému, protože jsem to viděla práci s jiné aplikace hostované na Elastic Beanstalk.

Nakonec vše, co potřebuji, je access_key_id a secret_access_key pro použití v javascriptu aws sdk pro inicializaci dynamodb klienta jako takového.

const client = new DynamoDB({
  region: 'us-east-1',
  credentials: {
    accessKeyId: process.env.REACT_APP_AWS_ACCESS_KEY_ID,
    secretAccessKey: process.env.REACT_APP_AWS_SECRET_ACCESS_KEY
  }
});
1

Nejlepší odpověď

1

Musíte nastavit env vars v zesílení konzoly, pokud chcete zesílit, aby build-time přístup k nim.

Jsem si jist, že to víš, ale to je téměř vždy Velmi Špatný Nápad, aby zahrnovala aws pověření ve vašem reagovat klienta bundle tímto způsobem. Vaše plaintext tajemství bude čitelný pro všechny uživatele internetu.

Jako Aws nám připomíná: Ukládání citlivých hodnoty, jako je API klíče, uvnitř těchto frontend rámec zákonné proměnné prostředí není nejlepší praxi a je velmi znechucený

2021-11-23 15:36:20

Jsem docela nový integrovat AWS do aplikace reagovat, a byl následující dokumentaci jsem našel na sdk. Tam je další způsob, jak získat pověření pro dynamodb klienta jiné, než pomocí přístupové klávesy?
user1779418

Existuje spousta možností. Můžete získat straně prohlížeče pověření přímo. Ale možná budete chtít podívat na Zesílení full-stack architektury , kde se vaše SDK hovory jsou skryté za backend API a vaše aplikace má Cognito auth. Zesílení je silný, ale má začátečník-přátelský abstrakce.
fedonev

Díky za informace! Já jsem se nedostala do Zesílit full-stack architektury předtím, a to vypadá jako přesně to, co potřebuju.
user1779418

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................