AWS CloudFormation을 사용하여 지정된 기본 분기 이름을 사용하는 AWS CodeCommit 리포지토리를 생성하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 1월 29일

AWS CloudFormation을 사용하여 지정된 기본 분기 이름을 사용하는 AWS CodeCommit 리포지토리를 만들고 싶습니다.

간략한 설명

2021년 1월 19일 AWS는 CodeCommit의 기본 분기 이름을 master에서 main으로 변경했습니다. 이 이름 변경은 사용자가 만든 새 리포지토리에서 다음을 수행할 때 CodeCommit의 기본 동작에 영향을 줍니다.

  • CodeCommit 콘솔, API 또는 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 리포지토리에 커밋합니다.
  • AWS CloudFormation 템플릿을 사용하여 리포지토리를 생성하고 템플릿을 생성할 때 코드를 추가합니다.
    중요: 이 영향은 2021년 2월 8일 이후 AWS CloudFormation 템플릿에 영향을 줍니다.
  • AWS Cloud Development Kit(AWS CDK)를 사용하여 리포지토리를 생성하고 커밋합니다.
    중요: 이 영향은 2021년 2월 8일 이후 AWS CDK 템플릿에 영향을 줍니다.

이름 변경으로 인한 영향을 받지 않으려면 다음 중 하나를 수행합니다.

  • AWS CloudFormation 템플릿에서 AWS::CodeCommit::Repository Code 리소스의 BranchName 속성을 사용하여 코드에 필요한 기본 분기의 이름을 지정합니다.
  • 새 기본 main 분기 이름이 필요하도록 코드를 수정합니다.

중요: 이름 변경은 2021년 2월 8일 이후 AWS CloudFormation 또는 AWS CDK 템플릿을 사용하여 생성된 리포지토리에만 영향을 줍니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

해결 방법

AWS CloudFormation을 사용하거나 AWS CDK를 사용하는지 여부에 따라 다음 해결 방법 중 하나를 선택합니다.

AWS CloudFormation 템플릿을 업데이트하여 특정 이름의 기본 분기를 생성합니다.

1.    스택 템플릿을 업데이트하고 CodeCommit 리포지토리의 BranchName 속성을 분기 이름으로 설정합니다. 다음 YAML 및 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"
                }
            }
        }
    }
}

중요: YAML 및 JSON 템플릿에서 다음 업데이트를 수행합니다.

MyRepo를 만들고 있는 CodeCommit 리포지토리의 이름으로 설정합니다. DefaultBranchName을 리포지토리로 코드를 가져오는 데 사용할 기본 분기로 설정합니다. MySourceCodeBucket을 새 리포지토리에 커밋하는 콘텐츠와 함께 .zip 파일이 들어 있는 Amazon Simple Storage Service(Amazon S3) 버킷의 이름 또는 Amazon Resource Name(ARN)으로 설정합니다. Amazon S3에서 객체를 식별하는 키로 MyKey를 설정합니다.

2.    새 AWS CloudFormation 스택을 생성할 때마다 업데이트된 템플릿을 사용합니다.

이제 새 스택을 생성하면 AWS CloudFormation 템플릿에서 새 리포지토리가 생성됩니다. 그런 다음 CodeCommit은 템플릿에 정의한 특정 이름의 기본 분기로 코드를 푸시합니다.

AWS CDK 코드를 업데이트하여 지정된 기본 분기 이름으로 CodeCommit 리포지토리를 생성합니다.

AWS CDK 코드를 업데이트하여 CfnRepository.CodeProperty.BranchName 속성으로 BranchName을 지정합니다. 그런 다음 BranchName은 코드가 초기 커밋을 만들고 해당 리포지토리에 푸시할 때 리포지토리 기본 분기의 이름이 됩니다.

CodeCommit 리포지토리를 만들 때 BranchName을 설정하는 방법은 다음 TypeScript 예제를 참조하세요.

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"
              }
            },
        });
  }
}

중요: 앞의 TypeScript 예제에서 다음과 같이 업데이트합니다.

MyRepo를 만들고 있는 CodeCommit 리포지토리의 이름으로 설정합니다. DefaultBranchName을 리포지토리로 코드를 가져오는 데 사용할 기본 분기로 설정합니다. MySourceCodeBucket을 새 리포지토리에 커밋하는 콘텐츠와 함께 .zip 파일이 포함된 S3 버킷의 이름 또는 ARN으로 설정합니다. Amazon S3에서 객체를 식별하는 키로 MyKey를 설정합니다.

참고: 샘플을 AWS CDK에서 지원하는 다른 언어로 변환하려면 Translating TypeScript AWS CDK code to other languages를 참조하세요.

2.    AWS CloudFormation 스택을 배포할 때마다 업데이트된 AWS CDK 코드를 사용합니다.

이제 AWS CloudFormation이 새로운 리포지토리를 생성합니다. 그런 다음 CodeCommit은 AWS CDK 앱에서 정의한 특정 이름의 기본 분기로 S3 객체의 코드를 푸시합니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?