

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

# Menggunakan OpsWorks Stacks dengan Layanan AWS Lainnya
<a name="other-services"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Anda dapat memiliki server aplikasi yang berjalan di tumpukan OpsWorks Stacks menggunakan berbagai layanan AWS yang tidak terintegrasi langsung dengan OpsWorks Stacks. Misalnya, Anda dapat meminta server aplikasi Anda menggunakan Amazon RDS sebagai database back-end. Anda dapat mengakses layanan tersebut dengan menggunakan pola umum berikut:

1. Buat dan konfigurasikan layanan AWS dengan menggunakan konsol AWS, API, atau CLI dan catat data konfigurasi yang diperlukan aplikasi untuk mengakses layanan, seperti nama host atau port.

1. Buat satu atau lebih resep khusus untuk mengonfigurasi aplikasi sehingga dapat mengakses layanan.

   Resep memperoleh data konfigurasi dari [konfigurasi tumpukan dan atribut JSON penerapan](workingcookbook-json.md) yang Anda tentukan dengan JSON kustom sebelum menjalankan resep.

1. Tetapkan resep kustom ke peristiwa siklus hidup Deploy pada lapisan server aplikasi.

1. Buat objek JSON kustom yang menetapkan nilai yang sesuai ke atribut data konfigurasi dan menambahkannya ke konfigurasi tumpukan dan penyebaran JSON Anda.

1. Menyebarkan aplikasi ke tumpukan. 

   Deployment menjalankan resep kustom, yang menggunakan nilai data konfigurasi yang Anda tentukan di JSON kustom untuk mengonfigurasi aplikasi sehingga dapat mengakses layanan.

Bagian ini menjelaskan cara agar server aplikasi OpsWorks Stacks mengakses berbagai layanan AWS. Ini mengasumsikan bahwa Anda sudah terbiasa dengan buku masak Chef dan bagaimana resep dapat menggunakan atribut tumpukan dan konfigurasi JSON untuk mengonfigurasi aplikasi, biasanya dengan membuat file konfigurasi. Jika tidak, Anda harus terlebih dahulu membaca [Buku Masak dan Resep](workingcookbook.md) dan[Menyesuaikan Tumpukan OpsWorks](customizing.md).

**Topics**
+ [Menggunakan Back-end Data Store](customizing-rds.md)
+ [Menggunakan ElastiCache Redis sebagai Toko Nilai Kunci-Dalam Memori](other-services-redis.md)
+ [Menggunakan Bucket Amazon S3](gettingstarted.walkthrough.photoapp.md)
+ [Menggunakan AWS CodePipeline dengan OpsWorks Stacks](other-services-cp.md)

# Menggunakan Back-end Data Store
<a name="customizing-rds"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Tumpukan server aplikasi biasanya mencakup server database untuk menyediakan penyimpanan data back-end. OpsWorks Stacks menyediakan dukungan terintegrasi untuk server MySQL melalui lapisan [MySQL](workinglayers-db-mysql.md) dan untuk beberapa jenis server database melalui lapisan Amazon Relational Database [Service](workinglayers-db-rds.md) (Amazon RDS). Namun, Anda dapat dengan mudah menyesuaikan tumpukan agar server aplikasi menggunakan server database lain seperti Amazon DynamoDB atau MongoDB. Topik ini menjelaskan prosedur dasar untuk menghubungkan server aplikasi ke server database AWS. Ini menggunakan tumpukan dan aplikasi dari [Memulai dengan Chef 11 Linux Stacks](gettingstarted.md) untuk menunjukkan bagaimana menghubungkan server aplikasi PHP secara manual ke database RDS. Meskipun contoh didasarkan pada tumpukan Linux, prinsip-prinsip dasar juga berlaku untuk tumpukan Windows. Untuk contoh cara menggabungkan server database MongoDB ke dalam tumpukan, lihat [Menyebarkan](https://aws.amazon.com/blogs/devops/deploying-mongodb-with-opsworks/) MongoDB dengan. OpsWorks

**catatan**  
Topik ini menggunakan Amazon RDS sebagai contoh yang nyaman. Namun, jika Anda ingin menggunakan database Amazon RDS dengan tumpukan Anda, jauh lebih mudah untuk menggunakan lapisan Amazon RDS. 

**Topics**
+ [Cara Mengatur Koneksi Database](customizing-rds-setup.md)
+ [Cara Menghubungkan Instans Server Aplikasi ke Amazon RDS](customizing-rds-connect.md)

# Cara Mengatur Koneksi Database
<a name="customizing-rds-setup"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Anda mengatur koneksi antara server aplikasi dan basis data back-endnya dengan menggunakan resep khusus. Resep mengkonfigurasi server aplikasi sesuai kebutuhan, biasanya dengan membuat file konfigurasi. Resep mendapatkan data koneksi seperti nama host dan database dari sekumpulan atribut dalam [konfigurasi tumpukan dan atribut penerapan](workingcookbook-json.md) yang diinstal OpsWorks Stacks pada setiap instance.

Misalnya, Langkah 2 [Memulai dengan Chef 11 Linux Stacks](gettingstarted.md) didasarkan pada tumpukan bernama MyStack dengan dua lapisan, PHP App Server dan MySQL, masing-masing dengan satu instance. Anda menerapkan aplikasi bernama Simple PHPApp ke instance PHP App Server yang menggunakan database pada instance MySQL sebagai penyimpanan data back-end. Saat Anda menerapkan aplikasi, OpsWorks Stacks menginstal konfigurasi tumpukan dan atribut penerapan yang berisi informasi koneksi database. Contoh berikut menunjukkan atribut koneksi database, direpresentasikan sebagai JSON:

```
{
  ...
  "deploy": {
    "simplephpapp": {
      ...
      "database": {
        "reconnect": true,
        "password": null,
        "username": "root",
        "host": null,
        "database": "simplephpapp"
        ...
      },
      ...
    }
  }
}
```

Nilai atribut disediakan oleh OpsWorks Stacks, dan dihasilkan atau berdasarkan informasi yang diberikan pengguna.

[Untuk memungkinkan Simple PHPApp mengakses penyimpanan data, Anda harus mengatur koneksi antara server aplikasi PHP dan database MySQL dengan menetapkan resep kustom `appsetup.rb` bernama ke peristiwa siklus hidup Deploy lapisan PHP App Server.](workingcookbook-events.md) Saat Anda menerapkan SimplePHPApp, OpsWorks Stacks berjalan`appsetup.rb`, yang membuat file konfigurasi bernama `db-connect.php` yang mengatur koneksi, seperti yang ditunjukkan dalam kutipan berikut.

```
node[:deploy].each do |app_name, deploy|
  ...
  template "#{deploy[:deploy_to]}/current/db-connect.php" do
    source "db-connect.php.erb"
    mode 0660
    group deploy[:group]

    if platform?("ubuntu")
      owner "www-data"
    elsif platform?("amazon")   
      owner "apache"
    end

    variables(
      :host =>     (deploy[:database][:host] rescue nil),
      :user =>     (deploy[:database][:username] rescue nil),
      :password => (deploy[:database][:password] rescue nil),
      :db =>       (deploy[:database][:database] rescue nil),
      :table =>    (node[:phpapp][:dbtable] rescue nil)
    )
    ...
  end
end
```

Variabel yang mencirikan koneksi—`host`,`user`, dan sebagainya—ditetapkan nilai yang sesuai dari atribut JSON [deploy](workingcookbook-json.md#workingcookbook-json-deploy). `[:deploy][:app_name][:database]` Untuk mempermudah, contoh mengasumsikan bahwa Anda telah membuat tabel bernama`urler`, sehingga nama tabel diwakili oleh `[:phpapp][:dbtable]` dalam file atribut buku masak.

Resep ini sebenarnya dapat menghubungkan server aplikasi PHP ke server database MySQL manapun, bukan hanya anggota lapisan MySQL. [Untuk menggunakan server MySQL yang berbeda, Anda hanya perlu mengatur atribut ke nilai `[:database]` yang sesuai untuk server Anda, yang dapat Anda lakukan dengan menggunakan JSON kustom.](workingstacks-json.md) OpsWorks Tumpukan kemudian menggabungkan atribut dan nilai tersebut ke dalam konfigurasi tumpukan dan atribut penerapan dan `appsetup.rb` menggunakannya untuk membuat template yang mengatur koneksi. Untuk informasi selengkapnya tentang penggantian konfigurasi tumpukan dan penerapan JSON, lihat. [Mengesampingkan Atribut](workingcookbook-attributes.md)

# Cara Menghubungkan Instans Server Aplikasi ke Amazon RDS
<a name="customizing-rds-connect"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Bagian ini menjelaskan cara menyesuaikan MyStack dari [Memulai dengan Chef 11 Linux Stacks](gettingstarted.md) agar server aplikasi PHP terhubung ke instance RDS.

**Topics**
+ [Buat Database MySQL Amazon RDS](customizing-rds-connect-create.md)
+ [Sesuaikan Stack untuk Connect ke Database RDS](customizing-rds-connect-customize.md)

# Buat Database MySQL Amazon RDS
<a name="customizing-rds-connect-create"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Sekarang Anda siap untuk membuat database RDS untuk contoh menggunakan Amazon RDS Console Launch DB Instance Wizard. Prosedur berikut adalah ringkasan singkat dari detail penting. Untuk penjelasan rinci tentang cara membuat database, lihat [Memulai Amazon RDS.](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.html)

**Untuk membuat database Amazon RDS**

1. Jika ini adalah pertama kalinya Anda membuat database RDS, klik **Mulai Sekarang**. Jika tidak, klik **Dasbor RDS** di panel navigasi, lalu klik **Luncurkan Instans DB**.

1. Pilih **MySQL Community** Edition sebagai instance DB.

1. Untuk **Apakah Anda berencana menggunakan database ini untuk tujuan produksi?** pilih **Tidak, contoh ini...** , yang cukup untuk contoh. Untuk penggunaan produksi, Anda mungkin ingin memilih **Ya, gunakan Penyebaran Multi-AZ**... . Klik **Langkah Selanjutnya**.

1. Pada halaman **Tentukan Detail DB**, tentukan pengaturan berikut:
   + **Kelas Instans DB**: **db.t2.micro**
   + **Penerapan Multi-AZ****: Tidak**
   + **Penyimpanan yang Dialokasikan**: GB **5**
   + **Pengidentifikasi Instans DB**: **rdsexample**
   + **Nama Pengguna Master**: **opsworksuser**
   + **Master Password**: Tentukan kata sandi yang sesuai dan rekam untuk digunakan nanti.

   Terima pengaturan default untuk opsi lain dan klik **Langkah Berikutnya**.

1. Pada halaman **Konfigurasi Pengaturan Lanjut**, tentukan pengaturan berikut:
   + Di bagian **Jaringan & Keamanan**, untuk **Grup Keamanan VPC, pilih **phpsecgroup** (VPC)**
   + Di bagian **Opsi Database**, untuk **Nama Database**, ketik **rdsexampledb**
   + Di bagian **Backup**, atur **Periode Retensi Cadangan** ke **0** untuk keperluan panduan ini.

   Terima pengaturan default untuk opsi lain dan klik **Luncurkan Instans DB**.

1. Pilih **Lihat Instans DB Anda** untuk melihat daftar instans DB.

1. Pilih contoh **rdsexample** dalam daftar dan klik panah untuk mengungkapkan titik akhir instance dan detail lainnya. Catat titik akhir untuk digunakan nanti. Ini akan menjadi sesuatu seperti`rdsexample.c6c8mntzhgv0.us-west-2.rds.amazonaws.com:3306`. Cukup catat nama DNS; Anda tidak memerlukan nomor port.

1. Gunakan alat seperti MySQL Workbench untuk membuat tabel `urler` bernama dalam database dengan menggunakan perintah SQL `rdsexampledb` berikut:

   ```
   CREATE TABLE urler(id INT UNSIGNED NOT NULL AUTO_INCREMENT,author VARCHAR(63) NOT NULL,message TEXT,PRIMARY KEY (id))
   ```

# Sesuaikan Stack untuk Connect ke Database RDS
<a name="customizing-rds-connect-customize"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Setelah Anda [membuat instance RDS](customizing-rds-connect-create.md) untuk digunakan sebagai database back-end untuk server aplikasi PHP, Anda dapat menyesuaikan dari. MyStack [Memulai dengan Chef 11 Linux Stacks](gettingstarted.md)

**Untuk menghubungkan PHP App Server ke database RDS**

1. Buka konsol OpsWorks Stacks dan buat tumpukan dengan lapisan PHP App Server yang berisi satu instance dan gunakan SimplePHPApp, seperti yang dijelaskan dalam. [Memulai dengan Chef 11 Linux Stacks](gettingstarted.md) Tumpukan ini menggunakan version1 dari SimplePHPApp, yang tidak menggunakan koneksi database. 

1. [Perbarui konfigurasi tumpukan](workingstacks-edit.md) untuk menggunakan buku masak khusus yang menyertakan `appsetup.rb` resep, serta file template dan atribut terkait.

   1. Atur **Gunakan buku masak Chef khusus** ke **Ya**.

   1. Atur **jenis Repositori** ke **Git dan URL** **Repositori** ke. `git://github.com/amazonwebservices/opsworks-example-cookbooks.git`

1. Tambahkan yang berikut ini ke kotak **JSON Custom Chef** tumpukan untuk menetapkan data koneksi RDS ke `[:database]` atribut yang `appsetup.rb` digunakan untuk membuat file konfigurasi.

   ```
   {
     "deploy": {
       "simplephpapp": {
         "database": {
           "username": "opsworksuser",
           "password": "your_password",
           "database": "rdsexampledb",
           "host": "rds_endpoint",
           "adapter": "mysql"
         }
       }
     }
   }
   ```

   Gunakan nilai atribut berikut:
   + **username**: Nama pengguna master yang Anda tentukan saat Anda membuat instance RDS.

     Contoh ini menggunakan `opsworksuser`.
   + **password**: Kata sandi utama yang Anda tentukan saat Anda membuat instance RDS.

     Isi kata sandi yang Anda tentukan.
   + **database**: Database yang Anda buat ketika Anda membuat instance RDS.

     Contoh ini menggunakan `rdsexampledb`.
   + **host**: Titik akhir instans RDS, yang Anda dapatkan dari konsol RDS saat Anda membuat instance di bagian sebelumnya. Jangan sertakan nomor port.
   + **adaptor**: Adaptor.

     Contoh RDS untuk contoh ini menggunakan MySQL, **sehingga** adaptor diatur ke. `mysql` Berbeda dengan atribut lainnya, **adaptor** tidak digunakan oleh`appsetup.rb`. Ini malah digunakan oleh resep Konfigurasi bawaan lapisan PHP App Server untuk membuat file konfigurasi yang berbeda.

1. [Edit PHPApp konfigurasi Simple](workingapps-editing.md) untuk menentukan versi Simple PHPApp yang menggunakan database back-end, sebagai berikut:
   + **Root dokumen**: Setel opsi ini ke`web`.
   + **Cabang/Revisi**: Setel opsi ini ke. `version2`

   Biarkan opsi yang tersisa tidak berubah.

1. [Edit lapisan PHP App Server](workinglayers-basics-edit.md) untuk mengatur koneksi database dengan `phpapp::appsetup` menambahkan resep Deploy layer.

1. [Menyebarkan PHPApp versi Sederhana yang baru](workingapps-deploying.md).

1. Ketika Simple PHPApp digunakan, jalankan aplikasi dengan membuka halaman **Instances** dan mengklik alamat IP publik php-app1 instans. Anda akan melihat halaman berikut di browser Anda, yang memungkinkan Anda memasukkan teks dan menyimpannya di database.  
![\[Text input field labeled "Your Thoughts" with a "Share Your Thought" button.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/gsb7.png)

**catatan**  
Jika tumpukan Anda memiliki lapisan MySQL OpsWorks , Stacks secara otomatis menetapkan data koneksi yang sesuai ke atribut. `[:database]` Namun, jika Anda menetapkan JSON kustom ke tumpukan yang mendefinisikan nilai yang berbeda, mereka akan mengganti `[:database]` nilai default. Karena `[:deploy]` atribut diinstal pada setiap contoh, resep apa pun yang bergantung pada `[:database]` atribut akan menggunakan data koneksi khusus, bukan data lapisan MySQL untuk. Jika Anda ingin lapisan server aplikasi tertentu menggunakan data koneksi kustom, tetapkan JSON kustom ke acara Deploy layer, dan batasi penyebaran itu ke lapisan itu. Untuk informasi selengkapnya tentang cara menggunakan atribut penerapan, lihat[Menerapkan Aplikasi](workingapps-deploying.md). Untuk informasi selengkapnya tentang mengganti atribut bawaan OpsWorks Stacks, lihat. [Mengesampingkan Atribut](workingcookbook-attributes.md)

# Menggunakan ElastiCache Redis sebagai Toko Nilai Kunci-Dalam Memori
<a name="other-services-redis"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

**catatan**  
Topik ini didasarkan pada tumpukan Linux, tetapi tumpukan Windows juga dapat menggunakan Amazon ElastiCache (ElastiCache). Untuk contoh bagaimana cara menggunakan ElastiCache instance Windows, lihat [ElastiCache sebagai ASP.NET Session Store](https://aws.amazon.com/blogs/developer/elasticache-as-an-asp-net-session-store/).

Anda sering dapat meningkatkan kinerja server aplikasi dengan menggunakan server caching untuk menyediakan penyimpanan nilai kunci dalam memori untuk item kecil data seperti string. Amazon ElastiCache adalah layanan AWS yang memudahkan untuk menyediakan dukungan caching untuk server aplikasi Anda, menggunakan mesin caching [Memcached](http://memcached.org/) atau [Redis](https://redis.io). OpsWorks Stacks menyediakan dukungan bawaan untuk [Memcached](workinglayers-mem.md). Namun, jika Redis lebih sesuai dengan kebutuhan Anda, Anda dapat menyesuaikan tumpukan Anda sehingga server aplikasi Anda menggunakan ElastiCache Redis.

Topik ini memandu Anda melalui proses dasar penyediaan dukungan caching ElastiCache Redis untuk tumpukan Linux, menggunakan server aplikasi Rails sebagai contoh. Ini mengasumsikan bahwa Anda sudah memiliki aplikasi Ruby on Rails yang sesuai. Untuk informasi lebih lanjut tentang ElastiCache, lihat [Apa itu Amazon ElastiCache?](https://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/WhatIs.html) .

**Topics**
+ [Langkah 1: Buat ElastiCache Redis Cluster](other-services-redis-cluster.md)
+ [Langkah 2: Siapkan Rails Stack](other-services-redis-stack.md)
+ [Langkah 3: Membuat dan Menyebarkan Buku Masak Kustom](other-services-redis-cookbook.md)
+ [Langkah 4: Tetapkan Resep ke Acara LifeCycle](other-services-redis-event.md)
+ [Langkah 5: Tambahkan Informasi Akses ke Konfigurasi Stack JSON](other-services-redis-json.md)
+ [Langkah 6: Terapkan dan jalankan Aplikasi](other-services-redis-app.md)

# Langkah 1: Buat ElastiCache Redis Cluster
<a name="other-services-redis-cluster"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Anda harus terlebih dahulu membuat klaster Amazon ElastiCache Redis dengan menggunakan ElastiCache konsol, API, atau CLI. Berikut ini menjelaskan cara menggunakan konsol untuk membuat cluster.

**Untuk membuat cluster ElastiCache Redis**

1. Buka [ElastiCachekonsol](https://console.aws.amazon.com/elasticache/) dan klik **Luncurkan Cache Cluster** untuk memulai wizard Cache Cluster.

1. Pada halaman Cache Cluster Details, lakukan hal berikut:
   + Tetapkan **Nama ke nama** server cache Anda.

     Contoh ini menggunakan OpsWorks -Redis.
   + Atur **Engine** ke **Redis**.
   + Setel **Topik untuk Pemberitahuan SNS** untuk **Menonaktifkan Pemberitahuan**.
   + **Terima default untuk pengaturan lain dan klik Lanjutkan.**  
![\[Cache Klaster Wizard interface for configuring Redis klaster details and settings.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/elasticache-wizard-1.png)

1. **Pada halaman **Konfigurasi Tambahan**, terima default dan klik Lanjutkan.**  
![\[Cache Klaster Wizard configuration page with security group, parameter group, and maintenance window options.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/elasticache-wizard-2.png)

1. Klik **Luncurkan Cache Cluster** untuk membuat cluster.
**penting**  
Grup keamanan cache default cukup untuk contoh ini, tetapi untuk penggunaan produksi Anda harus membuat satu yang sesuai untuk lingkungan Anda. Untuk informasi selengkapnya, lihat [Mengelola Grup Keamanan Cache](https://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/ManagingSecurityGroups.html).

1. Setelah cluster dimulai, klik nama untuk membuka halaman detail dan klik tab **Nodes**. Catat nilai **Port** dan **Endpoint** cluster untuk digunakan nanti.  
![\[Cache klaster details showing node status, creation date, port, and endpoint for a Redis instance.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/elasticache-wizard-3.png)

# Langkah 2: Siapkan Rails Stack
<a name="other-services-redis-stack"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Selain membuat tumpukan yang mendukung lapisan Rails App Server, Anda juga harus mengkonfigurasi grup keamanan lapisan sehingga server Rails dapat berkomunikasi dengan baik dengan server Redis.

**Untuk mengatur tumpukan**

1. Buat tumpukan baru—dinamai **RedisStack** untuk contoh ini—dan tambahkan layer Rails App Server. Anda dapat menggunakan pengaturan default untuk keduanya. Untuk informasi selengkapnya, lihat [Buat Stack Baru](workingstacks-creating.md) dan [Membuat OpsWorks Layer](workinglayers-basics-create.md).

1. Pada halaman **Layers**, untuk Rails App Server, klik **Keamanan** dan kemudian klik **Edit**.

1. Buka bagian **Grup Keamanan** dan tambahkan grup keamanan ElastiCache klaster ke **Grup tambahan**. Untuk contoh ini, pilih grup keamanan **default**, klik **\$1** untuk menambahkannya ke layer, dan klik **Simpan** untuk menyimpan konfigurasi baru.  
![\[Security Groups section showing default and additional groups with a dropdown menu of AWS OpsWorks options.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/redis-security.png)

1. Tambahkan instance ke layer Rails App Server dan mulai. Untuk informasi selengkapnya tentang cara menambahkan dan memulai instance, lihat[Menambahkan Instance ke Layer](workinginstances-add.md).

# Langkah 3: Membuat dan Menyebarkan Buku Masak Kustom
<a name="other-services-redis-cookbook"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Saat ini, tumpukan belum cukup fungsional; Anda perlu mengaktifkan aplikasi Anda untuk mengakses server Redis. Pendekatan yang paling fleksibel adalah menempatkan file YAMM dengan informasi akses di `config` subfolder aplikasi. Aplikasi kemudian dapat memperoleh informasi dari file. Dengan menggunakan pendekatan ini, Anda dapat mengubah informasi koneksi tanpa menulis ulang dan memindahkan aplikasi. Untuk contoh ini, file harus diberi nama `redis.yml` dan berisi nama host ElastiCache cluster dan port, sebagai berikut:

```
host: cache-cluster-hostname
port: cache-cluster-port
```

Anda dapat menyalin file ini secara manual ke server Anda, tetapi pendekatan yang lebih baik adalah menerapkan *resep* Chef untuk menghasilkan file, dan meminta OpsWorks Stacks menjalankan resep di setiap server. Resep koki adalah aplikasi Ruby khusus yang digunakan OpsWorks Stacks untuk melakukan tugas pada instance seperti menginstal paket atau membuat file konfigurasi. Resep dikemas dalam *buku masak*, yang dapat berisi beberapa resep dan file terkait seperti templat untuk file konfigurasi. Buku masak ditempatkan di repositori, seperti GitHub, dan harus memiliki struktur direktori standar. Jika Anda belum memiliki repositori buku masak khusus, lihat [Repositori Buku Masak](workingcookbook-installingcustom-repo.md) untuk informasi tentang cara mengaturnya.

Untuk contoh ini, tambahkan buku masak bernama `redis-config` ke repositori buku masak Anda dengan konten berikut:

```
my_cookbook_repository
  redis-config
    recipes
      generate.rb
    templates
      default
        redis.yml.erb
```

`recipes`Folder berisi resep bernama`generate.rb`, yang menghasilkan file konfigurasi aplikasi dari`redis.yml.erb`, sebagai berikut:

```
node[:deploy].each do |app_name, deploy_config|
  # determine root folder of new app deployment
  app_root = "#{deploy_config[:deploy_to]}/current"

  # use template 'redis.yml.erb' to generate 'config/redis.yml'
  template "#{app_root}/config/redis.yml" do
    source "redis.yml.erb"
    cookbook "redis-config"

    # set mode, group and owner of generated file
    mode "0660"
    group deploy_config[:group]
    owner deploy_config[:user]

    # define variable “@redis” to be used in the ERB template
    variables(
      :redis => deploy_config[:redis] || {}
    )

    # only generate a file if there is Redis configuration
    not_if do
      deploy_config[:redis].blank?
    end
  end
end
```

Resepnya bergantung pada data dari [konfigurasi tumpukan OpsWorks Stacks dan objek JSON penerapan](workingcookbook-json.md), yang diinstal pada setiap instance dan berisi informasi terperinci tentang tumpukan dan aplikasi apa pun yang diterapkan. `deploy`Node objek memiliki struktur sebagai berikut:

```
{
   ...
  "deploy": {
    "app1": {
      "application" : "short_name",
      ...
    }
    "app2": {
      ...
    }
    ...
  }
}
```

Node deploy berisi satu set objek JSON yang disematkan, satu untuk setiap aplikasi yang di-deploy, yang diberi nama dengan nama pendek aplikasi. Setiap objek aplikasi berisi sekumpulan atribut yang menentukan konfigurasi aplikasi, seperti root dokumen dan jenis aplikasi. Untuk daftar atribut penerapan, lihat[menyebarkan Atribut](attributes-json-deploy.md). Resep dapat menggunakan sintaks atribut Chef untuk mewakili konfigurasi tumpukan dan penerapan nilai JSON. Misalnya, `[:deploy][:app1][:application]` mewakili nama pendek aplikasi app1. 

Untuk setiap aplikasi di`[:deploy]`, resep mengeksekusi blok kode terkait, yang `deploy_config` mewakili atribut app. Resep pertama disetel `app_root` ke direktori root aplikasi,`[:deploy][:app_name][:deploy_to]/current`. Kemudian menggunakan [sumber daya template](https://docs.chef.io/chef/resources.html#template) Chef untuk menghasilkan file konfigurasi dari `redis.yml.erb` dan menempatkannya di file`app_root/config`.

 File konfigurasi biasanya dibuat dari templat, dengan banyak jika tidak sebagian besar pengaturan ditentukan oleh *atribut* Chef. Dengan atribut Anda dapat mengubah pengaturan menggunakan JSON kustom, seperti yang dijelaskan nanti, alih-alih menulis ulang file template.Template berisi yang berikut`redis.yml.erb`:

```
host: <%= @redis[:host] %>
port: <%= @redis[:port] || 6379 %>
```

Elemen <%... %> adalah placeholder yang mewakili nilai atribut.
+ `<%= @redis[:host] %>`mewakili nilai`redis[:host]`, yang merupakan nama host cluster cache.
+ `<%= @redis[:port] || 6379 %>`mewakili nilai `redis[:port]` atau, jika atribut itu tidak didefinisikan, nilai port default, 6379.

Sumber `template` daya berfungsi sebagai berikut:
+ `source`dan `cookbook` tentukan nama template dan buku masak, masing-masing.
+ `mode`,`group`, dan `owner` berikan file konfigurasi hak akses yang sama dengan aplikasi.
+ `variables`Bagian ini menetapkan `@redis` variabel yang digunakan dalam template, ke nilai `[:redis]` atribut aplikasi.

  Nilai `[:redis]` atribut ditetapkan dengan menggunakan JSON kustom, seperti yang dijelaskan nanti; ini bukan salah satu atribut aplikasi standar.
+ `not_if`Arahan memastikan bahwa resep tidak menghasilkan file konfigurasi jika sudah ada.

Setelah Anda menulis buku masak, Anda harus menerapkannya ke cache buku masak masing-masing instance. Operasi ini tidak menjalankan resep; itu hanya menginstal buku masak baru pada instance tumpukan. Anda biasanya menjalankan resep dengan menetapkannya ke peristiwa siklus hidup lapisan, seperti yang dijelaskan nanti.

**Untuk menyebarkan buku masak kustom Anda**

1. Pada halaman OpsWorks Stacks **Stack**, klik **Stack Settings** dan kemudian **Edit**.

1. Di bagian **Manajemen Konfigurasi**, atur **Gunakan buku masak Chef kustom** ke **Ya**, masukkan informasi repositori buku masak, dan klik **Simpan** untuk memperbarui konfigurasi tumpukan.  
![\[Configuration form for custom Chef cookbooks with repository details and options.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/redis_walkthrough_cookbook.png)

1. Pada halaman **Stack**, klik **Run Command, pilih perintah** **Update Custom Cookbooks** stack, dan klik **Update Custom Cookbooks** untuk menginstal buku masak baru di cache buku masak instance.   
![\[Run Command interface showing Update Custom Cookbooks option and instance selection for Rails App Server.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/redis_walkthrough_command.png)

Jika Anda memodifikasi buku masak Anda, jalankan **Perbarui Buku Masak Kustom** lagi untuk menginstal versi yang diperbarui. Untuk informasi lebih lanjut tentang prosedur ini, lihat[Memasang Buku Masak Kustom](workingcookbook-installingcustom-enable.md).

# Langkah 4: Tetapkan Resep ke Acara LifeCycle
<a name="other-services-redis-event"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Anda dapat menjalankan resep khusus [secara manual](workingcookbook-manual.md), tetapi pendekatan terbaik biasanya adalah memiliki OpsWorks Stacks menjalankannya secara otomatis. Setiap lapisan memiliki satu set resep bawaan yang ditetapkan masing-masing dari lima [peristiwa siklus hidup](workingcookbook-events.md) —Setup, Configure, Deploy, Undeploy, dan Shutdown. Setiap kali peristiwa terjadi untuk sebuah instance, OpsWorks Stacks menjalankan resep terkait untuk setiap lapisan instance, yang menangani tugas yang sesuai. Misalnya, saat instance selesai booting, OpsWorks Stacks memicu peristiwa Penyiapan. Acara ini menjalankan resep Setup layer terkait, yang biasanya menangani tugas-tugas seperti menginstal dan mengkonfigurasi paket.

Anda dapat meminta OpsWorks Stacks menjalankan resep khusus pada instance layer dengan menetapkan resep ke peristiwa siklus hidup yang sesuai. Untuk contoh ini, Anda harus menetapkan `generate.rb` resep ke event Deploy layer Rails App Server. OpsWorks Stacks kemudian akan menjalankannya pada instance layer selama startup, setelah resep Setup selesai, dan setiap kali Anda menerapkan aplikasi. Untuk informasi selengkapnya, lihat [Resep Menjalankan Secara Otomatis](workingcookbook-assigningcustom.md).

**Untuk menetapkan resep ke event Deploy layer Rails App Server**

1. **Pada halaman OpsWorks Stacks **Layers**, untuk Rails App Server, klik **Resep** dan kemudian klik Edit..**

1. Di bawah **Resep Koki Kustom**, tambahkan nama resep yang sepenuhnya memenuhi syarat ke acara penerapan dan klik **\$1**. Nama resep yang sepenuhnya memenuhi syarat menggunakan `cookbookname::recipename ` format, di mana `recipename` tidak termasuk `.rb` ekstensi. Untuk contoh ini, nama yang sepenuhnya memenuhi syarat adalah`redis-config::generate`. Kemudian klik **Simpan** untuk memperbarui konfigurasi lapisan.  
![\[Custom Chef Recipes interface showing setup, configure, deploy, undeploy, and shutdown options.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/redis_walkthrough_event.png)

# Langkah 5: Tambahkan Informasi Akses ke Konfigurasi Stack JSON
<a name="other-services-redis-json"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

`generate.rb`Resepnya tergantung pada sepasang konfigurasi tumpukan dan penerapan atribut JSON yang mewakili nama host dan port server Redis. Meskipun atribut ini adalah bagian dari `[:deploy]` namespace standar, mereka tidak secara otomatis ditentukan oleh OpsWorks Stacks. Sebagai gantinya, Anda menentukan atribut dan nilainya dengan menambahkan objek JSON khusus ke tumpukan. Contoh berikut menunjukkan JSON kustom untuk contoh ini.

**Untuk menambahkan informasi akses ke konfigurasi tumpukan dan penerapan JSON**

1. Pada halaman OpsWorks Stacks **Stack**, klik **Stack Settings** dan kemudian **Edit**.

1. Di bagian **Manajemen Konfigurasi**, tambahkan informasi akses ke kotak **Custom Chef JSON**. Seharusnya terlihat seperti contoh berikut, dengan modifikasi ini:
   + Ganti `elasticache_redis_example` dengan nama pendek aplikasi Anda. 
   + Ganti `port` nilai `host` dan dengan nilai untuk instance server ElastiCache Redis yang Anda buat. [Langkah 1: Buat ElastiCache Redis Cluster](other-services-redis-cluster.md)

   ```
   {
     "deploy": {
        "elasticache_redis_example": {
          "redis": {
            "host": "mycluster.XXXXXXXXX.amazonaws.com",
            "port": "6379"
          }
        }
     }
   }
   ```  
![\[Custom Chef JSON input field for configuring ElastiCache Redis instance details.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/redis_walkthrough_json.png)

Keuntungan dari pendekatan ini adalah Anda dapat mengubah port atau nilai host kapan saja tanpa menyentuh buku masak khusus Anda. OpsWorks Stacks menggabungkan JSON kustom ke dalam JSON bawaan dan menginstalnya pada instance stack untuk semua peristiwa siklus hidup berikutnya. Aplikasi kemudian dapat mengakses nilai atribut dengan menggunakan sintaks simpul Chef, seperti yang dijelaskan dalam[Langkah 3: Membuat dan Menyebarkan Buku Masak Kustom](other-services-redis-cookbook.md). Lain kali Anda menerapkan aplikasi, OpsWorks Stacks akan menginstal konfigurasi tumpukan dan penerapan JSON yang berisi definisi baru, dan `generate.rb` akan membuat file konfigurasi dengan nilai host dan port yang diperbarui.

**catatan**  
`[:deploy]`secara otomatis menyertakan atribut untuk setiap aplikasi yang diterapkan, jadi sudah `[:deploy][elasticache_redis_example]` ada di tumpukan dan konfigurasi JSON. Namun, `[:deploy][elasticache_redis_example]` tidak menyertakan `[:redis]` atribut, mendefinisikannya dengan JSON kustom mengarahkan OpsWorks Stacks untuk menambahkan atribut tersebut. `[:deploy][elasticache_redis_example]` Anda juga dapat menggunakan JSON khusus untuk mengganti atribut yang ada. Untuk informasi selengkapnya, lihat [Mengesampingkan Atribut](workingcookbook-attributes.md). 

# Langkah 6: Terapkan dan jalankan Aplikasi
<a name="other-services-redis-app"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Contoh ini mengasumsikan bahwa Anda memiliki aplikasi Ruby on Rails yang menggunakan Redis. Untuk mengakses file konfigurasi, Anda dapat menambahkan `redis` permata ke Gemfile Anda dan membuat penginisialisasi Rails sebagai berikut: `config/initializers/redis.rb`

```
REDIS_CONFIG = YAML::load_file(Rails.root.join('config', 'redis.yml'))
$redis = Redis.new(:host => REDIS_CONFIG['host'], :port => REDIS_CONFIG['port'])
```

Kemudian [buat aplikasi](workingapps-creating.md) untuk mewakili aplikasi Anda dan [terapkan](workingapps-deploying.md) ke instance layer Rails App Server, yang memperbarui kode aplikasi dan berjalan `generate.rb` untuk menghasilkan file konfigurasi. Ketika Anda menjalankan aplikasi, itu akan menggunakan instance ElastiCache Redis sebagai penyimpanan nilai kunci dalam memori.

# Menggunakan Bucket Amazon S3
<a name="gettingstarted.walkthrough.photoapp"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Aplikasi sering menggunakan bucket Amazon Simple Storage Service (Amazon S3) untuk menyimpan item besar seperti gambar atau file media lainnya. Meskipun OpsWorks Stacks tidak menyediakan dukungan terintegrasi untuk Amazon S3, Anda dapat dengan mudah menyesuaikan tumpukan untuk memungkinkan aplikasi Anda menggunakan penyimpanan Amazon S3. Topik ini memandu Anda melalui proses dasar menyediakan akses Amazon S3 ke aplikasi, menggunakan tumpukan Linux dengan server aplikasi PHP sebagai contoh. Prinsip dasar juga berlaku untuk tumpukan Windows.

Konten yang dikirimkan ke bucket Amazon S3 mungkin berisi konten pelanggan. Untuk informasi selengkapnya tentang menghapus data sensitif, lihat [Bagaimana Cara Mengosongkan Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) atau [Bagaimana Saya Menghapus Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) .

**Topics**
+ [Langkah 1: Buat Bucket Amazon S3](using-s3-bucket.md)
+ [Langkah 2: Buat Tumpukan Server Aplikasi PHP](using-s3-stack.md)
+ [Langkah 3: Buat dan Terapkan Buku Masak Kustom](using-s3-cookbook.md)
+ [Langkah 4: Tetapkan Resep ke Acara LifeCycle](using-s3-events.md)
+ [Langkah 5: Tambahkan Informasi Akses ke Konfigurasi Stack dan Atribut Deployment](using-s3-json.md)
+ [Langkah 6: Menyebarkan dan Jalankan PhotoApp](using-s3-run.md)

# Langkah 1: Buat Bucket Amazon S3
<a name="using-s3-bucket"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Anda harus terlebih dahulu membuat bucket Amazon S3. Anda dapat melakukan ini secara langsung dengan menggunakan konsol Amazon S3, API, atau CLI, tetapi cara yang lebih sederhana untuk membuat sumber daya sering menggunakan template. CloudFormation Template berikut membuat bucket Amazon S3 untuk contoh ini dan menyiapkan [profil instance](https://docs.aws.amazon.com/IAM/latest/UserGuide/instance-profiles.html) dengan [peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html) yang memberikan akses tak terbatas ke bucket. Anda kemudian dapat menggunakan pengaturan lapisan untuk melampirkan profil instance ke instance server aplikasi stack, yang memungkinkan aplikasi mengakses bucket, seperti yang dijelaskan nanti. Kegunaan profil instans tidak terbatas pada Amazon S3; mereka berharga untuk mengintegrasikan berbagai layanan AWS. 

```
{
   "AWSTemplateFormatVersion" : "2010-09-09",
   "Resources" : {
      "AppServerRootRole": {
         "Type": "AWS::IAM::Role",
         "Properties": {
            "AssumeRolePolicyDocument": {
               "Statement": [ {
                  "Effect": "Allow",
                  "Principal": {
                     "Service": [ "ec2.amazonaws.com" ]
                  },
                  "Action": [ "sts:AssumeRole" ]
               } ]
            },
            "Path": "/"
         }
      },
      "AppServerRolePolicies": {
         "Type": "AWS::IAM::Policy",
         "Properties": {
            "PolicyName": "AppServerS3Perms",
            "PolicyDocument": {
               "Statement": [ {
                  "Effect": "Allow",
                  "Action": "s3:*",
                  "Resource": { "Fn::Join" : ["", [ "arn:aws:s3:::", { "Ref" : "AppBucket" } , "/*" ]
                  ] }
               } ]
            },
            "Roles": [ { "Ref": "AppServerRootRole" } ]
         }
      },
      "AppServerInstanceProfile": {
         "Type": "AWS::IAM::InstanceProfile",
         "Properties": {
            "Path": "/",
            "Roles": [ { "Ref": "AppServerRootRole" } ]
         }
      },
     "AppBucket" : {
      "Type" : "AWS::S3::Bucket"
      }
   },
   "Outputs" : {
       "BucketName" : {
           "Value" : { "Ref" : "AppBucket" }
       },
       "InstanceProfileName" : {
           "Value" : { "Ref" : "AppServerInstanceProfile" }
       }
   }
}
```

Beberapa hal terjadi ketika Anda meluncurkan template:
+ Sumber `[AWS::S3::Bucket](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html)` daya membuat bucket Amazon S3.
+ `[AWS::IAM::InstanceProfile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html)`Sumber daya membuat profil instance yang akan ditugaskan ke instance server aplikasi.
+ `[AWS::IAM::Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html)`Sumber daya menciptakan peran profil instance.
+ Sumber `[AWS::IAM::Policy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-policy.html)` daya menetapkan izin peran untuk mengizinkan akses tidak terbatas ke bucket Amazon S3.
+ `Outputs`Bagian ini menampilkan nama profil bucket dan instance di CloudFormation konsol setelah Anda meluncurkan template.

  Anda akan memerlukan nilai-nilai ini untuk mengatur tumpukan dan aplikasi Anda.

Untuk informasi selengkapnya tentang cara membuat CloudFormation templat, lihat [Pelajari Dasar-Dasar Template](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html).

**Untuk membuat bucket Amazon S3**

1. Salin contoh template ke file teks di sistem Anda.

   Contoh ini mengasumsikan bahwa file tersebut diberi nama`appserver.template`.

1. Buka [CloudFormation](https://console.aws.amazon.com/cloudformation/)konsol dan pilih **Create Stack**.

1. Di kotak **Stack Name**, masukkan nama tumpukan.

   Contoh ini mengasumsikan bahwa namanya adalah**AppServer**.

1. Pilih **Unggah file templat**, pilih **Jelajahi**, pilih `appserver.template` file yang Anda buat di Langkah 1, lalu pilih **Langkah Berikutnya**.

1. Pada halaman **Tentukan Parameter**, pilih **Saya mengakui bahwa templat ini dapat membuat sumber daya IAM**, lalu pilih **Langkah Berikutnya** pada setiap halaman wizard hingga Anda mencapai akhir. Pilih **Buat**. 

1. **Setelah **AppServer**tumpukan mencapai status **CREATE\$1COMPLETE**, pilih dan pilih tab Output.**

   Anda mungkin perlu menyegarkan beberapa kali untuk memperbarui status.

1. Pada tab **Output**, catat **BucketName**dan **InstanceProfileName**nilai untuk digunakan nanti.

**catatan**  
CloudFormation menggunakan istilah *tumpukan* untuk merujuk pada kumpulan sumber daya yang dibuat dari template; itu tidak sama dengan tumpukan OpsWorks Stacks.

# Langkah 2: Buat Tumpukan Server Aplikasi PHP
<a name="using-s3-stack"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Tumpukan terdiri dari dua lapisan, PHP App Server dan MySQL, masing-masing dengan satu instance. Aplikasi ini menyimpan foto di bucket Amazon S3, tetapi menggunakan instance MySQL sebagai penyimpanan data back-end untuk menyimpan metadata untuk setiap foto.

Konten yang dikirimkan ke bucket Amazon S3 mungkin berisi konten pelanggan. Untuk informasi selengkapnya tentang menghapus data sensitif, lihat [Bagaimana Cara Mengosongkan Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) atau [Bagaimana Saya Menghapus Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) .

**Untuk membuat tumpukan**

1. Buat tumpukan baru—dinamai **PhotoSite** untuk contoh ini—dan tambahkan lapisan PHP App Server. Anda dapat menggunakan pengaturan default untuk keduanya. Untuk informasi selengkapnya, lihat [Buat Stack Baru](workingstacks-creating.md) dan [Membuat OpsWorks Layer](workinglayers-basics-create.md).

1. Pada halaman **Layers**, untuk PHP App Server, pilih **Security** dan kemudian pilih **Edit**.

1. Di bagian **Layer Profile**, pilih nama profil instance yang Anda rekam sebelumnya, setelah meluncurkan AppServer CloudFormation tumpukan. Ini akan menjadi sesuatu seperti`AppServer-AppServerInstanceProfile-1Q3KD0DNMGB90`. OpsWorks Stacks menetapkan profil ini ke semua EC2 instance Amazon layer, yang memberikan izin untuk mengakses bucket Amazon S3 Anda ke aplikasi yang berjalan pada instance layer.  
![\[IAM Instance Profile dropdown showing available profiles, including a custom AppServer profile.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/photoapp_profile.png)

1. Tambahkan instance ke lapisan PHP App Server dan mulai. Untuk informasi selengkapnya tentang cara menambahkan dan memulai instance, lihat[Menambahkan Instance ke Layer](workinginstances-add.md).

1. Tambahkan layer MySQL ke tumpukan, tambahkan instance, dan mulai. Anda dapat menggunakan pengaturan default untuk layer dan instance. Secara khusus, instance MySQL tidak perlu mengakses bucket Amazon S3, sehingga dapat menggunakan profil instans Stacks OpsWorks standar, yang dipilih secara default.

# Langkah 3: Buat dan Terapkan Buku Masak Kustom
<a name="using-s3-cookbook"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Tumpukan belum cukup siap:
+ Aplikasi Anda memerlukan beberapa informasi untuk mengakses ke server database MySQL dan bucket Amazon S3, seperti nama host database dan nama bucket Amazon S3.
+ Anda perlu menyiapkan database di server database MySQL dan membuat tabel untuk menyimpan metadata foto.

Anda dapat menangani tugas-tugas ini secara manual, tetapi pendekatan yang lebih baik adalah menerapkan *resep* Chef dan meminta OpsWorks Stacks menjalankan resep secara otomatis pada instance yang sesuai. Resep koki adalah aplikasi Ruby khusus yang digunakan OpsWorks Stacks untuk melakukan tugas pada instance seperti menginstal paket atau membuat file konfigurasi. Mereka dikemas dalam *buku masak*, yang dapat berisi beberapa resep dan file terkait seperti template untuk file konfigurasi. Buku masak ditempatkan di repositori seperti GitHub, dan harus memiliki struktur direktori standar. Jika Anda belum memiliki repositori buku masak khusus, lihat [Repositori Buku Masak](workingcookbook-installingcustom-repo.md) untuk informasi tentang cara mengaturnya.

Untuk contoh ini, buku masak telah diimplementasikan untuk Anda dan disimpan dalam [ GitHub repositori publik](https://github.com/amazonwebservices/opsworks-example-cookbooks/tree/master/photoapp). Buku masak berisi dua resep, `appsetup.rb` dan`dbsetup.rb`, dan file templat,`db-connect.php.erb`.

`appsetup.rb`Resep membuat file konfigurasi yang berisi informasi yang dibutuhkan aplikasi untuk mengakses database dan bucket Amazon S3. Ini pada dasarnya adalah versi `appsetup.rb` resep yang dimodifikasi ringan yang dijelaskan dalam[Connect Aplikasi ke Database](gettingstarted-db-recipes.md#gettingstarted-db-recipes-appsetup). Perbedaan utama adalah variabel yang diteruskan ke template, yang mewakili informasi akses.

Empat atribut pertama menentukan pengaturan koneksi database, dan secara otomatis ditentukan oleh OpsWorks Stacks ketika Anda membuat instance MySQL.

Ada dua perbedaan antara variabel-variabel ini dan yang ada di resep aslinya:
+ Seperti resep asli, `table` variabel mewakili nama tabel database yang dibuat oleh`dbsetup.rb`, dan diatur ke nilai atribut yang didefinisikan dalam file atribut buku masak.

  Namun, atribut memiliki nama yang berbeda:`[:photoapp][:dbtable]`.
+ `s3bucket`Variabel khusus untuk contoh ini dan disetel ke nilai atribut yang mewakili nama bucket Amazon S3,. `[:photobucket]`

   `[:photobucket]`didefinisikan dengan menggunakan JSON kustom, seperti yang dijelaskan nanti. Untuk informasi lebih lanjut tentang atribut, lihat [Atribut](workingcookbook-installingcustom-components-attributes.md)

Untuk informasi lebih lanjut tentang atribut, lihat[Atribut](workingcookbook-installingcustom-components-attributes.md).

`dbsetup.rb`Resep menyiapkan tabel database untuk menyimpan metadata setiap foto. Ini pada dasarnya adalah versi `dbsetup.rb` resep yang dimodifikasi ringan yang dijelaskan dalam[Mengatur Database](gettingstarted-db-recipes.md#gettingstarted-db-recipes-dbsetup); lihat topik itu untuk deskripsi rinci. 

Satu-satunya perbedaan antara contoh ini dan resep asli adalah skema database, yang memiliki tiga kolom yang berisi ID, URL, dan keterangan dari setiap foto yang disimpan di bucket Amazon S3.

Resep sudah diimplementasikan, jadi yang perlu Anda lakukan hanyalah menyebarkan buku masak photoapp ke cache buku masak setiap instance. OpsWorks Stacks kemudian menjalankan resep cache ketika peristiwa siklus hidup yang sesuai terjadi, seperti yang dijelaskan nanti.

**Untuk menyebarkan buku masak photoapp**

1. Pada halaman OpsWorks Stacks **Stack**, pilih **Stack Settings** dan kemudian pilih **Edit**.

1. Di bagian **Manajemen Konfigurasi**:
   + Atur **Gunakan buku masak Chef khusus** ke **Ya**.
   + Atur **jenis Repositori** ke Git.
   + Setel **URL Repositori ke**. **git://github.com/amazonwebservices/opsworks-example-cookbooks.git**

1. Pada halaman **Stack**, pilih **Run Command, pilih perintah** **Update Custom Cookbooks** stack, dan kemudian pilih **Update Custom Cookbooks** untuk menginstal buku masak baru di cache buku masak contoh.   
![\[Run Command interface showing Update Custom Cookbooks option and instance selection.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/redis_walkthrough_command.png)

# Langkah 4: Tetapkan Resep ke Acara LifeCycle
<a name="using-s3-events"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Anda dapat menjalankan resep khusus [secara manual](workingcookbook-manual.md), tetapi pendekatan terbaik biasanya adalah memiliki OpsWorks Stacks menjalankannya secara otomatis. Setiap lapisan memiliki satu set resep bawaan yang ditetapkan untuk masing-masing dari lima [peristiwa siklus hidup](workingcookbook-events.md) —Setup, Configure, Deploy, Undeploy, dan Shutdown—. Setiap kali peristiwa terjadi pada sebuah instance, OpsWorks Stacks menjalankan resep terkait untuk setiap lapisan instance, yang menangani tugas yang diperlukan. Misalnya, ketika sebuah instance selesai booting, OpsWorks Stacks memicu peristiwa Setup untuk menjalankan resep Setup, yang biasanya menangani tugas-tugas seperti menginstal dan mengonfigurasi paket.

Anda dapat meminta OpsWorks Stacks menjalankan resep khusus pada instance layer dengan menetapkan setiap resep ke peristiwa siklus hidup yang sesuai. OpsWorks Tumpukan akan menjalankan resep khusus apa pun setelah resep bawaan lapisan selesai. Untuk contoh ini, tetapkan `appsetup.rb` ke event Deploy layer PHP App Server dan `dbsetup.rb` ke event Deploy layer MySQL. OpsWorks Tumpukan kemudian akan menjalankan resep pada instance lapisan terkait selama startup, setelah resep Pengaturan bawaan selesai, dan setiap kali Anda menerapkan aplikasi, setelah resep Deploy yang dibuat selesai. Untuk informasi selengkapnya, lihat [Resep Menjalankan Secara Otomatis](workingcookbook-assigningcustom.md).

**Untuk menetapkan resep kustom ke acara Deploy layer**

1. Pada halaman OpsWorks Stacks **Layers**, untuk PHP App Server pilih **Resep** dan kemudian pilih **Edit**. 

1. Di bawah **Resep Koki Kustom**, tambahkan nama resep ke acara penerapan dan pilih **\$1**. Nama harus dalam `cookbookname::recipename` format Chef, di mana `recipename` tidak termasuk `.rb` ekstensi. Untuk contoh ini, Anda masuk`photoapp::appsetup`. Kemudian pilih **Simpan** untuk memperbarui konfigurasi lapisan.  
![\[Custom Chef Recipes configuration with Repository URL and lifecycle events.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/psb6a.png)

1. **Pada halaman **Layers**, pilih **edit** di kolom Actions layer MySQL.**

1. Tambahkan `photoapp::dbsetup` ke acara Deploy layer dan simpan konfigurasi baru.

# Langkah 5: Tambahkan Informasi Akses ke Konfigurasi Stack dan Atribut Deployment
<a name="using-s3-json"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

`appsetup.rb`Resepnya bergantung pada data dari [konfigurasi tumpukan OpsWorks Stacks dan atribut penerapan](workingcookbook-json.md), yang diinstal pada setiap instance dan berisi informasi terperinci tentang tumpukan dan aplikasi apa pun yang diterapkan. `deploy`Atribut objek memiliki struktur berikut, yang ditampilkan untuk kenyamanan sebagai JSON:

```
{
   ...
  "deploy": {
    "app1": {
      "application" : "short_name",
      ...
    }
    "app2": {
      ...
    }
    ...
  }
}
```

Node deploy berisi atribut untuk setiap aplikasi yang di-deploy yang diberi nama dengan nama pendek aplikasi. Setiap atribut aplikasi berisi sekumpulan atribut yang menentukan konfigurasi aplikasi, seperti root dokumen dan jenis aplikasi. Untuk daftar `deploy` atribut, lihat[menyebarkan Atribut](attributes-json-deploy.md). Anda dapat merepresentasikan konfigurasi tumpukan dan nilai atribut deployment dalam resep Anda dengan menggunakan sintaks atribut Chef. Misalnya, `[:deploy][:app1][:application]` mewakili nama pendek aplikasi app1. 

Resep kustom bergantung pada beberapa konfigurasi tumpukan dan atribut penerapan yang mewakili database dan informasi akses Amazon S3:
+ Atribut koneksi database, seperti`[:deploy][:database][:host]`, didefinisikan oleh OpsWorks Stacks ketika menciptakan lapisan MySQL.
+ Atribut nama tabel`[:photoapp][:dbtable]`,, didefinisikan dalam file atribut buku masak kustom, dan diatur ke`foto`.
+ Anda harus menentukan atribut nama bucket`[:photobucket]`, dengan menggunakan JSON khusus untuk menambahkan atribut ke konfigurasi tumpukan dan atribut penerapan.

**Untuk menentukan atribut nama bucket Amazon S3**

1. Pada halaman OpsWorks Stacks **Stack**, pilih **Stack Settings** dan kemudian **Edit**.

1. Di bagian **Manajemen Konfigurasi**, tambahkan informasi akses ke kotak **Custom Chef JSON**. Seharusnya terlihat seperti berikut:

   ```
   {
     "photobucket" : "yourbucketname"
   }
   ```

   Ganti *yourbucketname* dengan nama bucket yang Anda rekam[Langkah 1: Buat Bucket Amazon S3](using-s3-bucket.md).  
![\[Custom Chef cookbook configuration with Git repository and JSON settings.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/photoapp_walkthrough_json.png)

OpsWorks Stacks menggabungkan JSON kustom ke dalam konfigurasi tumpukan dan atribut penerapan sebelum menginstalnya pada instance tumpukan; kemudian `appsetup.rb` dapat memperoleh nama bucket dari atribut. `[:photobucket]` Jika Anda ingin mengubah bucket, Anda tidak perlu menyentuh resepnya; Anda bisa [mengganti atribut](workingcookbook-attributes.md) untuk memberikan nama bucket baru.

# Langkah 6: Menyebarkan dan Jalankan PhotoApp
<a name="using-s3-run"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Untuk contoh ini, aplikasi juga telah diterapkan untuk Anda dan disimpan dalam [ GitHub repositori publik](https://github.com/amazonwebservices/opsworks-demo-php-photo-share-app). Anda hanya perlu menambahkan aplikasi ke tumpukan, menyebarkannya ke server aplikasi, dan menjalankannya. 

**Untuk menambahkan aplikasi ke tumpukan dan menerapkannya ke server aplikasi**

1. Buka halaman **Aplikasi** dan pilih **Tambahkan aplikasi**.

1. Pada halaman **Add App**, lakukan hal berikut:
   + Setel **Nama** ke**PhotoApp**.
   + Atur **jenis Aplikasi** ke **PHP**.
   + Setel **root Dokumen** ke**web**.
   + **Atur **jenis Repositori** ke Git.**
   + Setel **URL Repositori ke**. **git://github.com/awslabs/opsworks-demo-php-photo-share-app.git**
   + Pilih **Tambah Aplikasi** untuk menerima default untuk pengaturan lainnya.  
![\[Form to add an app with fields for name, type, document root, and repository details.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/photoapp_walkthrough_app.png)

1. Pada halaman **Aplikasi**, pilih **deploy** di kolom **Tindakan PhotoApp ** aplikasi.  
![\[Apps page showing PhotoApp with deploy, edit, and delete options in the Actions column.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/photoapp_walkthrough_deploy.png)

1. Terima default dan pilih **Deploy untuk menyebarkan aplikasi** ke server.

Untuk menjalankan PhotoApp, buka halaman **Instances** dan pilih alamat IP publik instance PHP App Server.

![\[PHP App Server instance details showing hostname, status, and public IP address.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/photoapp_walkthrough_run.png)


Anda akan melihat antarmuka pengguna berikut. Pilih **Tambahkan Foto** untuk menyimpan foto di bucket Amazon S3 dan metadata di penyimpanan data back-end.

![\[User interface section titled "My Photos" with an "Add a Photo" button.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/photoapp_walkthrough_ui.png)


# Menggunakan AWS CodePipeline dengan OpsWorks Stacks
<a name="other-services-cp"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

[AWS CodePipeline](https://aws.amazon.com/codepipeline/)memungkinkan Anda membuat pipeline pengiriman berkelanjutan yang melacak perubahan kode dari sumber seperti CodeCommit, Amazon Simple Storage Service (Amazon S3), atau. [GitHub](https://github.com/) Anda dapat menggunakannya CodePipeline untuk mengotomatiskan rilis buku masak Chef dan kode aplikasi Anda ke OpsWorks Stacks, di tumpukan Chef 11.10, Chef 12, dan Chef 12.2. Contoh di bagian ini menjelaskan cara membuat dan menggunakan pipeline sederhana dari CodePipeline sebagai alat penyebaran untuk kode yang Anda jalankan di lapisan OpsWorks Stacks.

**catatan**  
CodePipeline dan integrasi OpsWorks Stacks tidak didukung untuk diterapkan ke Chef 11.4 dan tumpukan yang lebih lama.

**Topics**
+ [AWS CodePipeline dengan OpsWorks Tumpukan - Chef 12 Stacks](other-services-cp-chef12.md)
+ [AWS CodePipeline dengan OpsWorks Tumpukan - Chef 11 Stacks](other-services-cp-chef11.md)

# AWS CodePipeline dengan OpsWorks Tumpukan - Chef 12 Stacks
<a name="other-services-cp-chef12"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

[AWS CodePipeline](https://aws.amazon.com/codepipeline/)memungkinkan Anda membuat pipeline pengiriman berkelanjutan yang melacak perubahan kode dari sumber seperti CodeCommit, Amazon Simple Storage Service (Amazon S3), atau. [GitHub](https://github.com/) Contoh dalam topik ini menjelaskan cara membuat dan menggunakan pipeline sederhana dari CodePipeline sebagai alat penyebaran untuk kode yang Anda jalankan di lapisan OpsWorks Stacks. Dalam contoh ini, Anda membuat pipeline untuk [aplikasi Node.js](samples/opsworks-nodejs-demo-app.zip) sederhana, lalu menginstruksikan OpsWorks Stacks untuk menjalankan aplikasi pada semua instance dalam lapisan dalam tumpukan Chef 12 (dalam hal ini, satu instance).

**catatan**  
Topik ini menjelaskan cara menggunakan pipeline untuk menjalankan dan memperbarui aplikasi di tumpukan Chef 12. Untuk informasi tentang cara menggunakan pipeline untuk menjalankan dan memperbarui aplikasi di tumpukan Chef 11.10, lihat[AWS CodePipeline dengan OpsWorks Tumpukan - Chef 11 Stacks](other-services-cp-chef11.md). Konten yang dikirimkan ke bucket Amazon S3 mungkin berisi konten pelanggan. Untuk informasi selengkapnya tentang menghapus data sensitif, lihat [Bagaimana Cara Mengosongkan Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) atau [Bagaimana Saya Menghapus Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) .

**Topics**
+ [Prasyarat](#w2ab1c14c73c19c11c11)
+ [Skenario lain yang didukung](#w2ab1c14c73c19c11c13)
+ [Langkah 1: Buat tumpukan, lapisan, dan instance di OpsWorks Stacks](other-services-cp-chef12-stack.md)
+ [Langkah 2: Konfigurasikan tumpukan dan lapisan Anda untuk menggunakan buku masak khusus](other-services-cp-stackconfig.md)
+ [Langkah 3: Unggah kode aplikasi ke bucket Amazon S3](other-services-cp-chef12-s3.md)
+ [Langkah 4: Tambahkan aplikasi Anda ke OpsWorks Stacks](other-services-cp-chef12-addapp.md)
+ [Langkah 5: Buat pipeline di CodePipeline](other-services-cp-chef12-pipeline.md)
+ [Langkah 6: Memverifikasi penerapan aplikasi di Stacks OpsWorks](other-services-cp-chef12-verify.md)
+ [Langkah 7 (Opsional): Perbarui kode aplikasi untuk melihat CodePipeline penerapan ulang aplikasi Anda secara otomatis](other-services-cp-chef12-update.md)
+ [Langkah 8 (Opsional): Bersihkan sumber daya](other-services-cp-chef12-cleanup.md)

## Prasyarat
<a name="w2ab1c14c73c19c11c11"></a>

Sebelum Anda memulai panduan ini, pastikan Anda memiliki izin administrator untuk melakukan semua tugas berikut. Anda dapat menjadi anggota grup yang menerapkan **AdministratorAccess**kebijakan tersebut, atau Anda dapat menjadi anggota grup yang memiliki izin dan kebijakan yang ditampilkan dalam tabel berikut. Sebagai praktik keamanan terbaik, Anda harus menjadi anggota grup yang memiliki izin untuk melakukan tugas berikut, alih-alih menetapkan izin yang diperlukan untuk pengguna individual.

Untuk informasi selengkapnya tentang membuat grup keamanan di IAM dan menetapkan izin ke grup, lihat [Membuat grup pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups_create.html). Untuk informasi selengkapnya tentang mengelola izin OpsWorks Tumpukan, lihat [Praktik Terbaik: Mengelola](https://docs.aws.amazon.com/opsworks/latest/userguide/best-practices-permissions.html) Izin.


| Izin | Kebijakan yang Direkomendasikan untuk Dilampirkan ke Grup | 
| --- | --- | 
|  Buat dan edit tumpukan, lapisan, dan instance di OpsWorks Stacks.  | AWSOpsWorks\$1FullAccess | 
|  Buat, edit, dan jalankan template di CloudFormation.  | AmazonCloudFormationFullAccess | 
|  Buat, edit, dan akses bucket Amazon S3.  | AmazonS3 FullAccess | 
|  Buat, edit, dan jalankan pipeline CodePipeline, terutama pipeline yang menggunakan OpsWorks Stacks sebagai penyedia.  | AWSCodePipeline\$1FullAccess | 

Anda juga harus memiliki Amazon EC2 key pair. Anda akan diminta untuk memberikan nama key pair ini ketika Anda menjalankan CloudFormation template yang membuat sample stack, layer, dan instance dalam panduan ini. Untuk informasi selengkapnya tentang mendapatkan key pair di EC2 konsol Amazon, lihat [Membuat Pasangan Kunci](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair) di EC2 dokumentasi Amazon. Key pair harus berada di Wilayah AS Timur (Virginia N.). Anda dapat menggunakan key pair yang sudah ada jika Anda sudah memilikinya di wilayah tersebut.

## Skenario lain yang didukung
<a name="w2ab1c14c73c19c11c13"></a>

Panduan ini membuat pipeline sederhana yang mencakup satu tahap **Sumber** dan satu **Deploy**. Namun, Anda dapat membuat pipeline yang lebih kompleks yang menggunakan OpsWorks Stacks sebagai penyedia. Berikut ini adalah contoh pipa dan skenario yang didukung:
+ Anda dapat mengedit pipeline untuk menambahkan buku masak Chef ke tahap **Sumber** dan target terkait untuk buku masak yang diperbarui ke tahap **Deploy**. Dalam hal ini, Anda menambahkan tindakan **Deploy** yang memicu pembaruan buku masak Anda saat Anda membuat perubahan pada sumbernya. Buku masak yang diperbarui diterapkan sebelum aplikasi Anda.
+ Anda dapat membuat pipeline yang kompleks, dengan buku masak khusus dan beberapa aplikasi, dan menerapkan ke OpsWorks tumpukan Stacks. Pipeline melacak perubahan pada sumber aplikasi dan buku masak, dan digunakan kembali ketika Anda telah membuat perubahan. Berikut ini menunjukkan contoh pipa yang serupa dan kompleks:  
![\[Pipeline diagram showing Source stage with Amazon S3 inputs and Beta stage with AWS OpsWorks outputs.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_complexpipeline.png)

Untuk informasi selengkapnya tentang bekerja dengan CodePipeline, lihat [Panduan CodePipeline Pengguna](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html).

# Langkah 1: Buat tumpukan, lapisan, dan instance di OpsWorks Stacks
<a name="other-services-cp-chef12-stack"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Untuk menggunakan OpsWorks Stacks sebagai penyedia penyebaran untuk pipeline, Anda harus terlebih dahulu memiliki tumpukan, lapisan, dan setidaknya satu instance di lapisan. Meskipun Anda dapat membuat tumpukan di OpsWorks Stacks dengan mengikuti petunjuk di [Memulai dengan Tumpukan Linux](https://docs.aws.amazon.com/opsworks/latest/userguide/gettingstarted-linux.html) atau [Memulai dengan Tumpukan Windows](https://docs.aws.amazon.com/opsworks/latest/userguide/gettingstarted-windows.html), untuk menghemat waktu Anda, contoh ini menggunakan AWS CloudFormation templat untuk membuat tumpukan, lapisan, dan instance Chef 12 berbasis Linux. Instance yang dibuat oleh template ini menjalankan Amazon Linux 2016.03, dan memiliki tipe instance. `c3.large` Meskipun template tidak mengonfigurasi tumpukan Anda untuk menggunakan buku masak khusus, Anda akan melakukannya nanti di panduan.

**penting**  
 CloudFormation Template harus disimpan dan dijalankan di wilayah yang sama dengan bucket Amazon S3 tempat Anda kemudian mengunggah aplikasi dan wilayah yang sama tempat Anda nantinya membuat pipeline. CodePipeline Pada saat ini, CodePipeline mendukung penyedia OpsWorks Stacks di Wilayah AS Timur (Virginia N.) (us-east-1) saja. Semua sumber daya dalam panduan ini harus dibuat di Wilayah AS Timur (Virginia N.).  
Jika pembuatan tumpukan gagal, Anda mungkin mendekati jumlah maksimum peran IAM yang diizinkan untuk akun Anda. Pembuatan tumpukan juga bisa gagal jika akun Anda tidak dapat meluncurkan `c3.large` instance dengan tipe instans. Misalnya, jika Anda menggunakan Tingkat AWS Gratis, Anda mungkin menerima kesalahan seperti`Root device type: must be included in EBS`. Jika akun Anda memiliki batasan pada jenis instans yang diizinkan untuk dibuat, seperti batasan yang diberlakukan oleh Tingkat AWS Gratis, coba ubah nilai `InstanceType` parameter di blok instans templat menjadi jenis instans yang dapat digunakan akun Anda.

**Untuk membuat stack, layer, dan instance menggunakan CloudFormation**

1. Salin CloudFormation template berikut ke dalam dokumen teks biasa baru. Simpan file ke lokasi yang nyaman di komputer lokal Anda, dan beri nama **NewOpsWorksStack.template**, atau nama lain yang nyaman bagi Anda.

   ```
   {
     "AWSTemplateFormatVersion": "2010-09-09",
     "Mappings": {
       "Region2Principal": {
         "us-east-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "us-west-2": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "us-west-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "eu-west-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "ap-southeast-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "ap-northeast-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "ap-northeast-2": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "ap-southeast-2": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "sa-east-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "cn-north-1": {
           "EC2Principal": "ec2.amazonaws.com.rproxy.govskope.ca.cn",
           "OpsWorksPrincipal": "opsworks.amazonaws.com.rproxy.govskope.ca.cn"
         },
         "eu-central-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         }
       }
     },
     "Parameters": {
       "EC2KeyPairName": {
   	  "Type": "String",
   	  "Description": "The name of an existing EC2 key pair that lets you use SSH to connect to the OpsWorks instance."
   	 }
     },
     "Resources": {
   	"CPOpsDeploySecGroup": {
   	  "Type": "AWS::EC2::SecurityGroup",
   	  "Properties": {
   	    "GroupDescription" : "Lets you manage OpsWorks instances to which you deploy apps with CodePipeline"
   	  }
   	},
   	"CPOpsDeploySecGroupIngressHTTP": {
   	  "Type": "AWS::EC2::SecurityGroupIngress",
   	  "Properties" : {
   	    "IpProtocol" : "tcp",
           "FromPort" : "80",
           "ToPort" : "80",
           "CidrIp" : "0.0.0.0/0",
   		"GroupId": {
   		  "Fn::GetAtt": [
   		    "CPOpsDeploySecGroup", "GroupId"
   		  ]
   		}
         }
   	},
   	"CPOpsDeploySecGroupIngressSSH": {
   	  "Type": "AWS::EC2::SecurityGroupIngress",
   	  "Properties" : {
   	    "IpProtocol" : "tcp",
           "FromPort" : "22",
           "ToPort" : "22",
           "CidrIp" : "0.0.0.0/0",
   		"GroupId": {
   		  "Fn::GetAtt": [
   		    "CPOpsDeploySecGroup", "GroupId"
   		  ]
   		}		  
   	  }
   	},
   	"MyStack": {
         "Type": "AWS::OpsWorks::Stack",
         "Properties": {
           "Name": {
             "Ref": "AWS::StackName"
           },
           "ServiceRoleArn": {
             "Fn::GetAtt": [
               "OpsWorksServiceRole",
               "Arn"
             ]
           },
   		"ConfigurationManager" : { "Name": "Chef","Version": "12" },
   		"DefaultOs": "Amazon Linux 2016.03",
           "DefaultInstanceProfileArn": {
             "Fn::GetAtt": [
               "OpsWorksInstanceProfile",
               "Arn"
             ]
           },
   		"UseCustomCookbooks": "false"
         }
       },
       "MyLayer": {
         "Type": "AWS::OpsWorks::Layer",
         "Properties": {
           "StackId": {
             "Ref": "MyStack"
           },
           "Name": "Node.js App Server",
   		"Type": "custom",
           "Shortname": "app1",
   		"EnableAutoHealing": "true",
           "AutoAssignElasticIps": "false",
           "AutoAssignPublicIps": "true",
   		"CustomSecurityGroupIds": [
   		  {
   		    "Fn::GetAtt": [
                 "CPOpsDeploySecGroup", "GroupId"
   		    ]
   		  }
   		 ]
         },
         "DependsOn": [
           "MyStack",
           "CPOpsDeploySecGroup"
         ]
       },
       "OpsWorksServiceRole": {
         "Type": "AWS::IAM::Role",
         "Properties": {
           "AssumeRolePolicyDocument": {
             "Statement": [
               {
                 "Effect": "Allow",
                 "Principal": {
                   "Service": [
                     {
                       "Fn::FindInMap": [
                         "Region2Principal",
                         {
                           "Ref": "AWS::Region"
                         },
                         "OpsWorksPrincipal"
                       ]
                     }
                   ]
                 },
                 "Action": [
                   "sts:AssumeRole"
                 ]
               }
             ]
           },
           "Path": "/",
           "Policies": [
             {
               "PolicyName": "opsworks-service",
               "PolicyDocument": {
                 "Statement": [
                   {
                     "Effect": "Allow",
                     "Action": [
                       "ec2:*",
                       "iam:PassRole",
                       "cloudwatch:GetMetricStatistics",
                       "elasticloadbalancing:*"
                     ],
                     "Resource": "*"
                   }
                 ]
               }
             }
           ]
         }
       },
       "OpsWorksInstanceProfile": {
         "Type": "AWS::IAM::InstanceProfile",
         "Properties": {
           "Path": "/",
           "Roles": [
             {
               "Ref": "OpsWorksInstanceRole"
             }
           ]
         }
       },
       "OpsWorksInstanceRole": {
         "Type": "AWS::IAM::Role",
         "Properties": {
           "AssumeRolePolicyDocument": {
             "Statement": [
               {
                 "Effect": "Allow",
                 "Principal": {
                   "Service": [
                     {
                       "Fn::FindInMap": [
                         "Region2Principal",
                         {
                           "Ref": "AWS::Region"
                         },
                         "EC2Principal"
                       ]
                     }
                   ]
                 },
                 "Action": [
                   "sts:AssumeRole"
                 ]
               }
             ]
           },
           "Path": "/",
   		"Policies": [
             {
               "PolicyName": "s3-get",
               "PolicyDocument": {
                 "Version": "2012-10-17",
                 "Statement": [
                   {
                     "Effect": "Allow",
                     "Action": [
                       "s3:GetObject"
                     ],
                     "Resource": "*"
                   }
                 ]
               }
             }
           ]
         }
       },
       "myinstance": {
         "Type": "AWS::OpsWorks::Instance",
         "Properties": {
           "LayerIds": [
             {
               "Ref": "MyLayer"
             }
           ],
           "StackId": {
             "Ref": "MyStack"
           },
           "InstanceType": "c3.large",
           "SshKeyName": {
   		  "Ref": "EC2KeyPairName"
   		}
         }
       }
     },
     "Outputs": {
       "StackId": {
         "Description": "Stack ID for the newly created AWS OpsWorks stack",
         "Value": {
           "Ref": "MyStack"
         }
       }
     }
   }
   ```

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

1. Di CloudFormation halaman beranda, pilih **Buat tumpukan**.

1. **Pada halaman **Pilih Templat**, di area **Pilih templat**, pilih **Unggah templat ke Amazon S3**, lalu pilih Jelajahi.**

1. Jelajahi CloudFormation template yang Anda simpan di langkah 1, lalu pilih **Buka**. Pada halaman **Pilih Templat**, pilih **Selanjutnya**.  
![\[Pilih halaman Template dari AWS CloudFormation Create Stack wizard.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_cfstackcreate.png)

1. Pada halaman **Tentukan Detail**, beri nama tumpukan **CodePipelineDemo**, atau nama tumpukan apa pun yang unik untuk akun Anda. Jika Anda memilih nama yang berbeda untuk tumpukan Anda, ubah nama tumpukan di seluruh panduan ini.

1. Di area **Parameter**, berikan nama EC2 key pair yang ingin Anda gunakan untuk mengakses instance OpsWorks Stacks Anda setelah dibuat. Pilih **Berikutnya**.

1. Pada halaman **Opsi**, pilih **Selanjutnya**. (Pengaturan di halaman ini tidak diperlukan untuk panduan ini.)

1.  CloudFormation Template yang Anda gunakan dalam panduan ini menciptakan peran IAM, profil instance, dan instance.
**penting**  
 Sebelum Anda memilih **Buat**, pilih **Biaya** untuk memperkirakan biaya yang mungkin dikenakan AWS untuk membuat sumber daya dengan templat ini.

   **Jika membuat sumber daya IAM dapat diterima, pilih kotak centang **Saya mengakui bahwa templat ini dapat AWS CloudFormation menyebabkan membuat sumber daya IAM**, lalu pilih Buat.** Jika membuat sumber daya IAM tidak dapat diterima, Anda tidak dapat melanjutkan prosedur ini.

1. Di CloudFormation dasbor, Anda dapat melihat kemajuan pembuatan tumpukan. **Sebelum Anda melanjutkan ke langkah berikutnya, tunggu hingga **CREATE\$1COMPLETE** ditampilkan di kolom Status.**  
![\[AWS CloudFormation dasbor yang menunjukkan pembuatan tumpukan.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_createstack12.png)

**Untuk memverifikasi pembuatan tumpukan di OpsWorks Stacks**

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

1. Di dasbor OpsWorks Stacks, lihat tumpukan yang Anda buat.  
![\[AWS OpsWorks dasbor yang menunjukkan pembuatan tumpukan.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_verifystack12.png)

1. Buka tumpukan, dan lihat layer dan instance. Perhatikan bahwa layer dan instance dibuat dengan nama dan metadata lain yang disediakan dalam template. CloudFormation Anda siap mengonfigurasi tumpukan dan lapisan Anda untuk menggunakan buku masak dan resep Chef khusus.

# Langkah 2: Konfigurasikan tumpukan dan lapisan Anda untuk menggunakan buku masak khusus
<a name="other-services-cp-stackconfig"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Tumpukan Chef 12 di OpsWorks Stacks memerlukan buku masak Anda sendiri atau buatan komunitas untuk membangun lapisan aplikasi khusus. Untuk panduan ini, Anda dapat menunjuk ke repositori yang berisi satu set [buku masak Chef dan resep Chef](https://docs.chef.io/cookbooks.html). Resep ini menginstal paket Node.js dan dependensinya pada instance Anda. Anda akan menggunakan resep Chef lain untuk menyebarkan aplikasi Node.js yang akan Anda siapkan. [Langkah 4: Tambahkan aplikasi Anda ke OpsWorks Stacks](other-services-cp-chef12-addapp.md) Resep Chef yang Anda tentukan dalam langkah ini berjalan setiap kali versi baru aplikasi Anda digunakan oleh CodePipeline.

1. Di konsol OpsWorks Stacks, buka tumpukan yang Anda buat. [Langkah 1: Buat tumpukan, lapisan, dan instance di OpsWorks Stacks](other-services-cp-chef12-stack.md) Pilih **Pengaturan Stack**, lalu pilih **Edit**.

1. Atur **Gunakan buku masak Chef khusus** ke **Ya**. Ini menunjukkan pengaturan buku masak khusus terkait.

1. **Dari daftar drop-down **tipe Repositori**, pilih Arsip S3.** Untuk bekerja dengan keduanya CodePipeline dan OpsWorks, sumber buku masak Anda harus S3.

1. Untuk **URL Repositori, tentukan**. **https://s3.amazonaws.com/opsworks-demo-assets/opsworks-linux-demo-cookbooks-nodejs.tar.gz** Pengaturan Anda harus menyerupai yang berikut ini.  
![\[Gunakan pengaturan buku masak Chef khusus.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_usecustomcook.png)

1. Pilih **Simpan**.

1. Di panel navigasi, pilih **Layers** (Lapisan).

1. Pilih **Pengaturan** untuk layer yang Anda buat[Langkah 1: Buat tumpukan, lapisan, dan instance di OpsWorks Stacks](other-services-cp-chef12-stack.md).

1. Pada tab **General Settings**, pastikan bahwa nama layer adalah **Node.js App Server**, dan nama pendek layer adalah **app1**. Pilih **Resep**.

1. Pada tab **Resep**, tentukan resep **nodejs\$1demo** yang ingin Anda jalankan selama acara siklus hidup **Deploy**. Pilih **Simpan**.

1. Pada tab **Keamanan**, dari daftar drop-down **Grup keamanan**, pilih grup keamanan **AWS- OpsWorks -Webapp**.

1. Pilih **Simpan**.

# Langkah 3: Unggah kode aplikasi ke bucket Amazon S3
<a name="other-services-cp-chef12-s3"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Karena Anda harus menyediakan tautan ke repositori kode Anda sebagai bagian dari pengaturan pipeline, siapkan repositori kode sebelum membuat pipeline. Dalam panduan ini, Anda mengunggah aplikasi Node.js ke bucket Amazon S3.

Meskipun CodePipeline dapat menggunakan kode langsung dari GitHub atau CodeCommit sebagai sumber, panduan ini menunjukkan cara menggunakan bucket Amazon S3. Dalam panduan ini, Anda mengunggah contoh [aplikasi Node.js](samples/opsworks-nodejs-demo-app.zip) ke bucket Amazon S3 Anda sendiri, sehingga Anda dapat membuat perubahan pada aplikasi. Bucket Amazon S3 yang Anda buat pada langkah ini memungkinkan CodePipeline untuk mendeteksi perubahan pada kode aplikasi dan menerapkan aplikasi yang diubah secara otomatis. Jika mau, Anda dapat menggunakan ember yang ada. Pastikan bucket memenuhi kriteria yang dijelaskan dalam [Simple Pipeline Walkthrough (Amazon S3 Bucket) dalam dokumentasi](https://docs.aws.amazon.com/codepipeline/latest/userguide/getting-started-w.html). CodePipeline 

**penting**  
Bucket Amazon S3 harus berada di wilayah yang sama di mana Anda nantinya akan membuat pipeline. Pada saat ini, CodePipeline mendukung penyedia OpsWorks Stacks di Wilayah AS Timur (Virginia N.) (us-east-1) saja. Semua sumber daya dalam panduan ini harus dibuat di Wilayah AS Timur (Virginia N.). Bucket juga harus berversi karena CodePipeline memerlukan sumber berversi. Untuk informasi lebih lanjut, lihat [Penggunaan Versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html).

**Untuk mengunggah aplikasi ke bucket Amazon S3**

1. Unduh file ZIP dari sampel OpsWorks Stacks, [aplikasi Node.js](samples/opsworks-nodejs-demo-app.zip), dan simpan ke lokasi yang nyaman di komputer lokal Anda.

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

1. Pilih **Buat Bucket**.

1. Pada halaman **Buat Bucket - Pilih Nama Bucket dan Wilayah**, untuk **Nama Bucket**, ketikkan nama unik untuk bucket Anda. Nama bucket harus unik di semua AWS akun, tidak hanya di akun Anda sendiri. Panduan ini menggunakan nama**my-appbucket**, tetapi Anda dapat menggunakannya `my-appbucket-yearmonthday` untuk membuat nama ember Anda unik. Dari daftar drop-down **Region**, pilih **Standar AS**, lalu pilih **Buat**. **Standar AS** setara dengan`us-east-1`.  
![\[S3 Buat halaman Bucket.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_s3bucket.png)

1. Pilih bucket yang Anda buat dari daftar **Semua Bucket**.

1. Pada halaman bucket, pilih **Upload**.

1. Pada halaman **Unggah - Pilih File dan Folder**, pilih **Tambahkan file**. Jelajahi file ZIP yang Anda simpan di langkah 1, pilih **Buka**, lalu pilih **Mulai Unggah**.  
![\[Kotak dialog S3 Pilih File dan Folder\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_uploadzip12.png)

1. Setelah unggahan selesai, pilih file ZIP dari daftar file di bucket Anda, lalu pilih **Properties**.

1. Di panel **Properties**, salin tautan ke file ZIP Anda, dan catat tautannya. Anda akan memerlukan nama bucket dan bagian nama file ZIP dari tautan ini untuk membuat pipeline Anda.

# Langkah 4: Tambahkan aplikasi Anda ke OpsWorks Stacks
<a name="other-services-cp-chef12-addapp"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Sebelum Anda membuat pipeline CodePipeline, tambahkan aplikasi pengujian Node.js ke OpsWorks Stacks. Saat membuat pipeline, Anda harus memilih aplikasi yang telah ditambahkan ke OpsWorks Stacks.

Siapkan tautan bucket Amazon S3 dari langkah 9 dari prosedur sebelumnya. Anda akan memerlukan tautan ke bucket tempat Anda menyimpan aplikasi pengujian untuk menyelesaikan prosedur ini.

**Untuk menambahkan aplikasi ke OpsWorks Stacks**

1. **Di konsol OpsWorks Stacks, buka **CodePipelineDemo**, dan di panel navigasi, pilih Aplikasi.**

1. Pilih **Tambahkan aplikasi**.

1. Pada halaman **Tambah Aplikasi**, berikan informasi berikut: 

   1. Tentukan nama untuk aplikasi Anda. Panduan ini menggunakan nama. `Node.js Demo App`

   1. Untuk **tipe sumber data**, pilih **Tidak ada**. Aplikasi ini tidak memerlukan database eksternal atau sumber data.

   1. **Dalam daftar drop-down **Jenis repositori**, pilih Arsip S3.**

   1. Di kotak string **URL Repositori**, tempel URL yang Anda salin di langkah 9 dari. [Langkah 3: Unggah kode aplikasi ke bucket Amazon S3](other-services-cp-chef12-s3.md) Formulir Anda harus mirip dengan yang berikut ini:  
![\[Tambahkan halaman Aplikasi\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_addapp12ops.png)

1. Anda tidak perlu mengubah pengaturan lain dalam formulir ini. Pilih **Tambahkan Aplikasi**.

1. Saat **aplikasi Aplikasi Demo Node.js** muncul di daftar di halaman **Aplikasi**, lanjutkan ke prosedur berikutnya[Langkah 5: Buat pipeline di CodePipeline](other-services-cp-chef12-pipeline.md).

# Langkah 5: Buat pipeline di CodePipeline
<a name="other-services-cp-chef12-pipeline"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Setelah Anda memiliki tumpukan dengan lapisan dan setidaknya satu instance yang dikonfigurasi di OpsWorks Stacks, buat pipeline CodePipeline dengan OpsWorks Stacks sebagai penyedia untuk menyebarkan aplikasi atau buku masak Chef ke sumber daya Stacks Anda. OpsWorks 

**Untuk membuat pipa**

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

1. Pilih **Buat pipeline**.

1. Pada CodePipeline halaman **Memulai dengan****MyOpsWorksPipeline**, ketik, atau nama pipeline lainnya yang unik untuk akun Anda, lalu pilih **Langkah berikutnya**.

1. Pada halaman **Lokasi Sumber**, pilih **Amazon S3** dari daftar drop-down **penyedia Sumber**.

1. Di area **detail Amazon S3**, ketik jalur bucket Amazon S3 Anda, dalam format. **s3://*bucket-name*/*file name*** Lihat tautan yang Anda catat di langkah 9 dari[Langkah 3: Unggah kode aplikasi ke bucket Amazon S3](other-services-cp-chef12-s3.md). Dalam panduan ini, jalannya adalah. `s3://my-appbucket/opsworks-nodejs-demo-app.zip` Pilih **Langkah selanjutnya**.  
![\[AWS CodePipeline sumber dan penyedia\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_source12.png)

1. Pada halaman **Build**, pilih **No Build** dari daftar drop-down, lalu pilih **Langkah berikutnya**.

1. Pada halaman **Deploy**, pilih **OpsWorks Stacks** sebagai penyedia penyebaran.  
![\[Deploy configuration form for AWS OpsWorks Stacks with fields for stack, layer, and app selection.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_cpprovider12.png)

1. Di bidang **Stack**`CodePipelineDemo`, ketik, atau nama tumpukan yang Anda buat[Langkah 1: Buat tumpukan, lapisan, dan instance di OpsWorks Stacks](other-services-cp-chef12-stack.md).

1. Di bidang **Layer**`Node.js App Server`, ketik, atau nama layer yang Anda buat[Langkah 1: Buat tumpukan, lapisan, dan instance di OpsWorks Stacks](other-services-cp-chef12-stack.md).

1. Di bidang **Aplikasi**, pilih aplikasi yang Anda unggah ke Amazon S3[Langkah 3: Unggah kode aplikasi ke bucket Amazon S3](other-services-cp-chef12-s3.md), lalu **pilih** Langkah berikutnya.

1. Pada halaman **Peran AWS Layanan**, pilih **Buat Peran**.

   Jendela baru terbuka dengan halaman konsol IAM yang menjelaskan peran yang akan dibuat untuk Anda,`AWS-CodePipeline-Service`. Dari daftar drop-down **Nama kebijakan**, pilih **Buat kebijakan baru**. Pastikan dokumen kebijakan memiliki konten berikut. Pilih **Edit** untuk mengubah dokumen kebijakan, jika diperlukan.

   ```
   {
       "Statement": [
           {
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion",
                   "s3:GetBucketVersioning"
               ],
               "Resource": "*",
               "Effect": "Allow"
           },
           {
               "Action": "opsworks:*",
               "Resource": "*",
               "Effect": "Allow"
           }
       ]
   }
   ```

   Setelah selesai membuat perubahan pada dokumen kebijakan, pilih **Izinkan**. Perubahan Anda akan ditampilkan di konsol IAM.  
![\[IAM role summary with AWS-CodePipeline-Service role and policy document editor.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_iamrole.png)
**catatan**  
Jika pembuatan peran gagal, mungkin karena Anda sudah memiliki peran IAM bernama **AWS- CodePipeline -Service**. Jika Anda telah menggunakan peran **AWS- CodePipeline -Service** sebelum Mei 2016, peran tersebut mungkin tidak memiliki izin untuk menggunakan OpsWorks Stacks sebagai penyedia penerapan. Dalam hal ini, Anda harus memperbarui pernyataan kebijakan seperti yang ditunjukkan pada langkah ini. Jika Anda melihat pesan kesalahan, kembali ke awal langkah ini, dan pilih **Gunakan peran yang ada**, bukan **Buat peran**. Jika Anda menggunakan peran yang ada, peran tersebut harus memiliki kebijakan yang dilampirkan yang menyertakan izin yang ditampilkan dalam langkah ini. Untuk informasi selengkapnya tentang peran layanan dan pernyataan kebijakannya, lihat [Mengedit Kebijakan untuk Peran Layanan IAM](https://docs.aws.amazon.com/codepipeline/latest/userguide/access-permissions.html#how-to-custom-role).

1. Jika proses pembuatan peran berhasil, halaman IAM akan ditutup, dan Anda akan dikembalikan ke halaman **Peran AWS Layanan**. Pilih **Langkah selanjutnya**.

1. Pada halaman **Tinjau pipeline Anda**, verifikasi pilihan yang ditampilkan di halaman, lalu pilih **Buat pipeline**.

1. Ketika pipeline Anda siap, pipeline akan mulai menemukan kode sumber Anda dan menerapkan aplikasi Anda ke tumpukan Anda secara otomatis. Proses ini dapat memakan waktu beberapa menit.

# Langkah 6: Memverifikasi penerapan aplikasi di Stacks OpsWorks
<a name="other-services-cp-chef12-verify"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Untuk memverifikasi bahwa aplikasi Node.js CodePipeline telah di-deploy ke stack Anda, masuk ke instance yang Anda buat. [Langkah 1: Buat tumpukan, lapisan, dan instance di OpsWorks Stacks](other-services-cp-chef12-stack.md) Anda harus dapat melihat dan menggunakan aplikasi web Node.js.

**Untuk memverifikasi penerapan aplikasi di instans OpsWorks Stacks Anda**

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

1. Di dasbor OpsWorks Stacks, pilih **CodePipelineDemo**, lalu pilih **Node.js App Server**.

1. Di panel navigasi, pilih **Instans**, lalu pilih alamat IP publik instance yang Anda buat untuk melihat aplikasi web.  
![\[OpsWorks instance management interface showing one online Node.js App Server instance.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_instanceapp12.png)

   Aplikasi akan ditampilkan di tab browser baru.  
![\[Congratulatory message for deploying first app with AWS OpsWorks, featuring stylized landmarks.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_successnode12.png)

# Langkah 7 (Opsional): Perbarui kode aplikasi untuk melihat CodePipeline penerapan ulang aplikasi Anda secara otomatis
<a name="other-services-cp-chef12-update"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Saat Anda membuat perubahan pada kode di aplikasi atau buku masak yang telah Anda gunakan CodePipeline, artefak yang diperbarui akan diterapkan secara otomatis CodePipeline ke instance target Anda (dalam hal ini, ke tumpukan Stacks target). OpsWorks Bagian ini menunjukkan redeployment otomatis ketika Anda memperbarui kode dalam contoh aplikasi Node.js Anda. Jika Anda masih memiliki kode aplikasi untuk panduan ini disimpan secara lokal, dan tidak ada orang lain yang membuat perubahan pada kode sejak Anda memulai penelusuran, Anda dapat melewati langkah 1-4 dari prosedur ini.

**Untuk mengedit kode di aplikasi sampel**

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

1. Buka bucket tempat Anda menyimpan contoh aplikasi Node.js.  
![\[AWS S3 bucket interface showing a single zip file in the my-appbucket folder.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_editcodeS312.png)

1. Pilih file ZIP yang berisi aplikasi. Di menu **Tindakan**, pilih **Unduh**.

1. Di kotak dialog, buka menu konteks (klik kanan), pilih **Unduh**, lalu simpan file ZIP ke lokasi yang nyaman. Pilih **OK**.

1. Ekstrak isi file ZIP ke lokasi yang nyaman. Anda mungkin perlu mengubah izin pada folder yang diekstrak dan subfolder serta isinya untuk memungkinkan pengeditan. Di `opsworks-nodejs-demo-app\views` folder, buka `header.html` file untuk diedit.

1. Cari frasa,`You just deployed your first app with`. Ganti kata `deployed` dengan`updated`. Pada baris berikutnya, ubah `OpsWorks.` ke `OpsWorks and AWS CodePipeline.` Jangan mengedit apa pun kecuali teks.  
![\[Congratulatory message for updating first app with OpsWorks and AWS CodePipeline.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_editheader12.png)

1. Simpan dan tutup file `header.html`.

1. Zip `opsworks-nodejs-demo-app` folder, dan simpan file ZIP ke lokasi yang nyaman. Jangan mengubah nama file ZIP.

1. Unggah file ZIP baru ke bucket Amazon S3 Anda. Dalam panduan ini, nama ember adalah. `my-appbucket`

1. Buka CodePipeline konsol, dan buka pipeline OpsWorks Stacks (**MyOpsWorksPipeline**). Pilih **Perubahan Rilis**.

   (Anda dapat menunggu CodePipeline untuk mendeteksi perubahan kode dari versi aplikasi yang diperbarui di bucket Amazon S3 Anda. Untuk menghemat waktu, panduan ini menginstruksikan Anda untuk memilih **Release** Change.)

1. Amati saat CodePipeline berjalan melalui tahapan pipa. Pertama, CodePipeline mendeteksi perubahan pada artefak sumber.  
![\[Pipeline diagram showing Source stage in progress and Beta stage succeeded 13 days ago.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_cpupdatesource.png)

   CodePipeline mendorong kode yang diperbarui ke tumpukan Anda di OpsWorks Stacks.  
![\[Pipeline view showing Source stage succeeded and Beta stage in progress.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_updatestack.png)

1. Ketika kedua tahap pipeline telah berhasil diselesaikan, buka tumpukan Anda di OpsWorks Stacks.

1. Pada halaman properti tumpukan, pilih **Instans.**

1. Di kolom **IP Publik**, pilih alamat IP publik instans Anda untuk melihat teks aplikasi yang diperbarui.  
![\[Congratulatory message for updating an app with AWS OpsWorks and CodePipeline, with stylized icons.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_successedit12.png)

# Langkah 8 (Opsional): Bersihkan sumber daya
<a name="other-services-cp-chef12-cleanup"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Untuk membantu mencegah tagihan yang tidak diinginkan ke AWS akun Anda, Anda dapat menghapus AWS sumber daya yang Anda gunakan untuk panduan ini. AWS Sumber daya ini mencakup tumpukan OpsWorks Stacks, peran IAM dan profil instance, dan pipeline yang Anda buat. CodePipeline Namun, Anda mungkin ingin tetap menggunakan AWS sumber daya ini saat Anda terus mempelajari lebih lanjut tentang OpsWorks Stacks dan CodePipeline. Jika Anda ingin menyimpan sumber daya ini, Anda telah menyelesaikan panduan ini.

**Untuk menghapus aplikasi dari tumpukan**

Karena Anda tidak membuat atau menerapkan aplikasi sebagai bagian dari CloudFormation template Anda, hapus aplikasi pengujian Node.js sebelum Anda menghapus tumpukan CloudFormation.

1. **Di konsol OpsWorks Stacks, di panel navigasi layanan, pilih Aplikasi.**

1. Di halaman **Aplikasi**, pilih **Aplikasi Demo Node.js**, lalu di **Tindakan**, pilih **hapus**. Ketika Anda diminta untuk mengonfirmasi, pilih **Hapus**. OpsWorks Stacks akan menghapus aplikasi.

**Untuk menghapus tumpukan**

Karena Anda membuat tumpukan dengan menjalankan CloudFormation template, Anda dapat menghapus tumpukan, termasuk lapisan, instance, profil instance, dan grup keamanan yang dibuat template, di CloudFormation konsol.

1. Buka CloudFormation konsol.

1. Di dasbor CloudFormation konsol, pilih tumpukan yang Anda buat. Pada menu **Actions**, pilih **Delete Stack**. Ketika Anda diminta untuk mengonfirmasi, pilih **Ya, Hapus**.

1. Tunggu **DELETE\$1COMPLETE** muncul di kolom **Status** untuk tumpukan.

**Untuk menghapus pipa**

1. Buka CodePipeline konsol.

1. Di CodePipeline dasbor, pilih pipeline yang Anda buat untuk panduan ini.

1. Pada halaman pipeline, pilih **Edit**.

1. Pada halaman **Edit**, pilih **Hapus**. Ketika diminta untuk mengonfirmasi, pilih **Hapus**.

# AWS CodePipeline dengan OpsWorks Tumpukan - Chef 11 Stacks
<a name="other-services-cp-chef11"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

[AWS CodePipeline](https://aws.amazon.com/codepipeline/)memungkinkan Anda membuat pipeline pengiriman berkelanjutan yang melacak perubahan kode dari sumber seperti CodeCommit, Amazon Simple Storage Service (Amazon S3), atau. [GitHub](https://github.com/) Contoh dalam topik ini menjelaskan cara membuat dan menggunakan pipeline sederhana dari CodePipeline sebagai alat penyebaran untuk kode yang Anda jalankan di lapisan OpsWorks Stacks. Dalam contoh ini, Anda membuat pipeline untuk [aplikasi PHP](https://github.com/awslabs/opsworks-demo-php-simple-app) sederhana, lalu menginstruksikan OpsWorks Stacks untuk menjalankan aplikasi pada semua instance dalam lapisan dalam tumpukan Chef 11.10 (dalam hal ini, satu instance).

**catatan**  
Topik ini menjelaskan cara menggunakan pipeline untuk menjalankan dan memperbarui aplikasi di tumpukan Chef 11.10. Untuk informasi tentang cara menggunakan pipeline untuk menjalankan dan memperbarui aplikasi di tumpukan Chef 12, lihat[AWS CodePipeline dengan OpsWorks Tumpukan - Chef 12 Stacks](other-services-cp-chef12.md). Konten yang dikirimkan ke bucket Amazon S3 mungkin berisi konten pelanggan. Untuk informasi selengkapnya tentang menghapus data sensitif, lihat [Bagaimana Cara Mengosongkan Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) atau [Bagaimana Saya Menghapus Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) .

**Topics**
+ [Prasyarat](#w2ab1c14c73c19c13c11)
+ [Skenario lain yang didukung](#w2ab1c14c73c19c13c13)
+ [Langkah 1: Buat tumpukan, lapisan, dan instance di OpsWorks Stacks](other-services-cp-chef11-stack.md)
+ [Langkah 2: Unggah kode aplikasi ke bucket Amazon S3](other-services-cp-chef11-s3.md)
+ [Langkah 3: Tambahkan aplikasi Anda ke OpsWorks Stacks](other-services-cp-chef11-addapp.md)
+ [Langkah 4: Buat pipeline di CodePipeline](other-services-cp-chef11-pipeline.md)
+ [Langkah 5: Memverifikasi penerapan aplikasi di Stacks OpsWorks](other-services-cp-chef11-verify.md)
+ [Langkah 6 (Opsional): Perbarui kode aplikasi untuk melihat CodePipeline penerapan ulang aplikasi Anda secara otomatis](other-services-cp-chef11-update.md)
+ [Langkah 7 (Opsional): Bersihkan sumber daya](other-services-cp-chef11-cleanup.md)

## Prasyarat
<a name="w2ab1c14c73c19c13c11"></a>

Sebelum Anda memulai panduan ini, pastikan Anda memiliki izin administrator untuk melakukan semua tugas berikut. Anda dapat menjadi anggota grup yang menerapkan **AdministratorAccess**kebijakan tersebut, atau Anda dapat menjadi anggota grup yang memiliki izin dan kebijakan yang ditampilkan dalam tabel berikut. Sebagai praktik keamanan terbaik, Anda harus menjadi anggota grup yang memiliki izin untuk melakukan tugas berikut, alih-alih menetapkan izin yang diperlukan untuk pengguna individual.

Untuk informasi selengkapnya tentang membuat grup keamanan di IAM dan menetapkan izin ke grup, lihat [Membuat grup pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups_create.html). Untuk informasi selengkapnya tentang mengelola izin OpsWorks Tumpukan, lihat [Praktik Terbaik: Mengelola](https://docs.aws.amazon.com/opsworks/latest/userguide/best-practices-permissions.html) Izin.


| Izin | Kebijakan yang Direkomendasikan untuk Dilampirkan ke Grup | 
| --- | --- | 
|  Buat dan edit tumpukan, lapisan, dan instance di OpsWorks Stacks.  | AWSOpsWorks\$1FullAccess | 
|  Buat, edit, dan jalankan template di CloudFormation.  | AmazonCloudFormationFullAccess | 
|  Buat, edit, dan akses bucket Amazon S3.  | AmazonS3 FullAccess | 
|  Buat, edit, dan jalankan pipeline CodePipeline, terutama pipeline yang menggunakan OpsWorks Stacks sebagai penyedia.  | AWSCodePipeline\$1FullAccess | 

Anda juga harus memiliki Amazon EC2 key pair. Anda akan diminta untuk memberikan nama key pair ini ketika Anda menjalankan CloudFormation template yang membuat sample stack, layer, dan instance dalam panduan ini. Untuk informasi selengkapnya tentang mendapatkan key pair di EC2 konsol Amazon, lihat [Membuat Pasangan Kunci](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html#create-a-key-pair) di EC2 dokumentasi Amazon. Key pair harus berada di Wilayah AS Timur (Virginia N.). Anda dapat menggunakan key pair yang sudah ada jika Anda sudah memilikinya di wilayah tersebut.

## Skenario lain yang didukung
<a name="w2ab1c14c73c19c13c13"></a>



Panduan ini membuat pipeline sederhana yang mencakup satu tahap **Sumber** dan satu Penerapan**.** Namun, Anda dapat membuat pipeline yang lebih kompleks yang menggunakan OpsWorks Stacks sebagai penyedia. Berikut ini adalah contoh jaringan pipa dan skenario yang didukung:
+ Anda dapat mengedit pipeline untuk menambahkan buku masak Chef ke tahap **Sumber** dan target terkait untuk buku masak yang diperbarui ke tahap **Deploy**. Dalam hal ini, Anda menambahkan tindakan **Deploy** yang memicu pembaruan buku masak Anda saat Anda membuat perubahan pada sumbernya. Buku masak yang diperbarui diterapkan sebelum aplikasi Anda.
+ Anda dapat membuat pipeline yang kompleks, dengan buku masak khusus dan beberapa aplikasi, dan menerapkan ke OpsWorks tumpukan Stacks. Pipeline melacak perubahan pada sumber aplikasi dan buku masak, dan digunakan kembali ketika Anda telah membuat perubahan. Berikut ini menunjukkan contoh pipa yang serupa dan kompleks:  
![\[Pipeline diagram showing Source stage with Amazon S3 inputs and Beta stage with AWS OpsWorks outputs.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_complexpipeline.png)

Untuk informasi lebih lanjut tentang bekerja dengan CodePipeline, lihat [CodePipelinedokumentasi](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html).

# Langkah 1: Buat tumpukan, lapisan, dan instance di OpsWorks Stacks
<a name="other-services-cp-chef11-stack"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Untuk menggunakan OpsWorks Stacks sebagai penyedia penyebaran untuk pipeline, Anda harus terlebih dahulu memiliki tumpukan, lapisan, dan setidaknya satu instance di lapisan. Meskipun Anda dapat membuat tumpukan di OpsWorks Stacks dengan mengikuti petunjuk di [Memulai dengan Tumpukan Linux](https://docs.aws.amazon.com/opsworks/latest/userguide/gettingstarted-linux.html) atau [Memulai dengan Tumpukan Windows](https://docs.aws.amazon.com/opsworks/latest/userguide/gettingstarted-windows.html), untuk menghemat waktu Anda, contoh ini menggunakan AWS CloudFormation templat untuk membuat tumpukan, lapisan, dan instance Chef 11.10 berbasis Linux. Instance yang dibuat oleh template ini menjalankan Amazon Linux 2016.03, dan memiliki tipe instance. `c3.large`

**penting**  
 CloudFormation Template harus disimpan dan dijalankan di wilayah yang sama dengan bucket Amazon S3 tempat Anda kemudian mengunggah aplikasi dan wilayah yang sama tempat Anda nantinya membuat pipeline. CodePipeline Pada saat ini, CodePipeline mendukung penyedia OpsWorks Stacks di Wilayah AS Timur (Virginia N.) (us-east-1) saja. Semua sumber daya dalam panduan ini harus dibuat di Wilayah AS Timur (Virginia N.).  
Jika pembuatan tumpukan gagal, Anda mungkin mendekati jumlah maksimum peran IAM yang diizinkan untuk akun Anda. Pembuatan tumpukan juga bisa gagal jika akun Anda tidak dapat meluncurkan `c3.large` instance dengan tipe instans. Misalnya, jika Anda menggunakan Tingkat AWS Gratis, Anda mungkin menerima kesalahan seperti`Root device type: must be included in EBS`. Jika akun Anda memiliki batasan pada jenis instans yang diizinkan untuk dibuat, seperti batasan yang diberlakukan oleh Tingkat AWS Gratis, coba ubah nilai `InstanceType` parameter di blok instans templat menjadi jenis instans yang dapat digunakan akun Anda.

**Untuk membuat tumpukan, lapisan, dan instance menggunakan CloudFormation**

1. Salin CloudFormation template berikut ke dalam dokumen teks biasa baru. Simpan file ke lokasi yang nyaman di komputer lokal Anda, dan beri nama **NewOpsWorksStack.template**, atau nama lain yang nyaman bagi Anda.

   ```
   {
     "AWSTemplateFormatVersion": "2010-09-09",
     "Mappings": {
       "Region2Principal": {
         "us-east-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "us-west-2": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "us-west-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "eu-west-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "ap-southeast-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "ap-northeast-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "ap-northeast-2": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "ap-southeast-2": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "sa-east-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         },
         "cn-north-1": {
           "EC2Principal": "ec2.amazonaws.com.rproxy.govskope.ca.cn",
           "OpsWorksPrincipal": "opsworks.amazonaws.com.rproxy.govskope.ca.cn"
         },
         "eu-central-1": {
           "EC2Principal": "ec2.amazonaws.com",
           "OpsWorksPrincipal": "opsworks.amazonaws.com"
         }
       }
     },
     "Parameters": {
       "EC2KeyPairName": {
   	  "Type": "String",
   	  "Description": "The name of an existing EC2 key pair that allows you to use SSH to connect to the OpsWorks instance."
   	 }
     },
     "Resources": {
   	"CPOpsDeploySecGroup": {
   	  "Type": "AWS::EC2::SecurityGroup",
   	  "Properties": {
   	    "GroupDescription" : "Lets you manage OpsWorks instances deployed to by CodePipeline"
   	  }
   	},
   	"CPOpsDeploySecGroupIngressHTTP": {
   	  "Type": "AWS::EC2::SecurityGroupIngress",
   	  "Properties" : {
   	    "IpProtocol" : "tcp",
           "FromPort" : "80",
           "ToPort" : "80",
           "CidrIp" : "0.0.0.0/0",
   		"GroupId": {
   		  "Fn::GetAtt": [
   		    "CPOpsDeploySecGroup", "GroupId"
   		  ]
   		}
         }
   	},
   	"CPOpsDeploySecGroupIngressSSH": {
   	  "Type": "AWS::EC2::SecurityGroupIngress",
   	  "Properties" : {
   	    "IpProtocol" : "tcp",
           "FromPort" : "22",
           "ToPort" : "22",
           "CidrIp" : "0.0.0.0/0",
   		"GroupId": {
   		  "Fn::GetAtt": [
   		    "CPOpsDeploySecGroup", "GroupId"
   		  ]
   		}		  
   	  }
   	},
   	"MyStack": {
         "Type": "AWS::OpsWorks::Stack",
         "Properties": {
           "Name": {
             "Ref": "AWS::StackName"
           },
           "ServiceRoleArn": {
             "Fn::GetAtt": [
               "OpsWorksServiceRole",
               "Arn"
             ]
           },
   		"ConfigurationManager" : { "Name": "Chef","Version": "11.10" },
   		"DefaultOs": "Amazon Linux 2016.03",
           "DefaultInstanceProfileArn": {
             "Fn::GetAtt": [
               "OpsWorksInstanceProfile",
               "Arn"
             ]
           }
         }
       },
       "MyLayer": {
         "Type": "AWS::OpsWorks::Layer",
         "Properties": {
           "StackId": {
             "Ref": "MyStack"
           },
           "Name": "MyLayer",
           "Type": "php-app",
   		"Shortname": "mylayer",
           "EnableAutoHealing": "true",
           "AutoAssignElasticIps": "false",
           "AutoAssignPublicIps": "true",
   		"CustomSecurityGroupIds": [
   		  {
   		    "Fn::GetAtt": [
                 "CPOpsDeploySecGroup", "GroupId"
   		    ]
             }			
           ]
         },
         "DependsOn": [
           "MyStack",
           "CPOpsDeploySecGroup"
         ]
       },
       "OpsWorksServiceRole": {
         "Type": "AWS::IAM::Role",
         "Properties": {
           "AssumeRolePolicyDocument": {
             "Statement": [
               {
                 "Effect": "Allow",
                 "Principal": {
                   "Service": [
                     {
                       "Fn::FindInMap": [
                         "Region2Principal",
                         {
                           "Ref": "AWS::Region"
                         },
                         "OpsWorksPrincipal"
                       ]
                     }
                   ]
                 },
                 "Action": [
                   "sts:AssumeRole"
                 ]
               }
             ]
           },
           "Path": "/",
           "Policies": [
             {
               "PolicyName": "opsworks-service",
               "PolicyDocument": {
                 "Statement": [
                   {
                     "Effect": "Allow",
                     "Action": [
                       "ec2:*",
                       "iam:PassRole",
                       "cloudwatch:GetMetricStatistics",
                       "elasticloadbalancing:*"
                     ],
                     "Resource": "*"
                   }
                 ]
               }
             }
           ]
         }
       },
       "OpsWorksInstanceProfile": {
         "Type": "AWS::IAM::InstanceProfile",
         "Properties": {
           "Path": "/",
           "Roles": [
             {
               "Ref": "OpsWorksInstanceRole"
             }
           ]
         }
       },
       "OpsWorksInstanceRole": {
         "Type": "AWS::IAM::Role",
         "Properties": {
           "AssumeRolePolicyDocument": {
             "Statement": [
               {
                 "Effect": "Allow",
                 "Principal": {
                   "Service": [
                     {
                       "Fn::FindInMap": [
                         "Region2Principal",
                         {
                           "Ref": "AWS::Region"
                         },
                         "EC2Principal"
                       ]
                     }
                   ]
                 },
                 "Action": [
                   "sts:AssumeRole"
                 ]
               }
             ]
           },
           "Path": "/",
   		"Policies": [
             {
               "PolicyName": "s3-get",
               "PolicyDocument": {
                 "Version": "2012-10-17",
                 "Statement": [
                   {
                     "Effect": "Allow",
                     "Action": [
                       "s3:GetObject"
                     ],
                     "Resource": "*"
                   }
                 ]
               }
             }
           ]
         }
       },
       "myinstance": {
         "Type": "AWS::OpsWorks::Instance",
         "Properties": {
           "LayerIds": [
             {
               "Ref": "MyLayer"
             }
           ],
           "StackId": {
             "Ref": "MyStack"
           },
           "InstanceType": "c3.large",
           "SshKeyName": {
   		  "Ref": "EC2KeyPairName"
   		}
         }
       }
     },
     "Outputs": {
       "StackId": {
         "Description": "Stack ID for the newly created AWS OpsWorks stack",
         "Value": {
           "Ref": "MyStack"
         }
       }
     }
   }
   ```

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

1. Di CloudFormation halaman beranda, pilih **Buat tumpukan**.

1. **Pada halaman **Pilih Templat**, di area **Pilih templat**, pilih **Unggah templat ke Amazon S3**, lalu pilih Jelajahi.**

1. Jelajahi CloudFormation template yang Anda simpan di langkah 1, lalu pilih **Buka**. Pada halaman **Pilih Templat**, pilih **Selanjutnya**.  
![\[Pilih halaman Template wizard AWS CloudFormation Create Stack.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_cfstackcreate.png)

1. Pada halaman **Tentukan Detail**, beri nama tumpukan **MyStack**, atau nama tumpukan apa pun yang unik untuk akun Anda. Jika Anda memilih nama yang berbeda untuk tumpukan Anda, ubah nama tumpukan di seluruh panduan ini.

1. Di area **Parameter**, berikan nama EC2 key pair yang ingin Anda gunakan untuk mengakses instance OpsWorks Stacks Anda setelah dibuat. Pilih **Berikutnya**.

1. Pada halaman **Opsi**, pilih **Selanjutnya**. (Pengaturan di halaman ini tidak diperlukan untuk panduan ini.)

1.  CloudFormation Template yang Anda gunakan dalam panduan ini menciptakan peran IAM, profil instance, dan instance.
**penting**  
 Sebelum Anda memilih **Buat**, pilih **Biaya** untuk memperkirakan biaya yang mungkin dikenakan AWS untuk membuat sumber daya dengan templat ini.

   **Jika membuat sumber daya IAM dapat diterima, pilih kotak centang **Saya mengakui bahwa templat ini dapat CloudFormation menyebabkan AWS membuat sumber daya IAM**, lalu pilih Buat.** Jika membuat sumber daya IAM tidak dapat diterima, Anda tidak dapat melanjutkan prosedur ini.

1. Di CloudFormation dasbor, Anda dapat melihat kemajuan pembuatan tumpukan. **Sebelum Anda melanjutkan ke langkah berikutnya, tunggu hingga **CREATE\$1COMPLETE** ditampilkan di kolom Status.**  
![\[CloudFormation Dasbor AWS menunjukkan pembuatan tumpukan.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_createstack.png)

**Untuk memverifikasi pembuatan tumpukan di OpsWorks Stacks**

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

1. Di dasbor OpsWorks Stacks, lihat tumpukan yang Anda buat.  
![\[OpsWorks Dasbor AWS menunjukkan pembuatan tumpukan.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_verifystack.png)

1. Buka tumpukan, dan lihat layer dan instance. Perhatikan bahwa layer dan instance dibuat dengan nama dan metadata lain yang disediakan dalam template. CloudFormation Anda siap mengunggah aplikasi ke bucket Amazon S3.

# Langkah 2: Unggah kode aplikasi ke bucket Amazon S3
<a name="other-services-cp-chef11-s3"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Karena Anda harus menyediakan tautan ke repositori kode Anda sebagai bagian dari penyiapan pipeline, siapkan repositori kode sebelum membuat pipeline. Dalam panduan ini, Anda mengunggah aplikasi PHP ke bucket Amazon S3.

Meskipun CodePipeline dapat menggunakan kode langsung dari GitHub atau CodeCommit sebagai sumber, panduan ini menunjukkan cara menggunakan bucket Amazon S3. Bucket Amazon S3 memungkinkan CodePipeline untuk mendeteksi perubahan pada kode aplikasi dan menerapkan aplikasi yang diubah secara otomatis. Jika mau, Anda dapat menggunakan ember yang ada. Pastikan bucket memenuhi kriteria CodePipeline seperti yang dijelaskan dalam [Simple Pipeline Walkthrough (Amazon S3 Bucket) dalam dokumentasi](https://docs.aws.amazon.com/codepipeline/latest/userguide/getting-started-w.html). CodePipeline 

**penting**  
Bucket Amazon S3 harus berada di wilayah yang sama dengan tempat Anda membuat pipeline nanti. Pada saat ini, CodePipeline mendukung penyedia OpsWorks Stacks di Wilayah AS Timur (Virginia N.) (us-east-1) saja. Semua sumber daya dalam panduan ini harus dibuat di Wilayah AS Timur (Virginia N.). Bucket juga harus berversi karena CodePipeline memerlukan sumber berversi. Untuk informasi lebih lanjut, lihat [Penggunaan Versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html).

**Untuk mengunggah aplikasi Anda ke bucket Amazon S3**

1. Dari [GitHub situs web](https://github.com/awslabs/opsworks-demo-php-simple-app/archive/version1.zip), unduh file ZIP dari aplikasi PHP sampel OpsWorks Stacks, dan simpan ke lokasi yang nyaman di komputer lokal Anda.

1. Pastikan bahwa `index.php` dan `ASSETS` folder berada di tingkat root dari file ZIP yang diunduh. Jika tidak, unzip file, dan buat file ZIP baru yang memiliki file-file ini di tingkat root.

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

1. Pilih **Buat Bucket**.

1. Pada halaman **Buat Bucket - Pilih Nama Bucket dan Wilayah**, untuk **Nama Bucket**, ketikkan nama unik untuk bucket Anda. Nama bucket harus unik di semua AWS akun, tidak hanya di akun Anda sendiri. Panduan ini menggunakan nama**my-appbucket**, tetapi Anda dapat menggunakannya `my-appbucket-yearmonthday` untuk membuat nama ember Anda unik. Dari daftar drop-down **Region**, pilih **Standar AS**, lalu pilih **Buat**. **Standar AS** setara dengan`us-east-1`.  
![\[S3 Buat halaman Bucket.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_s3bucket.png)

1. Pilih bucket yang Anda buat dari daftar **Semua Bucket**.

1. Pada halaman bucket, pilih **Unggah**.

1. Pada halaman **Unggah - Pilih File dan Folder**, pilih **Tambahkan file**. Jelajahi file ZIP yang Anda simpan di langkah 1, pilih **Buka**, lalu pilih **Mulai Unggah**.  
![\[Kotak dialog S3 Pilih File dan Folder\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_uploadzip.png)

1. Setelah unggahan selesai, pilih file ZIP dari daftar file di bucket Anda, lalu pilih **Properties**.

1. Di panel **Properties**, salin tautan ke file ZIP Anda, dan catat tautannya. Anda akan memerlukan nama bucket dan bagian nama file ZIP dari tautan ini untuk membuat pipeline Anda.

# Langkah 3: Tambahkan aplikasi Anda ke OpsWorks Stacks
<a name="other-services-cp-chef11-addapp"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Sebelum Anda membuat pipeline CodePipeline, tambahkan aplikasi pengujian PHP ke OpsWorks Stacks. Saat membuat pipeline, Anda harus memilih aplikasi yang telah ditambahkan ke OpsWorks Stacks.

Siapkan tautan bucket Amazon S3 dari langkah 10 dari prosedur sebelumnya. Anda akan memerlukan tautan ke bucket tempat Anda menyimpan aplikasi pengujian untuk menyelesaikan prosedur ini.

**Untuk menambahkan aplikasi ke OpsWorks Stacks**

1. **Di konsol OpsWorks Stacks, buka **MyStack**, dan di panel navigasi, pilih Aplikasi.**

1. Pilih **Tambahkan aplikasi**.

1. Pada halaman **Tambah Aplikasi**, berikan informasi berikut: 

   1. Tentukan nama untuk aplikasi Anda. Panduan ini menggunakan nama. `PHPTestApp`

   1. Dalam daftar drop-down **Type**, pilih **PHP**.

   1. Untuk **tipe sumber data**, pilih **Tidak ada**. Aplikasi ini tidak memerlukan database eksternal atau sumber data.

   1. **Dalam daftar drop-down **Jenis repositori**, pilih Arsip S3.**

   1. Di kotak string **URL Repositori**, tempel URL yang Anda salin di langkah 10. [Langkah 2: Unggah kode aplikasi ke bucket Amazon S3](other-services-cp-chef11-s3.md) Formulir Anda harus mirip dengan yang berikut ini:  
![\[Tambahkan halaman Aplikasi\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_addappops.png)

1. Anda tidak perlu mengubah pengaturan lain dalam formulir ini. Pilih **Tambahkan Aplikasi**.

1. Saat **PHPTestaplikasi** Aplikasi muncul di daftar di halaman **Aplikasi**, lanjutkan ke prosedur berikutnya[Langkah 4: Buat pipeline di CodePipeline](other-services-cp-chef11-pipeline.md).

# Langkah 4: Buat pipeline di CodePipeline
<a name="other-services-cp-chef11-pipeline"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Setelah Anda memiliki tumpukan dengan lapisan dan setidaknya satu instance yang dikonfigurasi di OpsWorks Stacks, buat pipeline CodePipeline dengan OpsWorks Stacks sebagai penyedia untuk menyebarkan aplikasi atau buku masak Chef ke sumber daya Stacks Anda. OpsWorks 

**Untuk membuat pipa**

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

1. Pilih **Buat pipeline**.

1. Pada CodePipeline halaman **Memulai dengan****MyOpsWorksPipeline**, ketik, atau nama pipeline lainnya yang unik untuk akun Anda, lalu pilih **Langkah berikutnya**.

1. Pada halaman **Lokasi Sumber**, pilih **Amazon S3** dari daftar drop-down **penyedia Sumber**.

1. Di area **detail Amazon S3**, ketik jalur bucket Amazon S3 Anda, dalam format. **s3://*bucket-name*/*file name*** Lihat tautan yang Anda catat di langkah 10 dari[Langkah 2: Unggah kode aplikasi ke bucket Amazon S3](other-services-cp-chef11-s3.md). Dalam panduan ini, jalannya adalah. `s3://my-appbucket/opsworks-demo-php-simple-app-version1.zip` Pilih **Langkah selanjutnya**.  
![\[CodePipeline Sumber dan penyedia AWS\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_source.png)

1. Pada halaman **Build**, pilih **No Build** dari daftar drop-down, lalu pilih **Langkah berikutnya**.

1. Pada halaman **Deploy**, pilih **OpsWorks Stacks** sebagai penyedia penyebaran.  
![\[Deploy configuration form for AWS OpsWorks Stacks with fields for stack, layer, and app selection.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_cpprovider.png)

1. Di bidang **Stack**`MyStack`, ketik, atau nama tumpukan yang Anda buat[Langkah 1: Buat tumpukan, lapisan, dan instance di OpsWorks Stacks](other-services-cp-chef11-stack.md).

1. Di bidang **Layer**`MyLayer`, ketik, atau nama layer yang Anda buat[Langkah 1: Buat tumpukan, lapisan, dan instance di OpsWorks Stacks](other-services-cp-chef11-stack.md).

1. Di bidang **Aplikasi**, pilih aplikasi yang Anda unggah ke Amazon S3[Langkah 2: Unggah kode aplikasi ke bucket Amazon S3](other-services-cp-chef11-s3.md), lalu **pilih** Langkah berikutnya.

1. Pada halaman **Peran Layanan AWS**, pilih **Buat Peran**.

   Jendela baru terbuka dengan halaman konsol IAM yang menjelaskan peran yang akan dibuat untuk Anda. `AWS-CodePipeline-Service` Dari daftar drop-down **Nama kebijakan**, pilih **Buat kebijakan baru**. Pastikan dokumen kebijakan memiliki konten berikut. Pilih **Edit** untuk mengubah dokumen kebijakan, jika diperlukan.

   ```
   {
       "Statement": [
           {
               "Action": [
                   "s3:GetObject",
                   "s3:GetObjectVersion",
                   "s3:GetBucketVersioning"
               ],
               "Resource": "*",
               "Effect": "Allow"
           },
           {
               "Action": "opsworks:*",
               "Resource": "*",
               "Effect": "Allow"
           }
       ]
   }
   ```

   Setelah selesai membuat perubahan pada dokumen kebijakan, pilih **Izinkan**. Perubahan Anda akan dihapus di konsol IAM.  
![\[AWSIAM role summary with policy document showing S3 object actions allowed.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_iamrole.png)
**catatan**  
Jika pembuatan peran gagal, itu mungkin karena Anda sudah memiliki peran IAM bernama **AWS- CodePipeline -Service**. Jika Anda telah menggunakan peran **AWS- CodePipeline -Service** sebelum Mei 2016, peran tersebut mungkin tidak memiliki izin untuk menggunakan OpsWorks Stacks sebagai penyedia penerapan; dalam hal ini, Anda harus memperbarui pernyataan kebijakan seperti yang ditunjukkan pada langkah ini. Jika Anda melihat pesan kesalahan, kembali ke awal langkah ini, dan pilih **Gunakan peran yang ada**, bukan **Buat peran**. Jika Anda menggunakan peran yang ada, peran tersebut harus memiliki kebijakan yang dilampirkan yang menyertakan izin yang ditampilkan dalam langkah ini. Untuk informasi selengkapnya tentang peran layanan dan pernyataan kebijakannya, lihat [Mengedit Kebijakan untuk Peran Layanan IAM](https://docs.aws.amazon.com/codepipeline/latest/userguide/access-permissions.html#how-to-custom-role).

1. Jika proses pembuatan peran berhasil, halaman IAM akan ditutup, dan Anda akan dikembalikan ke halaman **Peran Layanan AWS**. Pilih **Langkah selanjutnya**.

1. Pada halaman **Tinjau pipeline Anda**, verifikasi pilihan yang ditampilkan di halaman, lalu pilih **Buat pipeline**.  
![\[Pipeline configuration details for MyOpsWorksPipeline with source, build, and beta stages.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_cpreview.png)

1. Ketika pipeline Anda siap, pipeline akan mulai menemukan kode sumber Anda dan menerapkan aplikasi Anda ke tumpukan Anda secara otomatis. Proses ini dapat memakan waktu beberapa menit.

# Langkah 5: Memverifikasi penerapan aplikasi di Stacks OpsWorks
<a name="other-services-cp-chef11-verify"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Untuk memverifikasi bahwa aplikasi PHP CodePipeline telah di-deploy ke stack Anda, masuk ke instance yang Anda buat. [Langkah 1: Buat tumpukan, lapisan, dan instance di OpsWorks Stacks](other-services-cp-chef11-stack.md) Anda harus dapat melihat dan menggunakan aplikasi web PHP.

**Untuk memverifikasi penerapan aplikasi di instans OpsWorks Stacks**

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

1. Di dasbor OpsWorks Stacks, pilih **MyStack**, lalu pilih **MyLayer**.

1. Di panel navigasi, pilih **Instans**, lalu pilih alamat IP publik instance yang Anda buat untuk melihat aplikasi web.  
![\[Instance details showing one online c3.large instance in us-east-1a with a public IP.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_instanceapp.png)

   Aplikasi akan ditampilkan di tab browser baru.  
![\[Confirmation message for a successfully deployed PHP application on AWS Cloud.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_successphp.png)

# Langkah 6 (Opsional): Perbarui kode aplikasi untuk melihat CodePipeline penerapan ulang aplikasi Anda secara otomatis
<a name="other-services-cp-chef11-update"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Saat Anda membuat perubahan pada kode di aplikasi atau buku masak yang telah Anda gunakan CodePipeline, artefak yang diperbarui akan diterapkan secara otomatis CodePipeline ke instance target Anda (dalam hal ini, ke tumpukan Stacks target). OpsWorks Bagian ini menunjukkan kepada Anda pemindahan otomatis saat memperbarui kode di aplikasi PHP sampel Anda.

**Untuk mengedit kode di aplikasi sampel**

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

1. Buka bucket tempat Anda menyimpan contoh aplikasi PHP Anda.  
![\[AWS S3 console interface showing a bucket with a PHP application file listed.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_editcodeS3.png)

1. Pilih file ZIP yang berisi aplikasi. Di menu **Tindakan**, pilih **Unduh**.

1. Di kotak dialog, buka menu konteks (klik kanan), pilih **Unduh**, lalu simpan file ZIP ke lokasi yang nyaman. Pilih **OK**.

1. Ekstrak isi file ZIP ke lokasi yang nyaman. Anda mungkin perlu mengubah izin pada folder yang diekstrak dan subfolder serta isinya untuk memungkinkan pengeditan. Di `opsworks-demo-php-simple-app-version1` folder, buka `index.php` file untuk diedit.

1. Cari frasa,`Your PHP application is now running`. Ganti teks, `Your PHP application is now running` dengan`You've just deployed your first app to AWS OpsWorks with AWS CodePipeline,`. Jangan mengedit variabel.  
![\[HTML code snippet showing a simple PHP app deployment message with Layanan AWS.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_editheader.png)

1. Simpan dan tutup file `index.php`.

1. Zip `opsworks-demo-php-simple-app-version1` folder, dan simpan file ZIP ke lokasi yang nyaman. Jangan mengubah nama file ZIP.

1. Unggah file ZIP baru ke bucket Amazon S3 Anda. Dalam panduan ini, nama embernya adalah. `my-appbucket`

1. Buka CodePipeline konsol, dan buka pipeline OpsWorks Stacks (**MyOpsWorksPipeline**). Pilih **Perubahan Rilis**.

   (Anda dapat menunggu CodePipeline untuk mendeteksi perubahan kode dari versi aplikasi yang diperbarui di bucket Amazon S3 Anda. Untuk menghemat waktu Anda, panduan ini menginstruksikan Anda untuk memilih **Release** Change.)

1. Amati saat CodePipeline berjalan melalui tahapan pipa. Pertama, CodePipeline mendeteksi perubahan pada artefak sumber.  
![\[Pipeline diagram showing Source stage in progress and Beta stage succeeded 13 days ago.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_cpupdatesource.png)

   CodePipeline mendorong kode yang diperbarui ke tumpukan Anda di OpsWorks Stacks.  
![\[Pipeline view showing Source stage succeeded and Beta stage in progress.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_updatestack.png)

1. Ketika kedua tahap pipeline telah berhasil diselesaikan, buka tumpukan Anda di OpsWorks Stacks (**MyStack**).

1. Pada halaman **MyStack**properti, pilih **Instans.**

1. Di kolom **IP Publik**, pilih alamat IP publik instans Anda untuk melihat teks aplikasi yang diperbarui.  
![\[Confirmation message for successful deployment of a PHP app to AWS OpsWorks using AWS CodePipeline.\]](http://docs.aws.amazon.com/id_id/opsworks/latest/userguide/images/cp_integ_successedit.png)

# Langkah 7 (Opsional): Bersihkan sumber daya
<a name="other-services-cp-chef11-cleanup"></a>

**penting**  
 AWS OpsWorks Stacks Layanan ini mencapai akhir masa pakai pada 26 Mei 2024 dan telah dinonaktifkan untuk pelanggan baru dan yang sudah ada. Kami sangat menyarankan pelanggan untuk memindahkan beban kerja mereka ke solusi lain sesegera mungkin. Jika Anda memiliki pertanyaan tentang migrasi, hubungi AWS Dukungan Tim di [AWS re:Post](https://repost.aws/) atau melalui [AWS Dukungan](https://aws.amazon.com/support) Premium.

Untuk membantu mencegah tagihan yang tidak diinginkan ke akun AWS Anda, Anda dapat menghapus AWS sumber daya yang Anda gunakan untuk panduan ini. AWS Sumber daya ini mencakup tumpukan OpsWorks Stacks, peran IAM dan profil instance, dan pipeline yang Anda buat. CodePipeline Namun, Anda mungkin ingin tetap menggunakan AWS sumber daya ini saat Anda terus mempelajari lebih lanjut tentang OpsWorks Stacks dan CodePipeline. Jika Anda ingin menyimpan sumber daya ini, Anda telah menyelesaikan panduan ini.

**Untuk menghapus aplikasi dari tumpukan**

Karena Anda tidak membuat atau menerapkan aplikasi sebagai bagian dari CloudFormation template Anda, hapus aplikasi pengujian PHP sebelum Anda menghapus tumpukan CloudFormation.

1. **Di konsol OpsWorks Stacks, di panel navigasi layanan, pilih Aplikasi.**

1. Di halaman **Aplikasi**, pilih **PHPTestAplikasi**, lalu di **Tindakan**, pilih **hapus**. Ketika Anda diminta untuk mengonfirmasi, pilih **Hapus**. OpsWorks Stacks akan menghapus aplikasi.

**Untuk menghapus tumpukan**

Karena Anda membuat tumpukan dengan menjalankan CloudFormation template, Anda dapat menghapus tumpukan, termasuk lapisan, instance, profil instance, dan grup keamanan yang dibuat template, di CloudFormation konsol.

1. Buka CloudFormation konsol.

1. Di dasbor CloudFormation konsol, pilih tumpukan yang Anda buat (**MyStack**). Pada menu **Actions**, pilih **Delete Stack**. Ketika Anda diminta untuk mengonfirmasi, pilih **Ya, Hapus**.

1. Tunggu **DELETE\$1COMPLETE** muncul di kolom **Status** untuk tumpukan.

**Untuk menghapus pipa**

1. Buka CodePipeline konsol.

1. Di CodePipeline dasbor, pilih pipeline yang Anda buat untuk panduan ini.

1. Pada halaman pipeline, pilih **Edit**.

1. Pada halaman **Edit**, pilih **Hapus**. Ketika diminta untuk mengonfirmasi, pilih **Hapus**.