

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

# Bagaimana cara CloudFormation kerja
<a name="cloudformation-overview"></a>

Topik ini menjelaskan cara CloudFormation kerja dan memperkenalkan Anda pada konsep-konsep kunci yang perlu Anda ketahui saat Anda menggunakannya.

**Topics**
+ [Konsep utama](#cfn-whatis-concepts)
+ [Bagaimana cara CloudFormation kerja](#cfn-whatis-howdoesitwork)
+ [Cara untuk memulai CloudFormation](#ways-to-get-started)

## Konsep utama
<a name="cfn-whatis-concepts"></a>

Saat Anda menggunakan CloudFormation, Anda bekerja dengan *templat* dan *tumpukan*. Anda membuat template untuk menggambarkan AWS sumber daya Anda dan propertinya. Setiap kali Anda membuat tumpukan CloudFormation , berikan sumber daya yang dijelaskan dalam template Anda.

**Topics**
+ [Template](#cfn-concepts-templates)
+ [Tumpukan](#cfn-concepts-stacks)
+ [Ubah set](#cfn-concepts-change-sets)

### Template
<a name="cfn-concepts-templates"></a>

 CloudFormation Template adalah file teks berformat YAMB atau JSON. Anda dapat menyimpan file-file ini dengan ekstensi apa pun, seperti`.yaml`,`.json`,`.template`, atau`.txt`. CloudFormation menggunakan template ini sebagai cetak biru untuk membangun sumber daya Anda. AWS Misalnya, dalam template, Anda dapat menjelaskan instans Amazon EC2, seperti jenis instans, ID AMI, pemetaan perangkat blok, dan nama key pair Amazon EC2-nya. Setiap kali Anda membuat tumpukan, Anda juga menentukan templat yang CloudFormation gunakan untuk membuat apa pun yang Anda jelaskan dalam templat.

Misalnya, jika Anda membuat tumpukan dengan template berikut, berikan CloudFormation instance dengan ID `ami-0ff8a91507f77f867` AMI, jenis `t2.micro` instance, nama `testkey` key pair, dan volume Amazon EBS.

#### YAML
<a name="t2-micro-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Description: A sample template
Resources:
  MyEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0ff8a91507f77f867
      InstanceType: t2.micro
      KeyName: testkey
      BlockDeviceMappings:
        - DeviceName: /dev/sdm
          Ebs:
            VolumeType: io1
            Iops: 200
            DeleteOnTermination: false
            VolumeSize: 20
```

#### JSON
<a name="t2-micro-example.json"></a>

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "A sample template",
    "Resources": {
        "MyEC2Instance": {
            "Type": "AWS::EC2::Instance",
            "Properties": {
                "ImageId": "ami-0ff8a91507f77f867",
                "InstanceType": "t2.micro",
                "KeyName": "testkey",
                "BlockDeviceMappings": [
                    {
                        "DeviceName": "/dev/sdm",
                        "Ebs": {
                            "VolumeType": "io1",
                            "Iops": 200,
                            "DeleteOnTermination": false,
                            "VolumeSize": 20
                        }
                    }
                ]
            }
        }
    }
}
```

Anda juga dapat menentukan beberapa sumber daya dalam satu templat dan mengkonfigurasi sumber daya ini untuk bekerja sama. Misalnya, Anda dapat memodifikasi template sebelumnya untuk menyertakan alamat IP Elastis (EIP) dan mengaitkannya dengan instans Amazon EC2, seperti yang ditunjukkan pada contoh berikut:

#### YAML
<a name="multiple-resources-single-template.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Description: A sample template
Resources:
  MyEC2Instance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: ami-0ff8a91507f77f867
      InstanceType: t2.micro
      KeyName: testkey
      BlockDeviceMappings:
        - DeviceName: /dev/sdm
          Ebs:
            VolumeType: io1
            Iops: 200
            DeleteOnTermination: false
            VolumeSize: 20
  MyEIP:
    Type: AWS::EC2::EIP
    Properties:
      InstanceId: !Ref MyEC2Instance
```

#### JSON
<a name="multiple-resources-single-template.json"></a>

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "A sample template",
    "Resources": {
        "MyEC2Instance": {
            "Type": "AWS::EC2::Instance",
            "Properties": {
                "ImageId": "ami-0ff8a91507f77f867",
                "InstanceType": "t2.micro",
                "KeyName": "testkey",
                "BlockDeviceMappings": [
                    {
                        "DeviceName": "/dev/sdm",
                        "Ebs": {
                            "VolumeType": "io1",
                            "Iops": 200,
                            "DeleteOnTermination": false,
                            "VolumeSize": 20
                        }
                    }
                ]
            }
        },
        "MyEIP": {
            "Type": "AWS::EC2::EIP",
            "Properties": {
                "InstanceId": {
                    "Ref": "MyEC2Instance"
                }
            }
        }
    }
}
```

Template sebelumnya berpusat di sekitar satu instans Amazon EC2; namun CloudFormation, template memiliki kemampuan tambahan yang dapat Anda gunakan untuk membangun kumpulan sumber daya yang kompleks dan menggunakan kembali template tersebut dalam berbagai konteks. Misalnya, Anda dapat menambahkan parameter input yang nilainya ditentukan saat Anda membuat CloudFormation tumpukan. Dengan kata lain, Anda dapat menentukan nilai seperti tipe instans ketika Anda membuat tumpukan bukan ketika Anda membuat templat, membuat templat lebih mudah untuk digunakan kembali dalam situasi yang berbeda.

### Tumpukan
<a name="cfn-concepts-stacks"></a>

Saat Anda menggunakan CloudFormation, Anda mengelola sumber daya terkait sebagai satu unit yang disebut tumpukan. Anda membuat, memperbarui, dan menghapus kumpulan sumber daya dengan membuat, memperbarui, dan menghapus tumpukan. Semua sumber daya dalam tumpukan ditentukan oleh CloudFormation template stack. Misalkan Anda membuat template yang menyertakan grup Auto Scaling, penyeimbang beban Elastic Load Balancing, dan instance database Amazon Relational Database Service (Amazon RDS). Untuk membuat sumber daya tersebut, Anda membuat tumpukan dengan mengirimkan template yang Anda buat, dan CloudFormation menyediakan semua sumber daya tersebut untuk Anda.

### Ubah set
<a name="cfn-concepts-change-sets"></a>

Jika Anda perlu mengubah sumber daya yang sedang berjalan dalam tumpukan, Anda memperbarui tumpukan. Sebelum membuat perubahan pada sumber daya Anda, Anda dapat membuat kumpulan perubahan, yang merupakan ringkasan perubahan yang Anda ajukan. Set perubahan memungkinkan Anda melihat bagaimana perubahan dapat mempengaruhi sumber daya yang sedang berjalan, terutama untuk sumber daya kritis, sebelum menerapkannya.

Misalnya, jika Anda mengubah nama instance database Amazon RDS, CloudFormation akan membuat database baru dan menghapus yang lama. Anda akan kehilangan data dalam basis data lama kecuali Anda sudah mencadangkan itu. Jika Anda membuat set perubahan, Anda akan melihat bahwa perubahan Anda akan menyebabkan basis data Anda diganti, dan Anda akan dapat menyesuaikan rencana sebelum Anda memperbarui tumpukan Anda. 

## Bagaimana cara CloudFormation kerja
<a name="cfn-whatis-howdoesitwork"></a>

Saat Anda menggunakan CloudFormation untuk membuat tumpukan, lakukan CloudFormation panggilan layanan yang mendasarinya AWS ke penyediaan dan mengonfigurasi sumber daya yang dijelaskan dalam templat Anda. Anda memerlukan izin untuk membuat sumber daya ini. Misalnya, untuk membuat instans EC2 dengan menggunakan CloudFormation, Anda memerlukan izin untuk membuat instance. Anda mengelola izin ini dengan [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/)(IAM).

Panggilan yang dilakukan CloudFormation semuanya dideklarasikan oleh template Anda. Misalnya, Anda memiliki templat yang menjelaskan instans EC2 dengan tipe instans `t2.micro`. Saat Anda menggunakan template tersebut untuk membuat tumpukan, CloudFormation panggil Amazon EC2 create instance API dan tentukan jenis instans sebagai. `t2.micro` Diagram berikut merangkum alur kerja CloudFormation untuk membuat tumpukan.

![\[Template yang dibuat atau yang sudah ada yang disimpan secara lokal, atau dalam ember, yang digunakan untuk membuat tumpukan.\]](http://docs.aws.amazon.com/id_id/AWSCloudFormation/latest/UserGuide/images/create-stack-diagram.png)


**Untuk membuat tumpukan**

1. Gunakan editor teks untuk membuat CloudFormation template dalam format YAMB atau JSON. Templat CloudFormation menjelaskan sumber daya yang Anda inginkan dan pengaturannya. Gunakan [Komposer Infrastruktur](infrastructure-composer-for-cloudformation.md) untuk memvisualisasikan dan memvalidasi template Anda. Ini membantu Anda memastikan bahwa template Anda terstruktur dengan benar dan bebas dari kesalahan sintaks. Untuk informasi selengkapnya, lihat [Bekerja dengan CloudFormation template](template-guide.md).

1. Simpan template secara lokal atau di bucket Amazon S3.

1. Buat CloudFormation tumpukan dengan menentukan lokasi file template Anda, seperti jalur di komputer lokal Anda atau URL Amazon S3. Jika templat berisi parameter, Anda dapat menentukan nilai input saat membuat tumpukan. Parameter memungkinkan Anda untuk meneruskan nilai ke template Anda sehingga Anda dapat menyesuaikan sumber daya Anda setiap kali Anda membuat tumpukan.
**catatan**  
Jika Anda menentukan file templat yang disimpan secara lokal, CloudFormation unggah ke bucket S3 di akun Anda. AWS CloudFormation membuat bucket untuk setiap wilayah tempat Anda mengunggah file template. Bucket dapat diakses oleh siapa saja yang memiliki izin Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) di akun Anda. AWS Jika bucket yang dibuat oleh CloudFormation sudah ada, template ditambahkan ke bucket itu.  
Anda dapat menggunakan bucket Anda sendiri dan mengelola izinnya dengan mengunggah templat secara manual ke Amazon S3. Kemudian setiap kali Anda membuat atau memperbarui tumpukan, tentukan URL Amazon S3 dari file template.

Setelah semua sumber daya dibuat, CloudFormation laporkan bahwa tumpukan Anda telah dibuat. Kemudian, Anda dapat mulai menggunakan sumber daya dalam tumpukan Anda. Jika pembuatan tumpukan gagal, CloudFormation mengembalikan perubahan Anda dengan menghapus sumber daya yang dibuat.

### Memperbarui tumpukan dengan set perubahan
<a name="updating-stack-with-change-sets"></a>

Ketika Anda perlu memperbarui sumber daya tumpukan, Anda dapat mengubah templat tumpukan. Anda tidak perlu membuat tumpukan baru dan menghapus yang lama. Untuk memperbarui tumpukan, buat set perubahan dengan mengirimkan versi modifikasi dari template tumpukan asli, nilai parameter input yang berbeda, atau keduanya. CloudFormation membandingkan template yang dimodifikasi dengan template asli dan menghasilkan set perubahan. Set perubahan mencantumkan perubahan yang diajukan. Setelah meninjau perubahan, Anda dapat memulai set perubahan untuk memperbarui tumpukan Anda atau Anda dapat membuat set perubahan baru. Diagram berikut merangkum alur kerja untuk memperbarui tumpukan.

![\[Template yang menggunakan set perubahan untuk melihat nilai yang dimodifikasi sebelum menjalankan set perubahan untuk memperbarui tumpukan.\]](http://docs.aws.amazon.com/id_id/AWSCloudFormation/latest/UserGuide/images/update-stack-diagram.png)


**Untuk memperbarui tumpukan dengan set perubahan**

1. Anda dapat memodifikasi template CloudFormation tumpukan dengan menggunakan [Komposer Infrastruktur](infrastructure-composer-for-cloudformation.md) atau editor teks. Untuk informasi selengkapnya, lihat [Perbarui template tumpukan Anda](using-cfn-updating-stacks-get-template.md).

   Saat Anda memperbarui template Anda, perlu diingat bahwa pembaruan dapat menyebabkan gangguan. Bergantung pada sumber daya dan properti yang Anda perbarui, pembaruan mungkin mengganggu atau bahkan mengganti sumber daya yang ada. Untuk informasi selengkapnya, lihat [Memahami perilaku pembaruan sumber daya tumpukan](using-cfn-updating-stacks-update-behaviors.md).

1. Simpan CloudFormation template secara lokal atau dalam ember S3.

1. Buat set perubahan dengan menentukan tumpukan yang ingin Anda perbarui dan lokasi templat yang dimodifikasi, seperti jalur di komputer lokal Anda atau URL Amazon S3. Untuk informasi selengkapnya tentang cara membuat set perubahan, lihat [Perbarui CloudFormation tumpukan menggunakan set perubahan](using-cfn-updating-stacks-changesets.md).
**catatan**  
Jika Anda menentukan template yang disimpan di komputer lokal Anda, CloudFormation secara otomatis mengunggah template Anda ke bucket S3 di komputer Anda. Akun AWS

1. Lihat set perubahan untuk memeriksa apakah CloudFormation akan melakukan perubahan yang Anda harapkan. Misalnya, periksa apakah CloudFormation akan mengganti sumber daya tumpukan penting. Anda dapat membuat set perubahan sebanyak yang dibutuhkan sampai Anda telah menyertakan perubahan yang diinginkan.
**penting**  
Set perubahan tidak menunjukkan apakah pembaruan tumpukan Anda akan berhasil. Misalnya, set perubahan tidak memeriksa apakah Anda akan melampaui [kuota](cloudformation-limits.md) akun, jika Anda memperbarui sumber daya yang tidak mendukung pembaruan, atau jika Anda memiliki [izin](control-access-with-iam.md) yang tidak memadai untuk mengubah sumber daya, yang dapat menyebabkan pembaruan tumpukan gagal.

1. Mulai set perubahan yang ingin Anda terapkan ke tumpukan Anda. CloudFormation memperbarui tumpukan Anda dengan memperbarui hanya sumber daya yang Anda modifikasi dan memberi sinyal bahwa tumpukan Anda telah berhasil diperbarui. Jika pembaruan tumpukan gagal, CloudFormation memutar kembali perubahan untuk mengembalikan tumpukan ke status kerja terakhir yang diketahui.

## Cara untuk memulai CloudFormation
<a name="ways-to-get-started"></a>

Untuk membuat CloudFormation tumpukan hello world dengan konsol, lihat[Membuat tumpukan pertama Anda](gettingstarted.walkthrough.md).

Untuk pembelajaran terpandu, cobalah [Memulai dengan CloudFormation](https://catalog.us-east-1.prod.workshops.aws/workshops/df7f72cf-4f10-4664-acb6-b30dc8d4bcf0/en-US) lokakarya, yang menawarkan pengalaman langsung dengan pengembangan templat.