

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

# Sampel lintas layanan untuk CodeBuild
<a name="cross-service-samples"></a>

Anda dapat menggunakan sampel lintas layanan ini untuk bereksperimen dengan AWS CodeBuild:

[Sampel Amazon ECR](sample-ecr.md)  
Menggunakan image Docker di repositori Amazon ECR untuk menggunakan Apache Maven untuk menghasilkan satu file JAR. Petunjuk sampel akan menunjukkan kepada Anda cara membuat dan mendorong gambar Docker ke Amazon ECR, membuat proyek Go, membangun proyek, menjalankan proyek, dan menyiapkan izin untuk memungkinkan terhubung CodeBuild ke Amazon ECR.

[Sampel Amazon EFS](sample-efs.md)  
Menunjukkan cara mengonfigurasi file buildspec sehingga CodeBuild proyek dipasang dan dibangun di sistem file Amazon EFS. Petunjuk sampel akan menunjukkan kepada Anda cara membuat VPC Amazon, membuat sistem file di VPC Amazon, membuat dan membangun proyek yang menggunakan VPC Amazon, dan kemudian meninjau file dan variabel proyek yang dihasilkan. 

[AWS CodePipeline sampel](sample-codepipeline.md)  
Menunjukkan cara menggunakan AWS CodePipeline untuk membuat build dengan build batch serta beberapa sumber input dan beberapa artefak keluaran. Termasuk dalam bagian ini adalah contoh file JSON yang menunjukkan struktur pipa yang membuat build batch dengan artefak terpisah, dan artefak gabungan. Sampel JSON tambahan disediakan yang menunjukkan struktur pipa dengan beberapa sumber input dan beberapa artefak keluaran.

[AWS Config sampel](how-to-integrate-config.md)  
Menunjukkan cara mengatur AWS Config. Daftar CodeBuild sumber daya mana yang dilacak dan menjelaskan cara mencari CodeBuild proyek. AWS Config Instruksi sampel akan menunjukkan kepada Anda prasyarat untuk diintegrasikan, langkah-langkah untuk menyiapkan AWS Config AWS Config, dan langkah-langkah untuk mencari proyek dan data di dalamnya. CodeBuild AWS Config

[Buat contoh notifikasi](sample-build-notifications.md)  
Menggunakan Apache Maven untuk menghasilkan satu file JAR. Mengirim pemberitahuan build ke pelanggan topik Amazon SNS. Petunjuk contoh menunjukkan kepada Anda cara mengatur izin sehingga CodeBuild dapat berkomunikasi dengan Amazon SNS CloudWatch dan, cara membuat dan CodeBuild mengidentifikasi topik di Amazon SNS, cara berlangganan penerima topik, dan cara mengatur aturan. CloudWatch

# Sampel Amazon ECR untuk CodeBuild
<a name="sample-ecr"></a>

Contoh ini menggunakan image Docker di repositori image Amazon Elastic Container Registry (Amazon ECR) Registry ECR) untuk membuat proyek Go sampel.

**penting**  
Menjalankan sampel ini dapat mengakibatkan biaya ke AWS akun Anda. Ini termasuk kemungkinan biaya untuk AWS CodeBuild dan untuk AWS sumber daya dan tindakan yang terkait dengan Amazon S3,, CloudWatch Log AWS KMS, dan Amazon ECR. Untuk informasi selengkapnya, lihat [CodeBuild harga, harga](https://aws.amazon.com/codebuild/pricing) [Amazon S3, harga, [AWS Key Management Service harga](https://aws.amazon.com/kms/pricing)](https://aws.amazon.com/s3/pricing) Amazon, dan [ CloudWatch harga Amazon](https://aws.amazon.com/cloudwatch/pricing) [Elastic Container Registry](https://aws.amazon.com/ecr/pricing).

**Topics**
+ [Jalankan sampel Amazon ECR](#sample-ecr-running)

## Jalankan sampel Amazon ECR
<a name="sample-ecr-running"></a>

Gunakan petunjuk berikut untuk menjalankan sampel Amazon ECR. CodeBuild

**Untuk menjalankan sampel ini**

1. Untuk membuat dan mendorong gambar Docker ke repositori gambar Anda di Amazon ECR, selesaikan langkah-langkah di bagian[Jalankan sampel 'Publikasikan gambar Docker ke Amazon ECR'](sample-docker.md#sample-docker-running). [Sampel 'Publikasikan gambar Docker ke Amazon ECR'](sample-docker.md)

1. Buat proyek Go: 

   1. Buat file seperti yang dijelaskan di [Pergi file proyek](#sample-ecr-go-project-files) bagian [Struktur proyek Go](#ecr-sample-go-project-file-structure) dan topik ini, lalu unggah ke bucket input S3 atau repositori AWS CodeCommit GitHub, atau Bitbucket. 
**penting**  
Jangan mengunggah`(root directory name)`, hanya file di dalamnya`(root directory name)`.   
Jika Anda menggunakan bucket input S3, pastikan untuk membuat file ZIP yang berisi file, lalu unggah ke bucket input. Jangan tambahkan `(root directory name)` ke file ZIP, hanya file di dalamnya`(root directory name)`.

   1. Buat proyek build, jalankan build, dan lihat informasi build terkait.

      Jika Anda menggunakan AWS CLI untuk membuat proyek build, input berformat JSON ke `create-project` perintah mungkin terlihat mirip dengan ini. (Ganti placeholder dengan nilai Anda sendiri.)

      ```
      {
        "name": "sample-go-project",
        "source": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-input-bucket/GoSample.zip"
        },
        "artifacts": {
          "type": "S3",
          "location": "codebuild-region-ID-account-ID-output-bucket",
          "packaging": "ZIP",
          "name": "GoOutputArtifact.zip"
        },
        "environment": {
          "type": "LINUX_CONTAINER",
          "image": "aws/codebuild/standard:5.0",
          "computeType": "BUILD_GENERAL1_SMALL"
        },
        "serviceRole": "arn:aws:iam::account-ID:role/role-name",
        "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
      }
      ```

   1. Untuk mendapatkan artefak keluaran build, buka bucket keluaran S3 Anda.

   1. Unduh `GoOutputArtifact.zip` file ke komputer atau instance lokal Anda, lalu ekstrak konten file tersebut. Dalam konten yang diekstraksi, dapatkan `hello` file. 

1.  Jika salah satu dari berikut ini benar, Anda harus menambahkan izin ke repositori gambar Anda di Amazon ECR sehingga AWS CodeBuild dapat menarik image Docker-nya ke lingkungan build. 
   +  Proyek Anda menggunakan CodeBuild kredensi untuk menarik gambar Amazon ECR. Ini dilambangkan dengan nilai `CODEBUILD` dalam `imagePullCredentialsType` atribut Anda. `ProjectEnvironment` 
   +  Proyek Anda menggunakan gambar ECR Amazon lintas akun. Dalam hal ini, proyek Anda harus menggunakan peran layanannya untuk menarik gambar Amazon ECR. Untuk mengaktifkan perilaku ini, setel `imagePullCredentialsType` atribut Anda `ProjectEnvironment` ke`SERVICE_ROLE`. 

   1. Buka konsol Amazon ECR di [https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/).

   1. Dalam daftar nama repositori, pilih nama repositori yang Anda buat atau pilih.

   1. Dari panel navigasi, pilih **Izin**, pilih **Edit**, lalu pilih **Tambah** pernyataan.

   1. Untuk **nama Pernyataan**, masukkan pengenal (misalnya,**CodeBuildAccess**).

   1. Untuk **Efek**, biarkan **Izinkan** dipilih. Ini menunjukkan bahwa Anda ingin mengizinkan akses ke AWS akun lain.

   1. Untuk **Principal**, lakukan salah satu hal berikut:
      + Jika project Anda menggunakan CodeBuild kredensi untuk menarik image Amazon ECR, di **Prinsipal layanan**, masukkan. **codebuild.amazonaws.com** 
      + Jika proyek Anda menggunakan gambar ECR Amazon lintas akun, untuk **AWS akun IDs**, masukkan IDs AWS akun yang ingin Anda berikan akses.

   1. Lewati daftar **Semua entitas IAM**.

   1. **Untuk **Tindakan**, pilih tindakan khusus tarik: ecr:, **ecr: GetDownloadUrlForLayer**, dan **ecr: BatchGetImage**. BatchCheckLayerAvailability**

   1. Untuk **Ketentuan**, tambahkan yang berikut ini:

      ```
      {
         "StringEquals":{
            "aws:SourceAccount":"<AWS-account-ID>",
            "aws:SourceArn":"arn:aws:codebuild:<region>:<AWS-account-ID>:project/<project-name>"
         }
      }
      ```

   1. Pilih **Simpan**.

      Kebijakan ini ditampilkan di **Izin**. Kepala sekolah adalah apa yang Anda masukkan untuk **Principal** pada langkah 3 dari prosedur ini:
      + **Jika project Anda menggunakan CodeBuild kredensi untuk menarik image Amazon ECR, `"codebuild.amazonaws.com"` muncul di bawah Prinsipal layanan.**
      + **Jika project Anda menggunakan image Amazon ECR lintas akun, ID AWS akun yang ingin Anda berikan akses akan muncul di bawah AWS Akun. IDs**

        Kebijakan contoh berikut menggunakan CodeBuild kredensi dan gambar ECR Amazon lintas akun.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "CodeBuildAccessPrincipal",
                  "Effect": "Allow",
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "aws:SourceArn": "arn:aws:codebuild:us-east-1:111122223333:project/MyProject",
                          "aws:SourceAccount": "111122223333"
                      }
                  }
              },
              {
                  "Sid": "CodeBuildAccessCrossAccount",
                  "Effect": "Allow",
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ],
                  "Resource": "*"
              }
          ]
      }
      ```

------
      + Jika proyek Anda menggunakan CodeBuild kredensi dan Anda ingin CodeBuild proyek Anda memiliki akses terbuka ke repositori Amazon ECR, Anda dapat menghilangkan `Condition` kunci dan menambahkan kebijakan sampel berikut.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "CodeBuildAccessPrincipal",
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo"
                  ],
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ]
              },
              {
                  "Sid": "CodeBuildAccessCrossAccount",
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:codecommit:us-east-2:111122223333:MySharedDemoRepo"
                  ],
                  "Action": [
                      "ecr:GetDownloadUrlForLayer",
                      "ecr:BatchGetImage",
                      "ecr:BatchCheckLayerAvailability"
                  ]
              }
          ]
      }
      ```

------

1. Buat proyek build, jalankan build, dan lihat informasi build.

   Jika Anda menggunakan AWS CLI untuk membuat proyek build, input berformat JSON ke `create-project` perintah mungkin terlihat mirip dengan ini. (Ganti placeholder dengan nilai Anda sendiri.)

   ```
   {
     "name": "amazon-ecr-sample-project",
     "source": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-input-bucket/GoSample.zip"
     },
     "artifacts": {
       "type": "S3",
       "location": "codebuild-region-ID-account-ID-output-bucket",
       "packaging": "ZIP",
       "name": "GoOutputArtifact.zip"
     },
     "environment": {
       "type": "LINUX_CONTAINER",
       "image": "account-ID.dkr.ecr.region-ID.amazonaws.com/your-Amazon-ECR-repo-name:tag",
       "computeType": "BUILD_GENERAL1_SMALL"
     },
     "serviceRole": "arn:aws:iam::account-ID:role/role-name",
     "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID"
   }
   ```

1. Untuk mendapatkan artefak keluaran build, buka bucket keluaran S3 Anda.

1. Unduh `GoOutputArtifact.zip` file ke komputer atau instance lokal Anda, lalu ekstrak konten `GoOutputArtifact.zip` file tersebut. Dalam konten yang diekstraksi, dapatkan `hello` file.

### Struktur proyek Go
<a name="ecr-sample-go-project-file-structure"></a>

Sampel ini mengasumsikan struktur direktori ini.

```
(root directory name)
├── buildspec.yml
└── hello.go
```

### Pergi file proyek
<a name="sample-ecr-go-project-files"></a>

Sampel ini menggunakan file-file ini.

`buildspec.yml`(dalam`(root directory name)`)

```
version: 0.2

phases:
  install: 
   runtime-versions: 
     golang: 1.13 
  build:
    commands:
      - echo Build started on `date`
      - echo Compiling the Go code
      - go build hello.go 
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - hello
```

`hello.go`(dalam`(root directory name)`)

```
package main
import "fmt"

func main() {
  fmt.Println("hello world")
  fmt.Println("1+1 =", 1+1)
  fmt.Println("7.0/3.0 =", 7.0/3.0)
  fmt.Println(true && false)
  fmt.Println(true || false)
  fmt.Println(!true)
}
```

# Sampel Amazon Elastic File System untuk AWS CodeBuild
<a name="sample-efs"></a>

 Anda mungkin ingin membuat AWS CodeBuild build di Amazon Elastic File System, layanan file bersama yang dapat diskalakan untuk instans Amazon EC2. Kapasitas penyimpanan dengan Amazon EFS elastis, sehingga tumbuh atau menyusut saat file ditambahkan dan dihapus. Ini memiliki antarmuka layanan web sederhana yang dapat Anda gunakan untuk membuat dan mengkonfigurasi sistem file. Ini juga mengelola semua infrastruktur penyimpanan file untuk Anda, jadi Anda tidak perlu khawatir tentang menyebarkan, menambal, atau memelihara konfigurasi sistem file. Untuk informasi selengkapnya, lihat [Apa itu Amazon Elastic File System?](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) di *Panduan Pengguna Amazon Elastic File System*. 

 Contoh ini menunjukkan kepada Anda cara mengonfigurasi CodeBuild proyek sehingga dipasang dan kemudian membangun aplikasi Java ke sistem file Amazon EFS. Sebelum memulai, Anda harus memiliki aplikasi Java yang siap dibangun yang diunggah ke bucket input S3 atau, GitHub Enterprise Server AWS CodeCommit GitHub, atau repositori Bitbucket. 

Data dalam perjalanan untuk sistem file Anda dienkripsi. Untuk mengenkripsi data dalam perjalanan menggunakan gambar yang berbeda, lihat [Mengenkripsi data](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) dalam perjalanan. 

**Topics**
+ [Gunakan AWS CodeBuild dengan Amazon Elastic File System](#sample-efs-high-level-steps)
+ [Memecahkan masalah integrasi Amazon EFS](sample-efs-troubleshooting.md)

## Gunakan AWS CodeBuild dengan Amazon Elastic File System
<a name="sample-efs-high-level-steps"></a>

Sampel mencakup empat langkah tingkat tinggi yang diperlukan untuk menggunakan Amazon EFS dengan AWS CodeBuild. File tersebut adalah: 

1. Buat virtual private cloud (VPC) di akun Anda AWS . 

1. Buat sistem file yang menggunakan VPC ini. 

1. Buat dan bangun CodeBuild proyek yang menggunakan VPC. CodeBuild Proyek ini menggunakan yang berikut ini untuk mengidentifikasi sistem file:
   +  Pengidentifikasi sistem file yang unik. Anda memilih pengenal saat menentukan sistem file dalam proyek build Anda.
   + ID sistem file. ID ditampilkan saat Anda melihat sistem file di konsol Amazon EFS.
   +  Titik pemasangan. Ini adalah direktori di wadah Docker Anda yang memasang sistem file. 
   + Opsi pemasangan. Ini termasuk rincian tentang cara me-mount sistem file.

1. Tinjau proyek build untuk memastikan bahwa file dan variabel proyek yang benar dihasilkan.

**catatan**  
 Sistem file yang dibuat di Amazon EFS hanya didukung pada platform Linux. 

 

**Topics**
+ [Langkah 1: Buat VPC menggunakan CloudFormation](#sample-efs-create-vpc)
+ [Langkah 2: Buat sistem file Amazon Elastic File System dengan VPC Anda](#sample-efs-create-efs)
+ [Langkah 3: Buat CodeBuild proyek untuk digunakan dengan Amazon EFS](#sample-efs-create-acb)
+ [Langkah 4: Tinjau proyek pembangunan](#sample-efs-summary)

### Langkah 1: Buat VPC menggunakan CloudFormation
<a name="sample-efs-create-vpc"></a>

 Buat VPC Anda dengan template. CloudFormation 

1.  Ikuti petunjuk yang digunakan [CloudFormation Templat VPC](cloudformation-vpc-template.md) CloudFormation untuk membuat VPC. 
**catatan**  
 VPC yang dibuat oleh CloudFormation template ini memiliki dua subnet pribadi dan dua subnet publik. Anda hanya boleh menggunakan subnet pribadi ketika Anda menggunakan AWS CodeBuild untuk me-mount sistem file yang Anda buat di Amazon EFS. Jika Anda menggunakan salah satu subnet publik, build gagal. 

1. Masuk ke Konsol Manajemen AWS dan buka konsol VPC Amazon di. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1.  Pilih VPC yang Anda buat dengan. CloudFormation

1. Pada tab **Deskripsi**, catat nama VPC Anda dan ID-nya. Keduanya diperlukan saat Anda membuat AWS CodeBuild proyek nanti dalam sampel ini. 

### Langkah 2: Buat sistem file Amazon Elastic File System dengan VPC Anda
<a name="sample-efs-create-efs"></a>

 Buat sistem file Amazon EFS sederhana untuk sampel ini menggunakan VPC yang Anda buat sebelumnya. 

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon EFS di [ https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/).

1.  Pilih **Buat sistem file**. 

1.  Dari **VPC**, pilih nama VPC yang Anda catat sebelumnya dalam sampel ini. 

1.  Biarkan Availability Zones yang terkait dengan subnet Anda dipilih. 

1.  Pilih **Langkah Selanjutnya.** 

1.  Di **Tambahkan tag**, untuk kunci **Nama** default, di **Nilai**, masukkan nama sistem file Amazon EFS Anda. 

1.  Tetap pilih **Bursting** dan **Tujuan Umum** sebagai mode kinerja dan throughput default Anda, lalu pilih Langkah **Berikutnya**. 

1. Untuk **Konfigurasi akses klien**, pilih **Langkah Berikutnya**.

1.  Pilih **Buat Sistem File**. 

1.  (Opsional) Sebaiknya tambahkan kebijakan ke sistem file Amazon EFS Anda yang memberlakukan enkripsi data dalam perjalanan. **Di konsol Amazon EFS, pilih **Kebijakan sistem file**, pilih **Edit**, pilih kotak berlabel **Terapkan enkripsi dalam perjalanan untuk semua klien**, lalu pilih Simpan.**

### Langkah 3: Buat CodeBuild proyek untuk digunakan dengan Amazon EFS
<a name="sample-efs-create-acb"></a>

 Buat AWS CodeBuild proyek yang menggunakan VPC yang Anda buat sebelumnya dalam contoh ini. Saat build dijalankan, ia memasang sistem file Amazon EFS yang dibuat sebelumnya. Selanjutnya, ia menyimpan file.jar yang dibuat oleh aplikasi Java Anda di direktori mount point sistem file Anda.

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

1.  Dari panel navigasi, pilih **Build projects**, lalu pilih **Create build project**. 

1.  Dalam **Nama proyek**, masukkan nama untuk proyek Anda. 

1.  Dari **penyedia Sumber**, pilih repositori yang berisi aplikasi Java yang ingin Anda bangun. 

1.  Masukkan informasi, seperti URL repositori, yang CodeBuild digunakan untuk menemukan aplikasi Anda. Pilihannya berbeda untuk setiap penyedia sumber. Untuk informasi selengkapnya, lihat [Choose source provider](create-project.md#create-project-source-provider). 

1.  Dari **gambar Lingkungan**, pilih **Gambar terkelola**. 

1.  Dari **Sistem operasi**, pilih **Amazon Linux 2**. 

1. Dari **Runtime (s)**, pilih **Standard**. 

1.  Dari **Gambar**, pilih **aws/codebuild/amazonlinux-x86\$164-standard:4.0**. 

1.  Dari **jenis Lingkungan**, pilih **Linux**. 

1.  Di bawah **Peran layanan**, pilih **Peran layanan baru**. Di **Nama peran**, masukkan nama untuk peran yang CodeBuild dibuat untuk Anda. 

1. Perluas **Additional configuration** (Konfigurasi tambahan).

1.  Pilih **Aktifkan bendera ini jika Anda ingin membuat gambar Docker atau ingin build Anda mendapatkan hak istimewa yang lebih tinggi**.
**catatan**  
Secara default, daemon Docker diaktifkan untuk build non-VPC. Jika Anda ingin menggunakan kontainer Docker untuk build VPC, [lihat Runtime Privilege dan Kemampuan Linux di situs web Docker Docs dan](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) aktifkan mode istimewa. Juga, Windows tidak mendukung mode istimewa.

1.  Dari **VPC**, pilih ID VPC. 

1.  Dari **Subnet**, pilih satu atau beberapa subnet pribadi yang terkait dengan VPC Anda. Anda harus menggunakan subnet pribadi dalam build yang memasang sistem file Amazon EFS. Jika Anda menggunakan subnet publik, build gagal. 

1.  Dari **Grup Keamanan**, pilih grup keamanan default.

1.  Dalam **sistem File**, masukkan informasi berikut:
   + Untuk **Identifier**, masukkan pengenal sistem file unik. Itu harus kurang dari 129 karakter dan hanya berisi karakter alfanumerik dan garis bawah. CodeBuild menggunakan pengenal ini untuk membuat variabel lingkungan yang mengidentifikasi sistem file elastis. Format variabel lingkungan `CODEBUILD_<file_system_identifier>` dalam huruf kapital. Misalnya, jika Anda masuk`my_efs`, variabel lingkungan adalah`CODEBUILD_MY_EFS`. 
   + Untuk **ID**, pilih ID sistem file. 
   + (Opsional) Masukkan direktori dalam sistem file. CodeBuild memasang direktori ini. Jika Anda membiarkan **jalur Direktori** kosong, CodeBuild pasang seluruh sistem file. Path relatif terhadap root sistem file. 
   + Untuk **Mount point**, masukkan path absolut direktori di container build tempat sistem file dipasang. Jika direktori ini tidak ada, CodeBuild buat selama pembuatan. 
   + (Opsional) Masukkan opsi pemasangan. Jika Anda membiarkan **opsi Mount** kosong, CodeBuild gunakan opsi pemasangan defaultnya:

     ```
     nfsvers=4.1
     rsize=1048576
     wsize=1048576
     hard
     timeo=600
     retrans=2
     ```

     Untuk informasi selengkapnya, lihat [Opsi Pemasangan NFS yang Disarankan](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-nfs-mount-settings.html) di *Panduan Pengguna Amazon Elastic File System*. 

1.  Untuk **spesifikasi Build**, pilih **Insert build command**, lalu pilih **Switch to editor**. 

1.  Masukkan perintah spesifikasi build berikut ke dalam editor. Ganti `<file_system_identifier>` dengan pengenal yang Anda masukkan pada langkah 17. Gunakan huruf kapital (misalnya,`CODEBUILD_MY_EFS`).

   ```
   version: 0.2
   phases:
     install:
       runtime-versions:
         java: corretto11    
     build:
       commands:
         - mvn compile -Dgpg.skip=true -Dmaven.repo.local=$CODEBUILD_<file_system_identifier>
   ```

1.  Gunakan nilai default untuk semua pengaturan lainnya, lalu pilih **Buat proyek build**. Ketika build Anda selesai, halaman konsol untuk project Anda akan ditampilkan. 

1.  Pilih **Mulai membangun**. 

### Langkah 4: Tinjau proyek pembangunan
<a name="sample-efs-summary"></a>



 Setelah AWS CodeBuild proyek Anda dibangun: 
+  Anda memiliki file.jar yang dibuat oleh aplikasi Java Anda yang dibangun ke sistem file Amazon EFS Anda di bawah direktori mount point Anda. 
+  Variabel lingkungan yang mengidentifikasi sistem file Anda dibuat menggunakan pengenal sistem file yang Anda masukkan saat Anda membuat proyek. 

 Untuk informasi selengkapnya, lihat [Memasang sistem file](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs.html) di *Panduan Pengguna Amazon Elastic File System*. 

# Memecahkan masalah integrasi Amazon EFS
<a name="sample-efs-troubleshooting"></a>

Berikut ini adalah kesalahan yang mungkin Anda temui saat menyiapkan Amazon EFS dengan CodeBuild.

**Topics**
+ [CLIENT\$1ERROR: pemasangan '127.0.0.1: /' gagal. izin ditolak](#sample-efs-troubleshooting.permission-denied)
+ [CLIENT\$1ERROR: pemasangan '127.0.0.1: /' gagal. koneksi diatur ulang oleh rekan](#sample-efs-troubleshooting.connection-reset)
+ [VPC\$1CLIENT\$1ERROR: Kesalahan EC2 yang tidak terduga: UnauthorizedOperation](#sample-efs-troubleshooting.unauthorized-operation)

## CLIENT\$1ERROR: pemasangan '127.0.0.1: /' gagal. izin ditolak
<a name="sample-efs-troubleshooting.permission-denied"></a>

Otorisasi IAM tidak didukung untuk memasang Amazon EFS dengan. CodeBuild Jika Anda menggunakan kebijakan sistem file Amazon EFS khusus, Anda harus memberikan akses baca dan tulis ke semua prinsip IAM. Contoh:

```
"Principal": {
  "AWS": "*"
}
```

## CLIENT\$1ERROR: pemasangan '127.0.0.1: /' gagal. koneksi diatur ulang oleh rekan
<a name="sample-efs-troubleshooting.connection-reset"></a>

Ada dua kemungkinan penyebab kesalahan ini:
+ Subnet CodeBuild VPC berada di zona ketersediaan yang berbeda dari target pemasangan Amazon EFS. Anda dapat mengatasinya dengan menambahkan subnet VPC di zona ketersediaan yang sama dengan target pemasangan Amazon EFS.
+ Grup keamanan tidak memiliki izin untuk berkomunikasi dengan Amazon EFS. Anda dapat mengatasinya dengan menambahkan aturan masuk untuk mengizinkan semua lalu lintas dari VPC (tambahkan blok CIDR utama untuk VPC Anda), atau grup keamanan itu sendiri.

## VPC\$1CLIENT\$1ERROR: Kesalahan EC2 yang tidak terduga: UnauthorizedOperation
<a name="sample-efs-troubleshooting.unauthorized-operation"></a>

Kesalahan ini terjadi ketika semua subnet dalam konfigurasi VPC Anda untuk CodeBuild proyek adalah subnet publik. Anda harus memiliki setidaknya satu subnet pribadi di VPC untuk memastikan konektivitas jaringan. 

# AWS CodePipeline sampel untuk CodeBuild
<a name="sample-codepipeline"></a>

Bagian ini menjelaskan integrasi sampel antara CodePipeline dan CodeBuild.


| Sampel | Deskripsi | 
| --- | --- | 
|  [Sampel CodePipeline/CodeBuild integrasi dan pembuatan batch](#sample-pipeline-batch)  |  Sampel ini mendemonstrasikan cara menggunakan AWS CodePipeline untuk membuat proyek build yang menggunakan build batch.  | 
|  [Contoh CodePipeline/CodeBuild integrasi dengan beberapa sumber input dan artefak keluaran](#sample-pipeline-multi-input-output)  |  Contoh ini menunjukkan cara menggunakan AWS CodePipeline untuk membuat proyek build yang menggunakan beberapa sumber input untuk membuat beberapa artefak keluaran.  | 

## Sampel CodePipeline/CodeBuild integrasi dan pembuatan batch
<a name="sample-pipeline-batch"></a>

AWS CodeBuild mendukung pembuatan batch. Contoh berikut menunjukkan cara menggunakan AWS CodePipeline untuk membuat proyek build yang menggunakan build batch.

Anda dapat menggunakan file berformat JSON yang mendefinisikan struktur pipeline Anda, dan kemudian menggunakannya dengan file untuk membuat pipeline. AWS CLI Untuk informasi selengkapnya, lihat [Referensi struktur AWS CodePipeline pipa](https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html) di *Panduan AWS CodePipeline Pengguna*.

### Batch build dengan artefak individual
<a name="sample-pipeline-batch.separate-artifacts"></a>

Gunakan file JSON berikut sebagai contoh struktur pipeline yang membuat batch build dengan artefak terpisah. Untuk mengaktifkan batch build in CodePipeline, atur `BatchEnabled` parameter `configuration` objek ke`true`.

```
{
  "pipeline": {
    "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
    "stages": [
      {
        "name": "Source",
        "actions": [
          {
            "inputArtifacts": [],
            "name": "Source1",
            "actionTypeId": {
              "category": "Source",
              "owner": "AWS",
              "version": "1",
              "provider": "S3"
            },
            "outputArtifacts": [
              {
                "name": "source1"
              }
            ],
            "configuration": {
              "S3Bucket": "<my-input-bucket-name>",
              "S3ObjectKey": "my-source-code-file-name.zip"
            },
            "runOrder": 1
          },
          {
            "inputArtifacts": [],
            "name": "Source2",
            "actionTypeId": {
              "category": "Source",
              "owner": "AWS",
              "version": "1",
              "provider": "S3"
            },
            "outputArtifacts": [
              {
                "name": "source2"
              }
            ],
            "configuration": {
              "S3Bucket": "<my-other-input-bucket-name>",
              "S3ObjectKey": "my-other-source-code-file-name.zip"
            },
            "runOrder": 1
          }
        ]
      },
      {
        "name": "Build",
        "actions": [
          {
            "inputArtifacts": [
              {
                "name": "source1"
              },
              {
                "name": "source2"
              }
            ],
            "name": "Build",
            "actionTypeId": {
              "category": "Build",
              "owner": "AWS",
              "version": "1",
              "provider": "CodeBuild"
            },
            "outputArtifacts": [
              {
                "name": "build1"
              },
              {
                "name": "build1_artifact1"
              },
              {
                "name": "build1_artifact2"
              },
              {
                "name": "build2_artifact1"
              },
              {
                "name": "build2_artifact2"
              }
            ],
            "configuration": {
              "ProjectName": "my-build-project-name",
              "PrimarySource": "source1",
              "BatchEnabled": "true"
            },
            "runOrder": 1
          }
        ]
      }
    ],
    "artifactStore": {
      "type": "S3",
      "location": "<AWS-CodePipeline-internal-bucket-name>"
    },
    "name": "my-pipeline-name",
    "version": 1
  }
}
```

Berikut ini adalah contoh file CodeBuild buildspec yang akan bekerja dengan konfigurasi pipeline ini.

```
version: 0.2
batch:
  build-list:
    - identifier: build1
      env:
        compute-type: BUILD_GENERAL1_SMALL
    - identifier: build2
      env:
        compute-type: BUILD_GENERAL1_MEDIUM

phases:
  build:
    commands:
      - echo 'file' > output_file

artifacts:
  files:
    - output_file
  secondary-artifacts:
    artifact1:
      files:
        - output_file
    artifact2:
      files:
        - output_file
```

Nama artefak keluaran yang ditentukan dalam file JSON pipeline harus cocok dengan pengenal build dan artefak yang ditentukan dalam file buildspec Anda. Sintaksnya adalah *buildIdentifier* untuk artefak primer, dan *buildIdentifier* \$1 *artifactIdentifier* untuk artefak sekunder.

Misalnya, untuk nama artefak keluaran`build1`, CodeBuild akan mengunggah artefak utama `build1` ke lokasi. `build1` Untuk nama output`build1_artifact1`, CodeBuild akan mengunggah `artifact1` artefak sekunder `build1` ke lokasi`build1_artifact1`, dan sebagainya. Jika hanya satu lokasi output yang ditentukan, nama seharusnya *buildIdentifier* hanya.

Setelah Anda membuat file JSON, Anda dapat membuat pipeline Anda. Gunakan AWS CLI untuk menjalankan perintah **create-pipeline** dan meneruskan file ke parameter. `--cli-input-json` Untuk informasi selengkapnya, lihat [Membuat pipeline (CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli) di *AWS CodePipeline Panduan Pengguna*. 

### Batch build dengan artefak gabungan
<a name="sample-pipeline-batch.combined-artifacts"></a>

Gunakan file JSON berikut sebagai contoh struktur pipeline yang membuat batch build dengan artefak gabungan. Untuk mengaktifkan batch build in CodePipeline, atur `BatchEnabled` parameter `configuration` objek ke`true`. Untuk menggabungkan artefak build ke lokasi yang sama, atur `CombineArtifacts` parameter `configuration` objek ke`true`.

```
{
 "pipeline": {
  "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
  "stages": [
    {
      "name": "Source",
      "actions": [
        {
          "inputArtifacts": [],
          "name": "Source1",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source1"
            }
          ],
          "configuration": {
            "S3Bucket": "<my-input-bucket-name>",
            "S3ObjectKey": "my-source-code-file-name.zip"
          },
          "runOrder": 1
        },
        {
          "inputArtifacts": [],
          "name": "Source2",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source2"
            }
          ],
          "configuration": {
            "S3Bucket": "<my-other-input-bucket-name>",
            "S3ObjectKey": "my-other-source-code-file-name.zip"
          },
          "runOrder": 1
        }
      ]
    },
    {
      "name": "Build",
      "actions": [
        {
          "inputArtifacts": [
            {
              "name": "source1"
            },
            {
              "name": "source2"
            }
          ],
          "name": "Build",
          "actionTypeId": {
            "category": "Build",
            "owner": "AWS",
            "version": "1",
            "provider": "CodeBuild"
          },
          "outputArtifacts": [
            {
              "name": "output1 "
            }
          ],
          "configuration": {
            "ProjectName": "my-build-project-name",
            "PrimarySource": "source1",
             "BatchEnabled": "true",
             "CombineArtifacts": "true"
          },
          "runOrder": 1
        }
      ]
    }
  ],
  "artifactStore": {
    "type": "S3",
    "location": "<AWS-CodePipeline-internal-bucket-name>"
  },
  "name": "my-pipeline-name",
  "version": 1
 }
}
```

Berikut ini adalah contoh file CodeBuild buildspec yang akan bekerja dengan konfigurasi pipeline ini.

```
version: 0.2
batch:
  build-list:
    - identifier: build1
      env:
        compute-type: BUILD_GENERAL1_SMALL
    - identifier: build2
      env:
        compute-type: BUILD_GENERAL1_MEDIUM

phases:
  build:
    commands:
      - echo 'file' > output_file

artifacts:
  files:
    - output_file
```

Jika artefak gabungan diaktifkan untuk pembuatan batch, hanya ada satu output yang diizinkan. CodeBuild akan menggabungkan artefak utama dari semua build menjadi satu file ZIP tunggal.

Setelah Anda membuat file JSON, Anda dapat membuat pipeline Anda. Gunakan AWS CLI untuk menjalankan perintah **create-pipeline** dan meneruskan file ke parameter. `--cli-input-json` Untuk informasi selengkapnya, lihat [Membuat pipeline (CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli) di *AWS CodePipeline Panduan Pengguna*. 

## Contoh CodePipeline/CodeBuild integrasi dengan beberapa sumber input dan artefak keluaran
<a name="sample-pipeline-multi-input-output"></a>

Sebuah AWS CodeBuild proyek dapat mengambil lebih dari satu sumber input. Itu juga dapat membuat lebih dari satu artefak keluaran. Contoh ini menunjukkan cara menggunakan AWS CodePipeline untuk membuat proyek build yang menggunakan beberapa sumber input untuk membuat beberapa artefak keluaran. Untuk informasi selengkapnya, lihat [Beberapa sumber input dan sampel artefak keluaran](sample-multi-in-out.md).

Anda dapat menggunakan file berformat JSON yang mendefinisikan struktur pipeline Anda, dan kemudian menggunakannya dengan file untuk membuat pipeline. AWS CLI Gunakan file JSON berikut sebagai contoh struktur pipa yang membuat build dengan lebih dari satu sumber input dan lebih dari satu artefak keluaran. Kemudian dalam contoh ini Anda melihat bagaimana file ini menentukan beberapa input dan output. Untuk informasi selengkapnya, lihat [referensi struktur CodePipeline pipa](https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html) di *Panduan AWS CodePipeline Pengguna*.

```
{
 "pipeline": {
  "roleArn": "arn:aws:iam::account-id:role/my-AWS-CodePipeline-service-role-name",
  "stages": [
    {
      "name": "Source",
      "actions": [
        {
          "inputArtifacts": [],
          "name": "Source1",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source1"
            }
          ],
          "configuration": {
            "S3Bucket": "my-input-bucket-name",
            "S3ObjectKey": "my-source-code-file-name.zip"
          },
          "runOrder": 1
        },
        {
          "inputArtifacts": [],
          "name": "Source2",
          "actionTypeId": {
            "category": "Source",
            "owner": "AWS",
            "version": "1",
            "provider": "S3"
          },
          "outputArtifacts": [
            {
              "name": "source2"
            }
          ],
          "configuration": {
            "S3Bucket": "my-other-input-bucket-name",
            "S3ObjectKey": "my-other-source-code-file-name.zip"
          },
          "runOrder": 1
        }
      ]
    },
    {
      "name": "Build",
      "actions": [
        {
          "inputArtifacts": [
            {
              "name": "source1"
            },
            {
              "name": "source2"
            }
          ],
          "name": "Build",
          "actionTypeId": {
            "category": "Build",
            "owner": "AWS",
            "version": "1",
            "provider": "AWS CodeBuild"
          },
          "outputArtifacts": [
            {
              "name": "artifact1"
            },
            {
              "name": "artifact2"
            }
          ],
          "configuration": {
            "ProjectName": "my-build-project-name",
            "PrimarySource": "source1"
          },
          "runOrder": 1
        }
      ]
    }
  ],
  "artifactStore": {
    "type": "S3",
    "location": "AWS-CodePipeline-internal-bucket-name"
  },
  "name": "my-pipeline-name",
  "version": 1
 }
}
```

 Dalam file JSON ini: 
+ Salah satu sumber input Anda harus ditunjuk`PrimarySource`. Sumber ini adalah direktori tempat CodeBuild mencari dan menjalankan file buildspec Anda. Kata kunci `PrimarySource` digunakan untuk menentukan sumber utama di `configuration` bagian CodeBuild tahap dalam file JSON. 
+ Setiap sumber input dipasang di direktorinya sendiri. Direktori ini disimpan dalam variabel lingkungan bawaan `$CODEBUILD_SRC_DIR` untuk sumber utama dan `$CODEBUILD_SRC_DIR_yourInputArtifactName` untuk semua sumber lainnya. Untuk pipeline dalam sampel ini, dua direktori sumber input adalah `$CODEBUILD_SRC_DIR` dan`$CODEBUILD_SRC_DIR_source2`. Untuk informasi selengkapnya, lihat [Variabel lingkungan di lingkungan build](build-env-ref-env-vars.md). 
+ Nama artefak keluaran yang ditentukan dalam file JSON pipeline harus cocok dengan nama artefak sekunder yang ditentukan dalam file buildspec Anda. Pipeline ini menggunakan file buildspec berikut. Untuk informasi selengkapnya, lihat [Sintaks Buildspec](build-spec-ref.md#build-spec-ref-syntax). 

  ```
  version: 0.2
  
  phases:
    build:
      commands:
        - touch source1_file
        - cd $CODEBUILD_SRC_DIR_source2
        - touch source2_file
  
  artifacts:
    files:
      - '**/*'
    secondary-artifacts:
      artifact1:
        base-directory: $CODEBUILD_SRC_DIR
        files:
          - source1_file
      artifact2:
        base-directory: $CODEBUILD_SRC_DIR_source2
        files:
          - source2_file
  ```

 Setelah Anda membuat file JSON, Anda dapat membuat pipeline Anda. Gunakan AWS CLI untuk menjalankan perintah **create-pipeline** dan meneruskan file ke parameter. `--cli-input-json` Untuk informasi selengkapnya, lihat [Membuat pipeline (CLI)](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-create.html#pipelines-create-cli) di *AWS CodePipeline Panduan Pengguna*. 

# AWS Config sampel dengan CodeBuild
<a name="how-to-integrate-config"></a>

AWS Config menyediakan inventaris sumber AWS daya Anda dan riwayat perubahan konfigurasi pada sumber daya ini. AWS Config sekarang mendukung AWS CodeBuild sebagai AWS sumber daya, yang berarti layanan dapat melacak CodeBuild proyek Anda. Untuk informasi lebih lanjut tentang AWS Config, lihat [Apa itu AWS Config?](https://docs.aws.amazon.com/config/latest/developerguide/WhatIsConfig.html) di *Panduan AWS Config Pengembang*.

Anda dapat melihat informasi berikut tentang CodeBuild sumber daya di halaman **Inventaris Sumber Daya** di AWS Config konsol:
+ Garis waktu CodeBuild konfigurasi Anda berubah.
+ Detail konfigurasi untuk setiap CodeBuild proyek.
+ Hubungan dengan AWS sumber daya lain.
+ Daftar perubahan pada CodeBuild proyek Anda.

**Topics**
+ [Gunakan CodeBuild dengan AWS Config](#how-to-integrate-config-run)
+ [Langkah 3: Lihat AWS CodeBuild data di AWS Config konsol](#viewing-config-details)

## Gunakan CodeBuild dengan AWS Config
<a name="how-to-integrate-config-run"></a>

Prosedur dalam topik ini menunjukkan kepada Anda cara mengatur AWS Config dan mencari CodeBuild proyek.

**Topics**
+ [Prasyarat](#how-to-create-a-build-project)
+ [Langkah 1: Mengatur AWS Config](#setup-config)
+ [Langkah 2: Cari AWS CodeBuild proyek](#lookup-projects)

### Prasyarat
<a name="how-to-create-a-build-project"></a>

Buat AWS CodeBuild proyek Anda. Untuk petunjuk, lihat [Buat proyek build](create-project.md).

### Langkah 1: Mengatur AWS Config
<a name="setup-config"></a>
+ [Menyiapkan AWS Config (konsol)](https://docs.aws.amazon.com/config/latest/developerguide/gs-console.html)
+ [Menyiapkan AWS Config (AWS CLI)](https://docs.aws.amazon.com/config/latest/developerguide/gs-cli.html)

**catatan**  
Setelah Anda menyelesaikan penyiapan, mungkin diperlukan waktu hingga 10 menit sebelum Anda dapat melihat AWS CodeBuild proyek di AWS Config konsol.

### Langkah 2: Cari AWS CodeBuild proyek
<a name="lookup-projects"></a>

1. Masuk ke AWS Management Console dan buka AWS Config konsol di [https://console.aws.amazon.com/config](https://console.aws.amazon.com/config). 

1. Pada halaman **Inventaris sumber daya**, pilih **AWS CodeBuild Proyek** di bawah **Jenis sumber daya**. Gulir ke bawah dan pilih kotak centang **CodeBuildproyek**.

1. Pilih **Lihat**.

1. Setelah daftar CodeBuild proyek ditambahkan, pilih tautan nama CodeBuild proyek di kolom **timeline Config**.

## Langkah 3: Lihat AWS CodeBuild data di AWS Config konsol
<a name="viewing-config-details"></a>

Saat Anda mencari sumber daya di halaman **inventaris Sumber Daya**, Anda dapat memilih AWS Config garis waktu untuk melihat detail tentang CodeBuild proyek Anda. Halaman detail untuk sumber daya menyediakan informasi tentang konfigurasi, hubungan, dan jumlah perubahan yang dilakukan pada sumber daya tersebut. 

Blok di bagian atas halaman secara kolektif disebut timeline. Garis waktu menunjukkan tanggal dan waktu rekaman itu dibuat.

Untuk informasi selengkapnya, lihat [Melihat detail konfigurasi di AWS Config konsol](https://docs.aws.amazon.com/config/latest/developerguide/view-manage-resource-console.html) di *Panduan AWS Config Pengembang*.

# Buat contoh notifikasi untuk CodeBuild
<a name="sample-build-notifications"></a>

Amazon CloudWatch Events memiliki dukungan bawaan untuk AWS CodeBuild. CloudWatch Acara adalah aliran peristiwa sistem yang menjelaskan perubahan dalam AWS sumber daya Anda. Dengan CloudWatch Acara, Anda menulis aturan deklaratif untuk mengaitkan peristiwa yang menarik dengan tindakan otomatis yang akan diambil. Contoh ini menggunakan Amazon CloudWatch Events dan Amazon Simple Notification Service (Amazon SNS) untuk mengirim notifikasi build ke pelanggan setiap kali build berhasil, gagal, berpindah dari satu fase build ke fase build lainnya, atau kombinasi dari event ini.

**penting**  
Menjalankan sampel ini dapat mengakibatkan biaya ke AWS akun Anda. Ini termasuk kemungkinan biaya untuk CodeBuild dan untuk AWS sumber daya dan tindakan yang terkait dengan Amazon CloudWatch dan Amazon SNS. Untuk informasi selengkapnya, lihat [CodeBuild harga](https://aws.amazon.com/codebuild/pricing), [ CloudWatchharga Amazon](https://aws.amazon.com/cloudwatch/pricing), dan harga [Amazon SNS](https://aws.amazon.com/sns/pricing).

**Topics**
+ [Jalankan contoh notifikasi build](#sample-build-notifications-running)
+ [Buat referensi format masukan pemberitahuan](sample-build-notifications-ref.md)

## Jalankan contoh notifikasi build
<a name="sample-build-notifications-running"></a>

Gunakan prosedur berikut untuk menjalankan contoh pemberitahuan build.

**Untuk menjalankan sampel ini**

1. Jika Anda sudah memiliki topik yang disiapkan dan berlangganan di Amazon SNS yang ingin Anda gunakan untuk sampel ini, lanjutkan ke langkah 4. Jika tidak, jika Anda menggunakan pengguna IAM alih-alih akun AWS root atau pengguna administrator untuk bekerja dengan Amazon SNS, tambahkan pernyataan berikut (*\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1*antara *\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1* dan) ke pengguna (atau grup IAM yang terkait dengan pengguna). Menggunakan akun AWS root tidak disarankan. Pernyataan ini memungkinkan melihat, membuat, berlangganan, dan menguji pengiriman notifikasi ke topik di Amazon SNS. Ellipses (`...`) digunakan untuk singkatnya dan untuk membantu Anda menemukan tempat untuk menambahkan pernyataan. Jangan menghapus pernyataan apa pun, dan jangan ketik elips ini ke dalam kebijakan yang ada.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "sns:CreateTopic",
                   "sns:GetTopicAttributes",
                   "sns:List*",
                   "sns:Publish",
                   "sns:SetTopicAttributes",
                   "sns:Subscribe"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------
**catatan**  
Entitas IAM yang memodifikasi kebijakan ini harus memiliki izin di IAM untuk memodifikasi kebijakan.  
Untuk informasi selengkapnya, lihat [Mengedit kebijakan terkelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) atau bagian “Mengedit atau menghapus kebijakan sebaris untuk grup, pengguna, atau peran” di [Bekerja dengan kebijakan sebaris (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) di Panduan Pengguna *IAM*.

1. Buat atau identifikasi topik di Amazon SNS. AWS CodeBuild menggunakan CloudWatch Acara untuk mengirim pemberitahuan build ke topik ini melalui Amazon SNS. 

   Untuk membuat topik:

   1. [Buka konsol Amazon SNS di https://console.aws.amazon.com /sns.](https://console.aws.amazon.com/sns)

   1. Pilih **Buat topik**. 

   1. Di **Buat topik baru**, untuk **nama Topik**, masukkan nama untuk topik (misalnya,**CodeBuildDemoTopic**). (Jika Anda memilih nama yang berbeda, gantilah di seluruh sampel ini.) 

   1. Pilih **Buat topik**.

   1. Pada CodeBuildDemoTopic halaman **Detail topik:**, salin nilai **Topik ARN**. Anda memerlukan nilai ini untuk langkah berikutnya. 

        
![\[Nilai Topik ARN.\]](http://docs.aws.amazon.com/id_id/codebuild/latest/userguide/images/topic-arn.png)

      

   Untuk informasi selengkapnya, lihat [Membuat topik](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) di Panduan *Pengembang Amazon SNS*.

1. Berlangganan satu atau beberapa penerima ke topik untuk menerima pemberitahuan email. 

   Untuk berlangganan penerima ke suatu topik:

   1. **Dengan konsol Amazon SNS terbuka dari langkah sebelumnya, di panel navigasi, pilih Langganan, lalu pilih Buat **langganan**.**

   1. Di **Buat langganan**, untuk **Topik ARN**, tempel topik ARN yang Anda salin dari langkah sebelumnya.

   1. Untuk **Protokol**, pilih **Email**.

   1. Untuk **Endpoint**, masukkan alamat email lengkap penerima. 

        
![\[Konfigurasi berlangganan.\]](http://docs.aws.amazon.com/id_id/codebuild/latest/userguide/images/create-subscription.png)

      

   1. Pilih **Buat Langganan**.

   1. Amazon SNS mengirimkan email konfirmasi berlangganan ke penerima. Untuk mulai menerima pemberitahuan email, penerima harus memilih tautan **Konfirmasi langganan** di email konfirmasi langganan. Setelah penerima mengklik tautan, jika berhasil berlangganan, Amazon SNS menampilkan pesan konfirmasi di browser web penerima.

   Untuk informasi selengkapnya, lihat [Berlangganan topik](https://docs.aws.amazon.com/sns/latest/dg/SubscribeTopic.html) di Panduan *Pengembang Amazon SNS*.

1. Jika Anda menggunakan pengguna alih-alih akun AWS root atau pengguna administrator untuk bekerja dengan CloudWatch Acara, tambahkan pernyataan berikut (antara *\$1\$1\$1 BEGIN ADDING STATEMENT HERE \$1\$1\$1* dan*\$1\$1\$1 END ADDING STATEMENT HERE \$1\$1\$1*) ke pengguna (atau grup IAM yang terkait dengan pengguna). Menggunakan akun AWS root tidak disarankan. Pernyataan ini digunakan untuk memungkinkan pengguna untuk bekerja dengan CloudWatch Events. Ellipses (`...`) digunakan untuk singkatnya dan untuk membantu Anda menemukan tempat untuk menambahkan pernyataan. Jangan menghapus pernyataan apa pun, dan jangan ketik elips ini ke dalam kebijakan yang ada.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "events:*",
                   "iam:PassRole"
               ],
               "Resource": "arn:aws:iam::*:role/Service*"
           }
       ]
   }
   ```

------
**catatan**  
Entitas IAM yang memodifikasi kebijakan ini harus memiliki izin di IAM untuk memodifikasi kebijakan.  
Untuk informasi selengkapnya, lihat [Mengedit kebijakan terkelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#edit-managed-policy-console) atau bagian “Mengedit atau menghapus kebijakan sebaris untuk grup, pengguna, atau peran” di [Bekerja dengan kebijakan sebaris (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html#AddingPermissions_Console) di Panduan Pengguna *IAM*.

1. Buat aturan di CloudWatch Acara. Untuk melakukan ini, buka CloudWatch konsol, di [https://console.aws.amazon.com/cloudwatch](https://console.aws.amazon.com/cloudwatch).

1. Di panel navigasi, di bawah **Acara**, pilih **Aturan**, lalu pilih **Buat aturan**. 

1. Pada **Langkah 1: Buat halaman aturan**, **Pola Acara dan Pola** **acara Build untuk mencocokkan peristiwa berdasarkan layanan** harus sudah dipilih. 

1. Untuk **Nama Layanan**, pilih **CodeBuild**. Untuk **Jenis Acara**, **Semua Acara** seharusnya sudah dipilih.

1. Kode berikut harus ditampilkan di **Pratinjau Pola Acara**:

   ```
   {
     "source": [ 
       "aws.codebuild"
     ]
   }
   ```

1. Pilih **Edit** dan ganti kode di **Pratinjau Pola Acara** dengan salah satu dari dua pola aturan berikut.

   Pola aturan pertama ini memicu peristiwa saat build dimulai atau diselesaikan untuk proyek build yang ditentukan di. AWS CodeBuild

   ```
   {
     "source": [ 
       "aws.codebuild"
     ], 
     "detail-type": [
       "CodeBuild Build State Change"
     ],
     "detail": {
       "build-status": [
         "IN_PROGRESS",
         "SUCCEEDED", 
         "FAILED",
         "STOPPED" 
       ],
       "project-name": [
         "my-demo-project-1",
         "my-demo-project-2"
       ]
     }  
   }
   ```

   Pada aturan sebelumnya, buat perubahan kode berikut sesuai kebutuhan.
   + Untuk memicu peristiwa saat build dimulai atau selesai, tinggalkan semua nilai seperti yang ditunjukkan dalam `build-status` array, atau hapus array sama sekali. `build-status` 
   + Untuk memicu peristiwa hanya ketika build selesai, hapus `IN_PROGRESS` dari `build-status` array. 
   + Untuk memicu peristiwa hanya ketika build dimulai, hapus semua nilai kecuali `IN_PROGRESS` dari `build-status` array.
   + Untuk memicu peristiwa untuk semua proyek build, hapus `project-name` array sama sekali.
   + Untuk memicu peristiwa hanya untuk proyek build individual, tentukan nama setiap proyek build dalam `project-name` array. 

   Pola aturan kedua ini memicu peristiwa setiap kali build berpindah dari satu fase build ke fase build lainnya untuk proyek build yang ditentukan di AWS CodeBuild.

   ```
   {
     "source": [ 
       "aws.codebuild"
     ], 
     "detail-type": [
       "CodeBuild Build Phase Change" 
     ],
     "detail": {
       "completed-phase": [
         "SUBMITTED",
         "PROVISIONING",
         "DOWNLOAD_SOURCE",
         "INSTALL",
         "PRE_BUILD",
         "BUILD",
         "POST_BUILD",
         "UPLOAD_ARTIFACTS",
         "FINALIZING"
       ],
       "completed-phase-status": [
         "TIMED_OUT",
         "STOPPED",
         "FAILED", 
         "SUCCEEDED",
         "FAULT",
         "CLIENT_ERROR"
       ],
       "project-name": [
         "my-demo-project-1",
         "my-demo-project-2"
       ]
     }  
   }
   ```

   Pada aturan sebelumnya, buat perubahan kode berikut sesuai kebutuhan.
   + Untuk memicu peristiwa untuk setiap perubahan fase build (yang mungkin mengirim hingga sembilan notifikasi untuk setiap build), tinggalkan semua nilai seperti yang ditunjukkan dalam `completed-phase` array, atau hapus `completed-phase` array sama sekali.
   + Untuk memicu peristiwa hanya untuk perubahan fase build individual, hapus nama setiap fase build dalam `completed-phase` array yang tidak ingin Anda picu event.
   + Untuk memicu peristiwa untuk setiap perubahan status fase build, tinggalkan semua nilai seperti yang ditunjukkan dalam `completed-phase-status` array, atau hapus `completed-phase-status` array sama sekali.
   + Untuk memicu peristiwa hanya untuk perubahan status fase build individual, hapus nama setiap status fase build dalam `completed-phase-status` array yang tidak ingin memicu peristiwa.
   + Untuk memicu peristiwa untuk semua proyek build, hapus `project-name` array.
   + Untuk memicu peristiwa untuk proyek build individual, tentukan nama setiap proyek build dalam `project-name` array. 

   Untuk informasi selengkapnya tentang pola peristiwa, lihat [Pola Peristiwa](https://docs.aws.amazon.com/eventbridge/latest/userguide/filtering-examples-structure.html) di Panduan EventBridge Pengguna Amazon.

   Untuk informasi selengkapnya tentang pemfilteran dengan pola peristiwa, lihat [Pemfilteran Berbasis Konten dengan Pola Peristiwa di Panduan](https://docs.aws.amazon.com/eventbridge/latest/userguide/content-filtering-with-event-patterns.html) Pengguna Amazon. EventBridge 
**catatan**  
Jika Anda ingin memicu peristiwa untuk perubahan status build dan perubahan fase build, Anda harus membuat dua aturan terpisah: satu untuk perubahan status build dan satu lagi untuk perubahan fase build. Jika Anda mencoba menggabungkan kedua aturan menjadi satu aturan, aturan gabungan mungkin menghasilkan hasil yang tidak terduga atau berhenti bekerja sama sekali.

   Setelah selesai mengganti kode, pilih **Simpan**.

1. Untuk **Targets** (Target), pilih **Add target** (Tambahkan target). 

1. Dalam daftar target, pilih **topik SNS**. 

1. Untuk **Topik**, pilih topik yang Anda identifikasi atau buat sebelumnya. 

1. Perluas **Konfigurasi input**, lalu pilih **Input Transformer**. 

1. Dalam kotak **Input Path**, masukkan salah satu jalur input berikut.

   Untuk aturan dengan `detail-type` nilai`CodeBuild Build State Change`, masukkan yang berikut ini.

   ```
   {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","build-status":"$.detail.build-status"}
   ```

   Untuk aturan dengan `detail-type` nilai`CodeBuild Build Phase Change`, masukkan yang berikut ini.

   ```
   {"build-id":"$.detail.build-id","project-name":"$.detail.project-name","completed-phase":"$.detail.completed-phase","completed-phase-status":"$.detail.completed-phase-status"}
   ```

   Untuk mendapatkan jenis informasi lain, lihat[Buat referensi format masukan pemberitahuan](sample-build-notifications-ref.md).

1. Dalam kotak **Template Input**, masukkan salah satu template input berikut.

   Untuk aturan dengan `detail-type` nilai`CodeBuild Build State Change`, masukkan yang berikut ini.

   ```
   "Build '<build-id>' for build project '<project-name>' has reached the build status of '<build-status>'."
   ```

   Untuk aturan dengan `detail-type` nilai`CodeBuild Build Phase Change`, masukkan yang berikut ini.

   ```
   "Build '<build-id>' for build project '<project-name>' has completed the build phase of '<completed-phase>' with a status of '<completed-phase-status>'."
   ```

1. Pilih **Konfigurasikan detail**.

1. Pada **Langkah 2: Konfigurasikan halaman detail aturan**, masukkan nama dan deskripsi opsional. Untuk **Status**, biarkan **Diaktifkan** dipilih.

1. Pilih **Buat aturan**. 

1. Buat proyek build, jalankan build, dan lihat informasi build.

1. Konfirmasikan bahwa CodeBuild sekarang berhasil mengirim pemberitahuan build. Misalnya, periksa untuk melihat apakah email pemberitahuan build sekarang ada di kotak masuk Anda.

Untuk mengubah perilaku aturan, di CloudWatch konsol, pilih aturan yang ingin diubah, pilih **Tindakan**, lalu pilih **Edit**. Buat perubahan pada aturan, pilih **Konfigurasikan detail**, lalu pilih **Perbarui aturan**.

Untuk berhenti menggunakan aturan untuk mengirim pemberitahuan build, di CloudWatch konsol, pilih aturan yang ingin Anda hentikan, pilih **Tindakan**, lalu pilih **Nonaktifkan**.

Untuk menghapus aturan sama sekali, di CloudWatch konsol, pilih aturan yang ingin Anda hapus, pilih **Tindakan**, lalu pilih **Hapus**.

# Buat referensi format masukan pemberitahuan
<a name="sample-build-notifications-ref"></a>

CloudWatch memberikan pemberitahuan dalam format JSON.

Pemberitahuan perubahan status build menggunakan format berikut:

```
{
  "version": "0",
  "id": "c030038d-8c4d-6141-9545-00ff7b7153EX",
  "detail-type": "CodeBuild Build State Change",
  "source": "aws.codebuild",
  "account": "123456789012",
  "time": "2017-09-01T16:14:28Z",
  "region": "us-west-2",
  "resources":[
    "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX"
  ],
  "detail":{
    "build-status": "SUCCEEDED",
    "project-name": "my-sample-project",
    "build-id": "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX",
    "additional-information": {
      "artifact": {
        "md5sum": "da9c44c8a9a3cd4b443126e823168fEX",
        "sha256sum": "6ccc2ae1df9d155ba83c597051611c42d60e09c6329dcb14a312cecc0a8e39EX",
        "location": "arn:aws:s3:::codebuild-123456789012-output-bucket/my-output-artifact.zip"
      },
      "environment": {
        "image": "aws/codebuild/standard:5.0",
        "privileged-mode": false,
        "compute-type": "BUILD_GENERAL1_SMALL",
        "type": "LINUX_CONTAINER",
        "environment-variables": []
      },
      "timeout-in-minutes": 60,
      "build-complete": true,
      "initiator": "MyCodeBuildDemoUser",
      "build-start-time": "Sep 1, 2017 4:12:29 PM",
      "source": {
        "location": "codebuild-123456789012-input-bucket/my-input-artifact.zip",
        "type": "S3"
      },
      "logs": {
        "group-name": "/aws/codebuild/my-sample-project",
        "stream-name": "8745a7a9-c340-456a-9166-edf953571bEX",
        "deep-link": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logEvent:group=/aws/codebuild/my-sample-project;stream=8745a7a9-c340-456a-9166-edf953571bEX"
      },
      "phases": [
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:12:29 PM",
          "duration-in-seconds": 0,
          "phase-type": "SUBMITTED",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:13:05 PM",
          "duration-in-seconds": 36,
          "phase-type": "PROVISIONING",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:05 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 4,
          "phase-type": "DOWNLOAD_SOURCE",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "INSTALL",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "PRE_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 70,
          "phase-type": "BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "POST_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "UPLOAD_ARTIFACTS",
          "phase-status": "SUCCEEDED"
        },
         {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:26 PM",
          "duration-in-seconds": 4,
          "phase-type": "FINALIZING",
          "phase-status": "SUCCEEDED"
        },
        {
          "start-time": "Sep 1, 2017 4:14:26 PM",
          "phase-type": "COMPLETED"
        }
      ]
    },
    "current-phase": "COMPLETED",
    "current-phase-context": "[]",
    "version": "1"
  }
}
```

Pemberitahuan perubahan fase build menggunakan format berikut:

```
{
  "version": "0",
  "id": "43ddc2bd-af76-9ca5-2dc7-b695e15adeEX",
  "detail-type": "CodeBuild Build Phase Change",
  "source": "aws.codebuild",
  "account": "123456789012",
  "time": "2017-09-01T16:14:21Z",
  "region": "us-west-2",
  "resources":[
    "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX"
  ],
  "detail":{
    "completed-phase": "COMPLETED",
    "project-name": "my-sample-project",
    "build-id": "arn:aws:codebuild:us-west-2:123456789012:build/my-sample-project:8745a7a9-c340-456a-9166-edf953571bEX",
    "completed-phase-context": "[]",
    "additional-information": {
      "artifact": {
        "md5sum": "da9c44c8a9a3cd4b443126e823168fEX",
        "sha256sum": "6ccc2ae1df9d155ba83c597051611c42d60e09c6329dcb14a312cecc0a8e39EX",
        "location": "arn:aws:s3:::codebuild-123456789012-output-bucket/my-output-artifact.zip"
      },
      "environment": {
        "image": "aws/codebuild/standard:5.0",
        "privileged-mode": false,
        "compute-type": "BUILD_GENERAL1_SMALL",
        "type": "LINUX_CONTAINER",
        "environment-variables": []
      },
      "timeout-in-minutes": 60,
      "build-complete": true,
      "initiator": "MyCodeBuildDemoUser",
      "build-start-time": "Sep 1, 2017 4:12:29 PM",
      "source": {
        "location": "codebuild-123456789012-input-bucket/my-input-artifact.zip",
        "type": "S3"
      },
      "logs": {
        "group-name": "/aws/codebuild/my-sample-project",
        "stream-name": "8745a7a9-c340-456a-9166-edf953571bEX",
        "deep-link": "https://console.aws.amazon.com/cloudwatch/home?region=us-west-2#logEvent:group=/aws/codebuild/my-sample-project;stream=8745a7a9-c340-456a-9166-edf953571bEX"
      },
      "phases": [
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:12:29 PM",
          "duration-in-seconds": 0,
          "phase-type": "SUBMITTED",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:12:29 PM",
          "end-time": "Sep 1, 2017 4:13:05 PM",
          "duration-in-seconds": 36,
          "phase-type": "PROVISIONING",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:05 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 4,
          "phase-type": "DOWNLOAD_SOURCE",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "INSTALL",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:13:10 PM",
          "duration-in-seconds": 0,
          "phase-type": "PRE_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:13:10 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 70,
          "phase-type": "BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "POST_BUILD",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:21 PM",
          "duration-in-seconds": 0,
          "phase-type": "UPLOAD_ARTIFACTS",
          "phase-status": "SUCCEEDED"
        },
        {
          "phase-context": [],
          "start-time": "Sep 1, 2017 4:14:21 PM",
          "end-time": "Sep 1, 2017 4:14:26 PM",
          "duration-in-seconds": 4,
          "phase-type": "FINALIZING",
          "phase-status": "SUCCEEDED"
        },
        {
          "start-time": "Sep 1, 2017 4:14:26 PM",
          "phase-type": "COMPLETED"
        }
      ]  
    },
    "completed-phase-status": "SUCCEEDED",
    "completed-phase-duration-seconds": 4,
    "version": "1",
    "completed-phase-start": "Sep 1, 2017 4:14:21 PM",
    "completed-phase-end": "Sep 1, 2017 4:14:26 PM"
  }
}
```