# IAction

A Pipeline Action.

If you want to implement this interface,
consider extending the `Action` class,
which contains some common logic.

Extends: IAction
Implemented by: Action, Action, AlexaSkillDeployAction, CloudFormationCreateReplaceChangeSetAction, CloudFormationCreateUpdateStackAction, CloudFormationDeleteStackAction, CloudFormationDeployStackInstancesAction, CloudFormationDeployStackSetAction, CloudFormationExecuteChangeSetAction, CodeBuildAction, CodeCommitSourceAction, CodeDeployEcsDeployAction, CodeDeployServerDeployAction, CodeStarConnectionsSourceAction, CommandsAction, Ec2DeployAction, EcrBuildAndPublishAction, EcrSourceAction, EcsDeployAction, ElasticBeanstalkDeployAction, GitHubSourceAction, InspectorEcrImageScanAction, InspectorScanActionBase, InspectorSourceCodeScanAction, JenkinsAction, LambdaInvokeAction, ManualApprovalAction, PipelineInvokeAction, S3DeployAction, S3SourceAction, ServiceCatalogDeployActionBeta1, StepFunctionInvokeAction

- Source: [`aws-codepipeline/lib/action.ts`](https://github.com/aws/aws-cdk/blob/v2.274.0/packages/aws-cdk-lib/aws-codepipeline/lib/action.ts#L170)

## Properties

- `actionProperties`: [ActionProperties](/cdk/api/v2/docs/aws-cdk-lib.aws_codepipeline.ActionProperties.html) (required) — The simple properties of the Action, like its Owner, name, etc.

  Note that this accessor will be called before the `bind` callback.

## Methods

- `bind(scope: Construct, stage: IStage, options: ActionBindOptions): ActionConfig` — The callback invoked when this Action is added to a Pipeline.

  **Parameters**

  - `scope` — the Construct tree scope the Action can use if it needs to create any resources.
  - `stage` — the `IStage` this Action is being added to.
  - `options` — additional options the Action can use, like the artifact Bucket of the pipeline it's being added to.

- `onStateChange(name: string, target?: IRuleTarget, options?: RuleProps): Rule` — Creates an Event that will be triggered whenever the state of this Action changes.

  **Parameters**

  - `name` — the name to use for the new Event.
  - `target` — the optional target for the Event.
  - `options` — additional options that can be used to customize the created Event.
