

Questa è la nuova *Guida di riferimento ai modelli CloudFormation *. Aggiorna i segnalibri e i link. Per informazioni su come iniziare CloudFormation, consulta la [Guida AWS CloudFormation per l'utente](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

Con l'attributo `DependsOn` puoi specificare che la creazione di una risorsa specifica segua un'altra. Quando aggiungi un attributo `DependsOn` a una risorsa, tale risorsa viene creata solo dopo la creazione della risorsa specificata nell'attributo `DependsOn`.

**Importante**  
Gli stack dipendenti hanno anche dipendenze implicite sotto forma di proprietà di destinazione `!Ref`, `!GetAtt` e `!Sub`. Ad esempio, se le proprietà di una risorsa A utilizzano `!Ref` su una risorsa B, si applica la regola seguente:  
La risorsa B viene creata prima della risorsa A.
La risorsa A viene eliminata prima della risorsa B.
La risorsa B viene aggiornata prima della risorsa A.

Puoi utilizzare l'attributo `DependsOn` con qualsiasi risorsa. Di seguito sono elencati alcuni usi tipici:
+ Determina quando una condizione di attesa diventa valida. Per ulteriori informazioni, consultare [Creating wait conditions in a template](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-waitcondition.html) nella *Guida per l'utente di AWS CloudFormation *.
+ Dichiara dipendenze per le risorse che devono essere create o eliminate in un ordine specifico. Ad esempio, devi dichiarare esplicitamente le dipendenze sugli allegati gateway per alcune risorse in un VPC. Per ulteriori informazioni, consulta [Quando un attributo `DependsOn` è obbligatorio](#gatewayattachment).
+ Sovrascrivi il parallelismo predefinito durante la creazione, l'aggiornamento o l'eliminazione di risorse. CloudFormation crea, aggiorna ed elimina le risorse in parallelo il più possibile. Determina automaticamente quali risorse in un modello possono essere parallelizzate e quali hanno dipendenze che richiedono altre operazioni per finire prima. È possibile utilizzare `DependsOn` per specificare in modo esplicito le dipendenze, il che sostituisce il parallelismo predefinito e impone di CloudFormation operare su tali risorse in un ordine specificato.

**Nota**  
Durante un aggiornamento dello stack, le risorse che dipendono dalle risorse aggiornate vengono aggiornate automaticamente. CloudFormation non apporta modifiche alle risorse aggiornate automaticamente, ma, se a tali risorse è associata una policy di stack, l'account deve disporre delle autorizzazioni per aggiornarle.

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

L'attributo `DependsOn` può richiedere una singola stringa o un elenco di stringhe.

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

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

Il modello seguente contiene una [AWS::EC2::Instance](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-ec2-instance.html)risorsa con un `DependsOn` attributo che specifica `myDB` un [AWS: :RDS::](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html). DBInstance Quando CloudFormation crea questo stack, prima crea, poi crea`myDB`. `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}}'
```

## Quando un attributo `DependsOn` è obbligatorio
<a name="gatewayattachment"></a>

Allegato VPC-gateway

Alcune risorse in un VPC richiedono un gateway (un gateway Internet o VPN). Se il modello CloudFormation definisce un VPC, un gateway e un allegato gateway, tutte le risorse che richiedono il gateway dipendono dall'allegato gateway. Ad esempio, un'istanza Amazon EC2 con un indirizzo IP pubblico dipende dall'allegato VPC-gateway se anche le risorse `VPC` e `InternetGateway` vengono dichiarate nello stesso modello.

Al momento, le risorse seguenti dipendono da un allegato VPC-gateway quando hanno un indirizzo IP pubblico associato e sono in un VPC.
+ Gruppi Auto Scaling
+ Istanze Amazon EC2
+ Load balancer Elastic Load Balancing
+ Indirizzi IP elastici
+ Istanze database Amazon RDS
+ Instradamenti Amazon VPC che includono il gateway Internet

Una propagazione dell'instradamento del gateway VPN dipende da un allegato VPC-gateway quando disponi di un gateway VPN.

Il seguente frammento mostra un esempio di allegato gateway e un'istanza Amazon EC2 che dipende da un allegato 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
```

### Servizio Amazon ECS e gruppo Auto Scaling
<a name="w2aac19c19c17c19"></a>

Quando utilizzi Auto Scaling o Amazon Elastic Compute Cloud (Amazon EC2) per creare istanze di container per un cluster Amazon ECS, la risorsa del servizio Amazon ECS deve avere una dipendenza sul gruppo Auto Scaling o sulle istanze Amazon EC2, come mostrato nel seguente frammento. In questo modo le istanze del contenitore sono disponibili e associate al cluster Amazon ECS prima di CloudFormation creare il servizio 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
```

### Policy del ruolo IAM
<a name="w2aac19c19c17c21"></a>

Risorse che effettuano chiamate aggiuntive AWS richiedono un ruolo di servizio, che consente a un servizio di effettuare chiamate per AWS tuo conto. Ad esempio, la `AWS::CodeDeploy::DeploymentGroup` risorsa richiede un ruolo di servizio che CodeDeploy disponga delle autorizzazioni necessarie per distribuire applicazioni sulle istanze dell'utente. Quando disponi di un singolo modello che definisce un ruolo del servizio, la policy del ruolo (utilizzando la risorsa `AWS::IAM::Policy` o `AWS::IAM::ManagedPolicy`) e una risorsa che usa il ruolo, aggiungi una dipendenza in modo che la risorsa dipenda dalla policy del ruolo. Questa dipendenza garantisce che la policy sia disponibile per tutto il ciclo di vita della risorsa.

Ad esempio, immagina di disporre di un modello con una risorsa del gruppo di distribuzione, un ruolo del servizio e il ruolo della policy. Quando crei uno stack, CloudFormation non creerà il gruppo di distribuzione finché non creerà la politica del ruolo. Senza la dipendenza, CloudFormation può creare la risorsa del gruppo di distribuzione prima di creare la politica del ruolo. In tal caso, il gruppo di distribuzione non riuscirà a creare a causa della mancanza di autorizzazioni.

Se il ruolo ha una politica incorporata, non specificare una dipendenza. CloudFormation crea il ruolo e la relativa politica contemporaneamente.