

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

# Menerapkan aplikasi di Amazon EC2
<a name="deploying.applications"></a>

Anda dapat menggunakan CloudFormation untuk menginstal, mengonfigurasi, dan memulai aplikasi secara otomatis di instans Amazon EC2. Melakukan hal ini memungkinkan Anda untuk dengan mudah menduplikasi penyebaran dan memperbarui instalasi yang ada tanpa terhubung langsung ke instans, yang dapat menghemat banyak waktu dan usaha.

CloudFormation termasuk satu set skrip pembantu (`cfn-init`,, `cfn-signal``cfn-get-metadata`, dan`cfn-hup`) yang didasarkan pada. `cloud-init` Anda memanggil skrip pembantu ini dari CloudFormation templat Anda untuk menginstal, mengonfigurasi, dan memperbarui aplikasi di instans Amazon EC2 yang ada di templat yang sama. Untuk informasi selengkapnya, lihat [referensi skrip CloudFormation pembantu di Panduan Referensi CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/cfn-helper-scripts-reference.html) *Template*.

Dalam [tutorial memulai](gettingstarted.walkthrough.md), Anda membuat server web sederhana menggunakan `UserData` skrip bash dasar. Meskipun ini berfungsi untuk halaman “Hello World” sederhana, aplikasi nyata seringkali membutuhkan konfigurasi yang lebih canggih, termasuk:
+ Beberapa paket perangkat lunak diinstal dalam urutan yang benar.
+ File konfigurasi kompleks yang dibuat dengan konten tertentu.
+ Layanan dimulai dan dikonfigurasi untuk berjalan secara otomatis.
+ Penanganan kesalahan dan validasi proses penyiapan.

CloudFormationskrip pembantu menyediakan cara yang lebih kuat dan dapat dipelihara untuk mengonfigurasi instance EC2 dibandingkan dengan skrip bash dasar di. `UserData` Skrip `cfn-init` helper membaca data konfigurasi dari metadata template Anda dan menerapkannya secara sistematis ke instance Anda.

Dalam tutorial ini, Anda akan belajar cara menggunakan skrip `cfn-init` helper dan memantau proses bootstrap.

**catatan**  
CloudFormation gratis, tetapi Anda akan dikenakan biaya untuk sumber daya Amazon EC2 yang Anda buat. Namun, jika Anda baru mengenal AWS, Anda dapat memanfaatkan [Tingkat Gratis](https://aws.amazon.com/free/) untuk meminimalkan atau menghilangkan biaya selama proses pembelajaran ini.

**Topics**
+ [Prasyarat](#bootstrapping-tutorial-prerequisites)
+ [Memahami konsep bootstrap](#bootstrapping-tutorial-understand-concepts)
+ [Mulailah dengan contoh bootstrap sederhana](#bootstrapping-tutorial-simple-example)
+ [Menambahkan file dan perintah](#bootstrapping-tutorial-add-complexity)
+ [Menambahkan keamanan jaringan](#bootstrapping-tutorial-security-group)
+ [Template bootstrap lengkap](#bootstrapping-tutorial-complete-template)
+ [Buat tumpukan menggunakan konsol](#bootstrapping-tutorial-create-stack)
+ [Pantau proses bootstrap](#bootstrapping-tutorial-validate-bootstrap)
+ [Uji server web bootstrapped](#bootstrapping-tutorial-test-web-server)
+ [Memecahkan masalah bootstrap](#bootstrapping-tutorial-troubleshooting)
+ [Pembersihan sumber daya](#bootstrapping-tutorial-clean-up)
+ [Langkah selanjutnya](#bootstrapping-tutorial-next-steps)

## Prasyarat
<a name="bootstrapping-tutorial-prerequisites"></a>
+ Anda harus telah menyelesaikan [Membuat tumpukan pertama Anda](gettingstarted.walkthrough.md) tutorial atau memiliki pengalaman yang setara dengan CloudFormation dasar-dasar.
+ Anda harus memiliki akses ke pengguna atau peran IAM yang memiliki izin untuk menggunakan Amazon EC2 CloudFormation dan, atau akses pengguna administratif. Akun AWS 
+ Anda harus memiliki Virtual Private Cloud (VPC) yang memiliki akses ke internet. Template tutorial ini membutuhkan VPC default, yang datang secara otomatis dengan yang lebih baru. Akun AWS Jika Anda tidak memiliki VPC default, atau jika telah dihapus, lihat bagian pemecahan masalah di [Membuat tumpukan pertama Anda](gettingstarted.walkthrough.md) tutorial untuk solusi alternatif.

## Memahami konsep bootstrap
<a name="bootstrapping-tutorial-understand-concepts"></a>

Mari kita pahami konsep kunci yang membuat bootstrapping berfungsi sebelum membuat template.

### `cfn-init`Naskah pembantu
<a name="bootstrapping-tutorial-cfn-init-overview"></a>

CloudFormation menyediakan skrip pembantu Python yang dapat Anda gunakan untuk menginstal perangkat lunak dan memulai layanan pada instans Amazon EC2. `cfn-init`Skrip membaca metadata sumber daya dari template Anda dan menerapkan konfigurasi ke instance Anda.

Prosesnya bekerja sebagai berikut:

1. Anda menentukan konfigurasi di `Metadata` bagian sumber daya EC2 Anda.

1. Anda menelepon `cfn-init` dari `UserData` naskah.

1. `cfn-init`membaca metadata dan menerapkan konfigurasi.

1. Instans Anda dikonfigurasi sesuai dengan spesifikasi Anda.

### Struktur metadata
<a name="bootstrapping-tutorial-metadata-structure"></a>

Konfigurasi didefinisikan dalam struktur tertentu dalam instans EC2 Anda.

```
Resources:
  EC2Instance:
    Type: AWS::EC2::Instance
    Metadata:                       # Metadata section for the resource
      AWS::CloudFormation::Init:    # Required key that cfn-init looks for
        config:                     # Configuration name (you can have multiple)
          packages:                 # Install packages
          files:                    # Create files
          commands:                 # Run commands
          services:                 # Start/stop services
```

`cfn-init`Skrip memproses bagian-bagian ini dalam urutan tertentu: paket, grup, pengguna, sumber, file, perintah, dan kemudian layanan.

## Mulailah dengan contoh bootstrap sederhana
<a name="bootstrapping-tutorial-simple-example"></a>

Mari kita mulai dengan contoh bootstrap minimal yang hanya menginstal dan memulai Apache.

```
Resources:
  EC2Instance:
    Type: AWS::EC2::Instance
    Metadata:
      AWS::CloudFormation::Init:
        config:
          packages:                 # Install Apache web server
            yum:
              httpd: []
          services:                 # Start Apache and enable it to start on boot
            systemd:
              httpd:
                enabled: true
                ensureRunning: true
    Properties:
      ImageId: !Ref LatestAmiId
      InstanceType: !Ref InstanceType
      UserData: !Base64             # Script that runs when instance starts
        Fn::Sub: |
          #!/bin/bash
          yum install -y aws-cfn-bootstrap
          /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource EC2Instance --region ${AWS::Region}
```

Contoh sederhana ini menunjukkan konsep inti:
+ `packages`bagian menginstal `httpd` paket menggunakanyum. Ini berfungsi di Amazon Linux dan distribusi Linux lainnya yang digunakanyum.
+ `services`bagian memastikan `httpd` mulai dan berjalan secara otomatis.
+ `UserData`menginstal alat bootstrap terbaru dan panggilan`cfn-init`.

## Menambahkan file dan perintah
<a name="bootstrapping-tutorial-add-complexity"></a>

Sekarang, mari kita tingkatkan contoh kita dengan menambahkan halaman web khusus dan file log di `/var/log` direktori pada instance EC2.

### Membuat file
<a name="bootstrapping-tutorial-files-section"></a>

`files`Bagian ini memungkinkan Anda untuk membuat file pada instance dengan konten tertentu. Pipa vertikal (`|`) memungkinkan Anda untuk melewati blok teks literal (kode HTML) sebagai konten file (`/var/www/html/index.html`).

```
files:
  /var/www/html/index.html:
    content: |
      <body>
        <h1>Congratulations, you have successfully launched the AWS CloudFormation sample.</h1>
      </body>
```

### Menjalankan perintah
<a name="bootstrapping-tutorial-commands-section"></a>

`commands`Bagian ini memungkinkan Anda menjalankan perintah shell selama proses bootstrap. Perintah ini membuat file log di `/var/log/welcome.txt` pada instance EC2. Untuk melihatnya, Anda memerlukan key pair Amazon EC2 untuk digunakan untuk akses SSH dan rentang alamat IP yang dapat digunakan untuk SSH ke instance (tidak dibahas di sini).

```
commands:
  createWelcomeLog:
    command: "echo 'cfn-init ran successfully!' > /var/log/welcome.txt"
```

## Menambahkan keamanan jaringan
<a name="bootstrapping-tutorial-security-group"></a>

Karena kita sedang menyiapkan server web, kita perlu mengizinkan lalu lintas web (HTTP) untuk mencapai instance EC2 kita. Untuk melakukan ini, kami akan membuat grup keamanan yang memungkinkan lalu lintas masuk pada port 80 dari alamat IP Anda. Instans EC2 juga perlu mengirim lalu lintas ke internet, misalnya, untuk menginstal pembaruan paket. Secara default, grup keamanan mengizinkan semua lalu lintas keluar. Kami kemudian akan mengaitkan grup keamanan ini dengan instans EC2 kami menggunakan `SecurityGroupIds` properti.

```
WebServerSecurityGroup:
  Type: AWS::EC2::SecurityGroup
  Properties:
    GroupDescription: Allow HTTP access from my IP address
    SecurityGroupIngress:
      - IpProtocol: tcp
        Description: HTTP
        FromPort: 80
        ToPort: 80
        CidrIp: !Ref MyIP
```

## Template bootstrap lengkap
<a name="bootstrapping-tutorial-complete-template"></a>

Sekarang, mari kita satukan semua bagian. Berikut adalah template lengkap yang menggabungkan semua konsep yang telah kita bahas.

```
AWSTemplateFormatVersion: 2010-09-09
Description: Bootstrap an EC2 instance with Apache web server using cfn-init

Parameters:
  LatestAmiId:
    Description: The latest Amazon Linux 2 AMI from the Parameter Store
    Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
    Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'

  InstanceType:
    Description: EC2 instance type
    Type: String
    Default: t2.micro
    AllowedValues:
      - t3.micro
      - t2.micro
    ConstraintDescription: must be a valid EC2 instance type.

  MyIP:
    Description: Your IP address in CIDR format (e.g. 203.0.113.1/32)
    Type: String
    MinLength: 9
    MaxLength: 18
    Default: 0.0.0.0/0
    AllowedPattern: '^(\d{1,3}\.){3}\d{1,3}\/\d{1,2}$'
    ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.

Resources:
  WebServerSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Allow HTTP access from my IP address
      SecurityGroupIngress:
        - IpProtocol: tcp
          Description: HTTP
          FromPort: 80
          ToPort: 80
          CidrIp: !Ref MyIP

  WebServer:
    Type: AWS::EC2::Instance
    Metadata:
      AWS::CloudFormation::Init:
        config:
          packages:
            yum:
              httpd: []
          files:
            /var/www/html/index.html:
              content: |
                <body>
                  <h1>Congratulations, you have successfully launched the AWS CloudFormation sample.</h1>
                </body>
          commands:
            createWelcomeLog:
              command: "echo 'cfn-init ran successfully!' > /var/log/welcome.txt"
          services:
            systemd:
              httpd:
                enabled: true
                ensureRunning: true
    Properties:
      ImageId: !Ref LatestAmiId
      InstanceType: !Ref InstanceType
      SecurityGroupIds:
        - !Ref WebServerSecurityGroup
      UserData: !Base64
        Fn::Sub: |
          #!/bin/bash
          yum install -y aws-cfn-bootstrap
          /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource WebServer --region ${AWS::Region}
      Tags:
        - Key: Name
          Value: Bootstrap Tutorial Web Server

Outputs:
  WebsiteURL:
    Value: !Sub 'http://${WebServer.PublicDnsName}'
    Description: EC2 instance public DNS name
```

## Buat tumpukan menggunakan konsol
<a name="bootstrapping-tutorial-create-stack"></a>

Prosedur berikut melibatkan mengunggah template tumpukan sampel dari file. Buka editor teks di mesin lokal Anda dan tambahkan template. Simpan file dengan nama`samplelinux2stack.template`.

**Untuk meluncurkan template tumpukan**

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

1. Pilih **Buat tumpukan**, **Dengan sumber daya baru (standar)**.

1. Di bawah **Tentukan templat**, pilih **Unggah file templat**, **Pilih file** untuk mengunggah `samplelinux2stack.template` file. 

1. Pilih **Berikutnya**.

1. Pada halaman **Tentukan detail tumpukan**, ketik **BootstrapTutorialStack** sebagai nama tumpukan.

1. Di bawah **Parameter**, lakukan hal berikut.
   + **LatestAmiId**: Tinggalkan nilai default.
   + **InstanceType**: Pilih salah satu **t2.micro** atau **t3.micro** untuk jenis instans EC2.
   + **MyIP**: Masukkan alamat IP publik Anda dengan akhiran. `/32`

1. Pilih **Berikutnya** dua kali, lalu **Kirim** untuk membuat tumpukan.

## Pantau proses bootstrap
<a name="bootstrapping-tutorial-validate-bootstrap"></a>

Proses Bootstrap membutuhkan waktu lebih lama daripada peluncuran EC2 sederhana karena perangkat lunak tambahan sedang diinstal dan dikonfigurasi.

**Untuk memantau kemajuan bootstrap**

1. Di CloudFormation konsol, pilih tumpukan Anda dan buka tab **Acara**.

1. Perhatikan `WebServer CREATE_IN_PROGRESS` acara tersebut. Proses bootstrap dimulai setelah instance diluncurkan.

1. Proses bootstrap biasanya memakan waktu beberapa menit. Anda akan melihat `WebServer CREATE_COMPLETE` ketika itu selesai.

Jika Anda ingin melihat apa yang terjadi selama proses bootstrap, Anda dapat memeriksa log instance.

**Untuk melihat log bootstrap (opsional)**

1. Buka [konsol EC2](https://console.aws.amazon.com/ec2/) dan temukan instans Anda.

1. Pilih instance, lalu pilih **Actions**, **Monitor dan troubleshoot**, **Dapatkan log sistem** untuk melihat kemajuan bootstrap.

1. Jika Anda tidak segera melihat log, tunggu dan segarkan halaman. 

## Uji server web bootstrapped
<a name="bootstrapping-tutorial-test-web-server"></a>

Saat tumpukan Anda ditampilkan`CREATE_COMPLETE`, uji server web Anda.

**Untuk menguji server web**

1. Di CloudFormation konsol, buka tab **Output** untuk tumpukan Anda.

1. Klik pada nilai **WebsiteUrl** untuk membuka server web Anda di tab baru.

1. Anda akan melihat halaman web kustom Anda dengan pesan`Congratulations, you have successfully launched the AWS CloudFormation sample`.

**catatan**  
Jika halaman tidak segera dimuat, tunggu sebentar dan coba lagi. Proses bootstrap mungkin masih selesai bahkan setelah tumpukan ditampilkan`CREATE_COMPLETE`.

## Memecahkan masalah bootstrap
<a name="bootstrapping-tutorial-troubleshooting"></a>

Jika proses bootstrap Anda gagal atau server web Anda tidak berfungsi, berikut adalah masalah dan solusi umum.

### Masalah umum
<a name="bootstrapping-tutorial-common-issues"></a>
+ **Pembuatan tumpukan gagal** - Periksa tab **Acara** untuk pesan kesalahan tertentu.
+ **Server web tidak dapat diakses** — Verifikasi alamat IP Anda benar dalam `MyIP` parameter. Ingatlah untuk menyertakan `/32` di akhir.
+ **Proses Bootstrap gagal** - Instance mungkin diluncurkan tetapi `cfn-init` gagal. Periksa log sistem seperti yang dijelaskan di bagian pemantauan.

## Pembersihan sumber daya
<a name="bootstrapping-tutorial-clean-up"></a>

Untuk menghindari tagihan yang sedang berlangsung, Anda dapat membersihkan dengan menghapus tumpukan dan sumber dayanya. 

**Untuk menghapus tumpukan dan sumber dayanya**

1. Buka [konsol CloudFormation](https://console.aws.amazon.com/cloudformation/).

1. Pada halaman **Stacks**, pilih opsi di sebelah nama tumpukan yang Anda buat (**BootstrapTutorialStack**) dan kemudian pilih **Hapus**.

1. Saat diminta konfirmasi, pilih **Hapus**.

1. Pantau kemajuan proses penghapusan tumpukan pada tab **Event**. Status untuk **BootstrapTutorialStack** perubahan ke `DELETE_IN_PROGRESS`. Ketika CloudFormation menyelesaikan penghapusan tumpukan, itu menghapus tumpukan dari daftar.

## Langkah selanjutnya
<a name="bootstrapping-tutorial-next-steps"></a>

Selamat\$1 Anda telah berhasil mempelajari cara mem-bootstrap instance EC2 dengan. CloudFormation Anda sekarang mengerti:
+ Cara menggunakan `cfn-init` skrip pembantu
+ Cara menyusun metadata untuk bootstrap
+ Cara menginstal paket, membuat file, menjalankan perintah, dan mengelola layanan
+ Cara memantau masalah bootstrap

Untuk terus belajar:
+ Pelajari cara memperbarui tumpukan yang sedang berjalan dan menggunakan skrip `cfn-hup` helper. Untuk informasi selengkapnya, lihat [Perbarui CloudFormation tumpukan](updating.stacks.walkthrough.md).
+ Pelajari cara mem-bootstrap Windows tumpukan. Untuk informasi selengkapnya, lihat [Tumpukan berbasis bootstrap Windows CloudFormation](cfn-windows-stacks-bootstrapping.md).
+ Jelajahi skenario bootstrap yang lebih kompleks dengan beberapa set konfigurasi. Untuk informasi selengkapnya, lihat [cfn-init](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/cfn-init.html) dan [AWS::CloudFormation::Init](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-init.html)di Panduan *Referensi CloudFormation Template*.
+ Pelajari tentang `cfn-signal` pelaporan status penyelesaian bootstrap. Untuk informasi selengkapnya, lihat [cfn-signal di Panduan](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/cfn-signal.html) *Referensi CloudFormation Template*.