

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Conditions préalables à la synchronisation des piles vers un référentiel Git à l’aide de la synchronisation Git
<a name="git-sync-prereq"></a>

Avant de synchroniser une CloudFormation pile avec votre dépôt Git, vérifiez que les conditions suivantes sont remplies.

**Topics**
+ [Référentiel Git](#git-sync-prereq-repo)
+ [CloudFormation modèle](#git-sync-prereq-template)
+ [Rôle de service de synchronisation Git](#git-sync-prereq-iam)
+ [Autorisations IAM pour les utilisateurs de la console](#git-sync-prereq-user-permissions)

## Référentiel Git
<a name="git-sync-prereq-repo"></a>

Vous devez disposer d’un référentiel Git hébergé sur l’une des plateformes suivantes.
+ [GitHub](https://github.com/)
+ [GitHub Entreprise](https://github.com/enterprise)
+ [GitLab](https://about.gitlab.com/)
+ [Bitbucket](https://bitbucket.org)
+ [GitLabautogéré](https://docs.gitlab.com/subscriptions/self_managed/)

Le référentiel peut être public ou privé. Vous devrez connecter ce dépôt Git via CloudFormation la [console Connections](https://console.aws.amazon.com/codesuite/settings/connections).

## CloudFormation modèle
<a name="git-sync-prereq-template"></a>

Votre dépôt Git doit contenir un [fichier CloudFormation modèle](git-sync-concepts-terms.md#git-sync-concepts-terms-template-file) enregistré dans la branche à laquelle vous souhaitez vous connecter avec Git sync. Ce modèle sera référencé par le [fichier de déploiement de la pile](git-sync-concepts-terms.md#git-sync-concepts-terms-depoyment-file).

## Rôle de service de synchronisation Git
<a name="git-sync-prereq-iam"></a>

La synchronisation Git nécessite un rôle IAM. Vous pouvez choisir de créer un rôle IAM pour votre pile lorsque vous configurez la synchronisation Git, ou vous pouvez utiliser un rôle existant.

**Note**  
Un rôle IAM généré automatiquement applique des autorisations uniquement à la pile pour laquelle le rôle est généré. Pour réutiliser un rôle IAM généré automatiquement, vous devez modifier le rôle pour la nouvelle pile.

### Autorisations requises pour le rôle de service de synchronisation Git
<a name="git-sync-prereq-permissions"></a>

Le rôle IAM que vous attribuez à la synchronisation Git nécessite les autorisations suivantes.
+ `cloudformation:CreateChangeSet`
+ `cloudformation:DeleteChangeSet`
+ `cloudformation:DescribeChangeSet`
+ `cloudformation:DescribeStackEvents`
+ `cloudformation:DescribeStacks`
+ `cloudformation:ExecuteChangeSet`
+ `cloudformation:ListChangeSets`
+ `cloudformation:ValidateTemplate`
+ `events:PutRule`
+ `events:PutTargets`

**Note**  
Les autorisations requises ci-dessous sont automatiquement ajoutées aux rôles IAM générés par la synchronisation Git.

L’exemple de rôle IAM suivant inclut les autorisations prérequises pour la synchronisation 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": "*"
        }
    ]
}
```

------

#### Politique d’approbation
<a name="git-sync-prereq-trust-policy"></a>

Vous devez fournir la politique d’approbation suivante lorsque vous créez le rôle pour définir la relation d’approbation.

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

****  

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

------

Nous vous recommandons d'utiliser les clés de condition `aws:SourceArn` et `aws:SourceAccount` pour vous protéger contre le problème de l'adjoint confus. Le compte source est votre identifiant de compte et l'ARN source est l'ARN de la connexion au [CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/APIReference/Welcome.html)service qui permet de se connecter CloudFormation à votre dépôt 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"
        }
      }
    }
  ]
}
```

------

Pour de plus amples informations sur le problème de l’adjoint confus, veuillez consulter [Prévention du problème de l’adjoint confus entre services](cross-service-confused-deputy-prevention.md).

## Autorisations IAM pour les utilisateurs de la console
<a name="git-sync-prereq-user-permissions"></a>

Pour configurer correctement Git Sync via la CloudFormation console, les utilisateurs finaux doivent également disposer d'autorisations via IAM.

Les autorisations `codeconnections` suivantes sont requises pour créer et gérer la connexion à votre référentiel 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`

Les utilisateurs de console doivent également disposer des autorisations `cloudformation` suivantes pour afficher et gérer les piles pendant le processus de configuration de la synchronisation Git.
+ `cloudformation:CreateChangeSet`
+ `cloudformation:DeleteChangeSet`
+ `cloudformation:DescribeChangeSet`
+ `cloudformation:DescribeStackEvents`
+ `cloudformation:DescribeStacks`
+ `cloudformation:ExecuteChangeSet`
+ `cloudformation:GetTemplate`
+ `cloudformation:ListChangeSets`
+ `cloudformation:ListStacks`
+ `cloudformation:ValidateTemplate`

**Note**  
Bien que les autorisations de modification (`cloudformation:CreateChangeSet`, `cloudformation:DeleteChangeSet`, `cloudformation:DescribeChangeSet`, `cloudformation:ExecuteChangeSet`) ne soient pas strictement nécessaires pour une utilisation exclusive de la console, elles sont recommandées pour permettre l’inspection complète de la pile et les capacités de gestion.

L’exemple de politique IAM suivant inclut les autorisations utilisateur nécessaires pour configurer la synchronisation Git via 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": "*"
        }
    ]
}
```

------

**Note**  
Lorsque vous créez une politique IAM qui inclut les autorisations `codeconnections:CreateForcedTargetSync` et `codeconnections:CreatePullRequestForResource`, un avertissement peut s’afficher dans la console IAM indiquant que ces actions n’existent pas. Cet avertissement peut être ignoré et la politique sera toujours créée avec succès. Ces autorisations sont requises pour certaines opérations de synchronisation Git même si elles ne sont pas reconnues par la console IAM.