

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

# Debug dibangun dengan Session Manager
<a name="session-manager"></a>

Di AWS CodeBuild, Anda dapat menjeda build yang sedang berjalan dan kemudian menggunakan AWS Systems Manager Session Manager untuk menyambung ke container build dan melihat status container.

**catatan**  
Fitur ini tidak tersedia di lingkungan Windows.

**Topics**
+ [

## Prasyarat
](#ssm.prerequisites)
+ [

## Jeda build
](#ssm-pause-build)
+ [

## Mulai membangun
](#ssm-start-build)
+ [

## Connect ke container build
](#ssm-connect)
+ [

## Lanjutkan build
](#ssm-resume-build)

## Prasyarat
<a name="ssm.prerequisites"></a>

Untuk mengizinkan Session Manager digunakan dengan sesi build, Anda harus mengaktifkan koneksi sesi untuk build. Ada dua prasyarat:
+ CodeBuild Gambar kurasi standar Linux sudah menginstal agen SSM dan agen SSM diaktifkan. ContainerMode 

  Jika Anda menggunakan gambar kustom untuk build Anda, lakukan hal berikut:

  1. Instal SSM Agent. Untuk informasi selengkapnya, lihat [Instal Agen SSM secara manual pada instans EC2 untuk Linux di Panduan](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) Pengguna. AWS Systems Manager Versi Agen SSM harus 3.0.1295.0 atau yang lebih baru.

  1. Salin file [https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/5.0/amazon-ssm-agent.json](https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/5.0/amazon-ssm-agent.json) ke direktori di gambar Anda. `/etc/amazon/ssm/` Ini memungkinkan Mode Kontainer di agen SSM.
**catatan**  
Gambar khusus akan membutuhkan agen SSM terbaru agar fitur ini berfungsi seperti yang diharapkan.
+ Peran CodeBuild layanan harus memiliki kebijakan SSM berikut:

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

****  

  ```
  {
     "Version":"2012-10-17",		 	 	  
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
         ],
         "Resource": "*"
       }
     ]
  }
  ```

------

   CodeBuild Konsol dapat melampirkan kebijakan ini secara otomatis ke peran layanan saat memulai pembuatan. Atau, Anda dapat melampirkan kebijakan ini ke peran layanan Anda secara manual.
+ Jika **aktivitas sesi Audit dan logging** diaktifkan di preferensi Systems Manager, peran CodeBuild layanan juga harus memiliki izin tambahan. Izin berbeda, tergantung di mana log disimpan.  
CloudWatch Log  
Jika menggunakan CloudWatch Log untuk menyimpan log Anda, tambahkan izin berikut ke peran CodeBuild layanan:    
****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "logs:DescribeLogGroups",
              "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:*:*"
          },
          {
              "Effect": "Allow",
              "Action": [
                  "logs:CreateLogStream",
                  "logs:PutLogEvents"
              ],
              "Resource": "arn:aws:logs:us-east-1:111122223333:log-group:MyLogGroup:*"
          }
      ]
  }
  ```  
Amazon S3  
Jika menggunakan Amazon S3 untuk menyimpan log Anda, tambahkan izin berikut ke peran CodeBuild layanan:    
****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "s3:GetEncryptionConfiguration",
          "s3:PutObject"
        ],
        "Resource": [
          "arn:aws:s3:::<bucket-name>",
          "arn:aws:s3:::<bucket-name>/*"
        ]
      }
    ]
  }
  ```

  Untuk informasi selengkapnya, lihat [Aktivitas sesi audit dan pencatatan](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-logging-auditing.html) di *Panduan AWS Systems Manager Pengguna*.

## Jeda build
<a name="ssm-pause-build"></a>

Untuk menjeda build, masukkan **codebuild-breakpoint** perintah di salah satu fase build di file buildspec Anda. Build akan dijeda pada titik ini, yang memungkinkan Anda terhubung ke container build dan melihat container dalam statusnya saat ini. 

Misalnya, tambahkan yang berikut ini ke fase build di file buildspec Anda.

```
phases:
  pre_build:
    commands:
      - echo Entered the pre_build phase...
      - echo "Hello World" > /tmp/hello-world
      - codebuild-breakpoint
```

Kode ini membuat `/tmp/hello-world` file dan kemudian menjeda build pada saat ini.

## Mulai membangun
<a name="ssm-start-build"></a>

Agar Session Manager dapat digunakan dengan sesi build, Anda harus mengaktifkan koneksi sesi untuk build. Untuk melakukan ini, saat memulai build, ikuti langkah-langkah berikut:

1. Buka AWS CodeBuild konsol di [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1. Di panel navigasi, pilih **Membangun proyek**. Pilih proyek build, lalu pilih **Start build with overrides**.

1. Pilih **Penggantian build lanjutan**.

1. Di bagian **Lingkungan**, pilih opsi **Aktifkan koneksi sesi**. Jika opsi ini tidak dipilih, semua **codebuild-resume** perintah **codebuild-breakpoint** dan diabaikan.

1. Buat perubahan lain yang diinginkan, dan pilih **Mulai membangun**. 

1. Pantau status build di konsol. Saat sesi tersedia, tautan **Pengelola AWS Sesi** akan muncul di bagian **Status build**.

## Connect ke container build
<a name="ssm-connect"></a>

Anda dapat terhubung ke wadah build dengan salah satu dari dua cara:

CodeBuild konsol  
Di browser web, buka tautan **AWS Session Manager** untuk terhubung ke container build. Sesi terminal terbuka yang memungkinkan Anda menelusuri dan mengontrol container build. 

AWS CLI  
Mesin lokal Anda harus menginstal plugin Session Manager untuk prosedur ini. Untuk informasi selengkapnya, lihat [Menginstal Plugin Session Manager untuk AWS CLI](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html) di AWS Systems Manager Panduan Pengguna. 

1. Panggil **batch-get-builds** api dengan ID build untuk mendapatkan informasi tentang build, termasuk pengidentifikasi target sesi. Nama properti pengidentifikasi target sesi bervariasi tergantung pada jenis output `aws` perintah. Inilah `--output json` sebabnya mengapa ditambahkan ke perintah.

   ```
   aws codebuild batch-get-builds --ids <buildID> --region <region> --output json
   ```

1. Salin nilai `sessionTarget` properti. Nama `sessionTarget` properti dapat bervariasi tergantung pada jenis output `aws` perintah. Inilah `--output json` sebabnya mengapa ditambahkan ke perintah di langkah sebelumnya.

1. Gunakan perintah berikut untuk menyambung ke container build.

   ```
   aws ssm start-session --target <sessionTarget> --region <region>
   ```

Untuk contoh ini, verifikasi bahwa `/tmp/hello-world` file itu ada dan berisi teks`Hello World`.

## Lanjutkan build
<a name="ssm-resume-build"></a>

Setelah Anda selesai memeriksa container build, keluarkan **codebuild-resume** perintah dari shell container.

```
$ codebuild-resume
```