管理您的環境變數 - AWS App Runner

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

管理您的環境變數

使用下列其中一種方法來管理 App Runner 服務的環境變數:

應用程式執行器

在 App Runner 主控台上建立服務或更新服務時,您可以新增環境變數。

新增環境變數

若要新增環境變數
  1. 開啟應用程式執行器主控台,然後在 [區域] 清單中選取您的 AWS 區域.

  2. 根據您要建立或更新服務,執行下列其中一個步驟:

    • 如果您要建立新服務,請選擇 [建立應用程式執行器服務],然後移至 [設定服務]

    • 如果您要更新現有的服務,請選取您要更新的服務,然後前往服務的 [組態] 索引標籤。

  3. 轉到環境變量-服務設置下的可選

  4. 根據您的需求選擇以下任一選項:

    • 環境變數來源中選擇純文字,然後在環境變數名稱和環境變數值下分別輸入其鍵對。

      注意

      如果您要參照非敏感資料,請選擇「純文字」。此資料未加密,而且其他人可以在 App Runner 服務設定和應用程式記錄檔中看到。

    • 環境變數來源中選擇 Secret Manager,以參照儲存在服務中 AWS Secrets Manager 做為環境變數的密碼。分別在環境變數名稱和環境變數下提供您要參考的機密的環境變數名稱和 Amazon 資源名稱 (ARN)。

    • 環境變數來源中選擇「SSM 參數存放區」,將儲存在 SSM 參數存放區中的參數作為服務中的環境變數參照。在環境變數名稱和環境變數下分別提供您要參考之參數的環境變數名稱和 ARN。

      注意
      • 建立或更新 App Runner 服務時,您無法指派PORT為環境變數的名稱。它是應用程式執行器服務的保留環境變數。

      • 如果 SSM 參數存放區參數與您要啟動的服務相同 AWS 區域 ,您可以指定完整的 Amazon 資源名稱 (ARN) 或參數名稱。如果參數位於不同的「區域」中,則需要指定完整的 ARN。

      • 請確定您所參考的參數與您正在啟動或更新的服務位於相同的帳戶中。目前,您無法跨帳戶參考 SSM 參數存放區參數。

  5. 選擇新增環境變數以參照另一個環境變數。

  6. 展開 IAM 政策範本,以檢視和複製為和 SSM 參數存放區提供 AWS Secrets Manager 的 IAM 政策範本。只有在尚未使用所需許可更新執行個體角色的 IAM 政策時,才需要執行此操作。如需詳細資訊,請參閱 許可

移除環境變數

刪除環境變數之前,請確定您的應用程式程式碼已更新以反映相同的程式碼。如果應用程式程式碼未更新,您的應用程式執行器服務可能會失敗。

若要移除環境變數
  1. 開啟應用程式執行器主控台,然後在 [區域] 清單中選取您的 AWS 區域.

  2. 移至您要更新之服務的「組態」索引標籤。

  3. 轉到環境變量-服務設置下的可選

  4. 在您要移除的環境變數旁邊選擇「移除」。您會收到確認刪除的訊息。

  5. 選擇刪除

應用程序運行器 API 或 AWS CLI

您可以參考儲存在 Secrets Manager 和 SSM 參數存放區中的機密資料,方法是將它們新增為服務中的環境變數。

注意

更新執行個體角色的 IAM 政策,以便應用程式執行器可以存取秘密管理員和 SSM 參數存放區中儲存的機密和參數。如需詳細資訊,請參閱 許可

若要將密碼和組態參照為環境變數
  1. 在密碼管理員或 SSM 參數存放區中建立密碼或組態。

    下列範例顯示如何使用 SSM 參數存放區建立密碼和參數。

    範例 創建一個秘密-請求

    下列範例顯示如何建立代表資料庫認證的密碼。

    aws secretsmanager create-secret \ —name DevRdsCredentials \ —description "Rds credentials for development account." \ —secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"
    範例 創建一個秘密-響應
    arn:aws:secretsmanager:<region>:<aws_account_id>:secret:DevRdsCredentials
    範例 建立組態-請求

    下列範例顯示如何建立代表 RDS 連接字串的參數。

    aws systemsmanager put-parameter \ —name DevRdsConnectionString \ —value "mysql2://dev-mysqlcluster-rds.com:3306/diegor" \ —type "String" \ —description "Rds connection string for development account."
    範例 建立組態-回應
    arn:aws:ssm:<region>:<aws_account_id>:parameter/DevRdsConnectionString
  2. 將密碼和組態新增為環境變數,以參照儲存在 Secrets Manager 和 SSM 參數存放區中的密碼和組態。您可以在建立或更新應用程式執行器服務時新增環境變數。

    下列範例顯示如何在程式碼型和以映像為基礎的 App Runner 服務上,將機密和組態參考為環境變數。

    範例 基於圖像的應用程序運行器服務的輸入 .json 文件
    { "ServiceName": "example-secrets", "SourceConfiguration": { "ImageRepository": { "ImageIdentifier": "<image-identifier>", "ImageConfiguration": { "Port": "<port>", "RuntimeEnvironmentSecrets": { "Credential1":"arn:aws:secretsmanager:<region>:<aws_account_id>:secret:XXXXXXXXXXXX", "Credential2":"arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter-name>" } }, "ImageRepositoryType": "ECR_PUBLIC" } }, "InstanceConfiguration": { "Cpu": "1 vCPU", "Memory": "3 GB", "InstanceRoleArn": "<instance-role-arn>" } }
    範例 映像式應用程式執行器服務 — 請求
    aws apprunner create-service \ --cli-input-json file://input.json
    範例 映像式應用程式執行器服務 — 回應
    { ... "ImageRepository": { "ImageIdentifier":"<image-identifier>", "ImageConfiguration":{ "Port": "<port>", "RuntimeEnvironmentSecrets":{ "Credential1": "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:XXXXXXXXXXXX", "Credential2": "arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter-name>" }, "ImageRepositoryType":"ECR" } }, "InstanceConfiguration": { "CPU": "1 vCPU", "Memory": "3 GB", "InstanceRoleArn: "<instance-role-arn>" } ... }
    範例 基於代碼的應用程序運行器服務的輸入 .json 文件
    { "ServiceName": "example-secrets", "SourceConfiguration": { "AuthenticationConfiguration": { "ConnectionArn": "arn:aws:apprunner:us-east-1:123456789012:connection/my-github-connection/XXXXXXXXXX" }, "AutoDeploymentsEnabled": false, "CodeRepository": { "RepositoryUrl": "<repository-url>", "SourceCodeVersion": { "Type": "BRANCH", "Value": "main" }, "CodeConfiguration": { "ConfigurationSource": "API", "CodeConfigurationValues": { "Runtime": "<runtime>", "BuildCommand": "<build-command>", "StartCommand": "<start-command>", "Port": "<port>", "RuntimeEnvironmentSecrets": { "Credential1":"arn:aws:secretsmanager:<region>:<aws_account_id>:secret:XXXXXXXXXXXX", "Credential2":"arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter-name>" } } } } }, "InstanceConfiguration": { "Cpu": "1 vCPU", "Memory": "3 GB", "InstanceRoleArn": "<instance-role-arn>" } }
    範例 基於代碼的應用運行器服務-請求
    aws apprunner create-service \ --cli-input-json file://input.json
    範例 基於代碼的應用運行器服務-響應
    { ... "SourceConfiguration":{ "CodeRepository":{ "RepositoryUrl":"<repository-url>", "SourceCodeVersion":{ "Type":"Branch", "Value":"main" }, "CodeConfiguration":{ "ConfigurationSource":"API", "CodeConfigurationValues":{ "Runtime":"<runtime>", "BuildCommand":"<build-command>", "StartCommand":"<start-command>", "Port":"<port>", "RuntimeEnvironmentSecrets":{ "Credential1" : "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:XXXXXXXX", "Credential2" : "arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter-name>" } } } }, "InstanceConfiguration": { "CPU": "1 vCPU", "Memory": "3 GB", "InstanceRoleArn: "<instance-role-arn>" } ... }
  3. apprunner.yaml模型會更新以反映新增的密碼。

    以下是更新apprunner.yaml模型的範例。

    範例 apprunner.yaml
    version: 1.0 runtime: python3 build: commands: build: - python -m pip install flask run: command: python app.py network: port: 8080 env: - name: MY_VAR_EXAMPLE value: "example" secrets: - name: my-secret value-from: "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:XXXXXXXXXXXX" - name: my-parameter value-from: "arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter-name>" - name: my-parameter-only-name value-from: "parameter-name"