

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 建立 CodeCommit 資源 AWS CloudFormation
<a name="creating-resources-with-cloudformation"></a>

AWS CodeCommit 已與 整合 AWS CloudFormation，此服務可協助您模型化和設定 AWS 資源，以減少建立和管理資源和基礎設施的時間。您可以建立範本來描述您想要的所有 AWS 資源 （例如儲存庫），並為您 CloudFormation 佈建和設定這些資源。

使用 時 CloudFormation，您可以重複使用範本來一致且重複地設定 CodeCommit 資源。描述您的資源一次，然後在多個 AWS 帳戶 和 區域中逐一佈建相同的資源。

## CodeCommit 和 CloudFormation 範本
<a name="working-with-templates"></a>

若要佈建和設定 CodeCommit 和相關服務的資源，您必須了解 [CloudFormation 範本](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)。範本是以 JSON 或 YAML 格式化的文本檔案。這些範本說明您要在 CloudFormation 堆疊中佈建的資源。如果您不熟悉 JSON 或 YAML，您可以使用 CloudFormation 設計工具來協助您開始使用 CloudFormation 範本。如需詳細資訊，請參閱《AWS CloudFormation 使用者指南》** 中的[什麼是 CloudFormation 設計器？](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer.html)。

CodeCommit 支援在 中建立儲存庫 與從主控台或命令列建立儲存庫 CloudFormation 不同，您可以使用 CloudFormation 來建立儲存庫，並自動將程式碼從 Amazon S3 儲存貯體中指定的 .zip 檔案遞交至新建立的儲存庫。如需詳細資訊，包括儲存庫的 JSON 和 YAML 範本範例，請參閱 [AWS::CodeCommit::Repository](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codecommit-repository.html)。

使用 建立 CodeCommit 儲存庫時 CloudFormation，只要封存小於 20 MB，您就可以在 [AWS：CodeCommit：：Repository Code](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-code.html) 中設定屬性，選擇將程式碼遞交至該儲存庫做為建立程序的一部分。您可以指定存放程式碼的 Amazon S3 儲存貯體，並選擇性地使用 [BranchName 屬性](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codecommit-repository-code.html)來指定將在該程式碼初始遞交中建立的預設分支名稱。這些屬性僅用於初始儲存庫建立，並在堆疊更新時忽略。您無法使用這些屬性對儲存庫進行額外的遞交，或在初始遞交之後變更預設分支的名稱。

**注意**  
在 2021 年 1 月 19 日， 將 CodeCommit 中的預設分支名稱從*主要* AWS 分支變更為*主要*分支。此名稱變更會影響使用 CodeCommit 主控台、CodeCommit APIs、 AWS SDKs和 為儲存庫建立初始遞交時 CodeCommit 的預設行為 AWS CLI。 CodeCommit 使用 CloudFormation 或 建立的儲存庫， AWS CDK 在建立過程中初始遞交程式碼，與 2021 年 3 月 4 日開始的變更保持一致。此變更不會影響現有的儲存庫或分支。使用本機 Git 用戶端建立初始遞交的客戶具有遵循這些 Git 用戶端組態的預設分支名稱。如需詳細資訊，請參閱[使用分支](https://docs.aws.amazon.com/codecommit/latest/userguide/branches.html)、[建立遞交](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-create-commit.html)和[變更分支設定](https://docs.aws.amazon.com/codecommit/latest/userguide/how-to-change-branch.html)。

您也可以建立範本來建立相關資源，例如儲存庫、[AWS CodeBuild 建置專案](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codebuild-project.html)、[AWS CodeDeploy 應用程式](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-application.html)和[AWS CodePipeline 管道的](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html)[通知規則](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestarnotifications-notificationrule.html)。

## 範本範例
<a name="cloudformation-codecommit-example"></a>

下列範例會建立名為 {{MyDemoRepo}} 的 CodeCommit 儲存庫。新建立的儲存庫會填入儲存在名為 {{MySourceCodeBucket}} 的 Amazon S3 儲存貯體中的程式碼，並放置在名為 {{development}}, 的分支中，該分支是儲存庫的預設分支。

**注意**  
您可以使用 ARN 或 Amazon Web Services 帳戶中的儲存貯體名稱來指定包含 ZIP 檔案的 Amazon S3 儲存貯體名稱，其中包含將遞交至新儲存庫的內容。Amazon S3 物件金鑰如 [Amazon S3 開發人員指南](https://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#BasicsKeys)所定義。

 **JSON：**

```
{
    "MyRepo": {
        "Type": "AWS::CodeCommit::Repository",
        "Properties": {
            "RepositoryName": "{{MyDemoRepo}}",
            "RepositoryDescription": "{{This is a repository for my project with code from MySourceCodeBucket.}}",
            "Code": {
                "BranchName": "{{development}}",
                "S3": {
                    "Bucket": "{{MySourceCodeBucket}}",
                    "Key": "{{MyKey}}",
                    "ObjectVersion": "{{1}}"
                }
            }
        }
    }
}
```

**YAML**：

```
MyRepo:
  Type: AWS::CodeCommit::Repository
  Properties:
    RepositoryName: {{MyDemoRepo}}
    RepositoryDescription: {{This is a repository for my project with code from MySourceCodeBucket.}}
    Code:
      BranchName: {{development}}
      S3: 
        Bucket: {{MySourceCodeBucket}},
        Key: {{MyKey}},
        ObjectVersion: {{1}}
```

如需更多範例，請參閱 [AWS::CodeCommit::Repository](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codecommit-repository.html)。

## CloudFormation、CodeCommit 和 AWS Cloud Development Kit (AWS CDK)
<a name="cloudformation-codecommit-cdk"></a>

在建立中使用 AWS CDK CloudFormation 功能建立的儲存庫。了解 CloudFormation 範本如何與 CodeCommit 資源搭配使用，可協助您建立和管理 AWS CDK 程式碼。如需 的詳細資訊 AWS CDK，請參閱 [AWS Cloud Development Kit (AWS CDK) 開發人員指南](https://docs.aws.amazon.com/cdk/latest/guide/home.html)和 [AWS CDK API 參考。](https://docs.aws.amazon.com//cdk/api/v2/docs/aws-cdk-lib.aws_codecommit-readme.html)

下列 AWS CDK Typescript 範例會建立名為 {{MyDemoRepo}} 的 CodeCommit 儲存庫。新建立的儲存庫會填入儲存在名為 {{MySourceCodeBucket}} 的 Amazon S3 儲存貯體中的程式碼，並放置在名為 {{development}}, 的分支中，該分支是儲存庫的預設分支。

```
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 CodeCommit repository with a default branch name development
      new codecommit.CfnRepository(this, 'MyRepoResource', {
            repositoryName: "MyDemoRepo",
            code: {
              "branchName": "development",
              "s3": {
                "bucket": "MySourceCodeBucket",
                "key": "MyKey"
              }
            },
        }
     );
  }
}
```

## 進一步了解 CloudFormation
<a name="learn-more-cloudformation"></a>

若要進一步了解 CloudFormation，請參閱下列資源：
+ [AWS CloudFormation](https://aws.amazon.com/cloudformation/)
+ [AWS CloudFormation 使用者指南](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)
+ [AWS CloudFormation 命令列界面使用者指南](https://docs.aws.amazon.com/cloudformation-cli/latest/userguide/what-is-cloudformation-cli.html)