|
1 |
| -import { Stack, RemovalPolicy, CustomResource, Duration } from 'aws-cdk-lib'; |
2 |
| -import { PhysicalResourceId, Provider } from 'aws-cdk-lib/custom-resources'; |
3 |
| -import { RetentionDays } from 'aws-cdk-lib/aws-logs'; |
4 |
| -import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs'; |
5 |
| -import { Runtime } from 'aws-cdk-lib/aws-lambda'; |
6 |
| -import { PolicyStatement } from 'aws-cdk-lib/aws-iam'; |
| 1 | +import { Stack, RemovalPolicy } from 'aws-cdk-lib'; |
| 2 | +import { PhysicalResourceId } from 'aws-cdk-lib/custom-resources'; |
7 | 3 | import { StringParameter, IStringParameter } from 'aws-cdk-lib/aws-ssm';
|
8 | 4 | import { Table, TableProps, BillingMode } from 'aws-cdk-lib/aws-dynamodb';
|
9 | 5 | import {
|
@@ -138,70 +134,43 @@ const createAppConfigConfigurationProfile = (options: CreateAppConfigConfigurati
|
138 | 134 | });
|
139 | 135 | };
|
140 | 136 |
|
141 |
| -export type CreateSecureStringProviderOptions = { |
142 |
| - stack: Stack |
143 |
| - parametersPrefix: string |
144 |
| -}; |
145 |
| - |
146 |
| -const createSecureStringProvider = (options: CreateSecureStringProviderOptions): Provider => { |
147 |
| - const { stack, parametersPrefix } = options; |
148 |
| - |
149 |
| - const ssmSecureStringHandlerFn = new NodejsFunction( |
150 |
| - stack, |
151 |
| - 'ssm-securestring-handler', |
152 |
| - { |
153 |
| - entry: 'tests/helpers/ssmSecureStringCdk.ts', |
154 |
| - handler: 'handler', |
155 |
| - bundling: { |
156 |
| - minify: true, |
157 |
| - sourceMap: true, |
158 |
| - target: 'es2020', |
159 |
| - externalModules: [], |
160 |
| - }, |
161 |
| - runtime: Runtime.NODEJS_18_X, |
162 |
| - timeout: Duration.seconds(15), |
163 |
| - }); |
164 |
| - ssmSecureStringHandlerFn.addToRolePolicy( |
165 |
| - new PolicyStatement({ |
166 |
| - actions: [ |
167 |
| - 'ssm:PutParameter', |
168 |
| - 'ssm:DeleteParameter', |
169 |
| - ], |
170 |
| - resources: [ |
171 |
| - `arn:aws:ssm:${stack.region}:${stack.account}:parameter/${parametersPrefix}*`, |
172 |
| - ], |
173 |
| - }), |
174 |
| - ); |
175 |
| - |
176 |
| - return new Provider(stack, 'ssm-secure-string-provider', { |
177 |
| - onEventHandler: ssmSecureStringHandlerFn, |
178 |
| - logRetention: RetentionDays.ONE_DAY, |
179 |
| - }); |
180 |
| -}; |
181 |
| - |
182 | 137 | export type CreateSSMSecureStringOptions = {
|
183 | 138 | stack: Stack
|
184 |
| - provider: Provider |
185 | 139 | id: string
|
186 | 140 | name: string
|
187 | 141 | value: string
|
188 | 142 | };
|
189 | 143 |
|
190 | 144 | const createSSMSecureString = (options: CreateSSMSecureStringOptions): IStringParameter => {
|
191 |
| - const { stack, provider, id, name, value } = options; |
| 145 | + const { stack, id, name, value } = options; |
192 | 146 |
|
193 |
| - new CustomResource(stack, `custom-${id}`, { |
194 |
| - serviceToken: provider.serviceToken, |
195 |
| - properties: { |
196 |
| - Name: name, |
197 |
| - Value: value, |
| 147 | + const paramCreator = new AwsCustomResource(stack, `create-${id}`, { |
| 148 | + onCreate: { |
| 149 | + service: 'SSM', |
| 150 | + action: 'putParameter', |
| 151 | + parameters: { |
| 152 | + Name: name, |
| 153 | + Value: value, |
| 154 | + Type: 'SecureString', |
| 155 | + }, |
| 156 | + physicalResourceId: PhysicalResourceId.of(id), |
198 | 157 | },
|
| 158 | + onDelete: { |
| 159 | + service: 'SSM', |
| 160 | + action: 'deleteParameter', |
| 161 | + parameters: { |
| 162 | + Name: name, |
| 163 | + }, |
| 164 | + }, |
| 165 | + policy: AwsCustomResourcePolicy.fromSdkCalls({ |
| 166 | + resources: AwsCustomResourcePolicy.ANY_RESOURCE, |
| 167 | + }), |
199 | 168 | });
|
200 | 169 |
|
201 | 170 | const param = StringParameter.fromSecureStringParameterAttributes(stack, id, {
|
202 | 171 | parameterName: name,
|
203 | 172 | });
|
204 |
| - param.node.addDependency(provider); |
| 173 | + param.node.addDependency(paramCreator); |
205 | 174 |
|
206 | 175 | return param;
|
207 | 176 | };
|
@@ -237,6 +206,5 @@ export {
|
237 | 206 | createBaseAppConfigResources,
|
238 | 207 | createAppConfigConfigurationProfile,
|
239 | 208 | createSSMSecureString,
|
240 |
| - createSecureStringProvider, |
241 | 209 | putDynamoDBItem,
|
242 | 210 | };
|
0 commit comments