# CloudFormationCreateUpdateStackActionProps

Properties for the CloudFormationCreateUpdateStackAction.

Extends: CloudFormationCreateUpdateStackActionProps
Extends: CommonAwsActionProps
Used as props by: CloudFormationCreateUpdateStackAction

- Source: [`aws-codepipeline-actions/lib/cloudformation/pipeline-actions.ts`](https://github.com/aws/aws-cdk/blob/v2.275.0/packages/aws-cdk-lib/aws-codepipeline-actions/lib/cloudformation/pipeline-actions.ts#L412)

## Example

```ts
import { PhysicalName } from 'aws-cdk-lib';

// in stack for account 123456789012...
declare const otherAccountStack: Stack;
const actionRole = new iam.Role(otherAccountStack, 'ActionRole', {
  assumedBy: new iam.AccountPrincipal('123456789012'),
  // the role has to have a physical name set
  roleName: PhysicalName.GENERATE_IF_NEEDED,
});

// in the pipeline stack...
const sourceOutput = new codepipeline.Artifact();
new codepipeline_actions.CloudFormationCreateUpdateStackAction({
  actionName: 'CloudFormationCreateUpdate',
  stackName: 'MyStackName',
  adminPermissions: true,
  templatePath: sourceOutput.atPath('template.yaml'),
  role: actionRole, // this action will be cross-account as well
});
```

## Properties

- `account`: string — The AWS account this Action is supposed to operate in.

  **Default:** action resides in the same account as the pipeline

  **Note**: if you specify the `role` property,
  this is ignored - the action will operate in the same region the passed role does.

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

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

- `adminPermissions`: boolean (required) — Whether to grant full permissions to CloudFormation while deploying this template.

  Setting this to `true` affects the defaults for `role` and `capabilities`, if you
  don't specify any alternatives.

  The default role that will be created for you will have full (i.e., `*`)
  permissions on all resources, and the deployment will have named IAM
  capabilities (i.e., able to create all IAM resources).

  This is a shorthand that you can use if you fully trust the templates that
  are deployed in this pipeline. If you want more fine-grained permissions,
  use `addToRolePolicy` and `capabilities` to control what the CloudFormation
  deployment is allowed to do.

- `cfnCapabilities`: [CfnCapabilities](/cdk/api/v2/docs/aws-cdk-lib.CfnCapabilities.html)[] — Acknowledge certain changes made as part of deployment.

  **Default:** None, unless `adminPermissions` is true

  For stacks that contain certain resources,
  explicit acknowledgement is required that AWS CloudFormation might create or update those resources.
  For example, you must specify `ANONYMOUS_IAM` or `NAMED_IAM` if your stack template contains AWS
  Identity and Access Management (IAM) resources.
  For more information, see the link below.

- `deploymentRole`: [IRole](/cdk/api/v2/docs/aws-cdk-lib.aws_iam.IRole.html) — IAM role to assume when deploying changes.

  **Default:** A fresh role with full or no permissions (depending on the value of `adminPermissions`).

  If not specified, a fresh role is created. The role is created with zero
  permissions unless `adminPermissions` is true, in which case the role will have
  full permissions.

- `extraInputs`: [Artifact](/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline.Artifact.html)[] — The list of additional input Artifacts for this Action.

  This is especially useful when used in conjunction with the `parameterOverrides` property.
  For example, if you have:

    parameterOverrides: {
      'Param1': action1.outputArtifact.bucketName,
      'Param2': action2.outputArtifact.objectKey,
    }

  , if the output Artifacts of `action1` and `action2` were not used to
  set either the `templateConfiguration` or the `templatePath` properties,
  you need to make sure to include them in the `extraInputs` -
  otherwise, you'll get an "unrecognized Artifact" error during your Pipeline's execution.

- `output`: [Artifact](/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline.Artifact.html) — The name of the output artifact to generate.

  **Default:** Automatically generated artifact name.

  Only applied if `outputFileName` is set as well.

- `outputFileName`: string — A name for the filename in the output artifact to store the AWS CloudFormation call's result.

  **Default:** No output artifact generated

  The file will contain the result of the call to AWS CloudFormation (for example
  the call to UpdateStack or CreateChangeSet).

  AWS CodePipeline adds the file to the output artifact after performing
  the specified action.

- `parameterOverrides`: { [key: string]: any } — Additional template parameters.

  **Default:** No overrides

  Template parameters specified here take precedence over template parameters
  found in the artifact specified by the `templateConfiguration` property.

  We recommend that you use the template configuration file to specify
  most of your parameter values. Use parameter overrides to specify only
  dynamic parameter values (values that are unknown until you run the
  pipeline).

  All parameter names must be present in the stack template.

  Note: the entire object cannot be more than 1kB.

- `region`: string — The AWS region the given Action resides in.

  **Default:** the Action resides in the same region as the Pipeline

  Note that a cross-region Pipeline requires replication buckets to function correctly.
  You can provide their names with the `PipelineProps#crossRegionReplicationBuckets` property.
  If you don't, the CodePipeline Construct will create new Stacks in your CDK app containing those buckets,
  that you will need to `cdk deploy` before deploying the main, Pipeline-containing Stack.

- `replaceOnFailure`: boolean = false — Replace the stack if it's in a failed state.

  If this is set to true and the stack is in a failed state (one of
  ROLLBACK_COMPLETE, ROLLBACK_FAILED, CREATE_FAILED, DELETE_FAILED, or
  UPDATE_ROLLBACK_FAILED), AWS CloudFormation deletes the stack and then
  creates a new stack.

  If this is not set to true and the stack is in a failed state,
  the deployment fails.

- `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.

- `stackName`: string (required) — The name of the stack to apply this action to.

- `templateConfiguration`: [ArtifactPath](/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline.ArtifactPath.html) — Input artifact to use for template parameters values and stack policy.

  **Default:** No template configuration based on input artifacts

  The template configuration file should contain a JSON object that should look like this:
  `{ "Parameters": {...}, "Tags": {...}, "StackPolicy": {... }}`. For more information,
  see [AWS CloudFormation Artifacts](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/continuous-delivery-codepipeline-cfn-artifacts.html).

  Note that if you include sensitive information, such as passwords, restrict access to this
  file.

- `templatePath`: [ArtifactPath](/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline.ArtifactPath.html) (required) — Input artifact with the CloudFormation template to deploy.

- `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
