// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.

package codedeploy

import (
	"time"

	"github.com/aws/aws-sdk-go-v2/aws"
	"github.com/aws/aws-sdk-go-v2/internal/awsutil"
)

var _ aws.Config
var _ = awsutil.Prettify

// Information about an alarm.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/Alarm
type Alarm struct {
	_ struct{} `type:"structure"`

	// The name of the alarm. Maximum length is 255 characters. Each alarm name
	// can be used only once in a list of alarms.
	Name *string `locationName:"name" type:"string"`
}

// String returns the string representation
func (s Alarm) String() string {
	return awsutil.Prettify(s)
}

// Information about alarms associated with the deployment group.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/AlarmConfiguration
type AlarmConfiguration struct {
	_ struct{} `type:"structure"`

	// A list of alarms configured for the deployment group. A maximum of 10 alarms
	// can be added to a deployment group.
	Alarms []Alarm `locationName:"alarms" type:"list"`

	// Indicates whether the alarm configuration is enabled.
	Enabled *bool `locationName:"enabled" type:"boolean"`

	// Indicates whether a deployment should continue if information about the current
	// state of alarms cannot be retrieved from Amazon CloudWatch. The default value
	// is false.
	//
	//    * true: The deployment proceeds even if alarm status information can't
	//    be retrieved from Amazon CloudWatch.
	//
	//    * false: The deployment stops if alarm status information can't be retrieved
	//    from Amazon CloudWatch.
	IgnorePollAlarmFailure *bool `locationName:"ignorePollAlarmFailure" type:"boolean"`
}

// String returns the string representation
func (s AlarmConfiguration) String() string {
	return awsutil.Prettify(s)
}

// A revision for an AWS Lambda or Amazon ECS deployment that is a YAML-formatted
// or JSON-formatted string. For AWS Lambda and Amazon ECS deployments, the
// revision is the same as the AppSpec file. This method replaces the deprecated
// RawString data type.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/AppSpecContent
type AppSpecContent struct {
	_ struct{} `type:"structure"`

	// The YAML-formatted or JSON-formatted revision string.
	//
	// For an AWS Lambda deployment, the content includes a Lambda function name,
	// the alias for its original version, and the alias for its replacement version.
	// The deployment shifts traffic from the original version of the Lambda function
	// to the replacement version.
	//
	// For an Amazon ECS deployment, the content includes the task name, information
	// about the load balancer that serves traffic to the container, and more.
	//
	// For both types of deployments, the content can specify Lambda functions that
	// run at specified hooks, such as BeforeInstall, during a deployment.
	Content *string `locationName:"content" type:"string"`

	// The SHA256 hash value of the revision content.
	Sha256 *string `locationName:"sha256" type:"string"`
}

// String returns the string representation
func (s AppSpecContent) String() string {
	return awsutil.Prettify(s)
}

// Information about an application.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/ApplicationInfo
type ApplicationInfo struct {
	_ struct{} `type:"structure"`

	// The application ID.
	ApplicationId *string `locationName:"applicationId" type:"string"`

	// The application name.
	ApplicationName *string `locationName:"applicationName" min:"1" type:"string"`

	// The destination platform type for deployment of the application (Lambda or
	// Server).
	ComputePlatform ComputePlatform `locationName:"computePlatform" type:"string" enum:"true"`

	// The time at which the application was created.
	CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"unix"`

	// The name for a connection to a GitHub account.
	GitHubAccountName *string `locationName:"gitHubAccountName" type:"string"`

	// True if the user has authenticated with GitHub for the specified application.
	// Otherwise, false.
	LinkedToGitHub *bool `locationName:"linkedToGitHub" type:"boolean"`
}

// String returns the string representation
func (s ApplicationInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about a configuration for automatically rolling back to a previous
// version of an application revision when a deployment is not completed successfully.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/AutoRollbackConfiguration
type AutoRollbackConfiguration struct {
	_ struct{} `type:"structure"`

	// Indicates whether a defined automatic rollback configuration is currently
	// enabled.
	Enabled *bool `locationName:"enabled" type:"boolean"`

	// The event type or types that trigger a rollback.
	Events []AutoRollbackEvent `locationName:"events" type:"list"`
}

// String returns the string representation
func (s AutoRollbackConfiguration) String() string {
	return awsutil.Prettify(s)
}

// Information about an Auto Scaling group.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/AutoScalingGroup
type AutoScalingGroup struct {
	_ struct{} `type:"structure"`

	// An Auto Scaling lifecycle event hook name.
	Hook *string `locationName:"hook" type:"string"`

	// The Auto Scaling group name.
	Name *string `locationName:"name" type:"string"`
}

// String returns the string representation
func (s AutoScalingGroup) String() string {
	return awsutil.Prettify(s)
}

// Information about blue/green deployment options for a deployment group.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/BlueGreenDeploymentConfiguration
type BlueGreenDeploymentConfiguration struct {
	_ struct{} `type:"structure"`

	// Information about the action to take when newly provisioned instances are
	// ready to receive traffic in a blue/green deployment.
	DeploymentReadyOption *DeploymentReadyOption `locationName:"deploymentReadyOption" type:"structure"`

	// Information about how instances are provisioned for a replacement environment
	// in a blue/green deployment.
	GreenFleetProvisioningOption *GreenFleetProvisioningOption `locationName:"greenFleetProvisioningOption" type:"structure"`

	// Information about whether to terminate instances in the original fleet during
	// a blue/green deployment.
	TerminateBlueInstancesOnDeploymentSuccess *BlueInstanceTerminationOption `locationName:"terminateBlueInstancesOnDeploymentSuccess" type:"structure"`
}

// String returns the string representation
func (s BlueGreenDeploymentConfiguration) String() string {
	return awsutil.Prettify(s)
}

// Information about whether instances in the original environment are terminated
// when a blue/green deployment is successful.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/BlueInstanceTerminationOption
type BlueInstanceTerminationOption struct {
	_ struct{} `type:"structure"`

	// The action to take on instances in the original environment after a successful
	// blue/green deployment.
	//
	//    * TERMINATE: Instances are terminated after a specified wait time.
	//
	//    * KEEP_ALIVE: Instances are left running after they are deregistered from
	//    the load balancer and removed from the deployment group.
	Action InstanceAction `locationName:"action" type:"string" enum:"true"`

	// The number of minutes to wait after a successful blue/green deployment before
	// terminating instances from the original environment. The maximum setting
	// is 2880 minutes (2 days).
	TerminationWaitTimeInMinutes *int64 `locationName:"terminationWaitTimeInMinutes" type:"integer"`
}

// String returns the string representation
func (s BlueInstanceTerminationOption) String() string {
	return awsutil.Prettify(s)
}

// Information about a deployment configuration.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/DeploymentConfigInfo
type DeploymentConfigInfo struct {
	_ struct{} `type:"structure"`

	// The destination platform type for the deployment (Lambda, Server, or ECS).
	ComputePlatform ComputePlatform `locationName:"computePlatform" type:"string" enum:"true"`

	// The time at which the deployment configuration was created.
	CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"unix"`

	// The deployment configuration ID.
	DeploymentConfigId *string `locationName:"deploymentConfigId" type:"string"`

	// The deployment configuration name.
	DeploymentConfigName *string `locationName:"deploymentConfigName" min:"1" type:"string"`

	// Information about the number or percentage of minimum healthy instance.
	MinimumHealthyHosts *MinimumHealthyHosts `locationName:"minimumHealthyHosts" type:"structure"`

	// The configuration that specifies how the deployment traffic is routed. Only
	// deployments with a Lambda compute platform can specify this.
	TrafficRoutingConfig *TrafficRoutingConfig `locationName:"trafficRoutingConfig" type:"structure"`
}

// String returns the string representation
func (s DeploymentConfigInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about a deployment group.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/DeploymentGroupInfo
type DeploymentGroupInfo struct {
	_ struct{} `type:"structure"`

	// A list of alarms associated with the deployment group.
	AlarmConfiguration *AlarmConfiguration `locationName:"alarmConfiguration" type:"structure"`

	// The application name.
	ApplicationName *string `locationName:"applicationName" min:"1" type:"string"`

	// Information about the automatic rollback configuration associated with the
	// deployment group.
	AutoRollbackConfiguration *AutoRollbackConfiguration `locationName:"autoRollbackConfiguration" type:"structure"`

	// A list of associated Auto Scaling groups.
	AutoScalingGroups []AutoScalingGroup `locationName:"autoScalingGroups" type:"list"`

	// Information about blue/green deployment options for a deployment group.
	BlueGreenDeploymentConfiguration *BlueGreenDeploymentConfiguration `locationName:"blueGreenDeploymentConfiguration" type:"structure"`

	// The destination platform type for the deployment (Lambda, Server, or ECS).
	ComputePlatform ComputePlatform `locationName:"computePlatform" type:"string" enum:"true"`

	// The deployment configuration name.
	DeploymentConfigName *string `locationName:"deploymentConfigName" min:"1" type:"string"`

	// The deployment group ID.
	DeploymentGroupId *string `locationName:"deploymentGroupId" type:"string"`

	// The deployment group name.
	DeploymentGroupName *string `locationName:"deploymentGroupName" min:"1" type:"string"`

	// Information about the type of deployment, either in-place or blue/green,
	// you want to run and whether to route deployment traffic behind a load balancer.
	DeploymentStyle *DeploymentStyle `locationName:"deploymentStyle" type:"structure"`

	// The Amazon EC2 tags on which to filter. The deployment group includes EC2
	// instances with any of the specified tags.
	Ec2TagFilters []EC2TagFilter `locationName:"ec2TagFilters" type:"list"`

	// Information about groups of tags applied to an EC2 instance. The deployment
	// group includes only EC2 instances identified by all of the tag groups. Cannot
	// be used in the same call as ec2TagFilters.
	Ec2TagSet *EC2TagSet `locationName:"ec2TagSet" type:"structure"`

	// The target Amazon ECS services in the deployment group. This applies only
	// to deployment groups that use the Amazon ECS compute platform. A target Amazon
	// ECS service is specified as an Amazon ECS cluster and service name pair using
	// the format <clustername>:<servicename>.
	EcsServices []ECSService `locationName:"ecsServices" type:"list"`

	// Information about the most recent attempted deployment to the deployment
	// group.
	LastAttemptedDeployment *LastDeploymentInfo `locationName:"lastAttemptedDeployment" type:"structure"`

	// Information about the most recent successful deployment to the deployment
	// group.
	LastSuccessfulDeployment *LastDeploymentInfo `locationName:"lastSuccessfulDeployment" type:"structure"`

	// Information about the load balancer to use in a deployment.
	LoadBalancerInfo *LoadBalancerInfo `locationName:"loadBalancerInfo" type:"structure"`

	// The on-premises instance tags on which to filter. The deployment group includes
	// on-premises instances with any of the specified tags.
	OnPremisesInstanceTagFilters []TagFilter `locationName:"onPremisesInstanceTagFilters" type:"list"`

	// Information about groups of tags applied to an on-premises instance. The
	// deployment group includes only on-premises instances identified by all the
	// tag groups. Cannot be used in the same call as onPremisesInstanceTagFilters.
	OnPremisesTagSet *OnPremisesTagSet `locationName:"onPremisesTagSet" type:"structure"`

	// A service role Amazon Resource Name (ARN) that grants CodeDeploy permission
	// to make calls to AWS services on your behalf. For more information, see Create
	// a Service Role for AWS CodeDeploy (https://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-create-service-role.html)
	// in the AWS CodeDeploy User Guide.
	ServiceRoleArn *string `locationName:"serviceRoleArn" type:"string"`

	// Information about the deployment group's target revision, including type
	// and location.
	TargetRevision *RevisionLocation `locationName:"targetRevision" type:"structure"`

	// Information about triggers associated with the deployment group.
	TriggerConfigurations []TriggerConfig `locationName:"triggerConfigurations" type:"list"`
}

// String returns the string representation
func (s DeploymentGroupInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about a deployment.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/DeploymentInfo
type DeploymentInfo struct {
	_ struct{} `type:"structure"`

	// Provides information about the results of a deployment, such as whether instances
	// in the original environment in a blue/green deployment were not terminated.
	AdditionalDeploymentStatusInfo *string `locationName:"additionalDeploymentStatusInfo" deprecated:"true" type:"string"`

	// The application name.
	ApplicationName *string `locationName:"applicationName" min:"1" type:"string"`

	// Information about the automatic rollback configuration associated with the
	// deployment.
	AutoRollbackConfiguration *AutoRollbackConfiguration `locationName:"autoRollbackConfiguration" type:"structure"`

	// Information about blue/green deployment options for this deployment.
	BlueGreenDeploymentConfiguration *BlueGreenDeploymentConfiguration `locationName:"blueGreenDeploymentConfiguration" type:"structure"`

	// A timestamp that indicates when the deployment was complete.
	CompleteTime *time.Time `locationName:"completeTime" type:"timestamp" timestampFormat:"unix"`

	// The destination platform type for the deployment (Lambda, Server, or ECS).
	ComputePlatform ComputePlatform `locationName:"computePlatform" type:"string" enum:"true"`

	// A timestamp that indicates when the deployment was created.
	CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"unix"`

	// The means by which the deployment was created:
	//
	//    * user: A user created the deployment.
	//
	//    * autoscaling: Amazon EC2 Auto Scaling created the deployment.
	//
	//    * codeDeployRollback: A rollback process created the deployment.
	Creator DeploymentCreator `locationName:"creator" type:"string" enum:"true"`

	// The deployment configuration name.
	DeploymentConfigName *string `locationName:"deploymentConfigName" min:"1" type:"string"`

	// The deployment group name.
	DeploymentGroupName *string `locationName:"deploymentGroupName" min:"1" type:"string"`

	// The unique ID of a deployment.
	DeploymentId *string `locationName:"deploymentId" type:"string"`

	// A summary of the deployment status of the instances in the deployment.
	DeploymentOverview *DeploymentOverview `locationName:"deploymentOverview" type:"structure"`

	// Messages that contain information about the status of a deployment.
	DeploymentStatusMessages []string `locationName:"deploymentStatusMessages" type:"list"`

	// Information about the type of deployment, either in-place or blue/green,
	// you want to run and whether to route deployment traffic behind a load balancer.
	DeploymentStyle *DeploymentStyle `locationName:"deploymentStyle" type:"structure"`

	// A comment about the deployment.
	Description *string `locationName:"description" type:"string"`

	// Information about any error associated with this deployment.
	ErrorInformation *ErrorInformation `locationName:"errorInformation" type:"structure"`

	// Information about how AWS CodeDeploy handles files that already exist in
	// a deployment target location but weren't part of the previous successful
	// deployment.
	//
	//    * DISALLOW: The deployment fails. This is also the default behavior if
	//    no option is specified.
	//
	//    * OVERWRITE: The version of the file from the application revision currently
	//    being deployed replaces the version already on the instance.
	//
	//    * RETAIN: The version of the file already on the instance is kept and
	//    used as part of the new deployment.
	FileExistsBehavior FileExistsBehavior `locationName:"fileExistsBehavior" type:"string" enum:"true"`

	// If true, then if an ApplicationStop, BeforeBlockTraffic, or AfterBlockTraffic
	// deployment lifecycle event to an instance fails, then the deployment continues
	// to the next deployment lifecycle event. For example, if ApplicationStop fails,
	// the deployment continues with DownloadBundle. If BeforeBlockTraffic fails,
	// the deployment continues with BlockTraffic. If AfterBlockTraffic fails, the
	// deployment continues with ApplicationStop.
	//
	// If false or not specified, then if a lifecycle event fails during a deployment
	// to an instance, that deployment fails. If deployment to that instance is
	// part of an overall deployment and the number of healthy hosts is not less
	// than the minimum number of healthy hosts, then a deployment to the next instance
	// is attempted.
	//
	// During a deployment, the AWS CodeDeploy agent runs the scripts specified
	// for ApplicationStop, BeforeBlockTraffic, and AfterBlockTraffic in the AppSpec
	// file from the previous successful deployment. (All other scripts are run
	// from the AppSpec file in the current deployment.) If one of these scripts
	// contains an error and does not run successfully, the deployment can fail.
	//
	// If the cause of the failure is a script from the last successful deployment
	// that will never run successfully, create a new deployment and use ignoreApplicationStopFailures
	// to specify that the ApplicationStop, BeforeBlockTraffic, and AfterBlockTraffic
	// failures should be ignored.
	IgnoreApplicationStopFailures *bool `locationName:"ignoreApplicationStopFailures" type:"boolean"`

	// Indicates whether the wait period set for the termination of instances in
	// the original environment has started. Status is 'false' if the KEEP_ALIVE
	// option is specified. Otherwise, 'true' as soon as the termination wait period
	// starts.
	InstanceTerminationWaitTimeStarted *bool `locationName:"instanceTerminationWaitTimeStarted" type:"boolean"`

	// Information about the load balancer used in the deployment.
	LoadBalancerInfo *LoadBalancerInfo `locationName:"loadBalancerInfo" type:"structure"`

	// Information about the application revision that was deployed to the deployment
	// group before the most recent successful deployment.
	PreviousRevision *RevisionLocation `locationName:"previousRevision" type:"structure"`

	// Information about the location of stored application artifacts and the service
	// from which to retrieve them.
	Revision *RevisionLocation `locationName:"revision" type:"structure"`

	// Information about a deployment rollback.
	RollbackInfo *RollbackInfo `locationName:"rollbackInfo" type:"structure"`

	// A timestamp that indicates when the deployment was deployed to the deployment
	// group.
	//
	// In some cases, the reported value of the start time might be later than the
	// complete time. This is due to differences in the clock settings of backend
	// servers that participate in the deployment process.
	StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"unix"`

	// The current state of the deployment as a whole.
	Status DeploymentStatus `locationName:"status" type:"string" enum:"true"`

	// Information about the instances that belong to the replacement environment
	// in a blue/green deployment.
	TargetInstances *TargetInstances `locationName:"targetInstances" type:"structure"`

	// Indicates whether only instances that are not running the latest application
	// revision are to be deployed to.
	UpdateOutdatedInstancesOnly *bool `locationName:"updateOutdatedInstancesOnly" type:"boolean"`
}

// String returns the string representation
func (s DeploymentInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about the deployment status of the instances in the deployment.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/DeploymentOverview
type DeploymentOverview struct {
	_ struct{} `type:"structure"`

	// The number of instances in the deployment in a failed state.
	Failed *int64 `type:"long"`

	// The number of instances in which the deployment is in progress.
	InProgress *int64 `type:"long"`

	// The number of instances in the deployment in a pending state.
	Pending *int64 `type:"long"`

	// The number of instances in a replacement environment ready to receive traffic
	// in a blue/green deployment.
	Ready *int64 `type:"long"`

	// The number of instances in the deployment in a skipped state.
	Skipped *int64 `type:"long"`

	// The number of instances in the deployment to which revisions have been successfully
	// deployed.
	Succeeded *int64 `type:"long"`
}

// String returns the string representation
func (s DeploymentOverview) String() string {
	return awsutil.Prettify(s)
}

// Information about how traffic is rerouted to instances in a replacement environment
// in a blue/green deployment.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/DeploymentReadyOption
type DeploymentReadyOption struct {
	_ struct{} `type:"structure"`

	// Information about when to reroute traffic from an original environment to
	// a replacement environment in a blue/green deployment.
	//
	//    * CONTINUE_DEPLOYMENT: Register new instances with the load balancer immediately
	//    after the new application revision is installed on the instances in the
	//    replacement environment.
	//
	//    * STOP_DEPLOYMENT: Do not register new instances with a load balancer
	//    unless traffic rerouting is started using ContinueDeployment. If traffic
	//    rerouting is not started before the end of the specified wait period,
	//    the deployment status is changed to Stopped.
	ActionOnTimeout DeploymentReadyAction `locationName:"actionOnTimeout" type:"string" enum:"true"`

	// The number of minutes to wait before the status of a blue/green deployment
	// is changed to Stopped if rerouting is not started manually. Applies only
	// to the STOP_DEPLOYMENT option for actionOnTimeout
	WaitTimeInMinutes *int64 `locationName:"waitTimeInMinutes" type:"integer"`
}

// String returns the string representation
func (s DeploymentReadyOption) String() string {
	return awsutil.Prettify(s)
}

// Information about the type of deployment, either in-place or blue/green,
// you want to run and whether to route deployment traffic behind a load balancer.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/DeploymentStyle
type DeploymentStyle struct {
	_ struct{} `type:"structure"`

	// Indicates whether to route deployment traffic behind a load balancer.
	DeploymentOption DeploymentOption `locationName:"deploymentOption" type:"string" enum:"true"`

	// Indicates whether to run an in-place deployment or a blue/green deployment.
	DeploymentType DeploymentType `locationName:"deploymentType" type:"string" enum:"true"`
}

// String returns the string representation
func (s DeploymentStyle) String() string {
	return awsutil.Prettify(s)
}

// Information about the deployment target.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/DeploymentTarget
type DeploymentTarget struct {
	_ struct{} `type:"structure"`

	// The deployment type that is specific to the deployment's compute platform.
	DeploymentTargetType DeploymentTargetType `locationName:"deploymentTargetType" type:"string" enum:"true"`

	// Information about the target for a deployment that uses the Amazon ECS compute
	// platform.
	EcsTarget *ECSTarget `locationName:"ecsTarget" type:"structure"`

	// Information about the target for a deployment that uses the EC2/On-premises
	// compute platform.
	InstanceTarget *InstanceTarget `locationName:"instanceTarget" type:"structure"`

	// Information about the target for a deployment that uses the AWS Lambda compute
	// platform.
	LambdaTarget *LambdaTarget `locationName:"lambdaTarget" type:"structure"`
}

// String returns the string representation
func (s DeploymentTarget) String() string {
	return awsutil.Prettify(s)
}

// Diagnostic information about executable scripts that are part of a deployment.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/Diagnostics
type Diagnostics struct {
	_ struct{} `type:"structure"`

	// The associated error code:
	//
	//    * Success: The specified script ran.
	//
	//    * ScriptMissing: The specified script was not found in the specified location.
	//
	//    * ScriptNotExecutable: The specified script is not a recognized executable
	//    file type.
	//
	//    * ScriptTimedOut: The specified script did not finish running in the specified
	//    time period.
	//
	//    * ScriptFailed: The specified script failed to run as expected.
	//
	//    * UnknownError: The specified script did not run for an unknown reason.
	ErrorCode LifecycleErrorCode `locationName:"errorCode" type:"string" enum:"true"`

	// The last portion of the diagnostic log.
	//
	// If available, AWS CodeDeploy returns up to the last 4 KB of the diagnostic
	// log.
	LogTail *string `locationName:"logTail" type:"string"`

	// The message associated with the error.
	Message *string `locationName:"message" type:"string"`

	// The name of the script.
	ScriptName *string `locationName:"scriptName" type:"string"`
}

// String returns the string representation
func (s Diagnostics) String() string {
	return awsutil.Prettify(s)
}

// Information about an EC2 tag filter.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/EC2TagFilter
type EC2TagFilter struct {
	_ struct{} `type:"structure"`

	// The tag filter key.
	Key *string `type:"string"`

	// The tag filter type:
	//
	//    * KEY_ONLY: Key only.
	//
	//    * VALUE_ONLY: Value only.
	//
	//    * KEY_AND_VALUE: Key and value.
	Type EC2TagFilterType `type:"string" enum:"true"`

	// The tag filter value.
	Value *string `type:"string"`
}

// String returns the string representation
func (s EC2TagFilter) String() string {
	return awsutil.Prettify(s)
}

// Information about groups of EC2 instance tags.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/EC2TagSet
type EC2TagSet struct {
	_ struct{} `type:"structure"`

	// A list that contains other lists of EC2 instance tag groups. For an instance
	// to be included in the deployment group, it must be identified by all of the
	// tag groups in the list.
	Ec2TagSetList [][]EC2TagFilter `locationName:"ec2TagSetList" type:"list"`
}

// String returns the string representation
func (s EC2TagSet) String() string {
	return awsutil.Prettify(s)
}

// Contains the service and cluster names used to identify an Amazon ECS deployment's
// target.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/ECSService
type ECSService struct {
	_ struct{} `type:"structure"`

	// The name of the cluster that the Amazon ECS service is associated with.
	ClusterName *string `locationName:"clusterName" type:"string"`

	// The name of the target Amazon ECS service.
	ServiceName *string `locationName:"serviceName" type:"string"`
}

// String returns the string representation
func (s ECSService) String() string {
	return awsutil.Prettify(s)
}

// Information about the target of an Amazon ECS deployment.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/ECSTarget
type ECSTarget struct {
	_ struct{} `type:"structure"`

	// The unique ID of a deployment.
	DeploymentId *string `locationName:"deploymentId" type:"string"`

	// The date and time when the target Amazon ECS application was updated by a
	// deployment.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" timestampFormat:"unix"`

	// The lifecycle events of the deployment to this target Amazon ECS application.
	LifecycleEvents []LifecycleEvent `locationName:"lifecycleEvents" type:"list"`

	// The status an Amazon ECS deployment's target ECS application.
	Status TargetStatus `locationName:"status" type:"string" enum:"true"`

	// The ARN of the target.
	TargetArn *string `locationName:"targetArn" type:"string"`

	// The unique ID of a deployment target that has a type of ecsTarget.
	TargetId *string `locationName:"targetId" type:"string"`

	// The ECSTaskSet objects associated with the ECS target.
	TaskSetsInfo []ECSTaskSet `locationName:"taskSetsInfo" type:"list"`
}

// String returns the string representation
func (s ECSTarget) String() string {
	return awsutil.Prettify(s)
}

// Information about a set of Amazon ECS tasks in an AWS CodeDeploy deployment.
// An Amazon ECS task set includes details such as the desired number of tasks,
// how many tasks are running, and whether the task set serves production traffic.
// An AWS CodeDeploy application that uses the Amazon ECS compute platform deploys
// a containerized application in an Amazon ECS service as a task set.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/ECSTaskSet
type ECSTaskSet struct {
	_ struct{} `type:"structure"`

	// The number of tasks in a task set. During a deployment that uses the Amazon
	// ECS compute type, CodeDeploy instructs Amazon ECS to create a new task set
	// and uses this value to determine how many tasks to create. After the updated
	// task set is created, CodeDeploy shifts traffic to the new task set.
	DesiredCount *int64 `locationName:"desiredCount" type:"long"`

	// A unique ID of an ECSTaskSet.
	Identifer *string `locationName:"identifer" type:"string"`

	// The number of tasks in the task set that are in the PENDING status during
	// an Amazon ECS deployment. A task in the PENDING state is preparing to enter
	// the RUNNING state. A task set enters the PENDING status when it launches
	// for the first time, or when it is restarted after being in the STOPPED state.
	PendingCount *int64 `locationName:"pendingCount" type:"long"`

	// The number of tasks in the task set that are in the RUNNING status during
	// an Amazon ECS deployment. A task in the RUNNING state is running and ready
	// for use.
	RunningCount *int64 `locationName:"runningCount" type:"long"`

	// The status of the task set. There are three valid task set statuses:
	//
	//    * PRIMARY: Indicates the task set is serving production traffic.
	//
	//    * ACTIVE: Indicates the task set is not serving production traffic.
	//
	//    * DRAINING: Indicates the tasks in the task set are being stopped and
	//    their corresponding targets are being deregistered from their target group.
	Status *string `locationName:"status" type:"string"`

	// The target group associated with the task set. The target group is used by
	// AWS CodeDeploy to manage traffic to a task set.
	TargetGroup *TargetGroupInfo `locationName:"targetGroup" type:"structure"`

	// A label that identifies whether the ECS task set is an original target (BLUE)
	// or a replacement target (GREEN).
	TaskSetLabel TargetLabel `locationName:"taskSetLabel" type:"string" enum:"true"`

	// The percentage of traffic served by this task set.
	TrafficWeight *float64 `locationName:"trafficWeight" type:"double"`
}

// String returns the string representation
func (s ECSTaskSet) String() string {
	return awsutil.Prettify(s)
}

// Information about a load balancer in Elastic Load Balancing to use in a deployment.
// Instances are registered directly with a load balancer, and traffic is routed
// to the load balancer.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/ELBInfo
type ELBInfo struct {
	_ struct{} `type:"structure"`

	// For blue/green deployments, the name of the load balancer that is used to
	// route traffic from original instances to replacement instances in a blue/green
	// deployment. For in-place deployments, the name of the load balancer that
	// instances are deregistered from so they are not serving traffic during a
	// deployment, and then re-registered with after the deployment is complete.
	Name *string `locationName:"name" type:"string"`
}

// String returns the string representation
func (s ELBInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about a deployment error.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/ErrorInformation
type ErrorInformation struct {
	_ struct{} `type:"structure"`

	// For more information, see Error Codes for AWS CodeDeploy (https://docs.aws.amazon.com/codedeploy/latest/userguide/error-codes.html)
	// in the AWS CodeDeploy User Guide (https://docs.aws.amazon.com/codedeploy/latest/userguide).
	//
	// The error code:
	//
	//    * APPLICATION_MISSING: The application was missing. This error code is
	//    most likely raised if the application is deleted after the deployment
	//    is created, but before it is started.
	//
	//    * DEPLOYMENT_GROUP_MISSING: The deployment group was missing. This error
	//    code is most likely raised if the deployment group is deleted after the
	//    deployment is created, but before it is started.
	//
	//    * HEALTH_CONSTRAINTS: The deployment failed on too many instances to be
	//    successfully deployed within the instance health constraints specified.
	//
	//    * HEALTH_CONSTRAINTS_INVALID: The revision cannot be successfully deployed
	//    within the instance health constraints specified.
	//
	//    * IAM_ROLE_MISSING: The service role cannot be accessed.
	//
	//    * IAM_ROLE_PERMISSIONS: The service role does not have the correct permissions.
	//
	//    * INTERNAL_ERROR: There was an internal error.
	//
	//    * NO_EC2_SUBSCRIPTION: The calling account is not subscribed to Amazon
	//    EC2.
	//
	//    * NO_INSTANCES: No instances were specified, or no instances can be found.
	//
	//    * OVER_MAX_INSTANCES: The maximum number of instances was exceeded.
	//
	//    * THROTTLED: The operation was throttled because the calling account exceeded
	//    the throttling limits of one or more AWS services.
	//
	//    * TIMEOUT: The deployment has timed out.
	//
	//    * REVISION_MISSING: The revision ID was missing. This error code is most
	//    likely raised if the revision is deleted after the deployment is created,
	//    but before it is started.
	Code ErrorCode `locationName:"code" type:"string" enum:"true"`

	// An accompanying error message.
	Message *string `locationName:"message" type:"string"`
}

// String returns the string representation
func (s ErrorInformation) String() string {
	return awsutil.Prettify(s)
}

// Information about an application revision.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/GenericRevisionInfo
type GenericRevisionInfo struct {
	_ struct{} `type:"structure"`

	// The deployment groups for which this is the current target revision.
	DeploymentGroups []string `locationName:"deploymentGroups" type:"list"`

	// A comment about the revision.
	Description *string `locationName:"description" type:"string"`

	// When the revision was first used by AWS CodeDeploy.
	FirstUsedTime *time.Time `locationName:"firstUsedTime" type:"timestamp" timestampFormat:"unix"`

	// When the revision was last used by AWS CodeDeploy.
	LastUsedTime *time.Time `locationName:"lastUsedTime" type:"timestamp" timestampFormat:"unix"`

	// When the revision was registered with AWS CodeDeploy.
	RegisterTime *time.Time `locationName:"registerTime" type:"timestamp" timestampFormat:"unix"`
}

// String returns the string representation
func (s GenericRevisionInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about the location of application artifacts stored in GitHub.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/GitHubLocation
type GitHubLocation struct {
	_ struct{} `type:"structure"`

	// The SHA1 commit ID of the GitHub commit that represents the bundled artifacts
	// for the application revision.
	CommitId *string `locationName:"commitId" type:"string"`

	// The GitHub account and repository pair that stores a reference to the commit
	// that represents the bundled artifacts for the application revision.
	//
	// Specified as account/repository.
	Repository *string `locationName:"repository" type:"string"`
}

// String returns the string representation
func (s GitHubLocation) String() string {
	return awsutil.Prettify(s)
}

// Information about the instances that belong to the replacement environment
// in a blue/green deployment.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/GreenFleetProvisioningOption
type GreenFleetProvisioningOption struct {
	_ struct{} `type:"structure"`

	// The method used to add instances to a replacement environment.
	//
	//    * DISCOVER_EXISTING: Use instances that already exist or will be created
	//    manually.
	//
	//    * COPY_AUTO_SCALING_GROUP: Use settings from a specified Auto Scaling
	//    group to define and create instances in a new Auto Scaling group.
	Action GreenFleetProvisioningAction `locationName:"action" type:"string" enum:"true"`
}

// String returns the string representation
func (s GreenFleetProvisioningOption) String() string {
	return awsutil.Prettify(s)
}

// Information about an on-premises instance.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/InstanceInfo
type InstanceInfo struct {
	_ struct{} `type:"structure"`

	// If the on-premises instance was deregistered, the time at which the on-premises
	// instance was deregistered.
	DeregisterTime *time.Time `locationName:"deregisterTime" type:"timestamp" timestampFormat:"unix"`

	// The ARN of the IAM session associated with the on-premises instance.
	IamSessionArn *string `locationName:"iamSessionArn" type:"string"`

	// The IAM user ARN associated with the on-premises instance.
	IamUserArn *string `locationName:"iamUserArn" type:"string"`

	// The ARN of the on-premises instance.
	InstanceArn *string `locationName:"instanceArn" type:"string"`

	// The name of the on-premises instance.
	InstanceName *string `locationName:"instanceName" type:"string"`

	// The time at which the on-premises instance was registered.
	RegisterTime *time.Time `locationName:"registerTime" type:"timestamp" timestampFormat:"unix"`

	// The tags currently associated with the on-premises instance.
	Tags []Tag `locationName:"tags" type:"list"`
}

// String returns the string representation
func (s InstanceInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about an instance in a deployment.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/InstanceSummary
type InstanceSummary struct {
	_ struct{} `deprecated:"true" type:"structure"`

	// The unique ID of a deployment.
	DeploymentId *string `locationName:"deploymentId" type:"string"`

	// The instance ID.
	InstanceId *string `locationName:"instanceId" type:"string"`

	// Information about which environment an instance belongs to in a blue/green
	// deployment.
	//
	//    * BLUE: The instance is part of the original environment.
	//
	//    * GREEN: The instance is part of the replacement environment.
	InstanceType InstanceType `locationName:"instanceType" type:"string" enum:"true"`

	// A timestamp that indicaties when the instance information was last updated.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" timestampFormat:"unix"`

	// A list of lifecycle events for this instance.
	LifecycleEvents []LifecycleEvent `locationName:"lifecycleEvents" type:"list"`

	// The deployment status for this instance:
	//
	//    * Pending: The deployment is pending for this instance.
	//
	//    * In Progress: The deployment is in progress for this instance.
	//
	//    * Succeeded: The deployment has succeeded for this instance.
	//
	//    * Failed: The deployment has failed for this instance.
	//
	//    * Skipped: The deployment has been skipped for this instance.
	//
	//    * Unknown: The deployment status is unknown for this instance.
	Status InstanceStatus `locationName:"status" deprecated:"true" type:"string" enum:"true"`
}

// String returns the string representation
func (s InstanceSummary) String() string {
	return awsutil.Prettify(s)
}

// A target Amazon EC2 or on-premises instance during a deployment that uses
// the EC2/On-premises compute platform.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/InstanceTarget
type InstanceTarget struct {
	_ struct{} `type:"structure"`

	// The unique ID of a deployment.
	DeploymentId *string `locationName:"deploymentId" type:"string"`

	// A label that identifies whether the instance is an original target (BLUE)
	// or a replacement target (GREEN).
	InstanceLabel TargetLabel `locationName:"instanceLabel" type:"string" enum:"true"`

	// The date and time when the target instance was updated by a deployment.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" timestampFormat:"unix"`

	// The lifecycle events of the deployment to this target instance.
	LifecycleEvents []LifecycleEvent `locationName:"lifecycleEvents" type:"list"`

	// The status an EC2/On-premises deployment's target instance.
	Status TargetStatus `locationName:"status" type:"string" enum:"true"`

	// The ARN of the target.
	TargetArn *string `locationName:"targetArn" type:"string"`

	// The unique ID of a deployment target that has a type of instanceTarget.
	TargetId *string `locationName:"targetId" type:"string"`
}

// String returns the string representation
func (s InstanceTarget) String() string {
	return awsutil.Prettify(s)
}

// Information about a Lambda function specified in a deployment.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/LambdaFunctionInfo
type LambdaFunctionInfo struct {
	_ struct{} `type:"structure"`

	// The version of a Lambda function that production traffic points to.
	CurrentVersion *string `locationName:"currentVersion" type:"string"`

	// The alias of a Lambda function. For more information, see Introduction to
	// AWS Lambda Aliases (https://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html).
	FunctionAlias *string `locationName:"functionAlias" type:"string"`

	// The name of a Lambda function.
	FunctionName *string `locationName:"functionName" type:"string"`

	// The version of a Lambda function that production traffic points to after
	// the Lambda function is deployed.
	TargetVersion *string `locationName:"targetVersion" type:"string"`

	// The percentage of production traffic that the target version of a Lambda
	// function receives.
	TargetVersionWeight *float64 `locationName:"targetVersionWeight" type:"double"`
}

// String returns the string representation
func (s LambdaFunctionInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about the target AWS Lambda function during an AWS Lambda deployment.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/LambdaTarget
type LambdaTarget struct {
	_ struct{} `type:"structure"`

	// The unique ID of a deployment.
	DeploymentId *string `locationName:"deploymentId" type:"string"`

	// A LambdaFunctionInfo object that describes a target Lambda function.
	LambdaFunctionInfo *LambdaFunctionInfo `locationName:"lambdaFunctionInfo" type:"structure"`

	// The date and time when the target Lambda function was updated by a deployment.
	LastUpdatedAt *time.Time `locationName:"lastUpdatedAt" type:"timestamp" timestampFormat:"unix"`

	// The lifecycle events of the deployment to this target Lambda function.
	LifecycleEvents []LifecycleEvent `locationName:"lifecycleEvents" type:"list"`

	// The status an AWS Lambda deployment's target Lambda function.
	Status TargetStatus `locationName:"status" type:"string" enum:"true"`

	// The ARN of the target.
	TargetArn *string `locationName:"targetArn" type:"string"`

	// The unique ID of a deployment target that has a type of lambdaTarget.
	TargetId *string `locationName:"targetId" type:"string"`
}

// String returns the string representation
func (s LambdaTarget) String() string {
	return awsutil.Prettify(s)
}

// Information about the most recent attempted or successful deployment to a
// deployment group.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/LastDeploymentInfo
type LastDeploymentInfo struct {
	_ struct{} `type:"structure"`

	// A timestamp that indicates when the most recent deployment to the deployment
	// group started.
	CreateTime *time.Time `locationName:"createTime" type:"timestamp" timestampFormat:"unix"`

	// The unique ID of a deployment.
	DeploymentId *string `locationName:"deploymentId" type:"string"`

	// A timestamp that indicates when the most recent deployment to the deployment
	// group was complete.
	EndTime *time.Time `locationName:"endTime" type:"timestamp" timestampFormat:"unix"`

	// The status of the most recent deployment.
	Status DeploymentStatus `locationName:"status" type:"string" enum:"true"`
}

// String returns the string representation
func (s LastDeploymentInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about a deployment lifecycle event.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/LifecycleEvent
type LifecycleEvent struct {
	_ struct{} `type:"structure"`

	// Diagnostic information about the deployment lifecycle event.
	Diagnostics *Diagnostics `locationName:"diagnostics" type:"structure"`

	// A timestamp that indicates when the deployment lifecycle event ended.
	EndTime *time.Time `locationName:"endTime" type:"timestamp" timestampFormat:"unix"`

	// The deployment lifecycle event name, such as ApplicationStop, BeforeInstall,
	// AfterInstall, ApplicationStart, or ValidateService.
	LifecycleEventName *string `locationName:"lifecycleEventName" type:"string"`

	// A timestamp that indicates when the deployment lifecycle event started.
	StartTime *time.Time `locationName:"startTime" type:"timestamp" timestampFormat:"unix"`

	// The deployment lifecycle event status:
	//
	//    * Pending: The deployment lifecycle event is pending.
	//
	//    * InProgress: The deployment lifecycle event is in progress.
	//
	//    * Succeeded: The deployment lifecycle event ran successfully.
	//
	//    * Failed: The deployment lifecycle event has failed.
	//
	//    * Skipped: The deployment lifecycle event has been skipped.
	//
	//    * Unknown: The deployment lifecycle event is unknown.
	Status LifecycleEventStatus `locationName:"status" type:"string" enum:"true"`
}

// String returns the string representation
func (s LifecycleEvent) String() string {
	return awsutil.Prettify(s)
}

// Information about the Elastic Load Balancing load balancer or target group
// used in a deployment.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/LoadBalancerInfo
type LoadBalancerInfo struct {
	_ struct{} `type:"structure"`

	// An array that contains information about the load balancer to use for load
	// balancing in a deployment. In Elastic Load Balancing, load balancers are
	// used with Classic Load Balancers.
	//
	// Adding more than one load balancer to the array is not supported.
	ElbInfoList []ELBInfo `locationName:"elbInfoList" type:"list"`

	// An array that contains information about the target group to use for load
	// balancing in a deployment. In Elastic Load Balancing, target groups are used
	// with Application Load Balancers.
	//
	// Adding more than one target group to the array is not supported.
	TargetGroupInfoList []TargetGroupInfo `locationName:"targetGroupInfoList" type:"list"`

	// The target group pair information. This is an array of TargeGroupPairInfo
	// objects with a maximum size of one.
	TargetGroupPairInfoList []TargetGroupPairInfo `locationName:"targetGroupPairInfoList" type:"list"`
}

// String returns the string representation
func (s LoadBalancerInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about minimum healthy instance.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/MinimumHealthyHosts
type MinimumHealthyHosts struct {
	_ struct{} `type:"structure"`

	// The minimum healthy instance type:
	//
	//    * HOST_COUNT: The minimum number of healthy instance as an absolute value.
	//
	//    * FLEET_PERCENT: The minimum number of healthy instance as a percentage
	//    of the total number of instance in the deployment.
	//
	// In an example of nine instance, if a HOST_COUNT of six is specified, deploy
	// to up to three instances at a time. The deployment is successful if six or
	// more instances are deployed to successfully. Otherwise, the deployment fails.
	// If a FLEET_PERCENT of 40 is specified, deploy to up to five instance at a
	// time. The deployment is successful if four or more instance are deployed
	// to successfully. Otherwise, the deployment fails.
	//
	// In a call to the GetDeploymentConfig, CodeDeployDefault.OneAtATime returns
	// a minimum healthy instance type of MOST_CONCURRENCY and a value of 1. This
	// means a deployment to only one instance at a time. (You cannot set the type
	// to MOST_CONCURRENCY, only to HOST_COUNT or FLEET_PERCENT.) In addition, with
	// CodeDeployDefault.OneAtATime, AWS CodeDeploy attempts to ensure that all
	// instances but one are kept in a healthy state during the deployment. Although
	// this allows one instance at a time to be taken offline for a new deployment,
	// it also means that if the deployment to the last instance fails, the overall
	// deployment is still successful.
	//
	// For more information, see AWS CodeDeploy Instance Health (https://docs.aws.amazon.com/codedeploy/latest/userguide/instances-health.html)
	// in the AWS CodeDeploy User Guide.
	Type MinimumHealthyHostsType `locationName:"type" type:"string" enum:"true"`

	// The minimum healthy instance value.
	Value *int64 `locationName:"value" type:"integer"`
}

// String returns the string representation
func (s MinimumHealthyHosts) String() string {
	return awsutil.Prettify(s)
}

// Information about groups of on-premises instance tags.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/OnPremisesTagSet
type OnPremisesTagSet struct {
	_ struct{} `type:"structure"`

	// A list that contains other lists of on-premises instance tag groups. For
	// an instance to be included in the deployment group, it must be identified
	// by all of the tag groups in the list.
	OnPremisesTagSetList [][]TagFilter `locationName:"onPremisesTagSetList" type:"list"`
}

// String returns the string representation
func (s OnPremisesTagSet) String() string {
	return awsutil.Prettify(s)
}

// A revision for an AWS Lambda deployment that is a YAML-formatted or JSON-formatted
// string. For AWS Lambda deployments, the revision is the same as the AppSpec
// file.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/RawString
type RawString struct {
	_ struct{} `deprecated:"true" type:"structure"`

	// The YAML-formatted or JSON-formatted revision string. It includes information
	// about which Lambda function to update and optional Lambda functions that
	// validate deployment lifecycle events.
	Content *string `locationName:"content" type:"string"`

	// The SHA256 hash value of the revision content.
	Sha256 *string `locationName:"sha256" type:"string"`
}

// String returns the string representation
func (s RawString) String() string {
	return awsutil.Prettify(s)
}

// Information about an application revision.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/RevisionInfo
type RevisionInfo struct {
	_ struct{} `type:"structure"`

	// Information about an application revision, including usage details and associated
	// deployment groups.
	GenericRevisionInfo *GenericRevisionInfo `locationName:"genericRevisionInfo" type:"structure"`

	// Information about the location and type of an application revision.
	RevisionLocation *RevisionLocation `locationName:"revisionLocation" type:"structure"`
}

// String returns the string representation
func (s RevisionInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about the location of an application revision.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/RevisionLocation
type RevisionLocation struct {
	_ struct{} `type:"structure"`

	// The content of an AppSpec file for an AWS Lambda or Amazon ECS deployment.
	// The content is formatted as JSON or YAML and stored as a RawString.
	AppSpecContent *AppSpecContent `locationName:"appSpecContent" type:"structure"`

	// Information about the location of application artifacts stored in GitHub.
	GitHubLocation *GitHubLocation `locationName:"gitHubLocation" type:"structure"`

	// The type of application revision:
	//
	//    * S3: An application revision stored in Amazon S3.
	//
	//    * GitHub: An application revision stored in GitHub (EC2/On-premises deployments
	//    only).
	//
	//    * String: A YAML-formatted or JSON-formatted string (AWS Lambda deployments
	//    only).
	RevisionType RevisionLocationType `locationName:"revisionType" type:"string" enum:"true"`

	// Information about the location of a revision stored in Amazon S3.
	S3Location *S3Location `locationName:"s3Location" type:"structure"`

	// Information about the location of an AWS Lambda deployment revision stored
	// as a RawString.
	String_ *RawString `locationName:"string" deprecated:"true" type:"structure"`
}

// String returns the string representation
func (s RevisionLocation) String() string {
	return awsutil.Prettify(s)
}

// Information about a deployment rollback.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/RollbackInfo
type RollbackInfo struct {
	_ struct{} `type:"structure"`

	// The ID of the deployment rollback.
	RollbackDeploymentId *string `locationName:"rollbackDeploymentId" type:"string"`

	// Information that describes the status of a deployment rollback (for example,
	// whether the deployment can't be rolled back, is in progress, failed, or succeeded).
	RollbackMessage *string `locationName:"rollbackMessage" type:"string"`

	// The deployment ID of the deployment that was underway and triggered a rollback
	// deployment because it failed or was stopped.
	RollbackTriggeringDeploymentId *string `locationName:"rollbackTriggeringDeploymentId" type:"string"`
}

// String returns the string representation
func (s RollbackInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about the location of application artifacts stored in Amazon
// S3.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/S3Location
type S3Location struct {
	_ struct{} `type:"structure"`

	// The name of the Amazon S3 bucket where the application revision is stored.
	Bucket *string `locationName:"bucket" type:"string"`

	// The file type of the application revision. Must be one of the following:
	//
	//    * tar: A tar archive file.
	//
	//    * tgz: A compressed tar archive file.
	//
	//    * zip: A zip archive file.
	BundleType BundleType `locationName:"bundleType" type:"string" enum:"true"`

	// The ETag of the Amazon S3 object that represents the bundled artifacts for
	// the application revision.
	//
	// If the ETag is not specified as an input parameter, ETag validation of the
	// object is skipped.
	ETag *string `locationName:"eTag" type:"string"`

	// The name of the Amazon S3 object that represents the bundled artifacts for
	// the application revision.
	Key *string `locationName:"key" type:"string"`

	// A specific version of the Amazon S3 object that represents the bundled artifacts
	// for the application revision.
	//
	// If the version is not specified, the system uses the most recent version
	// by default.
	Version *string `locationName:"version" type:"string"`
}

// String returns the string representation
func (s S3Location) String() string {
	return awsutil.Prettify(s)
}

// Information about a tag.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/Tag
type Tag struct {
	_ struct{} `type:"structure"`

	// The tag's key.
	Key *string `type:"string"`

	// The tag's value.
	Value *string `type:"string"`
}

// String returns the string representation
func (s Tag) String() string {
	return awsutil.Prettify(s)
}

// Information about an on-premises instance tag filter.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/TagFilter
type TagFilter struct {
	_ struct{} `type:"structure"`

	// The on-premises instance tag filter key.
	Key *string `type:"string"`

	// The on-premises instance tag filter type:
	//
	//    * KEY_ONLY: Key only.
	//
	//    * VALUE_ONLY: Value only.
	//
	//    * KEY_AND_VALUE: Key and value.
	Type TagFilterType `type:"string" enum:"true"`

	// The on-premises instance tag filter value.
	Value *string `type:"string"`
}

// String returns the string representation
func (s TagFilter) String() string {
	return awsutil.Prettify(s)
}

// Information about a target group in Elastic Load Balancing to use in a deployment.
// Instances are registered as targets in a target group, and traffic is routed
// to the target group.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/TargetGroupInfo
type TargetGroupInfo struct {
	_ struct{} `type:"structure"`

	// For blue/green deployments, the name of the target group that instances in
	// the original environment are deregistered from, and instances in the replacement
	// environment are registered with. For in-place deployments, the name of the
	// target group that instances are deregistered from, so they are not serving
	// traffic during a deployment, and then re-registered with after the deployment
	// is complete.
	Name *string `locationName:"name" type:"string"`
}

// String returns the string representation
func (s TargetGroupInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about two target groups and how traffic is routed during an Amazon
// ECS deployment. An optional test traffic route can be specified.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/TargetGroupPairInfo
type TargetGroupPairInfo struct {
	_ struct{} `type:"structure"`

	// The path used by a load balancer to route production traffic when an Amazon
	// ECS deployment is complete.
	ProdTrafficRoute *TrafficRoute `locationName:"prodTrafficRoute" type:"structure"`

	// One pair of target groups. One is associated with the original task set.
	// The second is associated with the task set that serves traffic after the
	// deployment is complete.
	TargetGroups []TargetGroupInfo `locationName:"targetGroups" type:"list"`

	// An optional path used by a load balancer to route test traffic after an Amazon
	// ECS deployment. Validation can occur while test traffic is served during
	// a deployment.
	TestTrafficRoute *TrafficRoute `locationName:"testTrafficRoute" type:"structure"`
}

// String returns the string representation
func (s TargetGroupPairInfo) String() string {
	return awsutil.Prettify(s)
}

// Information about the instances to be used in the replacement environment
// in a blue/green deployment.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/TargetInstances
type TargetInstances struct {
	_ struct{} `type:"structure"`

	// The names of one or more Auto Scaling groups to identify a replacement environment
	// for a blue/green deployment.
	AutoScalingGroups []string `locationName:"autoScalingGroups" type:"list"`

	// Information about the groups of EC2 instance tags that an instance must be
	// identified by in order for it to be included in the replacement environment
	// for a blue/green deployment. Cannot be used in the same call as tagFilters.
	Ec2TagSet *EC2TagSet `locationName:"ec2TagSet" type:"structure"`

	// The tag filter key, type, and value used to identify Amazon EC2 instances
	// in a replacement environment for a blue/green deployment. Cannot be used
	// in the same call as ec2TagSet.
	TagFilters []EC2TagFilter `locationName:"tagFilters" type:"list"`
}

// String returns the string representation
func (s TargetInstances) String() string {
	return awsutil.Prettify(s)
}

// A configuration that shifts traffic from one version of a Lambda function
// to another in two increments. The original and target Lambda function versions
// are specified in the deployment's AppSpec file.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/TimeBasedCanary
type TimeBasedCanary struct {
	_ struct{} `type:"structure"`

	// The number of minutes between the first and second traffic shifts of a TimeBasedCanary
	// deployment.
	CanaryInterval *int64 `locationName:"canaryInterval" type:"integer"`

	// The percentage of traffic to shift in the first increment of a TimeBasedCanary
	// deployment.
	CanaryPercentage *int64 `locationName:"canaryPercentage" type:"integer"`
}

// String returns the string representation
func (s TimeBasedCanary) String() string {
	return awsutil.Prettify(s)
}

// A configuration that shifts traffic from one version of a Lambda function
// to another in equal increments, with an equal number of minutes between each
// increment. The original and target Lambda function versions are specified
// in the deployment's AppSpec file.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/TimeBasedLinear
type TimeBasedLinear struct {
	_ struct{} `type:"structure"`

	// The number of minutes between each incremental traffic shift of a TimeBasedLinear
	// deployment.
	LinearInterval *int64 `locationName:"linearInterval" type:"integer"`

	// The percentage of traffic that is shifted at the start of each increment
	// of a TimeBasedLinear deployment.
	LinearPercentage *int64 `locationName:"linearPercentage" type:"integer"`
}

// String returns the string representation
func (s TimeBasedLinear) String() string {
	return awsutil.Prettify(s)
}

// Information about a time range.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/TimeRange
type TimeRange struct {
	_ struct{} `type:"structure"`

	// The end time of the time range.
	//
	// Specify null to leave the end time open-ended.
	End *time.Time `locationName:"end" type:"timestamp" timestampFormat:"unix"`

	// The start time of the time range.
	//
	// Specify null to leave the start time open-ended.
	Start *time.Time `locationName:"start" type:"timestamp" timestampFormat:"unix"`
}

// String returns the string representation
func (s TimeRange) String() string {
	return awsutil.Prettify(s)
}

// Information about a listener. The listener contains the path used to route
// traffic that is received from the load balancer to a target group.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/TrafficRoute
type TrafficRoute struct {
	_ struct{} `type:"structure"`

	// The ARN of one listener. The listener identifies the route between a target
	// group and a load balancer. This is an array of strings with a maximum size
	// of one.
	ListenerArns []string `locationName:"listenerArns" type:"list"`
}

// String returns the string representation
func (s TrafficRoute) String() string {
	return awsutil.Prettify(s)
}

// The configuration that specifies how traffic is shifted from one version
// of a Lambda function to another version during an AWS Lambda deployment.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/TrafficRoutingConfig
type TrafficRoutingConfig struct {
	_ struct{} `type:"structure"`

	// A configuration that shifts traffic from one version of a Lambda function
	// to another in two increments. The original and target Lambda function versions
	// are specified in the deployment's AppSpec file.
	TimeBasedCanary *TimeBasedCanary `locationName:"timeBasedCanary" type:"structure"`

	// A configuration that shifts traffic from one version of a Lambda function
	// to another in equal increments, with an equal number of minutes between each
	// increment. The original and target Lambda function versions are specified
	// in the deployment's AppSpec file.
	TimeBasedLinear *TimeBasedLinear `locationName:"timeBasedLinear" type:"structure"`

	// The type of traffic shifting (TimeBasedCanary or TimeBasedLinear) used by
	// a deployment configuration .
	Type TrafficRoutingType `locationName:"type" type:"string" enum:"true"`
}

// String returns the string representation
func (s TrafficRoutingConfig) String() string {
	return awsutil.Prettify(s)
}

// Information about notification triggers for the deployment group.
// Please also see https://docs.aws.amazon.com/goto/WebAPI/codedeploy-2014-10-06/TriggerConfig
type TriggerConfig struct {
	_ struct{} `type:"structure"`

	// The event type or types for which notifications are triggered.
	TriggerEvents []TriggerEventType `locationName:"triggerEvents" type:"list"`

	// The name of the notification trigger.
	TriggerName *string `locationName:"triggerName" type:"string"`

	// The ARN of the Amazon Simple Notification Service topic through which notifications
	// about deployment or instance events are sent.
	TriggerTargetArn *string `locationName:"triggerTargetArn" type:"string"`
}

// String returns the string representation
func (s TriggerConfig) String() string {
	return awsutil.Prettify(s)
}
