メニュー
AWS CloudFormation
ユーザーガイド (API Version 2010-05-15)

AWS::CodeDeploy::DeploymentGroup

AWS::CodeDeploy::DeploymentGroup リソースで、AWS CodeDeploy デプロイグループを作成し、このグループで、アプリケーションリビジョンがデプロイされる先のインスタンスと共に、他のデプロイオプションを指定します。詳細については、AWS CodeDeploy API Reference の「CreateDeploymentGroup」を参照してください。

構文

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

プロパティ

AlarmConfiguration

デプロイグループに関連付けられる Amazon CloudWatch アラームに関する情報。

Required: No

Type: AWS CodeDeploy DeploymentGroup AlarmConfiguration

更新に伴う要件: 中断はありません。

ApplicationName

このデプロイグループを関連付ける既存の AWS CodeDeploy アプリケーションの名前。

Required: Yes

Type: String

更新に伴う要件: 置換

AutoRollbackConfiguration

デプロイグループに関連付けられる自動ロールバック設定に関する情報。このプロパティを指定した場合、Deployment プロパティを指定しないでください。

必須: いいえ

タイプ: AWS CodeDeploy DeploymentGroup AutoRollbackConfiguration

更新に伴う要件: 中断はありません。

AutoScalingGroups

Auto Scaling グループのリストで、新しいインスタンスを作成すると AWS CodeDeploy がそこに自動的にリビジョンをデプロイします。重複は許可されません。

Required: No

Type: List of String values

更新に伴う要件: 中断はありません。

Deployment

このデプロイグループに展開するアプリケーションのリビジョン。このプロパティを指定した場合、プロビジョンプロセスが完了するとすぐに、ターゲットのアプリケーションリビジョンがデプロイされます。このプロパティを指定した場合、AutoRollbackConfiguration プロパティを指定しないでください。

Required: No

Type: AWS CodeDeploy DeploymentGroup のデプロイ

更新に伴う要件: 中断はありません。

DeploymentConfigName

デプロイ設定名、または事前に定義された設定名。定義済みの設定を使用すると、アプリケーションリビジョンを 1 つのインスタンスに一度に、半分のインスタンスを一度に、またはすべてのインスタンスを一度にデプロイすることができます。詳細と有効な値については、『AWS CodeDeploy User Guide』の「デプロイ設定の使用」を参照してください。

Required: No

Type: String

更新に伴う要件: 中断はありません。

DeploymentGroupName

デプロイグループの名前。名前を指定しない場合、AWS CloudFormation は一意の物理 ID を生成し、その ID をデプロイグループ名として使用します。詳細については、「Name タイプ」を参照してください。

重要

名前を指定すると、このリソースの置換が必要な更新はできません。中断が不要であるか、一定の中断が必要な更新であれば、行うことができます。リソースを置き換える必要がある場合は、新しい名前を指定します。

Required: No

Type: String

更新に伴う要件: 置換

DeploymentStyle

AWS CodeDeploy デプロイグループのロードバランサーの背後でデプロイトラフィックをルーティングするかどうかを指定するなど、デプロイのタイプを決定する属性。

注記

AWS CloudFormation は現在、IN_PLACE デプロイタイプのみをサポートしています。

必須: いいえ

タイプ: AWS CodeDeploy DeploymentGroup DeploymentStyle

更新に伴う要件: 中断はありません。

Ec2TagFilters

デプロイグループに含める、EC2 インスタンスにすでに適用されている EC2 タグ。AWS CodeDeploy には、このデプロイグループで指定するタグで識別されるすべての EC2 インスタンスが含まれます。重複は許可されません。

Required: No

: 以下のリスト AWS CodeDeploy DeploymentGroup Ec2TagFilters

更新に伴う要件: 中断はありません。

LoadBalancerInfo

インプレースデプロイで使用するロードバランサーに関する情報。詳細については、『AWS CodeDeploy User Guide』の「AWS CodeDeploy と Elastic Load Balancing の統合」を参照してください。

注記

AWS CloudFormation は現在、IN_PLACE デプロイタイプのみをサポートしています。

必須: いいえ

タイプ: AWS CodeDeploy DeploymentGroup LoadBalancerInfo

更新に伴う要件: 中断はありません。

OnPremisesInstanceTagFilters

デプロイグループに含める、オンプレミスインスタンスにすでに適用されているオンプレミスインスタンスタグ。AWS CodeDeploy には、このデプロイグループで指定するタグで識別されるすべてのオンプレミスインスタンスが含まれます。オンプレミスインスタンスを AWS CodeDeploy に登録するには、『AWS CodeDeploy User Guide』の「AWS CodeDeploy 用のオンプレミスインスタンスの使用」を参照してください。重複は許可されません。

Required: No

: 以下のリスト AWS CodeDeploy DeploymentGroup OnPremisesInstanceTagFilters

更新に伴う要件: 中断はありません。

ServiceRoleArn

ユーザーに変わって AWS サービスへの呼び出しを行う AWS CodeDeploy 権限を付与する、サービスロール Amazon リソースネーム (ARN)。詳細については、「Create a Service Role for AWS CodeDeploy」(AWS CodeDeploy User Guide) を参照してください。

注記

場合によっては、サービスロールのポリシーの依存性を追加する必要があります。詳細については、IAM ロールのポリシー (「DependsOn 属性」) を参照してください。

Required: Yes

Type: String

更新に伴う要件: 中断はありません。

TriggerConfigurations

デプロイグループのトリガー通知に関する情報。重複は許可されません。

Required: No

: 以下のリスト AWS CodeDeploy DeploymentGroup TriggerConfig

更新に伴う要件: 中断はありません。

戻り値

参照番号

AWS::CodeDeploy::DeploymentGroup リソースの論理 ID を組み込み Ref 関数に渡すと、関数はデプロイグループ名 (mydeploymentgroup-a123d0d1 など) を返します。

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

GitHub のリビジョン

次の例では、Auto Scaling グループに関連付けられるデプロイグループ作成し、GitHub リポジトリに保存されているアプリケーションリビジョンを使用します。入力パラメーターとして情報リポジトリを指定します。

JSON

Copy
"DeploymentGroup" : { "Type" : "AWS::CodeDeploy::DeploymentGroup", "Properties" : { "ApplicationName" : {"Ref" : "ApplicationName"}, "AutoScalingGroups" : [ {"Ref" : "CodeDeployAutoScalingGroups" } ], "Deployment" : { "Description" : "A sample deployment", "IgnoreApplicationStopFailures" : "true", "Revision" : { "RevisionType" : "GitHub", "GitHubLocation" : { "CommitId" : {"Ref" : "CommitId"}, "Repository" : {"Ref" : "Repository"} } } }, "ServiceRoleArn" : {"Ref" : "RoleArn"} } }

YAML

Copy
DeploymentGroup: Type: "AWS::CodeDeploy::DeploymentGroup" Properties: ApplicationName: Ref: "ApplicationName" AutoScalingGroups: - Ref: CodeDeployAutoScalingGroups Deployment: Description: "A sample deployment" IgnoreApplicationStopFailures: true Revision: RevisionType: GitHub GitHubLocation: CommitId: Ref: CommitId Repository: Ref: Repository ServiceRoleArn: Ref: RoleArn

EC2 インスタンスとの関連付け

次の例では、インスタンスのタグを使用してデプロイグループに EC2 インスタンスを関連付ける、デプロイグループを作成します。デプロイグループは、S3 バケットに保存されているアプリケーションリビジョンを使用します。

JSON

Copy
"DeploymentGroup" : { "Type" : "AWS::CodeDeploy::DeploymentGroup", "Properties" : { "ApplicationName" : {"Ref" : "Application"}, "Deployment" : { "Description" : "First time", "IgnoreApplicationStopFailures" : "true", "Revision" : { "RevisionType" : "S3", "S3Location" : { "Bucket" : {"Ref" : "Bucket"}, "Key" : {"Ref" : "Key"}, "BundleType" : "Zip", "ETag" : {"Ref" : "ETag"}, "Version" : {"Ref" : "Version"} } } }, "Ec2TagFilters" : [{ "Key" : {"Ref" : "TagKey"}, "Value" : {"Ref" : "TagValue"}, "Type" : "KEY_AND_VALUE" }], "ServiceRoleArn" : {"Ref" : "RoleArn"} } }

YAML

Copy
DeploymentGroup: Type: "AWS::CodeDeploy::DeploymentGroup" Properties: ApplicationName: Ref: "Application" Deployment: Description: "First time" IgnoreApplicationStopFailures: true Revision: RevisionType: S3 S3Location: Bucket: Ref: Bucket Key: Ref: Key BundleType: Zip ETag: Ref: ETag Version: Ref: Version Ec2TagFilters: - Key: Ref: TagKey Value: Ref: TagValue Type: "KEY_AND_VALUE" ServiceRoleArn: Ref: RoleArn

アラームとトリガー

次の例では、デプロイグループの請求アラームと通知トリガーを設定します。

JSON

Copy
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "EC2TagKey0": { "Type": "String", "Default": "ec2TagKey0" }, "EC2TagValue0": { "Type": "String", "Default": "ec2TagValue0" }, "EC2TagKey1": { "Type": "String", "Default": "ec2TagKey1" }, "EC2TagValue1": { "Type": "String", "Default": "ec2TagValue1" }, "CodeDeployServiceRole": { "Type": "String" }, "DeploymentGroupName": { "Type": "String" } }, "Resources": { "myAlarm": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "Namespace": "AWS/Billing", "MetricName": "EstimatedCharges", "Statistic": "Maximum", "Period": "21600", "EvaluationPeriods": "1", "Threshold": 1000, "ComparisonOperator": "GreaterThanThreshold" } }, "mySNSTopic": { "Type": "AWS::SNS::Topic", "Properties": {} }, "Application": { "Type": "AWS::CodeDeploy::Application" }, "DeploymentConfig": { "Type": "AWS::CodeDeploy::DeploymentConfig", "Properties": { "MinimumHealthyHosts": { "Type": "FLEET_PERCENT", "Value": "25" } } }, "DeploymentGroup": { "Type": "AWS::CodeDeploy::DeploymentGroup", "Properties": { "AlarmConfiguration": { "Alarms": [ { "Name": { "Ref": "myAlarm" } } ] }, "ApplicationName": { "Ref": "Application" }, "DeploymentConfigName": { "Ref": "DeploymentConfig" }, "DeploymentGroupName": { "Ref": "DeploymentGroupName" }, "Ec2TagFilters": [ { "Key": { "Ref": "EC2TagKey0" }, "Value": { "Ref": "EC2TagValue0" }, "Type": "KEY_AND_VALUE" }, { "Key": { "Ref": "EC2TagKey1" }, "Type": "KEY_ONLY" }, { "Value": { "Ref": "EC2TagValue1" }, "Type": "VALUE_ONLY" } ], "ServiceRoleArn": { "Ref": "CodeDeployServiceRole" }, "TriggerConfigurations": [ { "TriggerEvents": [ "DeploymentSuccess", "DeploymentRollback" ], "TriggerName": "MyTarget", "TriggerTargetArn": { "Ref": "mySNSTopic" } } ] } } } }

YAML

Copy
AWSTemplateFormatVersion: 2010-09-09 Parameters: EC2TagKey0: Type: String Default: ec2TagKey0 EC2TagValue0: Type: String Default: ec2TagValue0 EC2TagKey1: Type: String Default: ec2TagKey1 EC2TagValue1: Type: String Default: ec2TagValue1 CodeDeployServiceRole: Type: String DeploymentGroupName: Type: String Resources: myAlarm: Type: 'AWS::CloudWatch::Alarm' Properties: Namespace: AWS/Billing MetricName: EstimatedCharges Statistic: Maximum Period: '21600' EvaluationPeriods: '1' Threshold: 1000 ComparisonOperator: GreaterThanThreshold mySNSTopic: Type: 'AWS::SNS::Topic' Properties: {} Application: Type: 'AWS::CodeDeploy::Application' DeploymentConfig: Type: 'AWS::CodeDeploy::DeploymentConfig' Properties: MinimumHealthyHosts: Type: FLEET_PERCENT Value: '25' DeploymentGroup: Type: 'AWS::CodeDeploy::DeploymentGroup' Properties: AlarmConfiguration: Alarms: - Name: !Ref myAlarm ApplicationName: !Ref Application DeploymentConfigName: !Ref DeploymentConfig DeploymentGroupName: !Ref DeploymentGroupName Ec2TagFilters: - Key: !Ref EC2TagKey0 Value: !Ref EC2TagValue0 Type: KEY_AND_VALUE - Key: !Ref EC2TagKey1 Type: KEY_ONLY - Value: !Ref EC2TagValue1 Type: VALUE_ONLY ServiceRoleArn: !Ref CodeDeployServiceRole TriggerConfigurations: - TriggerEvents: - DeploymentSuccess - DeploymentRollback TriggerName: MyTarget TriggerTargetArn: !Ref mySNSTopic

自動ロールバックの設定

以下の例では、デプロイグループの自動ロールバックを設定しています。

JSON

Copy
{ "Parameters": { "EC2TagKey0": { "Type": "String", "Default": "ec2TagKey0" }, "EC2TagValue0": { "Type": "String", "Default": "ec2TagValue0" }, "EC2TagKey1": { "Type": "String", "Default": "ec2TagKey1" }, "EC2TagValue1": { "Type": "String", "Default": "ec2TagValue1" }, "CodeDeployServiceRole": { "Type": "String" }, "DeploymentGroupName": { "Type": "String" } }, "Resources": { "myAlarm": { "Type": "AWS::CloudWatch::Alarm", "Properties": { "Namespace": "AWS/Billing", "MetricName": "EstimatedCharges", "Statistic": "Maximum", "Period": "21600", "EvaluationPeriods": "1", "Threshold": 1000, "ComparisonOperator": "GreaterThanThreshold" } }, "mySNSTopic": { "Type": "AWS::SNS::Topic", "Properties": {} }, "Application": { "Type": "AWS::CodeDeploy::Application" }, "DeploymentConfig": { "Type": "AWS::CodeDeploy::DeploymentConfig", "Properties": { "MinimumHealthyHosts": { "Type": "FLEET_PERCENT", "Value": "25" } } }, "DeploymentGroup": { "Type": "AWS::CodeDeploy::DeploymentGroup", "Properties": { "AlarmConfiguration": { "Alarms": [ { "Name": { "Ref": "myAlarm" } } ] }, "ApplicationName": { "Ref": "Application" }, "AutoRollbackConfiguration": { "Enabled": "true", "Events": [ "DEPLOYMENT_FAILURE" ] }, "DeploymentConfigName": { "Ref": "DeploymentConfig" }, "DeploymentGroupName": { "Ref": "DeploymentGroupName" }, "Ec2TagFilters": [ { "Key": { "Ref": "EC2TagKey0" }, "Value": { "Ref": "EC2TagValue0" }, "Type": "KEY_AND_VALUE" }, { "Key": { "Ref": "EC2TagKey1" }, "Type": "KEY_ONLY" }, { "Value": { "Ref": "EC2TagValue1" }, "Type": "VALUE_ONLY" } ], "ServiceRoleArn": { "Ref": "CodeDeployServiceRole" }, "TriggerConfigurations": [ { "TriggerEvents": [ "DeploymentSuccess", "DeploymentRollback" ], "TriggerName": "MyTarget", "TriggerTargetArn": { "Ref": "mySNSTopic" } } ] } } } }

YAML

Copy
Parameters: EC2TagKey0: Type: String Default: ec2TagKey0 EC2TagValue0: Type: String Default: ec2TagValue0 EC2TagKey1: Type: String Default: ec2TagKey1 EC2TagValue1: Type: String Default: ec2TagValue1 CodeDeployServiceRole: Type: String DeploymentGroupName: Type: String Resources: myAlarm: Type: 'AWS::CloudWatch::Alarm' Properties: Namespace: AWS/Billing MetricName: EstimatedCharges Statistic: Maximum Period: '21600' EvaluationPeriods: '1' Threshold: 1000 ComparisonOperator: GreaterThanThreshold mySNSTopic: Type: 'AWS::SNS::Topic' Properties: {} Application: Type: 'AWS::CodeDeploy::Application' DeploymentConfig: Type: 'AWS::CodeDeploy::DeploymentConfig' Properties: MinimumHealthyHosts: Type: FLEET_PERCENT Value: '25' DeploymentGroup: Type: 'AWS::CodeDeploy::DeploymentGroup' Properties: AlarmConfiguration: Alarms: - Name: !Ref myAlarm ApplicationName: !Ref Application AutoRollbackConfiguration: Enabled: 'true' Events: - DEPLOYMENT_FAILURE DeploymentConfigName: !Ref DeploymentConfig DeploymentGroupName: !Ref DeploymentGroupName Ec2TagFilters: - Key: !Ref EC2TagKey0 Value: !Ref EC2TagValue0 Type: KEY_AND_VALUE - Key: !Ref EC2TagKey1 Type: KEY_ONLY - Value: !Ref EC2TagValue1 Type: VALUE_ONLY ServiceRoleArn: !Ref CodeDeployServiceRole TriggerConfigurations: - TriggerEvents: - DeploymentSuccess - DeploymentRollback TriggerName: MyTarget TriggerTargetArn: !Ref mySNSTopic

ロードバランサー

以下の例では、デプロイグループの Elastic Load Balancing ロードバランサーを設定しています。

JSON

Copy
{ "Parameters": { "EC2TagKey0": { "Type": "String", "Default": "ec2TagKey0" }, "EC2TagValue0": { "Type": "String", "Default": "ec2TagValue0" }, "EC2TagKey1": { "Type": "String", "Default": "ec2TagKey1" }, "EC2TagValue1": { "Type": "String", "Default": "ec2TagValue1" }, "CodeDeployServiceRole": { "Type": "String" }, "DeploymentGroupName": { "Type": "String" }, "VpcCidr": { "Type": "String" }, "SubnetCidr": { "Type": "String" } }, "Resources": { "myVpc": { "Type": "AWS::EC2::VPC", "Properties": { "CidrBlock": { "Ref": "VpcCidr" } } }, "mySubnet" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "VpcId" : { "Ref" : "myVpc" }, "CidrBlock" : { "Ref": "SubnetCidr" } } }, "InternetGateway" : { "Type" : "AWS::EC2::InternetGateway" }, "AttachGateway" : { "Type" : "AWS::EC2::VPCGatewayAttachment", "Properties" : { "VpcId" : { "Ref" : "myVpc" }, "InternetGatewayId" : { "Ref" : "InternetGateway" } } }, "myELB": { "Type": "AWS::ElasticLoadBalancing::LoadBalancer", "Properties": { "Listeners": [{ "InstancePort": "8000", "LoadBalancerPort": "80", "Protocol": "HTTP" }], "Subnets": [ { "Ref" : "mySubnet" } ] } }, "mySNSTopic": { "Type": "AWS::SNS::Topic", "Properties": {} }, "Application": { "Type": "AWS::CodeDeploy::Application" }, "DeploymentConfig": { "Type": "AWS::CodeDeploy::DeploymentConfig", "Properties": { "MinimumHealthyHosts": { "Type": "FLEET_PERCENT", "Value": "25" } } }, "DeploymentGroup": { "Type": "AWS::CodeDeploy::DeploymentGroup", "Properties": { "ApplicationName": { "Ref": "Application" }, "DeploymentConfigName": { "Ref": "DeploymentConfig" }, "DeploymentGroupName": { "Ref": "DeploymentGroupName" }, "Ec2TagFilters": [ { "Key": { "Ref": "EC2TagKey0" }, "Value": { "Ref": "EC2TagValue0" }, "Type": "KEY_AND_VALUE" }, { "Key": { "Ref": "EC2TagKey1" }, "Type": "KEY_ONLY" } ], "LoadBalancerInfo": { "ElbInfoList": [{ "Name": { "Ref" : "myELB" } }] }, "DeploymentStyle": { "DeploymentOption": "WITH_TRAFFIC_CONTROL" }, "ServiceRoleArn": { "Ref": "CodeDeployServiceRole" }, "TriggerConfigurations": [ { "TriggerEvents": [ "DeploymentSuccess", "DeploymentFailure" ], "TriggerName": "MyTarget", "TriggerTargetArn": { "Ref": "mySNSTopic" } } ] } } }, "Outputs": { "ELB": { "Description": "ELB for DeploymentGroup", "Value" : { "Ref" : "myELB" } } } }

YAML

Copy
Parameters: EC2TagKey0: Type: String Default: ec2TagKey0 EC2TagValue0: Type: String Default: ec2TagValue0 EC2TagKey1: Type: String Default: ec2TagKey1 EC2TagValue1: Type: String Default: ec2TagValue1 CodeDeployServiceRole: Type: String DeploymentGroupName: Type: String VpcCidr: Type: String SubnetCidr: Type: String Resources: myVpc: Type: 'AWS::EC2::VPC' Properties: CidrBlock: !Ref VpcCidr mySubnet: Type: 'AWS::EC2::Subnet' Properties: VpcId: !Ref myVpc CidrBlock: !Ref SubnetCidr InternetGateway: Type: 'AWS::EC2::InternetGateway' AttachGateway: Type: 'AWS::EC2::VPCGatewayAttachment' Properties: VpcId: !Ref myVpc InternetGatewayId: !Ref InternetGateway myELB: Type: 'AWS::ElasticLoadBalancing::LoadBalancer' Properties: Listeners: - InstancePort: '8000' LoadBalancerPort: '80' Protocol: HTTP Subnets: - !Ref mySubnet mySNSTopic: Type: 'AWS::SNS::Topic' Properties: {} Application: Type: 'AWS::CodeDeploy::Application' DeploymentConfig: Type: 'AWS::CodeDeploy::DeploymentConfig' Properties: MinimumHealthyHosts: Type: FLEET_PERCENT Value: '25' DeploymentGroup: Type: 'AWS::CodeDeploy::DeploymentGroup' Properties: ApplicationName: !Ref Application DeploymentConfigName: !Ref DeploymentConfig DeploymentGroupName: !Ref DeploymentGroupName Ec2TagFilters: - Key: !Ref EC2TagKey0 Value: !Ref EC2TagValue0 Type: KEY_AND_VALUE - Key: !Ref EC2TagKey1 Type: KEY_ONLY LoadBalancerInfo: ElbInfoList: - Name: !Ref myELB DeploymentStyle: DeploymentOption: WITH_TRAFFIC_CONTROL ServiceRoleArn: !Ref CodeDeployServiceRole TriggerConfigurations: - TriggerEvents: - DeploymentSuccess - DeploymentFailure TriggerName: MyTarget TriggerTargetArn: !Ref mySNSTopic Outputs: ELB: Description: ELB for DeploymentGroup Value: !Ref myELB

ターゲットグループ情報

次の例では、デプロイメントで使用するターゲットグループを指定します。 インスタンスはターゲットグループにターゲットとして登録され、トラフィックはターゲットグループにルーティングされます。

JSON

Copy
{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "AppDeploymentGroup": { "Type": "AWS::CodeDeploy::DeploymentGroup", "Properties": { "ApplicationName": "MyApp", "DeploymentStyle": { "DeploymentOption": "WITH_TRAFFIC_CONTROL" }, "LoadBalancerInfo": { "TargetGroupInfoList": [ { "Name": "myTargetGroup" } ] }, "ServiceRoleArn": "arn:aws:iam::12345678:role/CodeDeployServiceRole" } } } }

YAML

Copy
AWSTemplateFormatVersion: 2010-09-09 Resources: AppDeploymentGroup: Type: 'AWS::CodeDeploy::DeploymentGroup' Properties: ApplicationName: MyApp DeploymentStyle: DeploymentOption: WITH_TRAFFIC_CONTROL LoadBalancerInfo: TargetGroupInfoList: - Name: myTargetGroup ServiceRoleArn: 'arn:aws:iam::12345678:role/CodeDeployServiceRole'

このページの内容: