Skip to content

Commit cf28a72

Browse files
committed
more props for ReplicatedSecret, conditionally use it in EntraIDApplication
1 parent 3813f28 commit cf28a72

4 files changed

Lines changed: 30 additions & 6 deletions

File tree

packages/constructs/entra-id-application/package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
"types": "dist/index.d.ts"
3434
},
3535
"peerDependencies": {
36+
"@reapit-cdk/replicated-key": "^0.0.2",
37+
"@reapit-cdk/replicated-secret": "^0.0.4",
3638
"aws-cdk-lib": "^2.96.2",
3739
"constructs": "^10.2.70"
3840
},
@@ -42,6 +44,8 @@
4244
"@reapit-cdk/eslint-config": "workspace:^",
4345
"@reapit-cdk/integration-tests": "workspace:^",
4446
"@reapit-cdk/jsii": "workspace:^",
47+
"@reapit-cdk/replicated-key": "workspace:^",
48+
"@reapit-cdk/replicated-secret": "workspace:^",
4549
"@reapit-cdk/tsup": "workspace:^",
4650
"@reapit-cdk/version-package": "workspace:^",
4751
"aws-cdk-lib": "^2.96.2",

packages/constructs/entra-id-application/src/entra-id-application.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import * as path from 'path'
77
import { KeyInfo } from './lambdas/entra-app-key'
88
import { ISecret, Secret } from 'aws-cdk-lib/aws-secretsmanager'
99
import { SecretObject } from './lambdas/types'
10+
import { ReplicatedSecret } from '@reapit-cdk/replicated-secret'
11+
import { ReplicatedKey } from '@reapit-cdk/replicated-key'
1012

1113
export interface EntraIDApplicationProps {
1214
config: Application
@@ -18,6 +20,8 @@ export interface CreateKeyProps {
1820
keyInfo: Omit<Omit<KeyInfo, 'endDateTime'>, 'startDateTime'>
1921
validFor: Duration
2022
removalPolicy?: RemovalPolicy
23+
replicatedKey?: ReplicatedKey
24+
replicaRegions?: string[]
2125
}
2226

2327
export class EntraIDApplication extends Construct {
@@ -124,9 +128,17 @@ export class EntraIDApplication extends Construct {
124128
jsonField: 'tenantId',
125129
}),
126130
}
127-
const secret = new Secret(scope, `${id}-secret`, {
128-
secretObjectValue,
129-
})
131+
132+
const secret =
133+
props.replicaRegions && props.replicatedKey
134+
? new ReplicatedSecret(scope, `${id}-secret`, {
135+
secretObjectValue,
136+
replicaRegions: props.replicaRegions,
137+
replicatedKey: props.replicatedKey,
138+
})
139+
: new Secret(scope, `${id}-secret`, {
140+
secretObjectValue,
141+
})
130142

131143
secret.addRotationSchedule(`${id}-secret-rotation`, {
132144
automaticallyAfter: props.validFor.minus(Duration.days(7)),

packages/constructs/replicated-secret/src/replicated-secret.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Arn, ArnFormat, CustomResource, Duration, PhysicalName, Stack, Token } from 'aws-cdk-lib'
2-
import { ISecret, Secret } from 'aws-cdk-lib/aws-secretsmanager'
2+
import { ISecret, Secret, SecretProps } from 'aws-cdk-lib/aws-secretsmanager'
33
import { Construct, IDependable } from 'constructs'
44
import { ReplicatedKey } from '@reapit-cdk/replicated-key'
55
import { Grant, IGrantable, PolicyStatement } from 'aws-cdk-lib/aws-iam'
@@ -10,6 +10,8 @@ import * as path from 'path'
1010
export interface MultiRegionSecretProps {
1111
replicatedKey: ReplicatedKey
1212
replicaRegions: string[]
13+
secretObjectValue?: SecretProps['secretObjectValue']
14+
secretStringValue?: SecretProps['secretStringValue']
1315
}
1416

1517
const secretArnToNameWithSuffix = (secret: ISecret) => {
@@ -65,6 +67,8 @@ export class ReplicatedSecret extends Secret {
6567
encryptionKey,
6668
}
6769
}),
70+
secretObjectValue: props.secretObjectValue,
71+
secretStringValue: props.secretStringValue,
6872
})
6973

7074
this.masterRegion = stackRegion

yarn.lock

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3007,6 +3007,8 @@ __metadata:
30073007
"@reapit-cdk/eslint-config": "workspace:^"
30083008
"@reapit-cdk/integration-tests": "workspace:^"
30093009
"@reapit-cdk/jsii": "workspace:^"
3010+
"@reapit-cdk/replicated-key": "workspace:^"
3011+
"@reapit-cdk/replicated-secret": "workspace:^"
30103012
"@reapit-cdk/tsup": "workspace:^"
30113013
"@reapit-cdk/version-package": "workspace:^"
30123014
aws-cdk-lib: "npm:^2.96.2"
@@ -3016,6 +3018,8 @@ __metadata:
30163018
constructs: "npm:^10.2.70"
30173019
ts-node: "npm:^10.9.1"
30183020
peerDependencies:
3021+
"@reapit-cdk/replicated-key": ^0.0.2
3022+
"@reapit-cdk/replicated-secret": ^0.0.4
30193023
aws-cdk-lib: ^2.96.2
30203024
constructs: ^10.2.70
30213025
languageName: unknown
@@ -3077,7 +3081,7 @@ __metadata:
30773081
languageName: unknown
30783082
linkType: soft
30793083

3080-
"@reapit-cdk/replicated-key@workspace:packages/constructs/replicated-key":
3084+
"@reapit-cdk/replicated-key@workspace:^, @reapit-cdk/replicated-key@workspace:packages/constructs/replicated-key":
30813085
version: 0.0.0-use.local
30823086
resolution: "@reapit-cdk/replicated-key@workspace:packages/constructs/replicated-key"
30833087
dependencies:
@@ -3098,7 +3102,7 @@ __metadata:
30983102
languageName: unknown
30993103
linkType: soft
31003104

3101-
"@reapit-cdk/replicated-secret@workspace:packages/constructs/replicated-secret":
3105+
"@reapit-cdk/replicated-secret@workspace:^, @reapit-cdk/replicated-secret@workspace:packages/constructs/replicated-secret":
31023106
version: 0.0.0-use.local
31033107
resolution: "@reapit-cdk/replicated-secret@workspace:packages/constructs/replicated-secret"
31043108
dependencies:

0 commit comments

Comments
 (0)