AWS::CodeBuild::Project - AWS CloudFormation

AWS::CodeBuild::Project

AWS::CodeBuild::Project リソースは、AWS CodeBuild がどのようにソースコードをビルドするかを設定します。たとえば、CodeBuild にソースコードの取得場所や使用する構築環境を指示します。

構文

AWS CloudFormation テンプレートでこのエンティティを宣言するには、次の構文を使用します。

JSON

{ "Type" : "AWS::CodeBuild::Project", "Properties" : { "Artifacts" : Artifacts, "BadgeEnabled" : Boolean, "Cache" : ProjectCache, "Description" : String, "EncryptionKey" : String, "Environment" : Environment, "FileSystemLocations" : [ ProjectFileSystemLocation, ... ], "LogsConfig" : LogsConfig, "Name" : String, "QueuedTimeoutInMinutes" : Integer, "SecondaryArtifacts" : [ Artifacts, ... ], "SecondarySources" : [ Source, ... ], "SecondarySourceVersions" : [ ProjectSourceVersion, ... ], "ServiceRole" : String, "Source" : Source, "SourceVersion" : String, "Tags" : [ Tag, ... ], "TimeoutInMinutes" : Integer, "Triggers" : ProjectTriggers, "VpcConfig" : VpcConfig } }

プロパティ

Artifacts

Artifacts は、AWS::CodeBuild::Project リソースのプロパティであり、AWS CodeBuild ビルドによって生成されるアーティファクトの出力設定を指定します。

必須: はい

タイプ: アーティファクト

Update requires: No interruption

BadgeEnabled

AWS CodeBuild は、プロジェクトの構築バッジのパブリックアクセス可能な URL を生成するかどうかを示します。詳細については、AWS CodeBuild ユーザーガイドの「ビルドバッジサンプル」を参照してください。

注記

プロジェクトでビルドバッジを含めることは、ソースタイプが CodePipeline の場合は現在サポートされていません。Source プロパティの CODEPIPELINE を指定した場合、BadgeEnabled プロパティは指定しないでください。

必須: いいえ

タイプ: ブール値

Update requires: No interruption

Cache

ビルド依存関係を保存して再利用するために AWS CodeBuild が使用する設定。

必須: いいえ

タイプ: ProjectCache

Update requires: No interruption

Description

ビルドプロジェクトが識別しやすくなる説明。

必須: いいえ

タイプ: 文字列

最小: 0

最大: 255

Update requires: No interruption

EncryptionKey

CodeBuild がビルド出力の暗号化に使用する AWS Key Management Service (AWS KMS) カスタマーマスターキー (CMK) のエイリアスまたは Amazon Resource Name (ARN) です。値を指定しない場合は、CodeBuild は、AWS 管理の CMK を Amazon Simple Storage Service (Amazon S3) に使用します。

注記

サービスロールにそのキーへのアクセス権限がある場合、クロスアカウントの KMS キーを使用してビルド出力アーティファクトを暗号化できます。

CMK の Amazon リソースネーム (ARN) または CMK のエイリアス (使用可能な場合: 形式 alias/alias-name を使用) のいずれかを指定できます。

必須: いいえ

タイプ: 文字列

最小: 1

Update requires: No interruption

Environment

ビルド環境に使用する環境タイプや環境変数などのプロジェクトのビルド環境設定です。

必須: はい

タイプ: 環境

Update requires: No interruption

FileSystemLocations

CodeBuild ビルドプロジェクトの ProjectFileSystemLocation オブジェクトの配列。ProjectFileSystemLocation オブジェクトは、Amazon Elastic File System を使用して作成されたファイルシステムの identifierlocationmountOptionsmountPointtype を指定します。

必須: いいえ

タイプ: ProjectFileSystemLocation のリスト

Update requires: No interruption

LogsConfig

このビルドプロジェクトのログに関する情報。プロジェクトによって、Amazon CloudWatch ログ、S3 バケット、または両方のログが作成されます。

必須: いいえ

タイプ: LogsConfig

Update requires: No interruption

Name

ビルドプロジェクトの名前です。名前は、AWS アカウントのすべてのプロジェクトにわたって一意である必要があります。

必須: いいえ

タイプ: 文字列

最小: 2

最大: 255

パターン: [A-Za-z0-9][A-Za-z0-9\-_]{1,254}

Update requires: Replacement

QueuedTimeoutInMinutes

ビルドがタイムアウトになるまでにキューで待機できる分数。

必須: いいえ

タイプ: 整数

最小: 5

最大: 480

Update requires: No interruption

SecondaryArtifacts

Artifacts オブジェクトのリスト。各アーティファクトオブジェクトはプロジェクトがビルド中に出力設定を指定します。

必須: いいえ

タイプ: アーティファクトのリスト

最大: 12

Update requires: No interruption

SecondarySources

ProjectSource オブジェクトの配列。

必須: いいえ

タイプ: ソースのリスト

最大: 12

Update requires: No interruption

SecondarySourceVersions

ProjectSourceVersion オブジェクトの配列。secondarySourceVersions をビルドレベルで指定すると、これらのオブジェクトが secondarySourceVersions を (プロジェクトレベルで) 引き継ぎます。

必須: いいえ

タイプ: ProjectSourceVersion のリスト

最大: 12

Update requires: No interruption

ServiceRole

AWS アカウントに代わって AWS CodeBuild が依存 AWS サービスとやり取りできるようにする AWS Identity and Access Management (IAM) ロールの ARN。

必須: はい

タイプ: 文字列

最小: 1

Update requires: No interruption

Source

ソースコードリポジトリのタイプや場所などのプロジェクトのソースコード設定。

必須: はい

タイプ: ソース

Update requires: No interruption

SourceVersion

このプロジェクト用に構築するビルド入力のバージョン。指定しない場合、最新のバージョンが使用されます。指定した場合、次のいずれかであることが必要です。

  • AWS CodeCommit の場合: 使用するコミット ID、ブランチ、または Git タグ。

  • GitHub の場合は、ビルドするソースコードのバージョンに対応するコミット ID、プルリクエスト ID、ブランチ名、またはタグ名。プルリクエスト ID を指定する場合、pr/pull-request-ID (例: pr/25) 形式を使用する必要があります。ブランチ名を指定すると、ブランチの HEAD コミット ID が使用されます。指定しない場合は、デフォルトブランチの HEAD コミット ID が使用されます。

  • Bitbucket の場合、ビルドするソースコードのバージョンに対応するコミット ID、ブランチ名、またはタグ名。ブランチ名を指定すると、ブランチの HEAD コミット ID が使用されます。指定しない場合は、デフォルトブランチの HEAD コミット ID が使用されます。

  • Amazon Simple Storage Service (Amazon S3): 使用するビルド入力 ZIP ファイルを示すオブジェクトのバージョン ID。

sourceVersion をビルドレベルで指定した場合、そのバージョンはこの (プロジェクトレベルの) sourceVersion より優先されます。

詳細については、AWS CodeBuild ユーザーガイドの「CodeBuild のソースバージョンのサンプル」を参照してください。

必須: いいえ

タイプ: 文字列

Update requires: No interruption

Tags

AWS CodeBuild プロジェクトに対するタグ (キーと値のペア) の任意のセット。

これらのタグは、AWS CodeBuild ビルドプロジェクトタグをサポートする AWS サービスによって使用されます。

必須: いいえ

タイプ: Tag のリスト

最大: 50

Update requires: No interruption

TimeoutInMinutes

完了としてマークされていない関連ビルドのタイムアウト前に AWS CodeBuild が待機する分数 (5~480 (8 時間))。デフォルトは 60 分です。

必須: いいえ

タイプ: 整数

最小: 5

最大: 480

Update requires: No interruption

Triggers

ソースコードが GitHub リポジトリに保存されている既存の AWS CodeBuild ビルドプロジェクトに対して、コード変更がリポジトリにプッシュされるたびに AWS CodeBuild がソースコードの再構築を自動的に開始できるようにします。

必須: いいえ

タイプ: ProjectTriggers

Update requires: No interruption

VpcConfig

VpcConfig は、 AWS CodeBuild を有効にして Amazon VPC 内のリソースにアクセスする設定を指定します。詳細については、AWS CodeBuild ユーザーガイドの「Amazon Virtual Private Cloud で AWS CodeBuild を使用する」を参照してください。

必須: いいえ

タイプ: VpcConfig

Update requires: No interruption

戻り値

参照番号

このリソースの論理 ID が Ref 組み込み関数に提供されると、Ref により myProjectName のような AWS CodeBuild プロジェクトの名前が返されます。

Ref 関数の使用方法の詳細については、「Ref」を参照してください。

Fn::GetAtt

Fn::GetAtt は、このタイプの指定された属性の値を返します。以下には、利用可能な属性とサンプル戻り値のリストが示されます。Fn::GetAtt の使用の詳細については、「Fn::GetAtt」を参照してください。

Arn

AWS CodeBuild プロジェクトの ARN (arn:aws:codebuild:us-west-2:123456789012:project/myProjectName など) です。

プロジェクトの作成

次の例では AWS CodeBuild プロジェクトを作成します。

JSON

{ "Project": { "Type": "AWS::CodeBuild::Project", "Properties": { "Name": "myProjectName", "Description": "A description about my project", "ServiceRole": { "Fn::GetAtt": [ "ServiceRole", "Arn" ] }, "Artifacts": { "Type": "no_artifacts" }, "Environment": { "Type": "LINUX_CONTAINER", "ComputeType": "BUILD_GENERAL1_SMALL", "Image": "aws/codebuild/java:openjdk-8", "EnvironmentVariables": [ { "Name": "varName", "Value": "varValue" } ] }, "Source": { "Location": "codebuild-demo-test/0123ab9a371ebf0187b0fe5614fbb72c", "Type": "S3" }, "TimeoutInMinutes": 10, "Tags": [ { "Key": "Key1", "Value": "Value1" }, { "Key": "Key2", "Value": "Value2" } ] } } }

YAML

Project: Type: AWS::CodeBuild::Project Properties: Name: myProjectName Description: A description about my project ServiceRole: !GetAtt ServiceRole.Arn Artifacts: Type: no_artifacts Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/java:openjdk-8 EnvironmentVariables: - Name: varName Value: varValue Source: Location: codebuild-demo-test/0123ab9a371ebf0187b0fe5614fbb72c Type: S3 TimeoutInMinutes: 10 Tags: - Key: Key1 Value: Value1 - Key: Key2 Value: Value2

2 つのフィルターグループを持つプロジェクトを作成します。

次の例では、2 つのフィルターグループでプロジェクトを作成します。また、一方または両方が true と評価されると、ビルドがトリガーされます。

  • 最初のフィルターグループでは、アカウント ID 12345 を持たない GitHub ユーザーによって、正規表現 ^refs/heads/master$ に一致する Git 参照名を含むブランチに対してプルリクエストが作成または更新されることを指定します。

  • 2 番目のフィルターグループでは、正規表現 ^refs/heads/.* に一致する Git 参照名を持つブランチで正規表現 READ_ME に一致する名前のファイルに対してプッシュリクエストが作成されることを指定します。

この例では、サービスロールの名前は my-example-service-roleです。ソースの場所の名前は my-example-source-locationです。

YAML

CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole: my-example-service-role Artifacts: Type: NO_ARTIFACTS Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:1.0 Source: Type: GITHUB Location: my-example-source-location Triggers: Webhook: true FilterGroups: - - Type: EVENT Pattern: PULL_REQUEST_CREATED,PULL_REQUEST_UPDATED - Type: BASE_REF Pattern: ^refs/heads/master$ ExcludeMatchedPattern: false - Type: ACTOR_ACCOUNT_ID Pattern: 12345 ExcludeMatchedPattern: true - - Type: EVENT Pattern: PUSH - Type: HEAD_REF Pattern: ^refs/heads/.* - Type: FILE_PATH Pattern: READ_ME ExcludeMatchedPattern: true

JSON

{ "CodeBuildProject": { "Type": "AWS::CodeBuild::Project", "Properties": { "Name": "MyProject", "ServiceRole": "my-example-service-role", "Artifacts": { "Type": "NO_ARTIFACTS" }, "Environment": { "Type": "LINUX_CONTAINER", "ComputeType": "BUILD_GENERAL1_SMALL", "Image": "aws/codebuild/standard:1.0" }, "Source": { "Type": "GITHUB", "Location": "my-example-source-location" }, "Triggers": { "Webhook": true, "FilterGroups": [ [ { "Type": "EVENT", "Pattern": "PULL_REQUEST_CREATED,PULL_REQUEST_UPDATED" }, { "Type": "BASE_REF", "Pattern": "^refs/heads/master$", "ExcludeMatchedPattern": false }, { "Type": "ACTOR_ACCOUNT_ID", "Pattern": 12345, "ExcludeMatchedPattern": true } ], [ { "Type": "EVENT", "Pattern": "PUSH" }, { "Type": "HEAD_REF", "Pattern": "^refs/heads/.*" }, { "Type": "FILE_PATH", "Pattern": "READ_ME", "ExcludeMatchedPattern": true } ] ] } } } }

Amazon S3 および Amazon VPC を使用してプロパティを作成する

次の例では、Amazon S3 にビルド依存関係をキャッシュして Amazon VPC 内のリソースを使用するプロジェクトを作成します。

YAML

Resources: CodeBuildProject: Type: AWS::CodeBuild::Project Properties: ServiceRole: !GetAtt CodeBuildRole.Arn Artifacts: Type: CODEPIPELINE Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/ubuntu-base:14.04 EnvironmentVariables: - Name: varName1 Value: varValue1 - Name: varName2 Value: varValue2 Type: PLAINTEXT - Name: varName3 Value: /CodeBuild/testParameter Type: PARAMETER_STORE Source: Type: CODEPIPELINE TimeoutInMinutes: 10 VpcConfig: VpcId: !Ref CodeBuildVPC Subnets: [!Ref CodeBuildSubnet] SecurityGroupIds: [!Ref CodeBuildSecurityGroup] Cache: Type: S3 Location: mybucket/prefix CodeBuildRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Action: ['sts:AssumeRole'] Effect: Allow Principal: Service: [codebuild.amazonaws.com] Version: '2012-10-17' Path: / Policies: - PolicyName: CodeBuildAccess PolicyDocument: Version: '2012-10-17' Statement: - Action: - 'logs:*' - 'ec2:CreateNetworkInterface' - 'ec2:DescribeNetworkInterfaces' - 'ec2:DeleteNetworkInterface' - 'ec2:DescribeSubnets' - 'ec2:DescribeSecurityGroups' - 'ec2:DescribeDhcpOptions' - 'ec2:DescribeVpcs' - 'ec2:CreateNetworkInterfacePermission' Effect: Allow Resource: '*' CodeBuildVPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 EnableDnsSupport: 'true' EnableDnsHostnames: 'true' Tags: - Key: name Value: codebuild CodeBuildSubnet: Type: AWS::EC2::Subnet Properties: VpcId: Ref: CodeBuildVPC CidrBlock: 10.0.1.0/24 CodeBuildSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupName: Codebuild Internet Group GroupDescription: 'CodeBuild SecurityGroup' VpcId: !Ref CodeBuildVPC

JSON

{ "Resources": { "CodeBuildProject": { "Type": "AWS::CodeBuild::Project", "Properties": { "ServiceRole": { "Fn::GetAtt": [ "CodeBuildRole", "Arn" ] }, "Artifacts": { "Type": "CODEPIPELINE" }, "Environment": { "Type": "LINUX_CONTAINER", "ComputeType": "BUILD_GENERAL1_SMALL", "Image": "aws/codebuild/ubuntu-base:14.04", "EnvironmentVariables": [ { "Name": "varName1", "Value": "varValue1" }, { "Name": "varName2", "Value": "varValue2", "Type": "PLAINTEXT" }, { "Name": "varName3", "Value": "/CodeBuild/testParameter", "Type": "PARAMETER_STORE" } ] }, "Source": { "Type": "CODEPIPELINE" }, "TimeoutInMinutes": 10, "VpcConfig": { "VpcId": { "Ref": "CodeBuildVPC" }, "Subnets": [ { "Ref": "CodeBuildSubnet" } ], "SecurityGroupIds": [ { "Ref": "CodeBuildSecurityGroup" } ] }, "Cache": { "Type": "S3", "Location": "mybucket/prefix" } } }, "CodeBuildRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "codebuild.amazonaws.com" ] } } ], "Version": "2012-10-17" }, "Path": "/", "Policies": [ { "PolicyName": "CodeBuildAccess", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "logs:*", "ec2:CreateNetworkInterface", "ec2:DescribeNetworkInterfaces", "ec2:DeleteNetworkInterface", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeDhcpOptions", "ec2:DescribeVpcs", "ec2:CreateNetworkInterfacePermission" ], "Effect": "Allow", "Resource": "*" } ] } } ] } }, "CodeBuildVPC": { "Type": "AWS::EC2::VPC", "Properties": { "CidrBlock": "10.0.0.0/16", "EnableDnsSupport": "true", "EnableDnsHostnames": "true", "Tags": [ { "Key": "name", "Value": "codebuild" } ] } }, "CodeBuildSubnet": { "Type": "AWS::EC2::Subnet", "Properties": { "VpcId": { "Ref": "CodeBuildVPC" }, "CidrBlock": "10.0.1.0/24" } }, "CodeBuildSecurityGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupName": "Codebuild Internet Group", "GroupDescription": "CodeBuild SecurityGroup", "VpcId": { "Ref": "CodeBuildVPC" } } } } }

以下の資料も参照してください。