

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à.

# Prerequisiti per sincronizzare gli stack con un repository Git utilizzando la sincronizzazione Git
<a name="git-sync-prereq"></a>

Prima di sincronizzare uno CloudFormation stack con il tuo repository Git, verifica che siano soddisfatti i seguenti requisiti.

**Topics**
+ [Repository Git](#git-sync-prereq-repo)
+ [CloudFormation modello](#git-sync-prereq-template)
+ [Ruolo di servizio della sincronizzazione Git](#git-sync-prereq-iam)
+ [Autorizzazioni IAM per utenti della console](#git-sync-prereq-user-permissions)

## Repository Git
<a name="git-sync-prereq-repo"></a>

Devi disporre di un repository Git ospitato su una delle seguenti piattaforme:
+ [GitHub](https://github.com/)
+ [GitHub Impresa](https://github.com/enterprise)
+ [GitLab](https://about.gitlab.com/)
+ [Bitbucket](https://bitbucket.org)
+ [GitLabautogestita](https://docs.gitlab.com/subscriptions/self_managed/)

Il repository può essere pubblico o privato. Dovrai connettere questo repository Git CloudFormation tramite la [console Connections](https://console.aws.amazon.com/codesuite/settings/connections).

## CloudFormation modello
<a name="git-sync-prereq-template"></a>

Il tuo repository Git deve contenere un [file CloudFormation modello](git-sync-concepts-terms.md#git-sync-concepts-terms-template-file) archiviato nel ramo a cui intendi connetterti con Git sync. Il [file di implementazione dello stack](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file) fa riferimento a questo modello.

## Ruolo di servizio della sincronizzazione Git
<a name="git-sync-prereq-iam"></a>

La sincronizzazione Git richiede un ruolo IAM. Al momento della configurazione della sincronizzazione Git puoi scegliere di creare un ruolo IAM per il tuo stack o utilizzare un ruolo già esistente.

**Nota**  
Un ruolo IAM generato automaticamente applica le autorizzazioni solo allo stack per il quale viene generato. Per riutilizzare un ruolo IAM generato automaticamente, devi modificare il ruolo per il nuovo stack.

### Autorizzazioni richieste per il ruolo di servizio della sincronizzazione Git
<a name="git-sync-prereq-permissions"></a>

Il ruolo IAM fornito per la sincronizzazione Git richiede le seguenti autorizzazioni.
+ `cloudformation:CreateChangeSet`
+ `cloudformation:DeleteChangeSet`
+ `cloudformation:DescribeChangeSet`
+ `cloudformation:DescribeStackEvents`
+ `cloudformation:DescribeStacks`
+ `cloudformation:ExecuteChangeSet`
+ `cloudformation:ListChangeSets`
+ `cloudformation:ValidateTemplate`
+ `events:PutRule`
+ `events:PutTargets`

**Nota**  
Le precedenti autorizzazioni richieste vengono aggiunte automaticamente ai ruoli IAM generati dalla sincronizzazione Git.

Il seguente esempio di ruolo IAM include le autorizzazioni di prerequisito necessarie per la sincronizzazione Git.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "SyncToCloudFormation",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateChangeSet",
                "cloudformation:DeleteChangeSet",
                "cloudformation:DescribeChangeSet",
                "cloudformation:DescribeStackEvents",
                "cloudformation:DescribeStacks",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:GetTemplate",
                "cloudformation:ListChangeSets",
                "cloudformation:ListStacks",
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        },
        {
            "Sid": "PolicyForManagedRules",
            "Effect": "Allow",
            "Action": [
                "events:PutRule",
                "events:PutTargets"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                "events:ManagedBy": ["cloudformation.sync.codeconnections.amazonaws.com"]
                }
            }
        },
        {
            "Sid": "PolicyForDescribingRule",
            "Effect": "Allow",
            "Action": "events:DescribeRule",
            "Resource": "*"
        }
    ]
}
```

------

#### Policy di attendibilità
<a name="git-sync-prereq-trust-policy"></a>

Devi fornire la seguente policy di attendibilità quando crei il ruolo per definire la relazione di attendibilità.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CfnGitSyncTrustPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudformation.sync.codeconnections.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

Si consiglia di utilizzare le chiavi di condizione `aws:SourceArn` e `aws:SourceAccount` per proteggersi dal problema del "confused deputy". L'account di origine è l'ID del tuo account e l'ARN di origine è l'ARN della connessione nel [CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/APIReference/Welcome.html)servizio che consente di connettersi CloudFormation al tuo repository Git.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "CfnGitSyncTrustPolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudformation.sync.codeconnections.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789012"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:codeconnections:us-east-1:123456789012:connection/EXAMPLE64-8aad-4d5d-8878-dfcab0bc441f"
        }
      }
    }
  ]
}
```

------

Per ulteriori informazioni sul problema del "confused deputy", consulta [Prevenzione del problema "confused deputy" tra servizi](cross-service-confused-deputy-prevention.md).

## Autorizzazioni IAM per utenti della console
<a name="git-sync-prereq-user-permissions"></a>

Per configurare correttamente la sincronizzazione Git tramite la CloudFormation console, agli utenti finali devono essere concesse le autorizzazioni anche tramite IAM.

Le seguenti autorizzazioni `codeconnections` sono necessarie per creare e gestire la connessione al tuo repository Git.
+ `codeconnections:CreateRepositoryLink`
+ `codeconnections:CreateSyncConfiguration`
+ `codeconnections:DeleteRepositoryLink`
+ `codeconnections:DeleteSyncConfiguration`
+ `codeconnections:GetRepositoryLink`
+ `codeconnections:GetSyncConfiguration`
+ `codeconnections:ListRepositoryLinks`
+ `codeconnections:ListSyncConfigurations`
+ `codeconnections:ListTagsForResource`
+ `codeconnections:TagResource`
+ `codeconnections:UntagResource`
+ `codeconnections:UpdateRepositoryLink`
+ `codeconnections:UpdateSyncBlocker`
+ `codeconnections:UpdateSyncConfiguration`
+ `codeconnections:UseConnection`

Gli utenti della console devono inoltre disporre delle seguenti autorizzazioni `cloudformation` per visualizzare e gestire gli stack durante il processo di configurazione della sincronizzazione Git.
+ `cloudformation:CreateChangeSet`
+ `cloudformation:DeleteChangeSet`
+ `cloudformation:DescribeChangeSet`
+ `cloudformation:DescribeStackEvents`
+ `cloudformation:DescribeStacks`
+ `cloudformation:ExecuteChangeSet`
+ `cloudformation:GetTemplate`
+ `cloudformation:ListChangeSets`
+ `cloudformation:ListStacks`
+ `cloudformation:ValidateTemplate`

**Nota**  
Anche se le autorizzazioni di modifica del set (`cloudformation:CreateChangeSet`, `cloudformation:DeleteChangeSet`, `cloudformation:DescribeChangeSet`, `cloudformation:ExecuteChangeSet`) potrebbero non essere strettamente necessarie per l’utilizzo solo su console, sono consigliate per abilitare le funzionalità complete di ispezione e gestione dello stack.

La seguente policy IAM include le autorizzazioni utente necessarie per configurare la sincronizzazione Git tramite la console.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CodeConnectionsPermissions",
            "Effect": "Allow",
            "Action": [
                "codeconnections:CreateRepositoryLink",
                "codeconnections:CreateSyncConfiguration",
                "codeconnections:DeleteRepositoryLink",
                "codeconnections:DeleteSyncConfiguration",
                "codeconnections:GetRepositoryLink",
                "codeconnections:GetSyncConfiguration",
                "codeconnections:ListRepositoryLinks",
                "codeconnections:ListSyncConfigurations",
                "codeconnections:ListTagsForResource",
                "codeconnections:TagResource",
                "codeconnections:UntagResource",
                "codeconnections:UpdateRepositoryLink",
                "codeconnections:UpdateSyncBlocker",
                "codeconnections:UpdateSyncConfiguration",
                "codeconnections:UseConnection",
                "codeconnections:CreateForcedTargetSync",
                "codeconnections:CreatePullRequestForResource"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CloudFormationConsolePermissions",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateChangeSet",
                "cloudformation:DeleteChangeSet",
                "cloudformation:DescribeChangeSet",
                "cloudformation:DescribeStackEvents",
                "cloudformation:DescribeStacks",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:GetTemplate",
                "cloudformation:ListChangeSets",
                "cloudformation:ListStacks",
                "cloudformation:ValidateTemplate"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**Nota**  
Quando crei una policy IAM che include le autorizzazioni `codeconnections:CreateForcedTargetSync` e `codeconnections:CreatePullRequestForResource`, potresti visualizzare un avviso nella console IAM che indica che queste azioni non esistono. Puoi ignorare questo avviso e la policy verrà comunque creata correttamente. Queste autorizzazioni sono necessarie per determinate operazioni di sincronizzazione Git nonostante non siano riconosciute dalla console IAM.