

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Lulus rahasia Secrets Manager melalui variabel lingkungan Amazon ECS
<a name="secrets-envvar-secrets-manager"></a>

Ketika Anda menyuntikkan rahasia sebagai variabel lingkungan, Anda dapat menentukan isi lengkap rahasia, kunci JSON tertentu dalam rahasia. Hal ini membantu Anda mengontrol data sensitif yang diekspos ke kontainer Anda. Untuk informasi selengkapnya tentang pembuatan versi rahasia, lihat [Apa yang ada di rahasia Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/whats-in-a-secret.html#term_version) dalam *AWS Secrets Manager User Guide*.

Berikut ini harus dipertimbangkan saat menggunakan variabel lingkungan untuk menyuntikkan rahasia Secrets Manager ke dalam wadah.
+ Data sensitif disuntikkan ke dalam kontainer Anda ketika kontainer awalnya dimulai. Jika rahasia kemudian diperbarui atau diputar, kontainer tidak akan menerima nilai yang diperbarui secara otomatis. Anda harus menjalankan tugas baru atau jika tugas Anda adalah bagian dari layanan Anda dapat memperbarui layanan dan menggunakan **Memaksa deployment baru** untuk memaksa layanan untuk meluncurkan tugas baru.
+ Aplikasi yang berjalan pada container dan container log dan debugging tools memiliki akses ke variabel lingkungan.
+ Untuk tugas Amazon ECS aktif AWS Fargate, pertimbangkan hal berikut:
  + Untuk menyuntikkan konten penuh rahasia sebagai variabel lingkungan atau dalam konfigurasi log, Anda harus menggunakan versi `1.3.0` platform atau yang lebih baru. Untuk informasi, lihat [Versi platform Fargate untuk Amazon ECS](platform-fargate.md).
  + Untuk menyuntikkan kunci JSON tertentu atau versi rahasia sebagai variabel lingkungan atau dalam konfigurasi log, Anda harus menggunakan versi platform `1.4.0` atau yang lebih baru (Linux) atau `1.0.0` (Windows). Untuk informasi, lihat [Versi platform Fargate untuk Amazon ECS](platform-fargate.md).
+ Untuk tugas Amazon ECS di EC2, hal-hal berikut harus dipertimbangkan:
  + Untuk menyuntikkan rahasia menggunakan kunci JSON atau versi rahasia tertentu, instans kontainer Anda harus memiliki versi `1.37.0` agen kontainer atau yang lebih baru. Namun, kami merekomendasikan untuk menggunakan versi agen kontainer terbaru. Untuk informasi tentang memeriksa versi agen Anda dan memperbarui ke versi terbaru, lihat [Memperbarui agen kontainer Amazon ECS](ecs-agent-update.md).

    Untuk menyuntikkan konten penuh rahasia sebagai variabel lingkungan atau untuk menyuntikkan rahasia dalam konfigurasi log, instans kontainer Anda harus memiliki versi `1.22.0` agen kontainer atau yang lebih baru.
+ Gunakan titik akhir VPC antarmuka untuk meningkatkan kontrol keamanan dan terhubung ke Secrets Manager melalui subnet pribadi. Anda harus membuat titik akhir VPC antarmuka untuk Secrets Manager. *Untuk informasi tentang titik akhir VPC, lihat Membuat titik akhir [VPC di Panduan Pengguna](https://docs.aws.amazon.com/secretsmanager/latest/userguide/setup-create-vpc.html).AWS Secrets Manager * Untuk informasi selengkapnya tentang menggunakan Secrets Manager dan Amazon VPC, lihat [Cara menyambung ke layanan Secrets Manager dalam Amazon VPC](https://aws.amazon.com/blogs//security/how-to-connect-to-aws-secrets-manager-service-within-a-virtual-private-cloud/).
+ Untuk tugas Windows yang dikonfigurasi untuk menggunakan driver pencatatan `awslogs`, Anda juga harus mengatur variabel lingkungan `ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE` pada instans kontainer Anda. Gunakan sintaks berikut:

  ```
  <powershell>
  [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine")
  Initialize-ECSAgent -Cluster <cluster name> -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]'
  </powershell>
  ```
+ Definisi tugas Anda harus menggunakan peran eksekusi tugas dengan izin tambahan untuk Secrets Manager. Untuk informasi selengkapnya, lihat [Peran IAM pelaksanaan tugas Amazon ECS](task_execution_IAM_role.md).

## Buat AWS Secrets Manager rahasianya
<a name="secrets-envvar-secrets-manager-create-secret"></a>

Anda dapat menggunakan konsol Secrets Manager untuk membuat rahasia untuk data sensitif Anda. Untuk informasi selengkapnya, lihat [Membuat AWS Secrets Manager rahasia](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) di *Panduan AWS Secrets Manager Pengguna*.

## Tambahkan variabel lingkungan ke definisi kontainer
<a name="secrets-envvar-secrets-manager-update-container-definition"></a>

Dalam ketentuan kontainer Anda, Anda dapat menentukan hal berikut:
+ Objek `secrets` yang berisi nama variabel lingkungan untuk diatur dalam kontainer
+ Amazon Resource Name (ARN) rahasia Secrets Manager
+ Parameter tambahan yang berisi data sensitif untuk hadir ke kontainer

Contoh berikut menunjukkan sintaks lengkap yang harus ditentukan untuk rahasia Secrets Manager.

```
arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{secret-name}}:{{json-key}}:{{version-stage}}:{{version-id}}
```

Bagian berikut menjelaskan parameter tambahan. Parameter ini opsional, tetapi jika Anda tidak menggunakannya, Anda harus menyertakan titik dua `:` untuk menggunakan nilai default. Contoh disediakan di bawah ini untuk konteks yang lebih.

`json-key`  
Menentukan nama kunci dalam pasangan kunci-nilai dengan nilai yang ingin Anda tetapkan sebagai nilai variabel lingkungan. Hanya nilai dalam format JSON yang didukung. Jika Anda tidak menentukan kunci JSON, maka konten penuh dari rahasia tersebut akan digunakan.

`version-stage`  
Menentukan label pementasan versi rahasia yang ingin Anda gunakan. Jika label pementasan versi ditentukan, Anda tidak dapat menentukan ID versi. Jika tidak ada tahap versi yang ditentukan, perilaku default adalah untuk mengambil rahasia dengan label pementasan `AWSCURRENT`.  
Label tahapan digunakan untuk melacak berbagai versi rahasia saat diperbarui atau dirotasi. Setiap versi rahasia memiliki satu atau beberapa label tahapan dan satu ID.

`version-id`  
Menentukan pengenal unik dari versi rahasia yang ingin Anda gunakan. Jika ID versi ditentukan, Anda tidak dapat menentukan label pementasan versi. Jika tidak ada ID versi yang ditentukan, perilaku default adalah untuk mengambil rahasia dengan label pementasan `AWSCURRENT`.  
ID versi digunakan untuk melacak berbagai versi rahasia saat diperbarui atau dirotasi. Setiap versi rahasia memiliki satu ID. Untuk informasi selengkapnya, lihat [Syarat dan Konsep Utama AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret) di *Panduan AWS Secrets Manager Pengguna*.

### Contoh ketentuan kontainer
<a name="secrets-examples"></a>

Contoh berikut menunjukkan cara Anda dapat mereferensikan rahasia Secrets Manager dalam definisi container Anda.

**Example mereferensikan rahasia penuh**  
Berikut ini adalah cuplikan ketentuan tugas yang menunjukkan format ketika mereferensikan teks lengkap dari rahasia Secrets Manager.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "{{environment_variable_name}}",
      "valueFrom": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{secret_name-AbCdEf}}"
    }]
  }]
}
```
Untuk mengakses nilai rahasia ini dari dalam wadah, Anda perlu memanggil file`$environment_variable_name`.

**Example mereferensikan rahasia lengkap**  
Berikut ini adalah cuplikan definisi tugas yang menunjukkan format saat mereferensikan teks lengkap dari beberapa rahasia Secrets Manager.  

```
{
  "containerDefinitions": [{
     "secrets": [
      {
        "name": "{{environment_variable_name1}}",
         "valueFrom": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{secret_name-AbCdEf}}"
      },
      {
        "name": "{{environment_variable_name2}}",
         "valueFrom": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{secret_name-abcdef}}"
      },
      {
        "name": "{{environment_variable_name3}}",
        "valueFrom": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{secret_name-ABCDEF}}"
      }
    ]
  }]
}
```
Untuk mengakses nilai rahasia ini dari dalam wadah, Anda perlu memanggil`$environment_variable_name1`,`$environment_variable_name2`, dan`$environment_variable_name3`.

**Example mereferensikan kunci tertentu dalam sebuah rahasia**  
Berikut ini menunjukkan contoh output dari perintah [get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html) yang menampilkan konten rahasia bersama dengan label tahapan versi dan ID versi yang terkait dengan itu.  

```
{
    "ARN": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{appauthexample-AbCdEf}}",
    "Name": "{{appauthexample}}",
    "VersionId": "{{871d9eca-18aa-46a9-8785-981ddEXAMPLE}}",
    "SecretString": "{\"{{username1}}\":\"{{password1}}\",\"{{username2}}\":\"{{password2}}\",\"{{username3}}\":\"{{password3}}\"}",
    "VersionStages": [
        "{{AWSCURRENT}}"
    ],
    "CreatedDate": 1581968848.921
}
```
Referensikan kunci tertentu dari output sebelumnya dalam ketentuan kontainer dengan menentukan nama kunci di akhir ARN.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "{{environment_variable_name}}",
      "valueFrom": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{appauthexample-AbCdEf}}:{{username1}}::"
    }]
  }]
}
```

**Example mereferensikan versi rahasia tertentu**  
Berikut ini menunjukkan contoh output dari perintah [describe-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html) yang menampilkan konten rahasia yang tidak terenkripsi bersama dengan metadata untuk semua versi rahasia.  

```
{
    "ARN": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{appauthexample-AbCdEf}}",
    "Name": "{{appauthexample}}",
    "Description": "Example of a secret containing application authorization data.",
    "RotationEnabled": false,
    "LastChangedDate": 1581968848.926,
    "LastAccessedDate": 1581897600.0,
    "Tags": [],
    "VersionIdsToStages": {
        "{{871d9eca-18aa-46a9-8785-981ddEXAMPLE}}": [
            "{{AWSCURRENT}}"
        ],
        "{{9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE}}": [
            "{{AWSPREVIOUS}}"
        ]
    }
}
```
Referensikan label tahapan versi tertentu dari output sebelumnya dalam ketentuan kontainer dengan menentukan nama kunci di akhir ARN.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "{{environment_variable_name}}",
      "valueFrom": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{appauthexample-AbCdEf}}::{{AWSPREVIOUS}}:"
    }]
  }]
}
```
Referensikan ID versi tertentu dari output sebelumnya dalam ketentuan kontainer dengan menentukan nama kunci di akhir ARN.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "{{environment_variable_name}}",
      "valueFrom": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{appauthexample-AbCdEf}}:::{{9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE}}"
    }]
  }]
}
```

**Example mereferensikan kunci dan label tahapan versi tertentu dari suatu rahasia**  
Bagian berikut menunjukkan cara mereferensikan kunci tertentu dalam rahasia dan label tahapan versi tertentu.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "{{environment_variable_name}}",
      "valueFrom": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{appauthexample-AbCdEf}}:{{username1}}:{{AWSPREVIOUS}}:"
    }]
  }]
}
```
Untuk menentukan kunci dan versi ID tertentu, gunakan sintaks berikut.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "{{environment_variable_name}}",
      "valueFrom": "arn:aws:secretsmanager:{{region}}:{{aws_account_id}}:secret:{{appauthexample-AbCdEf}}:{{username1}}::{{9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE}}"
    }]
  }]
}
```

Untuk informasi tentang cara membuat definisi tugas dengan rahasia yang ditentukan dalam variabel lingkungan, lihat[Membuat definisi tugas Amazon ECS menggunakan konsol](create-task-definition.md). 