

Ini adalah *Panduan Referensi CloudFormation Template* baru. Harap perbarui bookmark dan tautan Anda. Untuk bantuan memulai CloudFormation, lihat [Panduan AWS CloudFormation Pengguna](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

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

# `DependsOn`atribut
<a name="aws-attribute-dependson"></a>

Dengan atribut `DependsOn` Anda dapat menentukan bahwa pembuatan sumber daya tertentu mengikuti yang lain. Ketika Anda menambahkan atribut `DependsOn` ke sumber daya, sumber daya itu dibuat hanya setelah pembuatan sumber daya yang ditentukan dalam atribut `DependsOn`.

**penting**  
Tumpukan dependen juga memiliki dependensi implisit dalam bentuk properti `!Ref` target,, dan. `!GetAtt` `!Sub` Sebagai contoh, jika properti sumber daya A menggunakan `!Ref` untuk sumber daya B, aturan berikut berlaku:  
Sumber daya B dibuat sebelum sumber daya A.
Sumber daya A dihapus sebelum sumber daya B.
Sumber daya B diperbarui sebelum sumber daya A.

Anda dapat menggunakan atribut `DependsOn` dengan sumber daya apapun. Berikut ini adalah beberapa penggunaan tipikal:
+ Tentukan kapan kondisi tunggu mulai berlaku. Untuk informasi selengkapnya, lihat [Membuat kondisi tunggu di templat](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-waitcondition.html) di *Panduan AWS CloudFormation Pengguna*.
+ Nyatakan dependensi untuk sumber daya yang harus dibuat atau dihapus dalam urutan tertentu. Misalnya, Anda harus secara eksplisit menyatakan dependensi pada lampiran gateway untuk beberapa sumber daya di VPC. Untuk informasi selengkapnya, lihat [Ketika `DependsOn` atribut diperlukan](#gatewayattachment).
+ Timpa paralelisme default saat membuat, memperbarui, atau menghapus sumber daya. CloudFormation membuat, memperbarui, dan menghapus sumber daya secara paralel sejauh mungkin. Ini secara otomatis menentukan sumber daya mana dalam templat yang dapat diparalelkan dan mana yang memiliki dependensi yang memerlukan operasi lain untuk diselesaikan terlebih dahulu. Anda dapat menggunakan `DependsOn` untuk secara eksplisit menentukan dependensi, yang mengesampingkan paralelisme default dan mengarahkan CloudFormation untuk beroperasi pada sumber daya tersebut dalam urutan tertentu.

**catatan**  
Selama pembaruan tumpukan, sumber daya yang bergantung pada sumber daya yang diperbarui diperbarui secara otomatis. CloudFormation Tidak membuat perubahan pada sumber daya yang diperbarui secara otomatis, tetapi, jika kebijakan tumpukan dikaitkan dengan sumber daya ini, akun Anda harus memiliki izin untuk memperbaruinya.

## Sintaksis
<a name="aws-attribute-dependson-syntax"></a>

Atribut `DependsOn` dapat mengambil string tunggal atau daftar string.

```
"DependsOn" : [ {{String, ...}} ]
```

## Contoh
<a name="aws-attribute-dependson-example"></a>

Template berikut berisi [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html)sumber daya dengan `DependsOn` atribut yang menentukan`myDB`, [AWS: :RDS::](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html). DBInstance Saat CloudFormation membuat tumpukan ini, pertama-tama menciptakan`myDB`, lalu menciptakan`Ec2Instance`.

### JSON
<a name="aws-attribute-dependson-example-1.json"></a>

```
 1. {
 2.     "Resources" : {
 3.         "Ec2Instance" : {
 4.             "Type" : "AWS::EC2::Instance",
 5.             "Properties" : {
 6.                 "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}",
 7.                 "InstanceType": "t2.micro"
 8.             },
 9.             "DependsOn" : "myDB"
10.         },
11.         "myDB" : {
12.             "Type" : "AWS::RDS::DBInstance",
13.             "Properties" : {
14.                "AllocatedStorage" : "5",
15.                "DBInstanceClass" : "db.t2.small",
16.                "Engine" : "MySQL",
17.                "EngineVersion" : "5.5",
18.                "MasterUsername" : "{{resolve:secretsmanager:{{MySecret}}:SecretString:{{username}}}}",
19.                "MasterUserPassword" : "{{resolve:secretsmanager:{{MySecret}}:SecretString:{{password}}}}"
20.             }
21.         }
22.     }
23. }
```

### YAML
<a name="aws-attribute-dependson-example-1.yaml"></a>

```
 1. Resources:
 2.   Ec2Instance:
 3.     Type: AWS::EC2::Instance
 4.     Properties:
 5.       ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}'
 6.       InstanceType: t2.micro
 7.     DependsOn: myDB
 8.   myDB:
 9.     Type: AWS::RDS::DBInstance
10.     Properties:
11.       AllocatedStorage: '5'
12.       DBInstanceClass: db.t2.small
13.       Engine: MySQL
14.       EngineVersion: '5.5'
15.       MasterUsername: '{{resolve:secretsmanager:{{MySecret}}:SecretString:{{username}}}}'
16.       MasterUserPassword: '{{resolve:secretsmanager:{{MySecret}}:SecretString:{{password}}}}'
```

## Ketika `DependsOn` atribut diperlukan
<a name="gatewayattachment"></a>

Lampiran VPC-gateway

Beberapa sumber daya di VPC memerlukan gateway (baik gateway Internet atau VPN). Jika templat CloudFormation Anda menentukan VPC, gateway, dan lampiran gateway, semua sumber daya yang memerlukan gateway bergantung pada lampiran gateway. Misalnya, instans Amazon EC2 dengan alamat IP publik bergantung pada lampiran gateway VPC jika `InternetGateway` sumber daya `VPC` dan juga dideklarasikan dalam templat yang sama.

Saat ini, sumber daya berikut bergantung pada lampiran VPC-gateway ketika mereka memiliki alamat IP publik terkait dan berada dalam VPC.
+ Grup Auto Scaling
+ Instans Amazon EC2
+ Penyeimbang beban Elastic Load Balancing
+ Alamat IP elastis
+ Instans basis data Amazon RDS
+ Rute Amazon VPC yang menyertakan gateway Internet

Propagasi rute gateway VPN bergantung pada lampiran gateway VPC saat Anda memiliki gateway VPN.

Cuplikan berikut menunjukkan contoh lampiran gateway dan instans Amazon EC2 yang bergantung pada lampiran gateway:

### JSON
<a name="aws-attribute-dependson-example-2.json"></a>

```
"GatewayToInternet" : {
  "Type" : "AWS::EC2::VPCGatewayAttachment",
  "Properties" : {
    "VpcId" : { 
      "Ref" : "VPC" 
    },
    "InternetGatewayId" : { 
      "Ref" : "InternetGateway" 
    }
  }
},

"EC2Host" : {
  "Type" : "AWS::EC2::Instance",
  "DependsOn" : "GatewayToInternet",
  "Properties" : {
    "InstanceType" : "t2.micro",
    "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}",
    "KeyName"  : { 
      "Ref" : "KeyName" 
    },
    "NetworkInterfaces" : [
      {
        "GroupSet" : [
          { 
            "Ref" : "EC2SecurityGroup" 
          }
        ],
        "AssociatePublicIpAddress" : "true",
        "DeviceIndex" : "0",
        "DeleteOnTermination" : "true",
        "SubnetId" : { 
          "Ref" : "PublicSubnet" 
        }
      }
    ]
  }
}
```

### YAML
<a name="aws-attribute-dependson-example-2.yaml"></a>

```
GatewayToInternet:
  Type: AWS::EC2::VPCGatewayAttachment
  Properties:
    VpcId:
      Ref: VPC
    InternetGatewayId:
      Ref: InternetGateway
EC2Host:
  Type: AWS::EC2::Instance
  DependsOn: GatewayToInternet
  Properties:
    InstanceType: t2.micro
    ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}'
    KeyName:
      Ref: KeyName
    NetworkInterfaces:
    - GroupSet:
      - Ref: EC2SecurityGroup
      AssociatePublicIpAddress: 'true'
      DeviceIndex: '0'
      DeleteOnTermination: 'true'
      SubnetId:
        Ref: PublicSubnet
```

### Layanan Amazon ECS dan grup Auto Scaling
<a name="w2aac19c19c17c19"></a>

Saat Anda menggunakan Auto Scaling atau Amazon Elastic Compute Cloud (Amazon EC2) untuk membuat instance container untuk cluster Amazon ECS, sumber daya layanan Amazon ECS harus memiliki ketergantungan pada grup Auto Scaling atau instans Amazon EC2, seperti yang ditunjukkan pada cuplikan berikut. Dengan begitu instance container tersedia dan terkait dengan cluster Amazon ECS sebelum CloudFormation membuat layanan Amazon ECS.

#### JSON
<a name="aws-attribute-dependson-example-3.json"></a>

```
"service": {
  "Type": "AWS::ECS::Service",
  "DependsOn": [
    "ECSAutoScalingGroup"
  ],
  "Properties" : {
    "Cluster": {
      "Ref": "ECSCluster"
    },
    "DesiredCount": "1",
    "LoadBalancers": [
      {
        "ContainerName": "simple-app",
        "ContainerPort": "80",
        "LoadBalancerName" : { 
          "Ref" : "EcsElasticLoadBalancer" 
        }
      }
    ],
    "Role" : {
      "Ref":"ECSServiceRole"
    },
    "TaskDefinition" : {
      "Ref":"taskdefinition"
    }
  }
}
```

#### YAML
<a name="aws-attribute-dependson-example-3.yaml"></a>

```
service:
  Type: AWS::ECS::Service
  DependsOn:
  - ECSAutoScalingGroup
  Properties:
    Cluster:
      Ref: ECSCluster
    DesiredCount: 1
    LoadBalancers:
    - ContainerName: simple-app
      ContainerPort: 80
      LoadBalancerName:
        Ref: EcsElasticLoadBalancer
    Role:
      Ref: ECSServiceRole
    TaskDefinition:
      Ref: taskdefinition
```

### Kebijakan peran IAM
<a name="w2aac19c19c17c21"></a>

Sumber daya yang membuat panggilan tambahan AWS memerlukan peran layanan, yang memungkinkan layanan melakukan AWS panggilan atas nama Anda. Misalnya, `AWS::CodeDeploy::DeploymentGroup` sumber daya memerlukan peran layanan sehingga CodeDeploy memiliki izin untuk menyebarkan aplikasi ke instance Anda. Saat Anda memiliki satu templat yang menentukan peran layanan, kebijakan peran (dengan menggunakan sumber daya `AWS::IAM::Policy` atau `AWS::IAM::ManagedPolicy`), dan sumber daya yang menggunakan peran, tambahkan dependensi sehingga sumber daya bergantung pada kebijakan peran. Dependensi ini memastikan bahwa kebijakan tersedia di seluruh siklus hidup sumber daya.

Misalnya, bayangkan bahwa Anda memiliki templat dengan sumber daya grup deployment, peran layanan, dan kebijakan peran. Saat Anda membuat tumpukan, CloudFormation tidak akan membuat grup penerapan hingga membuat kebijakan peran. Tanpa dependensi, CloudFormation dapat membuat resource grup deployment sebelum membuat kebijakan peran. Jika hal tersebut terjadi, grup deployment akan gagal membuat karena izin tidak cukup.

Jika peran memiliki kebijakan yang disematkan, jangan tentukan dependensi. CloudFormation menciptakan peran dan kebijakannya pada saat yang bersamaan.