

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

# Tutorial: Buat pipeline yang menerbitkan aplikasi tanpa server Anda ke AWS Serverless Application Repository
<a name="tutorials-serverlessrepo-auto-publish"></a>

Anda dapat menggunakan AWS CodePipeline untuk terus mengirimkan aplikasi AWS SAM tanpa server Anda ke. AWS Serverless Application Repository

**penting**  
Sebagai bagian dari pembuatan pipa, ember artefak S3 yang disediakan oleh pelanggan akan digunakan CodePipeline untuk artefak. (Ini berbeda dari bucket yang digunakan untuk aksi sumber S3.) Jika bucket artefak S3 berada di akun yang berbeda dari akun untuk pipeline Anda, pastikan bucket artefak S3 dimiliki oleh Akun AWS yang aman dan dapat diandalkan.

Tutorial ini menunjukkan cara membuat dan mengkonfigurasi pipeline untuk membangun aplikasi tanpa server Anda yang di-host GitHub dan mempublikasikannya secara otomatis. AWS Serverless Application Repository Pipeline digunakan GitHub sebagai penyedia sumber dan CodeBuild sebagai penyedia build. Untuk memublikasikan aplikasi tanpa server ke AWS Serverless Application Repository, Anda menerapkan [aplikasi](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~aws-serverless-codepipeline-serverlessrepo-publish ) (dari AWS Serverless Application Repository) dan mengaitkan fungsi Lambda yang dibuat oleh aplikasi tersebut sebagai penyedia tindakan Invoke di pipeline Anda. Kemudian Anda dapat terus mengirimkan pembaruan aplikasi ke AWS Serverless Application Repository, tanpa menulis kode apa pun.

**penting**  
Banyak tindakan yang Anda tambahkan ke pipeline dalam prosedur ini melibatkan AWS sumber daya yang perlu Anda buat sebelum membuat pipeline. AWS sumber daya untuk tindakan sumber Anda harus selalu dibuat di AWS Wilayah yang sama tempat Anda membuat pipeline. Misalnya, jika Anda membuat pipeline di Wilayah AS Timur (Ohio), CodeCommit repositori Anda harus berada di Wilayah AS Timur (Ohio).   
Anda dapat menambahkan tindakan lintas wilayah saat membuat pipeline. AWS sumber daya untuk tindakan lintas wilayah harus berada di AWS Wilayah yang sama di mana Anda berencana untuk menjalankan tindakan. Untuk informasi selengkapnya, lihat [Menambahkan tindakan Lintas wilayah di CodePipeline](actions-create-cross-region.md).

## Sebelum kamu memulai
<a name="tutorials-serverlessrepo-auto-publish-prereq"></a>

Dalam tutorial ini, kita asumsikan sebagai berikut. 
+ Anda sudah familiar dengan [AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/) dan [AWS Serverless Application Repository](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/).
+ Anda memiliki aplikasi tanpa server yang dihosting di mana GitHub Anda telah mempublikasikan ke AWS Serverless Application Repository menggunakan CLI AWS SAM . Untuk mempublikasikan contoh aplikasi ke AWS Serverless Application Repository, lihat [Mulai Cepat: Menerbitkan Aplikasi](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/serverlessrepo-quick-start.html) di *Panduan AWS Serverless Application Repository Pengembang*. Untuk mempublikasikan aplikasi Anda sendiri ke AWS Serverless Application Repository, lihat [Menerbitkan Aplikasi Menggunakan AWS SAM CLI di Panduan AWS Serverless Application Model](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-publishing-applications.html) *Pengembang*.

## Langkah 1: Buat file buildspec.yml.
<a name="serverlessrepo-auto-publish-create-buildspec"></a>

Buat `buildspec.yml` file dengan konten berikut, dan tambahkan ke repositori aplikasi tanpa server Anda. GitHub Ganti *template.yml* dengan AWS SAM template aplikasi Anda dan *bucketname* dengan bucket S3 tempat aplikasi paket Anda disimpan.

```
version: 0.2
phases:
  install:
    runtime-versions:
        python: 3.8
  build:
    commands:
      - sam package --template-file template.yml --s3-bucket bucketname --output-template-file packaged-template.yml
artifacts:
  files:
    - packaged-template.yml
```

## Langkah 2: Buat dan konfigurasikan pipeline Anda
<a name="serverlessrepo-auto-publish-create-pipeline"></a>

Ikuti langkah-langkah ini untuk membuat pipeline Anda di Wilayah AWS tempat Anda ingin mempublikasikan aplikasi tanpa server Anda.

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

1. Jika perlu, beralihlah ke Wilayah AWS tempat Anda ingin mempublikasikan aplikasi tanpa server Anda.

1. Pada halaman **Selamat Datang**, halaman **Memulai**, atau halaman **Pipelines**, pilih **Buat pipeline**.

1. Pada **Langkah 1: Pilih halaman opsi pembuatan**, di bawah **Opsi pembuatan**, pilih opsi **Build custom pipeline**. Pilih **Berikutnya**.

1. Pilih **Buat pipeline**. Pada **Langkah 2: Pilih halaman pengaturan pipeline**, dalam **nama Pipeline**, masukkan nama untuk pipeline Anda.

1. Dalam **tipe Pipeline**, pilih **V2**. Untuk informasi selengkapnya, lihat [Jenis pipa](pipeline-types.md). Pilih **Berikutnya**.

1. Dalam **peran Layanan**, pilih **Peran layanan baru** CodePipeline untuk memungkinkan membuat peran layanan di IAM.

1. **Biarkan pengaturan di bawah **Pengaturan lanjutan** pada defaultnya, lalu pilih Berikutnya.**

1. Pada **Langkah 3: Tambahkan halaman tahap sumber**, di **penyedia Sumber**, pilih **GitHub**.

1. Di bawah **Koneksi**, pilih koneksi yang ada atau buat yang baru. Untuk membuat atau mengelola koneksi untuk tindakan GitHub sumber Anda, lihat[GitHub koneksi](connections-github.md).

1. Di **Repositori, pilih repositori** GitHub sumber Anda.

1. Di **Cabang**, pilih GitHub cabang Anda.

1. Biarkan default yang tersisa untuk tindakan sumber. Pilih **Berikutnya**.

1. Pada **Langkah 4: Tambahkan halaman tahap build**, tambahkan tahap build:

   1. Di **Penyedia pembangunan**, pilih **AWS CodeBuild**. Untuk **Wilayah**, gunakan Wilayah pipa.

   1. Pilih **Buat proyek**.

   1. Di **Nama proyek**, masukkan nama untuk proyek pembangunan ini.

   1. Di **Citra lingkungan**, pilih **Citra terkelola**. Untuk **Sistem operasi**, pilih **Ubuntu**.

   1. Untuk **versi **Runtime** dan Runtime**, pilih runtime dan versi yang diperlukan untuk aplikasi tanpa server Anda.

   1. Untuk **Peran layanan**, pilih **Peran layanan baru**.

   1. Untuk **spesifikasi Build**, pilih **Gunakan file buildspec**.

   1. Pilih **Lanjutkan ke CodePipeline**. Ini membuka CodePipeline konsol dan membuat CodeBuild proyek yang menggunakan `buildspec.yml` di repositori Anda untuk konfigurasi. Proyek build menggunakan peran layanan untuk mengelola Layanan AWS izin. Langkah ini mungkin memakan waktu beberapa menit.

   1. Pilih **Berikutnya**.

1. Pada **Langkah 5: Tambahkan tahap pengujian**, pilih **Lewati tahap pengujian**, lalu terima pesan peringatan dengan memilih **Lewati** lagi. 

   Pilih **Berikutnya**.

1. Pada **Langkah 6: Tambahkan halaman tahap penerapan**, pilih **Lewati tahap penerapan**, lalu terima pesan peringatan dengan memilih **Lewati** lagi. Pilih **Berikutnya**.

1. Pada **Langkah 7: Tinjau**, pilih **Buat pipeline**. Anda harus melihat diagram yang menunjukkan tahapan.

1. Berikan izin peran CodeBuild layanan untuk mengakses bucket S3 tempat aplikasi paket Anda disimpan.

   1. Pada tahap **Build** pipeline baru Anda, pilih **CodeBuild**.

   1. Pilih tab **Build details**.

   1. Di **Lingkungan**, pilih peran CodeBuild layanan untuk membuka konsol IAM.

   1. Perluas pilihan untuk`CodeBuildBasePolicy`, dan pilih **Edit kebijakan**.

   1. Pilih**JSON**.

   1. Tambahkan pernyataan kebijakan baru dengan konten berikut. Pernyataan ini memungkinkan CodeBuild untuk memasukkan objek ke dalam bucket S3 tempat aplikasi paket Anda disimpan. Ganti *bucketname* dengan nama bucket S3 Anda.

      ```
              {
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:s3:::bucketname/*"
                  ],
                  "Action": [
                      "s3:PutObject"
                  ]
              }
      ```

   1. Pilih **Tinjau kebijakan**.

   1. Pilih **Simpan perubahan**.

## Langkah 3: Menyebarkan aplikasi publikasi
<a name="serverlessrepo-auto-publish-deploy-app"></a>

Ikuti langkah-langkah ini untuk menyebarkan aplikasi yang berisi fungsi Lambda yang melakukan publikasi ke. AWS Serverless Application Repository Aplikasi ini adalah **aws-serverless-codepipeline-serverlessrepo-publish**.

**catatan**  
Anda harus menerapkan aplikasi yang Wilayah AWS sama dengan pipeline Anda.

1. Buka halaman [aplikasi](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~aws-serverless-codepipeline-serverlessrepo-publish ), dan pilih **Deploy**.

1. Pilih**Saya mengakui bahwa aplikasi ini menciptakan IAM role kustom**. 

1. Pilih **Deploy**.

1. Pilih **View CloudFormation Stack** untuk membuka CloudFormation konsol.

1. Perluas bagian **Sumber Daya**. Anda lihat **ServerlessRepoPublish**, yang merupakan tipe **AWS::Lambda::Function**. Catat ID fisik sumber daya ini untuk langkah selanjutnya. Anda menggunakan ID fisik ini saat membuat tindakan publikasi baru di CodePipeline.

## Langkah 4: Buat tindakan publikasi
<a name="serverlessrepo-auto-publish-create-action"></a>

Ikuti langkah-langkah ini untuk membuat tindakan publikasi di pipeline Anda.

1. Buka CodePipeline konsol di [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. Di bagian navigasi kiri, pilih pipeline yang ingin Anda edit.

1. Pilih **Edit**.

1. Setelah tahap terakhir dari pipeline Anda saat ini, pilih **\$1 Tambah tahap**. Di **Nama panggung** masukkan nama, seperti**Publish**, dan pilih **Tambah tahap**.

1. Di tahap baru, pilih **\$1 Tambahkan grup tindakan**.

1. Masukkan nama tindakan. Dari **penyedia Action**, di **Invoke**, pilih **AWS Lambda**.

1. Dari **artefak Input**, pilih **BuildArtifact**.

1. Dari **nama Fungsi**, pilih ID fisik dari fungsi Lambda yang Anda catat di langkah sebelumnya.

1. Pilih **Simpan** untuk tindakan.

1. Pilih **Selesai** untuk panggung.

1. Di kanan atas, pilih **Simpan**.

1. Untuk memverifikasi pipeline Anda, buat perubahan pada aplikasi Anda di GitHub. Misalnya, ubah deskripsi aplikasi di `Metadata` bagian file AWS SAM template Anda. Lakukan perubahan dan dorong ke GitHub cabang Anda. Ini memicu pipeline Anda untuk berjalan. Ketika pipeline selesai, periksa apakah aplikasi Anda telah diperbarui dengan perubahan Anda di file [AWS Serverless Application Repository](https://console.aws.amazon.com/serverlessrepo/home).