使用 Amazon CloudFormation 创建 CodeCommit 资源 - Amazon CodeCommit
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon CloudFormation 创建 CodeCommit 资源

Amazon CodeCommit 与 Amazon CloudFormation 集成,后者是一项服务,可帮助您对 Amazon 资源进行建模和设置,这样您只需花较少的时间来创建和管理资源与基础设施。您可以创建一个描述所需的全部 Amazon 资源的模板(例如存储库),Amazon CloudFormation 将为您预置和配置这些资源。

使用 Amazon CloudFormation 时,您可以重复使用您的模板来不断地重复设置您的 CodeCommit 资源。描述您的资源一次,然后在多个 Amazon Web Services 账户 和区域中反复预置相同的资源。

CodeCommit 和 Amazon CloudFormation 模板

要为 CodeCommit 和相关服务预置和配置资源,您必须了解 Amazon CloudFormation 模板。模板是 JSON 或 YAML 格式的文本文件。这些模板描述要在 Amazon CloudFormation 堆栈中调配的资源。如果您不熟悉 JSON 或 YAML,可以在 Amazon CloudFormation Designer 的帮助下开始使用 Amazon CloudFormation 模板。有关更多信息,请参阅 Amazon CloudFormation 用户指南中的什么是 Amazon CloudFormation Designer?

CodeCommit 支持在 Amazon CloudFormation 中创建存储库。与通过控制台或命令行创建存储库不同,您可以使用 Amazon CloudFormation 创建存储库并自动将代码从 Amazon S3 桶中的特定 .zip 文件提交到新创建的存储库。有关更多信息(包括存储库的 JSON 和 YAML 模板示例),请参阅 AWS::CodeCommit::Repository

使用 Amazon CloudFormation 创建 CodeCommit 存储库时,只要存档小于 20MB,您就可以选择在 AWS:CodeCommit::Repository 代码中配置属性,从而在创建过程中将代码提交到该存储库。您可以指定存储代码的 Amazon S3 桶,也可以选择使用 BranchName 属性指定默认分支的名称,该名称将在代码的初始提交中创建。这些属性仅用于初始存储库创建,在堆栈更新时会被忽略。您无法使用这些属性对存储库进行其他提交,也无法在初始提交完成后更改默认分支的名称。

注意

Amazon 在 2021 年 1 月 19 日将 CodeCommit 中默认分支的名称从 master 改为了 main。在使用 CodeCommit 控制台、CodeCommit API、Amazon SDK 和 Amazon CLI 为存储库创建初始提交时,这一名称变更将影响 CodeCommit 的默认行为。这一变更适用于使用 Amazon CloudFormation 或 Amazon CDK 创建且在创建过程中完成代码初始提交的存储库,并于 2021 年 3 月 4 日开始生效。这一变更不会影响现有的存储库或分支。使用本地 Git 客户端创建初始提交的客户有一个默认分支名称,该名称遵循这些 Git 客户端的配置。有关更多信息,请参阅使用分支创建提交更改分支设置

您还可以创建用于创建相关资源的模板,例如存储库通知规则Amazon CodeBuild 构建项目Amazon CodeDeploy 应用程序Amazon CodePipeline 管道

模板示例

以下示例创建一个名为 MyDemoRepo 的 CodeCommit 存储库。新创建的存储库使用存储在名为 MySourceCodeBucket 的 Amazon S3 存储桶中的代码填充,并放置在名为 development 的分支中,该分支是此存储库的默认分支。

注意

对于包含内容将提交到新存储库的 ZIP 文件的 Amazon S3 桶,您可以使用 ARN 或 Amazon Web Services 账户中该桶的名称来指定该桶的名称。有关 Amazon S3 对象键的定义,请参阅 Amazon S3 开发人员指南

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

Amazon CloudFormation、CodeCommit 和 Amazon Cloud Development Kit (Amazon CDK)

使用 Amazon CDK 创建的存储库在创建时使用 Amazon CloudFormation 功能。了解 Amazon CloudFormation 模板如何用于 CodeCommit 资源,可以帮助您创建和管理 Amazon CDK 代码。有关 Amazon CDK 的更多信息,请参阅 Amazon Cloud Development Kit (Amazon CDK) 开发人员指南Amazon CDK API 参考

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

了解有关 Amazon CloudFormation 的更多信息

要了解有关 Amazon CloudFormation 的更多信息,请参阅以下资源: