Comment puis-je créer un référentiel AWS CodeCommit utilisant un nom de branche par défaut spécifié à l'aide d'AWS CloudFormation ?

Date de la dernière mise à jour : 29/01/2021

Je voudrais créer un référentiel AWS CodeCommit utilisant un nom de branche par défaut spécifié à l'aide d'AWS CloudFormation.

Brève description

Le 19 janvier 2021, AWS a changé le nom de la branche par défaut dans CodeCommit de maîtresse à principale. Ce changement de nom affecte le comportement par défaut de CodeCommit lorsque vous effectuez les opérations suivantes avec le référentiel que vous créez :

  • Validez un référentiel à l'aide de la console CodeCommit, des API ou de l'interface de ligne de commande AWS (AWS CLI).
  • Créez un référentiel avec un modèle AWS CloudFormation et ajoutez du code lorsque vous créez le modèle.
    Important : cet impact affecte les modèles AWS CloudFormation après le 8 février 2021.
  • Créez et validez un référentiel avec AWS Cloud Development Kit (AWS CDK).
    Important : cet impact affecte les modèles AWS CDK après le 8 février 2021.

Pour éviter les impacts liés au changement de nom, vous pouvez effectuer l'une des opérations suivantes :

  • Utilisez la propriété BranchName de la ressource AWS::CodeCommit::Repository Code dans vos modèles AWS CloudFormation pour spécifier le nom de la branche par défaut que votre code attend.
  • Modifiez votre code de sorte qu'il attende le nouveau nom de branche principale par défaut.

Important : le changement de nom affecte uniquement les référentiels créés à l'aide de modèles AWS CloudFormation ou AWS CDK après le 8 février 2021.

Remarque : si vous recevez des messages d’erreur lors de l'exécution de commandes de l’interface de ligne de commande AWS, vérifiez que vous utilisez bien la version la plus récente de l’interface de ligne de commande AWS.

Résolution

Sélectionnez l'une des résolutions suivantes selon que vous utilisez AWS CloudFormation ou AWS CDK.

Mettez vos modèles AWS CloudFormation à jour pour créer une branche par défaut avec un nom spécifique

1.    Mettez votre modèle de pile à jouret définissez la propriété BranchName du référentiel CodeCommit à votre nom de branche. Consultez les exemples YAML et JSON suivants :

YAML :

  MyRepoResource:
    Type: AWS::CodeCommit::Repository
    Properties:
      RepositoryName: MyRepo
      Code:
        BranchName: DefaultBranchName
        S3: 
          Bucket: MySourceCodeBucket,
          Key: MyKey

JSON :

 {
    "MyRepoResource": {
        "Type": "AWS::CodeCommit::Repository",
        "Properties": {
            "RepositoryName": "MyRepo",
            "Code": {
                "BranchName": "DefaultBranchName",
                "S3": {
                    "Bucket": "MySourceCodeBucket",
                    "Key": "MyKey"
                }
            }
        }
    }
}

Important : dans vos modèles YAML et JSON, effectuez les mises à jour suivantes :

Définissez MyRepo au nom du référentiel CodeCommit que vous créez. Définissez DefaultBranchName à la branche par défaut que vous utiliserez pour importer du code dans un référentiel. Définissez MySourceCodeBucket au nom ou à l'ARN (Amazon Resource Name) du compartiment Amazon Simple Storage Service (Amazon S3) contenant le fichier .zip avec le contenu que vous validez dans le nouveau référentiel. Définissez MyKey à la clé qui identifie l'objet dans Amazon S3.

2.    Utilisez le modèle mis à jour chaque fois que vous créez une pile AWS CloudFormation.

Maintenant, lorsque vous créez une pile, votre modèle AWS CloudFormation crée un référentiel pour vous. Ensuite, CodeCommit envoie votre code à une branche par défaut avec le nom spécifique que vous avez défini dans votre modèle.

Mettez votre code AWS CDK à jour pour créer un référentiel CodeCommit avec un nom de branche par défaut spécifié

Mettez votre code AWS CDK à jour pour spécifier un BranchName à l'aide de la propriété CfnRepository.CodeProperty.BranchName. Le BranchName devient alors le nom de la branche par défaut du référentiel lorsque votre code crée la validation initiale et l'envoie à ce référentiel.

Reportez-vous à l'exemple TypeScript suivant pour définir le BranchName lorsque vous créez un référentiel CodeCommit :

import * as cdk from '@aws-cdk/core';
import codecommit = require('@aws-cdk/aws-codecommit');
export class CdkCodecommitStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);
    // The code creates a new CodeCommit repository with Branch name DefaultBranchName
      new codecommit.CfnRepository(this, 'MyRepoResource', {
            repositoryName: "MyRepo",
            code: {
              "branchName": "DefaultBranchName",
              "s3": {
                "bucket": "MySourceCodeBucket",
                "key": "MyKey"
              }
            },
        });
  }
}

Important : dans l'exemple TypeScript précédent, effectuez les mises à jour suivantes :

Définissez MyRepo au nom du référentiel CodeCommit que vous créez. Définissez DefaultBranchName à la branche par défaut que vous utiliserez pour importer du code dans un référentiel. Définissez MySourceCodeBucket au nom ou à l'ARN du compartiment S3 contenant le fichier .zip avec le contenu que vous validez dans le nouveau référentiel. Définissez MyKey à la clé qui identifie l'objet dans Amazon S3.

Remarque : pour traduire l'échantillon dans un autre langage pris en charge par AWS CDK, consultez la section Traduction du code AWS CDK TypeScript dans d'autres langages.

2.    Utilisez le code AWS CDK mis à jour chaque fois que vous déployez des piles AWS CloudFormation.

AWS CloudFormation crée alors un référentiel pour vous. Ensuite, CodeCommit envoie le code de l'objet S3 à une branche par défaut avec le nom spécifique que vous avez défini dans votre application AWS CDK.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?