aws / aws/aws-cdk

(@aws-cdk/aws-codepipeline-actions): No AppConfigDeployAction available

Open
#23,598 4 comments 2 reactions 0 assignees View on GitHub
@aws-cdk/aws-codepipeline-actions effort/medium feature-request p3
Dominant language
TypeScript
Stars
12.9k
Forks
4.6k
Avg merge
2d 3h
Merged PRs (30d)
83

Description

### Describe the feature

For CodePipeline there is no AppConfig deployment action available.

### Use Case

We have pipelines that are solely deploying appConfig, json parameters.
(SSM parameters are not yet supported, we validated this by contacting internal teams through a support case).

### Proposed Solution

Simplified construct, perhaps prefixing it with Cfn like all other AppConfig resources.
The pipeline role will also need a policy allowing appConfig actions.
```
import * as codepipeline from "@aws-cdk/aws-codepipeline";
import { Construct } from "constructs";
import { Action } from "../action";
import { deployArtifactBounds } from "../common";

export interface AppConfigDeployActionProps extends codepipeline.CommonAwsActionProps {
readonly actionName: string;
readonly inputs: codepipeline.Artifact[]

readonly applicationId: string
readonly environmentId: string
readonly configurationProfileId: string
readonly deploymentStrategyId: string
readonly inputArtifactConfigurationPath: string
}

class AppConfigDeployAction extends Action {
protected readonly providedActionProperties: AppConfigDeployActionProps

constructor(providedActionProperties: AppConfigDeployActionProps) {
super({
...providedActionProperties,
category: codepipeline.ActionCategory.DEPLOY,
provider: 'AppConfig',
artifactBounds: deployArtifactBounds(),
});

this.providedActionProperties = providedActionProperties;
}

protected bound(scope: Construct, _stage: codepipeline.IStage, _options: codepipeline.ActionBindOptions): codepipeline.ActionConfig {
return {
configuration: {
Application: this.providedActionProperties.applicationId,
Environment: this.providedActionProperties.environmentId,
ConfigurationProfile: this.providedActionProperties.configurationProfileId,
DeploymentStrategy: this.providedActionProperties.deploymentStrategyId,
InputArtifactConfigurationPath: this.providedActionProperties.inputArtifactConfigurationPath,
},
};
}

}
```

### Other Information

We wanted to port [this example piece of Kotlin](https://github.com/aws-samples/aws-appconfig-codepipeline-cdk/blob/main/infrastructure/src/main/kotlin/com/app/config/AppConfigCiCdStack.kt) code to ts, but it was not a 1-on-1 mapping.

AppConfig is still prefixed with Cfn, thus no priority is given towards this service. However it is rather a small request and may be useful for others as well.

### Acknowledgements

- [X] I may be able to implement this feature request
- [ ] This feature might incur a breaking change

### CDK version used

2.59.0

### Environment details (OS name and version, etc.)

/

Contributor guide

Open the contributing guide

Research direction

Start in the @aws-cdk/aws-codepipeline-actions package and compare the proposed AppConfigDeployAction with existing deployment actions. Verify the action configuration and pipeline role permissions against the linked AppConfig CodePipeline example; done means a TypeScript construct can deploy an AppConfig configuration artifact through CodePipeline.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, typescript
Domain
cloud
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.