Come posso creare un repository AWS CodeCommit che utilizzi un nome di ramo predefinito specificato utilizzando AWS CloudFormation?

4 minuti di lettura
0

Desidero creare un repository AWS CodeCommit che utilizzi un nome di ramo predefinito specificato utilizzando AWS CloudFormation?

Breve descrizione

Il 19 gennaio 2021 AWS ha cambiato il nome del ramo predefinito in CodeCommit da master a main. Questa modifica del nome influisce sul comportamento predefinito di CodeCommit quando esegui le seguenti operazioni con un nuovo repository creato:

  • Esegui il commit in un repository utilizzando la console CodeCommit, le API o l'Interfaccia della linea di comando AWS (AWS CLI).
  • Crea un repository con un modello AWS CloudFormation e aggiungi il codice quando crei il modello.
    Importante: questo impatto si ripercuote sui modelli di AWS CloudFormation dopo l'8 febbraio 2021.
  • Crea ed esegui il commit in un repository con il Kit di sviluppo per il cloud AWS (AWS CDK).
    Importante: questo impatto si ripercuote sui modelli AWS CDK dopo l'8 febbraio 2021.

Per evitare qualsiasi impatto derivante dalla modifica del nome, puoi effettuare una delle seguenti operazioni:

  • Usa la proprietà BranchName della risorsa AWS::CodeCommit::Repository Code nei tuoi modelli AWS CloudFormation per specificare il nome del ramo predefinito previsto dal codice.
  • Modifica il codice in modo che preveda il nuovo nome del ramo principale predefinito.

Importante: La modifica del nome riguarda solo i repository creati utilizzando modelli AWS CloudFormation o AWS CDK dopo l'8 febbraio 2021.

Nota: in caso di errori durante l'esecuzione dei comandi di AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.

Risoluzione

Scegli una delle seguenti risoluzioni a seconda che tu stia utilizzando AWS CloudFormation o AWS CDK.

Aggiorna i tuoi modelli di AWS CloudFormation per creare un ramo predefinito con un nome specifico

1.    Aggiorna il tuo modello di stack, e imposta la proprietà BranchName del repository CodeCommit sul nome del ramo. Guarda i seguenti esempi YAML e JSON:

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"
                }
            }
        }
    }
}

Importante: Nei tuoi modelli YAML e JSON, effettua i seguenti aggiornamenti:

Imposta MyRepo sul nome del repository CodeCommit che stai creando. Imposta DefaultBranchName sul ramo predefinito che utilizzerai per importare il codice in un repository. Imposta MySourceCodeBucket sul nome o sul nome della risorsa Amazon (ARN) del bucket Amazon Simple Storage Service (Amazon S3) che contiene il file .zip con il contenuto di cui stai eseguendo il commit nel nuovo repository. Imposta MyKey sulla chiave che identifica l'oggetto in Amazon S3.

2.    Usa il modello aggiornato ogni volta che crei un nuovo stack AWS CloudFormation.

Ora, quando crei un nuovo stack, il tuo modello AWS CloudFormation crea un nuovo repository per te. Quindi, CodeCommit invia il codice a un ramo predefinito con il nome specifico che hai definito nel tuo modello.

Aggiorna il tuo codice AWS CDK per creare un repository CodeCommit con un nome di ramo predefinito specificato

Aggiorna il tuo codice AWS CDK per specificare un BranchName utilizzando la proprietà CfnRepository.CodeProperty.BranchName. Quindi, BranchName diventa il nome del ramo predefinito del repository quando il codice crea e invia il commit iniziale a quel repository.

Consulta il seguente esempio di TypeScript per impostare il BranchName quando crei un repository 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"
              }
            },
        });
  }
}

Importante: Nell'esempio precedente di TypeScript, apporta i seguenti aggiornamenti:

Imposta MyRepo sul nome del repository CodeCommit che stai creando. Imposta DefaultBranchName sul ramo predefinito che utilizzerai per importare il codice in un repository. Imposta MySourceCodeBucket con il nome o l'ARN del bucket S3 che contiene il file .zip con il contenuto di cui stai eseguendo il commit nel nuovo repository. Imposta MyKey sulla chiave che identifica l'oggetto in Amazon S3.

Nota: per convertire l'esempio in un'altra lingua supportata da AWS CDK, consulta Tradurre il codice AWS CDK di TypeScript in altre lingue.

2.    Usa il codice AWS CDK aggiornato ogni volta che distribuisci gli stack di AWS CloudFormation.

Ora, AWS CloudFormation crea un nuovo repository per te. Quindi, CodeCommit invia il codice nell'oggetto S3 a un ramo predefinito con il nome specifico che hai definito nella tua app AWS CDK.


AWS UFFICIALE
AWS UFFICIALEAggiornata 3 anni fa