Skip to content

Commit

Permalink
moved SSM parameter feature to a new module
Browse files Browse the repository at this point in the history
  • Loading branch information
wolfadr committed Jun 7, 2021
1 parent 95a024d commit 9fb91c7
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 25 deletions.
21 changes: 21 additions & 0 deletions API.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ Name|Description
[BuildSpecPipeline](#tts-cdk-build-pipelines-buildspecpipeline)|*No description*
[CodeArtifactFeature](#tts-cdk-build-pipelines-codeartifactfeature)|*No description*
[CustomExtensionPipeline](#tts-cdk-build-pipelines-customextensionpipeline)|*No description*
[SSMParametersFeature](#tts-cdk-build-pipelines-ssmparametersfeature)|*No description*


**Structs**
Expand Down Expand Up @@ -167,6 +168,26 @@ __Returns__:



## class SSMParametersFeature <a id="tts-cdk-build-pipelines-ssmparametersfeature"></a>



__Extends__: [BuildProjectFeature](#tts-cdk-build-pipelines-buildprojectfeature)

### Initializer




```ts
new SSMParametersFeature(pipeline: BuildSpecPipeline)
```

* **pipeline** (<code>[BuildSpecPipeline](#tts-cdk-build-pipelines-buildspecpipeline)</code>) *No description*




## struct BuildSpecPipelineProps <a id="tts-cdk-build-pipelines-buildspecpipelineprops"></a>


Expand Down
1 change: 0 additions & 1 deletion buildspec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,4 @@ phases:
post_build:
commands:
- projen bump
- echo $NPM_REGISTRY
- jsii-release-npm
26 changes: 2 additions & 24 deletions src/BuildSpecPipeline.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@ import { BuildEnvironment, BuildSpec, LinuxBuildImage, PipelineProject } from '@
import { Repository, RepositoryProps } from '@aws-cdk/aws-codecommit';
import { Artifact, Pipeline } from '@aws-cdk/aws-codepipeline';
import { CodeBuildAction, CodeCommitSourceAction, CodeCommitTrigger } from '@aws-cdk/aws-codepipeline-actions';
import { Effect, PolicyStatement } from '@aws-cdk/aws-iam';
import { Construct, Duration, RemovalPolicy, Stack } from '@aws-cdk/core';
import { Construct, Duration, RemovalPolicy } from '@aws-cdk/core';
import * as YAML from 'yaml';
import { CodeArtifactFeature } from './features/codeArtifact';
import { BuildProjectFeature } from './features/core';
import { SSMParametersFeature } from './features/ssm';

// type dict = { [key: string]: any };
type dict = Record<string, any>;

/**
Expand Down Expand Up @@ -38,27 +37,6 @@ const buildSpecPipelinePropsDefaults: BuildSpecPipelineProps = {
branch: 'master',
};

class SSMParametersFeature extends BuildProjectFeature {

constructor(pipeline: BuildSpecPipeline) {

super();

const region = Stack.of(pipeline).region;
const account = Stack.of(pipeline).account;

const parameters: Array<string> = Object.values(pipeline.buildSpec.env?.['parameter-store'] ?? []);

if (parameters.length > 0) {
this.policyStatements.push(new PolicyStatement({
effect: Effect.ALLOW,
actions: ['ssm:GetParameters', 'ssm:GetParameter'],
resources: parameters.map((param: string) => `arn:aws:ssm:${region}:${account}:parameter${param}`),
}));
}
}
}

/**
* @summary Constructs a CodePipeline and reads build specs from '.buildspec' file.
* @param {Construct} scope - scope for all resources created by this construct
Expand Down
25 changes: 25 additions & 0 deletions src/features/ssm.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { Effect, PolicyStatement } from '@aws-cdk/aws-iam';
import { Stack } from '@aws-cdk/core';
import { BuildSpecPipeline } from '../BuildSpecPipeline';
import { BuildProjectFeature } from './core';

export class SSMParametersFeature extends BuildProjectFeature {

constructor(pipeline: BuildSpecPipeline) {

super();

const region = Stack.of(pipeline).region;
const account = Stack.of(pipeline).account;

const parameters: Array<string> = Object.values(pipeline.buildSpec.env?.['parameter-store'] ?? []);

if (parameters.length > 0) {
this.policyStatements.push(new PolicyStatement({
effect: Effect.ALLOW,
actions: ['ssm:GetParameters', 'ssm:GetParameter'],
resources: parameters.map((param: string) => `arn:aws:ssm:${region}:${account}:parameter${param}`),
}));
}
}
}
1 change: 1 addition & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ export * from './CustomExtensionPipeline';
export { CodeArtifactFeature } from './features/codeArtifact';
export { CodeArtifactFeatureProps } from './features/codeArtifact';
export { BuildProjectFeature } from './features/core';
export { SSMParametersFeature } from './features/ssm';

0 comments on commit 9fb91c7

Please sign in to comment.