AWS CloudFormation を使用して、指定されたデフォルトのブランチ名を使用する AWS CodeCommit リポジトリを作成するにはどうすればよいですか?

最終更新日: 2021 年 1 月 29 日

AWS CloudFormation を使用して、指定されたデフォルトのブランチ名を使用する AWS CodeCommit リポジトリを作成するにはどうすればよいですか?

簡単な説明

2021 年 1 月 19 日、CodeCommit のデフォルトブランチの名前が master から main に変更されました。この名前の変更は、作成する新しいリポジトリで次の操作を実行したときの CodeCommit のデフォルトの動作に影響します。

  • CodeCommit コンソール、API、または AWS Command Line Interface (AWS CLI) を使用してリポジトリにコミットする。
  • AWS CloudFormation テンプレートを使用してリポジトリを作成し、テンプレートの作成時にコードを追加する。
    重要: これは、2021 年 2 月 8 日以降の AWS CloudFormation テンプレートに影響します。
  • AWS クラウド開発キット (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 リソースネーム (ARN) に設定します。MyKey を、Amazon S3 のオブジェクトを識別するキーに設定します。

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 に設定します。MyKey を、Amazon S3 のオブジェクトを識別するキーに設定します。

注意: サンプルを AWS CDK でサポートされている別の言語に変換するには、「TypeScript AWS CDK コードを他の言語に翻訳する」を参照してください。

2.    AWS CloudFormation スタックをデプロイするとき、更新済みの AWS CDK コードを使用します。

これで、AWS CloudFormation によって新しいリポジトリが作成されます。次に、CodeCommit は、AWS CDK アプリで定義した特定の名前のデフォルトのブランチに S3 オブジェクト内のコードをプッシュします。


この記事は役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?