環境變數 - AWS Amplify 託管

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

環境變數

環境變量是鍵值對,您可以將其添加到應用程序的設置中,以使其可用於 Amplify 託管。最佳作法是,您可以使用環境變數來公開應用程式組態資料。您新增的所有環境變數都會加密,以防止 Rogue 存取。

Amplify 會對您建立的環境變數強制執行下列限制。

  • Amplify 不允許您使用AWS前綴創建環境變量名稱。此前綴僅保留用於 Amplify 內部使用。

  • 環境變數的值不能超過 5500 個字元。

重要

不要使用環境變量來存儲密碼。對於第 2 代應用程序,請使用 Amplify 控制台中的密碼管理功能。如需詳細資訊,請參閱 Amplify 文件中的機密和環境變數。對於 Gen 1 應用程式,請將機密儲存在使用 AWS Systems Manager 參數存放區建立的環境機密中。如需詳細資訊,請參閱 管理環境機密

Amplify 環境變數

根據預設,您可以在 Amplify 主控台中存取下列環境變數。

變數名稱 描述 範例值

_BUILD_TIMEOUT

建置逾時持續時間,以分鐘為

30

_LIVE_UPDATES

該工具將升級到最新版本。

[{"name":"Amplify CLI","pkg":"@aws-amplify/cli","type":"npm","version":"latest"}]

USER_DISABLE_TESTS

建置期間會略過測試步驟。您可以禁用應用程序中所有分支或特定分支的測試。

此環境變數用於在建置階段執行測試的應用程式。如需有關設定此變數的更多資訊,請參閱禁用測試

true

AWS_APP_ID

目前建置的應用程式 ID

abcd1234

AWS_BRANCH

目前建置的分支名稱

main, develop, beta, v2.0

AWS_BRANCH_ARN

當前構建的分支 Amazon 資源名稱(ARN)

aws:arn:amplify:us-west-2:123456789012:appname/branch/...

AWS_CLONE_URL

URL用於獲取 git 存儲庫內容的克隆

git@github.com:<user-name>/<repo-name>.git

AWS_COMMIT_ID

當前構建的提交 ID

用於重建的「HEAD」

abcd1234

AWS_JOB_ID

目前建置的任務 ID。

這包括一些 '0' 的填充,所以它總是具有相同的長度。

0000000001

AWS_PULL_REQUEST_ID

提取請求 Web 預覽組建的提取要求識別碼。

AWS CodeCommit 作為儲存庫提供者使用時,此環境變數無法使用。

1

AWS_PULL_REQUEST_SOURCE_BRANCH

提交至 Amplify 主控台中應用程式分支之提取要求預覽的功能分支名稱。

featureA

AWS_PULL_REQUEST_DESTINATION_BRANCH

要提交功能分支提取要求的 Amplify 主控台中應用程式分支的名稱。

main

AMPLIFY_AMAZON_CLIENT_ID

Amazon 客戶端 ID

123456

AMPLIFY_AMAZON_CLIENT_SECRET

Amazon 客戶機密

example123456

AMPLIFY_FACEBOOK_CLIENT_ID

臉書用戶端識別碼

123456

AMPLIFY_FACEBOOK_CLIENT_SECRET

臉書用戶端的秘密

example123456

AMPLIFY_GOOGLE_CLIENT_ID

谷歌客戶端 ID

123456

AMPLIFY_GOOGLE_CLIENT_SECRET

谷歌客戶端的秘密

example123456

AMPLIFY_DIFF_DEPLOY

啟用或停用基於差異的前端部署。如需詳細資訊,請參閱 配置基於差異的前端構建和部署

true

AMPLIFY_DIFF_DEPLOY_ROOT

用於基於差異的前端部署比較的路徑,相對於儲存庫的根目錄。

dist

AMPLIFY_DIFF_BACKEND

啟用或禁用基於差異的後端構建。這僅適用於第 1 代應用程序。如需更多資訊,請參閱為第 1 代應用程式設定基於差異的後端建置

true

AMPLIFY_BACKEND_PULL_ONLY

Amplify 管理此環境變數。這僅適用於第 1 代應用程序。如需更多資訊,請參閱編輯現有的前端以指向不同的後端

true

AMPLIFY_BACKEND_APP_ID

Amplify 管理此環境變數。這僅適用於第 1 代應用程序。如需更多資訊,請參閱編輯現有的前端以指向不同的後端

abcd1234

AMPLIFY_SKIP_BACKEND_BUILD

如果您的建置規格中沒有後端區段,而且想要停用後端組建,請將此環境變數設定為true。這僅適用於第 1 代應用程序。

true

AMPLIFY_ENABLE_DEBUG_OUTPUT

將此變數設定true為可在記錄檔中列印堆疊追蹤。這對於調試後端構建錯誤很有幫助。

true

AMPLIFY_MONOREPO_APP_ROOT

用於指定 monorepo 應用程序的應用程序根目錄的路徑,相對於存儲庫的根目錄。

apps/react-app

AMPLIFY_USERPOOL_ID

已匯入進行驗證之 Amazon Cognito 使用者集區的識別碼

us-west-2_example

AMPLIFY_WEBCLIENT_ID

Web 應用程序使用的應用程序客戶端的 ID

應用程式用戶端必須設定具有存取由 AMPLIFY _ USERPOOL _ID 環境變數指定之 Amazon Cognito 使用者集區的存取權。

123456

AMPLIFY_NATIVECLIENT_ID

本機應用程序使用的應用程序客戶端的 ID

應用程式用戶端必須設定具有存取由 AMPLIFY _ USERPOOL _ID 環境變數指定之 Amazon Cognito 使用者集區的存取權。

123456

AMPLIFY_IDENTITYPOOL_ID

Amazon Cognito 身份池的 ID

example-identitypool-id

AMPLIFY_PERMISSIONS_BOUNDARY_ARN

將IAM原則ARN用作權限界限,套用至 Amplify 建立的所有IAM角色。如需詳細資訊,請參閱 Amplify 產生之角色的IAM權限界限

arn:aws:iam::123456789012:policy/example-policy

AMPLIFY_DESTRUCTIVE_UPDATES

將此環境變數設定為 true,以允許使用可能造成資料遺失的結構描述作業API來更新 GraphQL。

true

注意

AMPLIFY_AMAZON_CLIENT_IDAMPLIFY_AMAZON_CLIENT_SECRET環境變量是OAuth令牌,而不是 AWS 訪問密鑰和密鑰。

設定環境變數

使用下列指示,在 Amplify 主控台中設定應用程式的環境變數。

注意

只有當應用程式設定為持續部署並連線到 git 儲存庫時,環境變數才會顯示在 Amplify 主控台的 [應用程式設定] 功能表中。如需有關此部署類型的指示,請參閱開始使用現有程式碼

若要設定環境變數
  1. 登入 AWS Management Console 並開啟 Amplify 大控制台

  2. 在 Amplify 主控台中,選擇 [主],然後選擇 [環境變數]。

  3. 在 [環境變數] 頁面上,選擇 [管理變數]。

  4. 變數中,輸入您的金鑰。在「」中,輸入您的值。根據預設,Amplify 會在所有分支上套用環境變數,因此在連接新分支時不必重新輸入變數。

  5. (選擇性) 若要專門為分支自訂環境變數,請新增分支覆寫,如下所示:

    1. 選擇「動作」,然後選擇「新增變數覆寫

    2. 您現在有您分支專屬的一組環境變數。

  6. 選擇儲存

在構建時訪問環境變量

若要在建置期間存取環境變數,請編輯您的建置設定以在您的建置命令中包含環境變數。

構建配置中的每個命令都在 Bash shell 中運行。有關在 Bash 中使用環境變量的更多信息,請參閱 B GNU ash 手冊中的外殼擴展

若要編輯建置設定以包含環境變數
  1. 登入 AWS Management Console 並開啟 Amplify 大控制台

  2. 在 Amplify 控制台中,選擇「主機」,然後選擇「構建設置」

  3. 在 [App 組建規格] 區段中,選擇 [編輯]。

  4. 將環境變數新增至您的建置命令。您現在應該能夠在下一個建置期間存取環境變數。此範例會變更 npm 的行為 (BUILD_ENV),並將外部服務的 API token (TWITCH_CLIENT_ID) 新增至環境檔案以供日後使用。

    build: commands: - npm run build:$BUILD_ENV - echo "TWITCH_CLIENT_ID=$TWITCH_CLIENT_ID" >> backend/.env
  5. 選擇儲存

讓環境變數可供伺服器端執行階段存取

默認情況下,Next.js 服務器組件無法訪問應用程序的環境變量。此行為是刻意保護應用程式在建置階段期間所使用之環境變數中儲存的任何密碼。

若要讓 Next.js 可存取特定的環境變數,您必須修改 Amplify 建置規格檔案,以便在 Next.js 可辨識的環境檔案中設定環境變數。這可讓 Amplify 在建置應用程式之前載入環境變數。如需有關修改組建規格的詳細資訊,請參閱建置命令一節中如何新增環境變數的範例。

使用社交登錄的身份驗證參數創建新的後端環境

將分支連線至應用程式
  1. 登入 AWS Management Console 並開啟 Amplify 大控制台

  2. 將分支連接到應用程序的過程取決於您是將分支連接到新應用程序還是現有應用程序。

    • 將分支連接到新的應用程序

      1. 在 [組建設定] 頁面上,找到 [選取要與此分支搭配使用的後端環境] 區段。在「環境」中,選擇「建立新環境」,然後輸入後端環境的名稱。下列螢幕擷取畫面顯示 [建置設定] 頁面的 [選取要與此分支搭配使用的後端環境] 區段,並backend輸入後端環境名稱。

        [組建設定] 頁面的 [選取要與此分支搭配使用的後端環境] 區段。
      2. 展開 [組建設定] 頁面上的 [進階設定] 區段,然後新增社交登入金鑰的環境變數。例如,AMPLIFY_FACEBOOK_CLIENT_SECRET是有效的環境變數。如需預設可用的 Amplify 系統環境變數清單,請參閱中Amplify 環境變數的表格。

    • 將分支連接到現有的應用程序

      1. 如果要將新分支連接到現有應用程序,請在連接分支之前設置社交登錄環境變量。在導覽窗格中,選擇 [應用程式設定]、[環境變數]。

      2. 在「環境變數」區段中,選擇「管理變數」。

      3. 在「管理變數」區段中,選擇「新增變數」。

      4. 變數 (金鑰) 中,輸入您的用戶端 ID。在「」中,輸入您的用戶端密碼。

      5. 選擇,保存

前端框架環境變量

如果您使用支援自己環境變數的前端架構來開發應用程式,請務必瞭解這些變數與您在 Amplify 主控台中設定的環境變數不同。例如,React(前綴 REACT _APP)和 Gatsby(前綴GATSBY),使您能夠創建運行時環境變量,這些框架會自動捆綁到您的前端生產構建中。若要瞭解使用這些環境變數來儲存值的影響,請參閱您所使用之前端架構的文件。

在這些前端框架前綴的環境變量中存儲敏感值(例如API密鑰)並不是最佳實踐,因此不建議使用。如需針對此目的使用 Amplify 的建置時間環境變數的範例,請參閱在構建時訪問環境變量

管理環境機密

隨著 Amplify Gen 2 的發行,可簡化環境機密的工作流程,以便在 Amplify 主控台中集中管理機密和環境變數。如需為 Amplify Gen 2 應用程式設定和存取密碼的指示,請參閱 Amplify 文件中的機密和環境變數。

Gen 1 應用程式的環境密碼與環境變數類似,但它們是可以加密的 AWS Systems Manager 參數存放區金鑰值組。某些值必須加密,例如「使用 Apple 私鑰登錄」以進行「Amplify」。

設定和存取第 1 代應用程式的環境機密

請遵循下列指示,使用 AWS Systems Manager 主控台為 Gen 1 Amplify 應用程式設定環境密碼。

若要設定環境密碼
  1. 登入 AWS Management Console 並開啟AWS Systems Manager 主控台

  2. 在導覽窗格中選擇「應用程式管理」,然後選擇「參數存放區」。

  3. 在「AWSSystems Manager 參數存放區」頁面上,選擇建立參數

  4. 在「建立參數」頁面的「參數詳細資訊」段落中,執行下列動作:

    1. 在「名稱」中,以格式輸入參數/amplify/{your_app_id}/{your_backend_environment_name}/{your_parameter_name}

    2. 針對 Type (類型),選擇 SecureString

    3. 對於KMS金鑰來源,請選擇 [我目前的帳戶] 以使用帳戶的預設金鑰。

    4. 中,輸入要加密的密碼值。

  5. 選擇,創建參數

注意

Amplify 只能存取特定環境組/amplify/{your_app_id}/{your_backend_environment_name}建下的金鑰。您必須指定預設值, AWS KMS key 才能允許「Amplify」解密值。

存取環境機密

在建置期間存取 Gen 1 應用程式的環境機密與存取環境變數類似,不同之處在於環境機密會以JSON字串process.env.secrets形式儲存在中。

Amplify 環境機密

以格式指定「Systems Manager」參數/amplify/{your_app_id}/{your_backend_environment_name}/AMPLIFY_SIWA_CLIENT_ID

您可以使用下列預設可在 Amplify 主控台中存取的環境密碼。

變數名稱 描述 範例值

AMPLIFY_SIWA_CLIENT_ID

使用蘋果客戶端 ID 登錄

com.yourapp.auth

AMPLIFY_SIWA_TEAM_ID

使用蘋果團隊 ID 登錄

ABCD123

AMPLIFY_SIWA_KEY_ID

使用蘋果密鑰 ID 登錄

ABCD123

AMPLIFY_SIWA_PRIVATE_KEY

使用蘋果私鑰登錄

-----BEGIN PRIVATE KEY-----

****......

-----END PRIVATE KEY-----