diff --git a/packages/@aws-cdk/aws-ssm/README.md b/packages/@aws-cdk/aws-ssm/README.md index 6093390a15faf..f88685084a592 100644 --- a/packages/@aws-cdk/aws-ssm/README.md +++ b/packages/@aws-cdk/aws-ssm/README.md @@ -39,6 +39,16 @@ a CDK app. These are public (not secret) values. Parameters of type to provision secrets automatically, use Secrets Manager Secrets (see the `@aws-cdk/aws-secretsmanager` package). +```ts +new ssm.StringParameter(stack, 'Parameter', { + allowedPattern: '.*', + description: 'The value Foo', + parameterName: 'FooParameter', + stringValue: 'Foo', + tier: ssm.ParameterTier.ADVANCED, +}); +``` + [creating SSM parameters](test/integ.parameter.lit.ts) When specifying an `allowedPattern`, the values provided as string literals diff --git a/packages/@aws-cdk/aws-ssm/lib/parameter.ts b/packages/@aws-cdk/aws-ssm/lib/parameter.ts index e45121d9d1574..46320aa3dd299 100644 --- a/packages/@aws-cdk/aws-ssm/lib/parameter.ts +++ b/packages/@aws-cdk/aws-ssm/lib/parameter.ts @@ -111,6 +111,13 @@ export interface ParameterOptions { * @default - auto-detect based on `parameterName` */ readonly simpleName?: boolean; + + /** + * The tier of the string parameter + * + * @default - undefined + */ + readonly tier?: ParameterTier; } /** @@ -206,6 +213,24 @@ export enum ParameterType { AWS_EC2_IMAGE_ID = 'AWS::EC2::Image::Id', } +/** + * SSM parameter tier + */ +export enum ParameterTier { + /** + * String + */ + ADVANCED = 'Advanced', + /** + * String + */ + INTELLIGENT_TIERING = 'Intelligent-Tiering', + /** + * String + */ + STANDARD = 'Standard', +} + /** * Common attributes for string parameters. */ @@ -271,6 +296,7 @@ export interface SecureStringParameterAttributes extends CommonStringParameterAt * @default - default master key */ readonly encryptionKey?: kms.IKey; + } /** @@ -404,6 +430,7 @@ export class StringParameter extends ParameterBase implements IStringParameter { allowedPattern: props.allowedPattern, description: props.description, name: this.physicalName, + tier: props.tier, type: props.type || ParameterType.STRING, value: props.stringValue, }); @@ -462,6 +489,7 @@ export class StringListParameter extends ParameterBase implements IStringListPar allowedPattern: props.allowedPattern, description: props.description, name: this.physicalName, + tier: props.tier, type: ParameterType.STRING_LIST, value: props.stringListValue.join(','), }); diff --git a/packages/@aws-cdk/aws-ssm/test/test.parameter.ts b/packages/@aws-cdk/aws-ssm/test/test.parameter.ts index f9184f79085f1..57574d9399d9b 100644 --- a/packages/@aws-cdk/aws-ssm/test/test.parameter.ts +++ b/packages/@aws-cdk/aws-ssm/test/test.parameter.ts @@ -31,6 +31,26 @@ export = { test.done(); }, + 'expect String SSM Parameter to have tier properly set'(test: Test) { + // GIVEN + const stack = new cdk.Stack(); + + // WHEN + new ssm.StringParameter(stack, 'Parameter', { + allowedPattern: '.*', + description: 'The value Foo', + parameterName: 'FooParameter', + stringValue: 'Foo', + tier: ssm.ParameterTier.ADVANCED, + }); + + // THEN + expect(stack).to(haveResource('AWS::SSM::Parameter', { + Tier: 'Advanced', + })); + test.done(); + }, + 'String SSM Parameter rejects invalid values'(test: Test) { // GIVEN const stack = new cdk.Stack();