

AWS App Runner は、2026 年 4 月 30 日以降、新規のお客様に公開されなくなります。App Runner を使用する場合は、その日付より前にサインアップします。既存のお客様は、通常どおりサービスを引き続き使用できます。詳細については、「[AWS App Runner  可用性の変更](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)」を参照してください。

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

# 環境変数の参照
<a name="env-variable"></a>

App Runner を使用すると、サービス[の作成](manage-create.md)時またはサービス[の更新](manage-configure.md)時に、シークレットと設定をサービス内の環境変数として参照できます。

タイムアウトや再試行回数などの機密性のない設定データは、キーと値のペアとして**プレーンテキスト**で参照できます。**プレーンテキスト**で参照する設定データは暗号化されず、App Runner サービス設定とアプリケーションログで他のユーザーに表示されます。

**注記**  
セキュリティ上の理由から、App Runner サービスの**プレーンテキスト**で機密データを参照しないでください。

## 機密データを環境変数として参照する
<a name="env-variable.sensitivedata"></a>

App Runner は、機密データをサービス内の環境変数として安全に参照することをサポートしています。参照する機密データを *AWS Secrets Manager*または *AWS Systems Manager Parameter Store* に保存することを検討してください。その後、App Runner コンソールから、または API を呼び出して、サービス内の環境変数として安全に参照できます。これにより、シークレットとパラメータの管理がアプリケーションコードとサービス設定から効果的に分離され、App Runner で実行されているアプリケーションの全体的なセキュリティが向上します。

**注記**  
App Runner では、Secrets Manager と SSM パラメータストアを環境変数として参照しても料金は発生しません。ただし、Secrets Manager と SSM パラメータストアの使用には標準料金がかかります。  
料金の詳細については、以下を参照してください。  
 [AWS Secrets Manager の料金](https://aws.amazon.com/secrets-manager/pricing)
 [AWS SSM パラメータストアの料金 ](https://aws.amazon.com/systems-manager/pricing) 

 以下は、機密データを環境変数として参照するプロセスです。

1. API キー、データベース認証情報、データベース接続パラメータ、アプリケーションバージョンなどの機密データをシークレットまたはパラメータとして AWS Secrets Manager または AWS Systems Manager パラメータストアに保存します。

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

1. 名前を割り当てて Amazon リソースネーム (ARN) を指定することで、シークレットとパラメータを環境変数として安全に参照します。サービス[を作成するとき、またはサービス](manage-create.md)[の設定を更新するときに、](manage-configure.md)環境変数を追加できます。次のいずれかのオプションを使用して、環境変数を追加できます。
   +  App Runner コンソール 
   +  App Runner API 
   +  `apprunner.yaml` 設定ファイル 
**注記**  
App Runner サービスを作成または更新するときに、 を環境変数の名前`PORT`として割り当てることはできません。これは App Runner サービスの予約済み環境変数です。

   シークレットとパラメータを参照する方法の詳細については、[「環境変数の管理](env-variable-manage.md)」を参照してください。

**注記**  
 App Runner はシークレットとパラメータ ARNs への参照のみを保存するため、機密データは App Runner サービス設定とアプリケーションログの他のユーザーには表示されません。

## 考慮事項
<a name="env-variable.sensitivedata.considerations"></a>
+  AWS Secrets Manager または Parameter Store の AWS Systems Manager シークレットとパラメータにアクセスするための適切なアクセス許可でインスタンスロールを更新してください。詳細については、[アクセス許可](#env-variable.sensitivedata.permissions)を参照してください。
+  AWS Systems Manager Parameter Store が、起動または更新するサービス AWS アカウント と同じ にあることを確認します。現在、アカウント間で SSM パラメータストアパラメータを参照することはできません。
+ シークレットとパラメータ値がローテーションまたは変更されると、App Runner サービスでは自動的に更新されません。App Runner はデプロイ中にシークレットとパラメータのみをプルするため、App Runner サービスを再デプロイします。
+ また、App Runner サービスの SDK を使用して AWS Secrets Manager と AWS Systems Manager Parameter Store を直接呼び出すこともできます。
+ エラーを回避するには、それらを環境変数として参照するときに、以下を確認してください。
  + シークレットの適切な ARN を指定します。
  + パラメータの正しい名前または ARN を指定します。

## アクセス許可
<a name="env-variable.sensitivedata.permissions"></a>

 AWS Secrets Manager または SSM パラメータストアに保存されているシークレットとパラメータの参照を有効にするには、*インスタンスロール*の IAM ポリシーに適切なアクセス許可を追加して、Secrets Manager と SSM パラメータストアにアクセスします。

**注記**  
 App Runner は、 アクセス許可がないと アカウントのリソースにアクセスできません。アクセス許可を指定するには、IAM ポリシーを更新します。

次のポリシーテンプレートを使用して、IAM コンソールでインスタンスロールを更新できます。これらのポリシーテンプレートは、特定の要件を満たすように変更できます。インスタンスロールの更新の詳細については、*IAM* [ユーザーガイドの「ロールの変更](https://docs.aws.amazon.com/IAM/latest/UserGuide/roles-managingrole-editing-console.html)」を参照してください。

**注記**  
[環境変数を作成する](env-variable-manage.md#env-variable-manage.console)ときに、App Runner コンソールから次のテンプレートをコピーすることもできます。

次のテンプレートをインスタンスロールにコピーして、 から*シークレット*を参照するアクセス許可を追加します*AWS Secrets Manager*。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "secretsmanager:GetSecretValue",
            "kms:Decrypt*"
        ],
        "Resource": [
            "arn:aws:secretsmanager:us-east-1:111122223333:secret:my-secret",
            "arn:aws:kms:us-east-1:111122223333:key/my-key"
         ]
     }
   ]
}
```

------

次のテンプレートをインスタンスロールにコピーして、Parameter Store *AWS Systems Manager* から*パラメータ*を参照するアクセス許可を追加します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameters"
            ],
            "Resource": [
            "arn:aws:ssm:us-east-1:111122223333:parameter/my-parameter"
            ]
        }
    ]
}
```

------

# 環境変数の管理
<a name="env-variable-manage"></a>

次のいずれかの方法を使用して、App Runner サービスの環境変数を管理します。
+ [App Runner コンソール](#env-variable-manage.console)
+ [App Runner API または AWS CLI](#env-variable-manage.api)

## App Runner コンソール
<a name="env-variable-manage.console"></a>

App Runner コンソールで[サービスを作成](manage-create.md)または[サービスを更新する](manage-configure.md)ときに、環境変数を追加できます。

### 環境変数の追加
<a name="env-variable-manage.console.add"></a>

**環境変数を追加するには**

1. [App Runner コンソール](https://console.aws.amazon.com/apprunner)を開き、**リージョン**リストで を選択します AWS リージョン。

1. サービスを作成または更新するかどうかに基づいて、次のいずれかの手順を実行します。
   + 新しいサービスを作成する場合は、**App Runner サービスの作成**を選択し、**サービスの設定**に移動します。
   +  既存のサービスを更新する場合は、更新するサービスを選択し、サービス**の設定**タブに移動します。

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

1.  要件に基づいて、次のいずれかのオプションを選択します。
   + **環境変数のソース**から**プレーンテキスト**を選択し、それぞれ**環境変数名**と**環境変数値**の下にキーと値のペアを入力します。
**注記**  
非機密データを参照する場合は、**プレーンテキスト**を選択します。このデータは暗号化されず、App Runner サービス設定とアプリケーションログで他のユーザーに表示されます。
   + **環境変数ソース**から **Secrets Manager** を選択して、サービス内の環境変数 AWS Secrets Manager として に保存されているシークレットを参照します。参照するシークレットの環境変数名と Amazon リソースネーム (ARN) をそれぞれ**環境変数名**と**環境変数値**で指定します。
   + **環境変数ソース**から **SSM パラメータストア**を選択して、SSM パラメータストアに保存されているパラメータをサービスの環境変数として参照します。参照するパラメータの環境変数名と ARN をそれぞれ**環境変数名**と**環境変数値**で指定します。
**注記**  
App Runner サービスを作成または更新するときに、 を環境変数の名前`PORT`として割り当てることはできません。これは App Runner サービスの予約済み環境変数です。
 SSM パラメータストアパラメータが起動するサービス AWS リージョン と同じ にある場合は、完全な Amazon リソースネーム (ARN) またはパラメータの名前を指定できます。パラメータが別のリージョンにある場合は、完全な ARN を指定する必要があります。
参照するパラメータが、起動または更新するサービスと同じアカウントにあることを確認します。現在、アカウント間で SSM パラメータストアパラメータを参照することはできません。

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

1. **IAM ポリシーテンプレート**を展開して、 と SSM パラメータストアに用意されている IAM ポリシーテンプレートを表示 AWS Secrets Manager およびコピーします。必要なアクセス許可でインスタンスロールの IAM ポリシーをまだ更新していない場合にのみ、これを行う必要があります。詳細については、[アクセス許可](env-variable.md#env-variable.sensitivedata.permissions)を参照してください。

### 環境変数の削除
<a name="env-variable-manage.console.remove"></a>

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

**環境変数を削除するには**

1. [App Runner コンソール](https://console.aws.amazon.com/apprunner)を開き、**リージョン**リストで を選択します AWS リージョン。

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

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

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

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

## App Runner API または AWS CLI
<a name="env-variable-manage.api"></a>

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

**注記**  
App Runner が Secrets Manager と SSM パラメータストアに保存されているシークレットとパラメータにアクセスできるように、インスタンスロールの IAM ポリシーを更新します。詳細については、[アクセス許可](env-variable.md#env-variable.sensitivedata.permissions)を参照してください。

**シークレットと設定を環境変数として参照するには**

1. Secrets Manager または SSM パラメータストアでシークレットまたは設定を作成します。

   次の例は、SSM パラメータストアを使用してシークレットとパラメータを作成する方法を示しています。  
**Example シークレットの作成 - リクエスト**  

   次の例は、データベース認証情報を表すシークレットを作成する方法を示しています。

   ```
   aws secretsmanager create-secret \
   —name DevRdsCredentials \
   —description "Rds credentials for development account." \
   —secret-string "{\"user\":\"diegor\",\"password\":\"EXAMPLE-PASSWORD\"}"
   ```  
**Example シークレットの作成 - レスポンス**  

   ```
   arn:aws:secretsmanager:<region>:<aws_account_id>:secret:DevRdsCredentials
   ```  
**Example 設定の作成 - リクエスト**  

   次の例は、RDS 接続文字列を表すパラメータを作成する方法を示しています。

   ```
   aws systemsmanager put-parameter \
   —name DevRdsConnectionString \
   —value "mysql2://dev-mysqlcluster-rds.com:3306/diegor" \
   —type "String" \
   —description "Rds connection string for development account."
   ```  
**Example 設定の作成 - レスポンス**  

   ```
   arn:aws:ssm:<region>:<aws_account_id>:parameter/DevRdsConnectionString
   ```

1. Secrets Manager と SSM パラメータストアに保存されているシークレットと設定を参照するには、環境変数として追加します。App Runner サービスを作成または更新するときに、環境変数を追加できます。

   次の例は、コードベースおよびイメージベースの App Runner サービスでシークレットと設定を環境変数として参照する方法を示しています。  
**Example イメージベースの 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>"
     }
   }
   ```  
**Example イメージベースの App Runner サービス – リクエスト**  

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

   ```
   aws apprunner create-service \
   --cli-input-json file://input.json
   ```  
**Example コードベースの 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>"
      }
   ...
   }
   ```

1. `apprunner.yaml` モデルは、追加されたシークレットを反映するように更新されます。

   更新された`apprunner.yaml`モデルの例を次に示します。  
**Example `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"
   ```