

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

# Membuat tumpukan pertama Anda
<a name="gettingstarted.walkthrough"></a>

Topik ini memandu Anda melalui pembuatan CloudFormation tumpukan pertama Anda menggunakan Konsol Manajemen AWS. Dengan mengikuti tutorial ini, Anda akan belajar cara menyediakan AWS sumber daya dasar, memantau peristiwa tumpukan, dan menghasilkan output.

Untuk contoh ini, CloudFormation template ditulis dalam YAMG. YAMM adalah format yang dapat dibaca manusia yang banyak digunakan untuk mendefinisikan infrastruktur sebagai kode. Saat Anda mempelajari lebih lanjut CloudFormation, Anda mungkin juga menemukan template lain dalam format JSON, tetapi untuk tutorial ini, YAMG dipilih karena keterbacaannya.

**catatan**  
CloudFormation gratis, tetapi Anda akan dikenakan biaya untuk sumber daya Amazon EC2 dan Amazon S3 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](#getting-started-prerequisites)
+ [Buat CloudFormation tumpukan dengan konsol](#getting-started-create-stack)
+ [Pantau pembuatan tumpukan](#getting-started-monitor-stack-creation)
+ [Uji server web](#getting-started-test-web-server)
+ [Pemecahan masalah](#getting-started-troubleshooting)
+ [Bersihkan](#getting-started-clean-up)
+ [Langkah selanjutnya](#getting-started-next-steps)

## Prasyarat
<a name="getting-started-prerequisites"></a>
+ Anda harus memiliki akses ke pengguna atau peran IAM yang memiliki izin untuk menggunakan Amazon EC2, Amazon S3, CloudFormation dan, atau akses pengguna administratif. Akun AWS 
+ Anda harus memiliki Virtual Private Cloud (VPC) yang memiliki akses ke internet. Template walkthrough 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 dalam topik ini untuk solusi alternatif.

## Buat CloudFormation tumpukan dengan konsol
<a name="getting-started-create-stack"></a>

**Untuk membuat CloudFormation tumpukan Hello world dengan konsol**

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

1. Pilih **Buat tumpukan**.

1. Pada halaman **Create stack**, pilih **Build from Infrastructure Composer**, dan kemudian **Create in Infrastructure Composer**. Ini membawa Anda ke Infrastructure Composer dalam mode CloudFormation konsol tempat Anda dapat mengunggah dan memvalidasi template contoh.

1. Untuk mengunggah dan memvalidasi template contoh, lakukan hal berikut:

   1. Pilih **Template**. Kemudian, salin dan tempel CloudFormation templat berikut ke editor templat:

      ```
      AWSTemplateFormatVersion: 2010-09-09
      Description: CloudFormation Template for WebServer with Security Group and EC2 Instance
      
      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: WebServer 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 via my IP address
            SecurityGroupIngress:
              - IpProtocol: tcp
                FromPort: 80
                ToPort: 80
                CidrIp: !Ref MyIP
      
        WebServer:
          Type: AWS::EC2::Instance
          Properties:
            ImageId: !Ref LatestAmiId
            InstanceType: !Ref InstanceType
            SecurityGroupIds:
              - !Ref WebServerSecurityGroup
            UserData: !Base64 |
              #!/bin/bash
              yum update -y
              yum install -y httpd
              systemctl start httpd
              systemctl enable httpd
              echo "<html><body><h1>Hello World!</h1></body></html>" > /var/www/html/index.html
      
      Outputs:
        WebsiteURL:
          Value: !Join
            - ''
            - - http://
              - !GetAtt WebServer.PublicDnsName
          Description: Website URL
      ```

      Sebelum Anda pindah ke langkah berikutnya, mari luangkan waktu sejenak untuk melihat template dan memahami beberapa CloudFormation konsep kunci.
      + **`Parameters`**Bagian ini mendeklarasikan nilai yang dapat diteruskan ke template saat Anda membuat tumpukan. Sumber daya yang ditentukan kemudian dalam templat mereferensikan nilai-nilai ini dan menggunakan data. Parameter adalah cara yang efektif untuk menentukan informasi yang tidak ingin Anda simpan di template itu sendiri. Mereka juga merupakan cara untuk menentukan informasi yang mungkin unik untuk aplikasi atau konfigurasi tertentu yang Anda gunakan.
      + Template mendefinisikan parameter berikut:
        + **`LatestAmiId`**— Mengambil ID AMI Amazon Linux 2 terbaru dari AWS Systems Manager Parameter Store.
        + **`InstanceType`**— Memungkinkan pemilihan jenis instans EC2 (default:`t2.micro`, allowed:`t3.micro`,`t2.micro`). 
        + **`MyIP`**- Menentukan rentang alamat IP untuk akses HTTP (default: 0.0.0.0/0, memungkinkan akses dari IP apa pun).
      + **`Resources`**Bagian ini berisi definisi AWS sumber daya yang ingin Anda buat dengan template. Deklarasi sumber daya adalah cara yang efisien untuk menentukan semua pengaturan konfigurasi ini sekaligus. Saat menyertakan deklarasi sumber daya dalam templat, Anda dapat membuat dan mengonfigurasi semua sumber daya yang dideklarasikan dengan menggunakan templat tersebut untuk membuat tumpukan. Anda juga dapat membuat tumpukan baru dari template yang sama untuk meluncurkan konfigurasi sumber daya yang identik.
      + Template ini menciptakan sumber daya berikut:
        + **`WebServerSecurityGroup`**— Grup keamanan EC2 yang memungkinkan lalu lintas HTTP masuk pada port 80 dari rentang IP yang ditentukan.
        + **`WebServer`**— Instans EC2 dengan konfigurasi berikut:
          + Menggunakan Amazon Linux 2 AMI terbaru
          + Menerapkan jenis contoh yang dipilih
          + Menambahkan `WebServerSecurityGroup` ke `SecurityGroupIds` properti
          + Termasuk skrip data pengguna untuk menginstal Apache HTTP Server
      + Nama logis ditentukan di awal setiap deklarasi sumber daya dan parameter. Misalnya, `WebServerSecurityGroup` adalah nama logis yang ditetapkan ke sumber daya grup keamanan EC2. `Ref`Fungsi ini kemudian digunakan untuk referensi sumber daya dan parameter dengan nama logisnya di bagian lain dari template. Ketika satu sumber daya mereferensikan sumber daya lain, ini menciptakan ketergantungan di antara mereka.
      + **`Outputs`**Bagian ini mendefinisikan nilai kustom yang dikembalikan setelah pembuatan tumpukan. Anda dapat menggunakan nilai output untuk mengembalikan informasi dari sumber daya di tumpukan, seperti pengidentifikasi sumber daya atau URLs.
      + Template mendefinisikan satu output:
        + **`WebsiteURL`**— URL server web yang digunakan, dibangun menggunakan nama DNS publik instans EC2. `Join`Fungsi ini membantu menggabungkan tetap `http://` dengan variabel `PublicDnsName` menjadi satu string, sehingga mudah untuk menampilkan URL lengkap server web.

   1. Pilih **Validasi** untuk memastikan kode YAMM valid sebelum mengunggah template.

   1. Selanjutnya, pilih **Buat template** untuk membuat template dan menambahkannya ke ember S3.

   1. Dari kotak dialog yang terbuka, catat nama bucket S3 sehingga Anda dapat menghapusnya nanti. Kemudian, pilih **Konfirmasi dan lanjutkan ke CloudFormation**. Ini membawa Anda ke CloudFormation konsol tempat jalur S3 ke template Anda sekarang ditentukan.

1. Pada halaman **Buat tumpukan**, pilih **Berikutnya**.

1. Pada halaman **Tentukan detail tumpukan**, ketikkan nama di bidang **Nama tumpukan**. Nama tumpukan tidak dapat berisi spasi. Untuk contoh ini, gunakan **MyTestStack**.

1. Di bawah **Parameter**, tentukan nilai parameter sebagai berikut:
   + **LatestAmiId**: Ini diatur secara default ke Amazon Linux 2 AMI terbaru.
   + **InstanceType**: Pilih **t2.micro atau **t3.micro**** untuk jenis instans EC2.
**catatan**  
Jika Anda baru AWS, Anda dapat menggunakan tingkat gratis untuk meluncurkan dan menggunakan `t2.micro` instance secara gratis selama 12 bulan (di Wilayah yang tidak `t2.micro` tersedia, Anda dapat menggunakan `t3.micro` instance di bawah tingkat gratis).
   + **MyIP**: Tentukan alamat IP publik Anda yang sebenarnya dengan akhiran. `/32` `/32`Sufiks digunakan dalam notasi CIDR untuk menentukan bahwa satu alamat IP diperbolehkan. Ini pada dasarnya berarti memungkinkan lalu lintas ke dan dari alamat IP spesifik ini, dan tidak ada yang lain.

1. Pilih **Berikutnya** dua kali untuk pergi ke halaman **Review dan create**. Untuk tutorial ini, Anda dapat meninggalkan default pada halaman **Configure stack options** sebagaimana adanya.

1. Tinjau informasi untuk tumpukan. Setelah Anda puas dengan pengaturan, pilih **Kirim**.

## Pantau pembuatan tumpukan
<a name="getting-started-monitor-stack-creation"></a>

Setelah Anda memilih **Kirim**, CloudFormation mulailah membuat sumber daya yang ditentukan dalam template. Tumpukan baru Anda**MyTestStack**,, muncul dalam daftar di bagian atas **CloudFormation**konsol. Statusnya seharusnya`CREATE_IN_PROGRESS`. Anda dapat melihat status detail untuk tumpukan dengan melihat peristiwanya.

**Untuk melihat peristiwa sebuah tumpukan**

1. Di CloudFormation konsol, pilih tumpukan **MyTestStack** dalam daftar.

1. Pilih tab **Peristiwa** di panel detail klaster.

   Konsol secara otomatis menyegarkan daftar peristiwa dengan peristiwa terbaru setiap 60 detik.

Tab **Peristiwa** menampilkan setiap langkah besar dalam pembuatan tumpukan yang diurutkan berdasarkan waktu setiap peristiwa dengan kejadian terbaru berada di atas.

Acara pertama (di bagian bawah daftar acara) adalah awal dari proses pembuatan tumpukan:

`2024-12-23 18:54 UTC-7 MyTestStack CREATE_IN_PROGRESS User initiated`

Berikutnya adalah peristiwa yang menandai awal dan penyelesaian penciptaan setiap sumber daya. Sebagai contoh, pembuatan instans EC2 memberikan hasil sebagai berikut:

`2024-12-23 18:59 UTC-7 WebServer CREATE_COMPLETE`

`2024-12-23 18:54 UTC-7 WebServer CREATE_IN_PROGRESS Resource creation initiated`

`CREATE_IN_PROGRESS`Acara dicatat ketika CloudFormation melaporkan bahwa ia telah mulai membuat sumber daya. Peristiwa `CREATE_COMPLETE` dicatat ketika sumber daya berhasil dibuat.

Ketika CloudFormation telah berhasil membuat tumpukan, Anda akan melihat peristiwa berikut di bagian atas tab **Events**:

`2024-12-23 19:17 UTC-7 MyTestStack CREATE_COMPLETE`

Jika tidak CloudFormation dapat membuat sumber daya, ia melaporkan `CREATE_FAILED` peristiwa dan, secara default, memutar kembali tumpukan dan menghapus sumber daya apa pun yang telah dibuat. Parameter kolom **Alasan Status** menampilkan masalah yang menyebabkan kegagalan.

Setelah tumpukan dibuat, Anda dapat pergi ke tab **Sumber Daya** untuk melihat instans EC2 dan grup keamanan yang Anda buat.

## Uji server web
<a name="getting-started-test-web-server"></a>

Setelah tumpukan berhasil dibuat, navigasikan ke tab **Output** di CloudFormation konsol. Cari bidang **WebsiteUrl**. Ini akan berisi URL publik dari instans EC2 Anda.

Buka browser dan buka URL yang tercantum di bawah **WebsiteUrl**. Anda akan melihat "Hello World\$1" pesan sederhana yang ditampilkan di browser.

Ini mengonfirmasi bahwa instans EC2 Anda menjalankan Apache HTTP Server dan melayani halaman web dasar.

## Pemecahan masalah
<a name="getting-started-troubleshooting"></a>

Jika Anda mengalami rollback selama pembuatan tumpukan, itu mungkin karena VPC yang hilang. Berikut cara mengatasi masalah ini.

### Tidak ada VPC default yang tersedia
<a name="getting-started-troubleshooting-no-default-vpc"></a>

Template dalam panduan ini membutuhkan VPC default. Jika pembuatan tumpukan gagal karena kesalahan ketersediaan VPC atau subnet, Anda mungkin tidak memiliki VPC default di akun Anda. Anda memiliki opsi berikut:
+ **Buat VPC default baru** — Anda dapat membuat VPC default baru melalui konsol VPC Amazon. Untuk petunjuk, lihat [Membuat VPC default di Panduan](https://docs.aws.amazon.com/vpc/latest/userguide/work-with-default-vpc.html#create-default-vpc) Pengguna Amazon *VPC*.
+ **Ubah template untuk menentukan subnet** - Jika Anda memiliki VPC non-default, Anda dapat memodifikasi template untuk secara eksplisit menentukan VPC dan subnet. IDs Tambahkan parameter berikut ke template:

  ```
    SubnetId:
      Description: The subnet ID to launch the instance into
      Type: AWS::EC2::Subnet::Id
  ```

  Kemudian, perbarui `WebServer` sumber daya untuk menyertakan ID subnet:

  ```
    WebServer:
      Type: AWS::EC2::Instance
      Properties:
        ImageId: !Ref LatestAmiId
        InstanceType: !Ref InstanceType
        SecurityGroupIds:
          - !Ref WebServerSecurityGroup
        SubnetId: !Ref SubnetId
        UserData: !Base64 |
          #!/bin/bash
          yum update -y
          yum install -y httpd
          systemctl start httpd
          systemctl enable httpd
          echo "<html><body><h1>Hello World!</h1></body></html>" > /var/www/html/index.html
  ```

  Saat membuat tumpukan, Anda harus menentukan subnet yang memiliki akses internet agar server web dapat dijangkau.

## Bersihkan
<a name="getting-started-clean-up"></a>

Untuk memastikan Anda tidak dikenakan biaya layanan yang tidak diinginkan, Anda dapat membersihkannya dengan menghapus tumpukan dan sumber dayanya. Anda juga dapat menghapus bucket S3 yang menyimpan template stack.

**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 (**MyTestStack**) dan kemudian pilih **Hapus**.

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

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

Jika Anda selesai bekerja dengan template contoh dan tidak lagi memerlukan bucket Amazon S3 Anda, hapus saja. Sebelum Anda dapat menghapus ember, Anda harus terlebih dahulu mengosongkannya. Mengosongkan ember menghapus semua objek di dalamnya.

**Untuk mengosongkan dan menghapus bucket Amazon S3**

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

1. Di panel navigasi di sisi kiri konsol, pilih **Bucket**.

1. Dalam daftar **Bucket**, pilih opsi di sebelah nama bucket yang Anda buat untuk tutorial ini, lalu pilih **Empty**.

1. Di halaman **Bucket kosong**, konfirmasikan bahwa Anda ingin mengosongkan bucket dengan mengetik **permanently delete** ke dalam bidang teks, lalu pilih **Kosongkan**.

1. Pantau progres proses pengosongan bucket di halaman **Bucket kosong: Status**. 

1. Untuk kembali ke daftar bucket Anda, pilih **Keluar**.

1. Pilih opsi di sebelah nama bucket, lalu pilih **Hapus**.

1. Saat diminta konfirmasi, ketikkan nama bucket lalu pilih **Delete bucket**.

1. Pantau perkembangan proses penghapusan bucket dari daftar **Bucket**. Saat Amazon S3 menyelesaikan penghapusan bucket, itu akan menghapus bucket dari daftar.

## Langkah selanjutnya
<a name="getting-started-next-steps"></a>

Selamat\$1 Anda berhasil membuat tumpukan, memantau ciptaannya, dan menggunakan outputnya.

Untuk terus belajar:
+ Pelajari lebih lanjut tentang templat sehingga Anda dapat membuatnya sendiri. Untuk informasi selengkapnya, lihat [Bekerja dengan CloudFormation template](template-guide.md).
+ Coba CloudFormation lokakarya [Memulai dengan](https://catalog.us-east-1.prod.workshops.aws/workshops/df7f72cf-4f10-4664-acb6-b30dc8d4bcf0/en-US) lebih banyak praktik langsung dengan pembuatan template.
+ Untuk versi singkat dari [Memulai dengan CloudFormation](https://catalog.us-east-1.prod.workshops.aws/workshops/df7f72cf-4f10-4664-acb6-b30dc8d4bcf0/en-US), lihat[Menerapkan aplikasi di Amazon EC2](deploying.applications.md). Topik ini menjelaskan skenario yang sama menggunakan skrip CloudFormation pembantu`cfn-init`, untuk mem-bootstrap instance Amazon EC2.