環境変数の管理 - AWS App Runner

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

環境変数の管理

次のいずれかの方法を使用して、App Runner サービスの環境変数を管理します。

App Runner コンソール

App Runner コンソールでサービスを作成または更新するときに、環境変数を追加できます。

環境変数の追加

環境変数を追加するには
  1. App Runner コンソール を開き、リージョンリストで を選択します AWS リージョン。

  2. サービスを作成または更新するかどうかに基づいて、次のいずれかのステップを実行します。

    • 新しいサービスを作成する場合は、App Runner サービスの作成 を選択し、サービスの設定 に移動します。

    • 既存のサービスを更新する場合は、更新するサービスを選択し、サービスの設定タブに移動します。

  3. 「環境変数 - オプション」の「サービス設定」に移動します。

  4. 要件に基づいて、次のいずれかのオプションを選択します。

    • 環境変数のソースからプレーンテキストを選択し、それぞれ環境変数名 と環境変数値 の下にキーと値のペアを入力します。

      注記

      機密性のないデータを参照する場合は、プレーンテキストを選択します。このデータは暗号化されず、App Runner サービス設定とアプリケーションログで他のユーザーに表示されます。

    • 環境変数のソースから Secrets Manager を選択して、サービス内の環境変数 AWS Secrets Manager として に保存されているシークレットを参照します。参照するシークレットの環境変数名と Amazon リソースネーム (ARN) をそれぞれ環境変数名環境変数値で指定します。

    • 環境変数のソースから SSM パラメータストアを選択して、SSM パラメータストアに保存されているパラメータをサービスの環境変数として参照します。参照するパラメータの環境変数名と ARN をそれぞれ環境変数名環境変数値で指定します。

      注記
      • App Runner サービスを作成または更新するときに、 を環境変数の名前PORTとして割り当てることはできません。これは App Runner サービスの予約済み環境変数です。

      • SSM パラメータストアパラメータが起動するサービス AWS リージョン と同じ にある場合は、完全な Amazon リソースネーム (ARN) またはパラメータの名前を指定できます。パラメータが別のリージョンにある場合は、完全な ARN を指定する必要があります。

      • 参照するパラメータが、起動または更新するサービスと同じアカウントにあることを確認します。現在、アカウント間で SSM パラメータストアパラメータを参照することはできません。

  5. 環境変数を追加 を選択して、別の環境変数を参照します。

  6. IAM ポリシーテンプレートを展開して、 および SSM パラメータストアに用意されている IAM ポリシーテンプレートを表示 AWS Secrets Manager およびコピーします。これは、必要なアクセス許可でインスタンスロールの IAM ポリシーをまだ更新していない場合にのみ実行する必要があります。詳細については、「 アクセス許可」を参照してください。

環境変数の削除

環境変数を削除する前に、アプリケーションコードが同じ内容を反映するように更新されていることを確認してください。アプリケーションコードが更新されない場合、App Runner サービスが失敗する可能性があります。

環境変数を削除するには
  1. App Runner コンソール を開き、リージョンリストで を選択します AWS リージョン。

  2. 更新するサービスの 設定 タブに移動します。

  3. 「環境変数 - サービス設定 」の「オプション」に移動します。

  4. 削除する環境変数の横にある 削除を選択します。削除を確認するメッセージが表示されます。

  5. [削除] を選択します。

App Runner API または AWS CLI

Secrets Manager と SSM パラメータストアに保存されている機密データは、サービスに環境変数として追加することで参照できます。

注記

App Runner が Secrets Manager と SSM パラメータストアに保存されているシークレットとパラメータにアクセスできるように、インスタンスロールの IAM ポリシーを更新します。詳細については、「 アクセス許可」を参照してください。

シークレットと設定を環境変数として参照するには
  1. Secrets Manager または 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 サービスを作成または更新するときに、環境変数を追加できます。

    次の例は、シークレットと設定をコードベースおよびイメージベースの App Runner サービスの環境変数として参照する方法を示しています。

    例 イメージベースの App Runner サービス用の Input.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>" } }
    例 イメージベースの App Runner サービス – リクエスト
    aws apprunner create-service \ --cli-input-json file://input.json
    例 イメージベースの App Runner サービス – レスポンス
    { ... "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>" } ... }
    例 コードベースの App Runner サービス用の Input.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>" } }
    例 コードベースの App Runner サービス – リクエスト
    aws apprunner create-service \ --cli-input-json file://input.json
    例 コードベースの App Runner サービス – レスポンス
    { ... "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"