# CodeDeployEcsDeployActionProps

Construction properties of the `CodeDeployEcsDeployAction CodeDeploy ECS deploy CodePipeline Action`.

Extends: CodeDeployEcsDeployActionProps
Extends: CommonAwsActionProps
Used as props by: CodeDeployEcsDeployAction

- Source: [`aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts`](https://github.com/aws/aws-cdk/blob/v2.275.0/packages/aws-cdk-lib/aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts#L41)

## Example

```ts
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import { aws_codedeploy as codedeploy } from 'aws-cdk-lib';
import { aws_codepipeline as codepipeline } from 'aws-cdk-lib';
import { aws_codepipeline_actions as codepipeline_actions } from 'aws-cdk-lib';
import { aws_iam as iam } from 'aws-cdk-lib';

declare const artifact: codepipeline.Artifact;
declare const artifactPath: codepipeline.ArtifactPath;
declare const ecsDeploymentGroup: codedeploy.EcsDeploymentGroup;
declare const role: iam.Role;
const codeDeployEcsDeployActionProps: codepipeline_actions.CodeDeployEcsDeployActionProps = {
  actionName: 'actionName',
  deploymentGroup: ecsDeploymentGroup,

  // the properties below are optional
  appSpecTemplateFile: artifactPath,
  appSpecTemplateInput: artifact,
  containerImageInputs: [{
    input: artifact,

    // the properties below are optional
    taskDefinitionPlaceholder: 'taskDefinitionPlaceholder',
  }],
  role: role,
  runOrder: 123,
  taskDefinitionTemplateFile: artifactPath,
  taskDefinitionTemplateInput: artifact,
  variablesNamespace: 'variablesNamespace',
};
```

## Properties

- `actionName`: string (required) — The physical, human-readable name of the Action.

  Note that Action names must be unique within a single Stage.

- `appSpecTemplateFile`: [ArtifactPath](/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline.ArtifactPath.html) — The name of the CodeDeploy AppSpec file.

  **Default:** one of this property, or `appSpecTemplateInput`, is required

  During deployment, a new task definition will be registered
  with ECS, and the new task definition ID will be inserted into
  the CodeDeploy AppSpec file.  The AppSpec file contents will be
  provided to CodeDeploy for the deployment.

  Use this property if you want to use a different name for this file than the default 'appspec.yaml'.
  If you use this property, you don't need to specify the `appSpecTemplateInput` property.

- `appSpecTemplateInput`: [Artifact](/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline.Artifact.html) — The artifact containing the CodeDeploy AppSpec file.

  **Default:** one of this property, or `appSpecTemplateFile`, is required

  During deployment, a new task definition will be registered
  with ECS, and the new task definition ID will be inserted into
  the CodeDeploy AppSpec file.  The AppSpec file contents will be
  provided to CodeDeploy for the deployment.

  If you use this property, it's assumed the file is called 'appspec.yaml'.
  If your AppSpec file uses a different filename, leave this property empty,
  and use the `appSpecTemplateFile` property instead.

- `containerImageInputs`: [CodeDeployEcsContainerImageInput](/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline_actions.CodeDeployEcsContainerImageInput.html)[] — Configuration for dynamically updated images in the task definition.

  Provide pairs of an image details input artifact and a placeholder string
  that will be used to dynamically update the ECS task definition template
  file prior to deployment. A maximum of 4 images can be given.

- `deploymentGroup`: [IEcsDeploymentGroup](/cdk/api/v2/docs/aws-cdk-lib.aws_codedeploy.IEcsDeploymentGroup.html) (required) — The CodeDeploy ECS Deployment Group to deploy to.

- `role`: [IRole](/cdk/api/v2/docs/aws-cdk-lib.aws_iam.IRole.html) — The Role in which context's this Action will be executing in.

  **Default:** a new Role will be generated

  The Pipeline's Role will assume this Role
  (the required permissions for that will be granted automatically)
  right before executing this Action.
  This Action will be passed into your `IAction.bind`
  method in the `ActionBindOptions.role` property.

- `runOrder`: number = 1 — The runOrder property for this Action.

  RunOrder determines the relative order in which multiple Actions in the same Stage execute.

- `taskDefinitionTemplateFile`: [ArtifactPath](/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline.ArtifactPath.html) — The name of the ECS task definition template file.

  **Default:** one of this property, or `taskDefinitionTemplateInput`, is required

  During deployment, the task definition template file contents
  will be registered with ECS.

  Use this property if you want to use a different name for this file than the default 'taskdef.json'.
  If you use this property, you don't need to specify the `taskDefinitionTemplateInput` property.

- `taskDefinitionTemplateInput`: [Artifact](/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline.Artifact.html) — The artifact containing the ECS task definition template file.

  **Default:** one of this property, or `taskDefinitionTemplateFile`, is required

  During deployment, the task definition template file contents
  will be registered with ECS.

  If you use this property, it's assumed the file is called 'taskdef.json'.
  If your task definition template uses a different filename, leave this property empty,
  and use the `taskDefinitionTemplateFile` property instead.

- `variablesNamespace`: string — The name of the namespace to use for variables emitted by this action.

  **Default:** a name will be generated, based on the stage and action names, if any of the action's variables were referenced - otherwise, no namespace will be set
