@venturekit/infra 0.0.29 → 0.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdk/app-stack.d.ts +26 -1
- package/dist/cdk/app-stack.d.ts.map +1 -1
- package/dist/cdk/app-stack.js +62 -3
- package/dist/cdk/app-stack.js.map +1 -1
- package/dist/cdk/identity-stack.d.ts +34 -4
- package/dist/cdk/identity-stack.d.ts.map +1 -1
- package/dist/cdk/identity-stack.js +133 -5
- package/dist/cdk/identity-stack.js.map +1 -1
- package/dist/cdk/messaging-stack.d.ts +15 -1
- package/dist/cdk/messaging-stack.d.ts.map +1 -1
- package/dist/cdk/messaging-stack.js +72 -1
- package/dist/cdk/messaging-stack.js.map +1 -1
- package/dist/cdk/shared/custom-sender.d.ts +60 -0
- package/dist/cdk/shared/custom-sender.d.ts.map +1 -0
- package/dist/cdk/shared/custom-sender.js +114 -0
- package/dist/cdk/shared/custom-sender.js.map +1 -0
- package/dist/cdk/shared/ssm-keys.d.ts +50 -0
- package/dist/cdk/shared/ssm-keys.d.ts.map +1 -1
- package/dist/cdk/shared/ssm-keys.js +25 -0
- package/dist/cdk/shared/ssm-keys.js.map +1 -1
- package/package.json +3 -3
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
* - Federated provider Secrets Manager placeholder(s) holding
|
|
9
9
|
* `{clientId, clientSecret}` for Google / Apple / Meta /
|
|
10
10
|
* other OAuth providers declared in `auth.federated[]`
|
|
11
|
+
* - Custom-sender KMS key + the pool's `LambdaConfig`
|
|
12
|
+
* (`CustomEmailSender` / `CustomSMSSender` / `KMSKeyID`) when
|
|
13
|
+
* `auth.customSender` points at a standalone function
|
|
11
14
|
*
|
|
12
15
|
* # Lifecycle position
|
|
13
16
|
*
|
|
@@ -29,17 +32,37 @@
|
|
|
29
32
|
* (the canonical one app code reads)
|
|
30
33
|
* - `identityKeys.federatedSecretArn(authId, provider)` per
|
|
31
34
|
* provider in `auth.federated[]`
|
|
35
|
+
* - `identityKeys.customSenderKmsKeyArn(authId)` when
|
|
36
|
+
* `auth.customSender` is declared
|
|
37
|
+
*
|
|
38
|
+
* # Custom-sender triggers and the tier boundary
|
|
39
|
+
*
|
|
40
|
+
* `LambdaConfig` is a property of the pool, so it MUST be rendered
|
|
41
|
+
* here — but the trigger function is an app-tier Lambda, and the
|
|
42
|
+
* app tier already consumes this tier (pool ARN / IDs). Importing
|
|
43
|
+
* the function ARN back into this stack would be a cross-stack
|
|
44
|
+
* cycle. VentureKit's Lambda naming is deterministic
|
|
45
|
+
* (`<project>-<stage>-fn-<id>`, see `clampLambdaFunctionName`), so
|
|
46
|
+
* this stack computes the function ARN as a plain string instead of
|
|
47
|
+
* referencing the resource. Cognito stores the ARN without checking
|
|
48
|
+
* that the function exists (cross-account triggers are legal, and
|
|
49
|
+
* a deleted trigger only fails at invocation), so the identity tier
|
|
50
|
+
* can deploy first; the app tier then creates the function and
|
|
51
|
+
* attaches Cognito's invoke permission in the same `vk deploy`.
|
|
32
52
|
*
|
|
33
53
|
* # What this stack does NOT do
|
|
34
54
|
*
|
|
35
55
|
* - **No IAM grants.** Lambdas need
|
|
36
56
|
* `cognito-idp:AdminCreateUser` / `AdminInitiateAuth` /
|
|
37
|
-
* `AdminConfirmSignUp` etc. on the pool,
|
|
38
|
-
* SecretValue` on each federated provider Secret
|
|
57
|
+
* `AdminConfirmSignUp` etc. on the pool, `secretsmanager:Get
|
|
58
|
+
* SecretValue` on each federated provider Secret, and
|
|
59
|
+
* `kms:Decrypt` on the custom-sender key. Those grants
|
|
39
60
|
* produce `AWS::IAM::Policy` resources attached to the
|
|
40
61
|
* shared-Lambda-role — which lives in the app stack. The app
|
|
41
|
-
* stack imports the pool ARN + secret ARNs via SSM and
|
|
42
|
-
* the grants there
|
|
62
|
+
* stack imports the pool ARN + secret / key ARNs via SSM and
|
|
63
|
+
* applies the grants there, together with the resource-based
|
|
64
|
+
* `lambda:InvokeFunction` permission Cognito needs on the
|
|
65
|
+
* custom-sender function.
|
|
43
66
|
*
|
|
44
67
|
* - **No env-var injection.** The legacy single-stack code
|
|
45
68
|
* side-effected `this.ventureBaseEnv['COGNITO_USER_POOL_ID'] =
|
|
@@ -61,9 +84,12 @@
|
|
|
61
84
|
*/
|
|
62
85
|
import * as cdk from 'aws-cdk-lib';
|
|
63
86
|
import * as cognito from 'aws-cdk-lib/aws-cognito';
|
|
87
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
88
|
+
import * as kms from 'aws-cdk-lib/aws-kms';
|
|
64
89
|
import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
|
|
65
90
|
import { DATA_SAFETY_CONFIG, isExternalAuthIntent, } from '@venturekit/core';
|
|
66
91
|
import { writeSsm } from './shared/cross-stack-refs.js';
|
|
92
|
+
import { customSenderFunctionArn, resolveCustomSender } from './shared/custom-sender.js';
|
|
67
93
|
import { identityKeys } from './shared/ssm-keys.js';
|
|
68
94
|
/**
|
|
69
95
|
* Config vocabulary (`envConfig.identity.featurePlan`) → CDK enum.
|
|
@@ -89,6 +115,12 @@ export class VentureIdentityStack extends cdk.Stack {
|
|
|
89
115
|
* SSM rather than this in-memory map.
|
|
90
116
|
*/
|
|
91
117
|
federatedSecrets = new Map();
|
|
118
|
+
/**
|
|
119
|
+
* Custom-sender KMS keys, keyed by `auth.id`. Only populated for
|
|
120
|
+
* intents declaring `customSender`. The app stack grants
|
|
121
|
+
* `kms:Decrypt` on these to the shared Lambda role.
|
|
122
|
+
*/
|
|
123
|
+
customSenderKeys = new Map();
|
|
92
124
|
isStrictRetain;
|
|
93
125
|
constructor(scope, id, props) {
|
|
94
126
|
super(scope, id, props);
|
|
@@ -156,6 +188,61 @@ export class VentureIdentityStack extends cdk.Stack {
|
|
|
156
188
|
mutable: true,
|
|
157
189
|
});
|
|
158
190
|
}
|
|
191
|
+
// ── Custom-sender KMS key ─────────────────────────────────────
|
|
192
|
+
// Cognito encrypts the secret it hands a `CustomEmailSender` /
|
|
193
|
+
// `CustomSMSSender` trigger (verification code, OTP, temporary
|
|
194
|
+
// password) with a customer-managed symmetric key via the AWS
|
|
195
|
+
// Encryption SDK; the trigger decrypts it with the same key. The
|
|
196
|
+
// key lives in this tier with the pool it serves: losing it would
|
|
197
|
+
// not lose data (codes are minutes-lived) but it is referenced by
|
|
198
|
+
// the pool's `LambdaConfig.KMSKeyID`, so it follows the pool's
|
|
199
|
+
// removal policy. Created BEFORE the pool because CFN needs the
|
|
200
|
+
// key ARN in the pool's properties.
|
|
201
|
+
const customSender = resolveCustomSender(intent);
|
|
202
|
+
let customSenderKey;
|
|
203
|
+
if (customSender) {
|
|
204
|
+
customSenderKey = new kms.Key(this, `${logicalId}-custom-sender-key`, {
|
|
205
|
+
description: `Cognito custom-sender code encryption for ${projectName}-${intent.id}-${stage}`,
|
|
206
|
+
alias: `alias/${projectName}-${stage}-${intent.id}-cognito-custom-sender`,
|
|
207
|
+
// Rotation keeps prior key material for decryption, so a
|
|
208
|
+
// rotated key still opens ciphertext Cognito produced with
|
|
209
|
+
// the old material (codes only live minutes anyway).
|
|
210
|
+
enableKeyRotation: true,
|
|
211
|
+
removalPolicy: isStrictRetain ? cdk.RemovalPolicy.RETAIN : cdk.RemovalPolicy.DESTROY,
|
|
212
|
+
});
|
|
213
|
+
// The CDK default key policy already delegates to IAM for this
|
|
214
|
+
// account (root `kms:*`), which is what lets the CFN execution
|
|
215
|
+
// role create Cognito's one-time grant at pool create/update
|
|
216
|
+
// and the app stack grant `kms:Decrypt` to the Lambda role via
|
|
217
|
+
// an identity policy. This statement additionally lets the
|
|
218
|
+
// Cognito service principal encrypt with the key directly,
|
|
219
|
+
// scoped to calls made on behalf of this account. The pool ID
|
|
220
|
+
// is not known until the pool exists (and the pool references
|
|
221
|
+
// the key), so `kms:EncryptionContext:userpool-id` can't be
|
|
222
|
+
// used here without a cycle — `aws:SourceAccount` is the
|
|
223
|
+
// tightest cycle-free condition.
|
|
224
|
+
customSenderKey.addToResourcePolicy(new iam.PolicyStatement({
|
|
225
|
+
sid: 'AllowCognitoCustomSenderEncrypt',
|
|
226
|
+
effect: iam.Effect.ALLOW,
|
|
227
|
+
principals: [new iam.ServicePrincipal('cognito-idp.amazonaws.com')],
|
|
228
|
+
actions: [
|
|
229
|
+
'kms:Encrypt',
|
|
230
|
+
'kms:GenerateDataKey',
|
|
231
|
+
'kms:GenerateDataKeyWithoutPlaintext',
|
|
232
|
+
'kms:CreateGrant',
|
|
233
|
+
'kms:DescribeKey',
|
|
234
|
+
],
|
|
235
|
+
resources: ['*'],
|
|
236
|
+
conditions: {
|
|
237
|
+
StringEquals: { 'aws:SourceAccount': this.account },
|
|
238
|
+
},
|
|
239
|
+
}));
|
|
240
|
+
this.customSenderKeys.set(intent.id, customSenderKey);
|
|
241
|
+
writeSsm(this, identityKeys.customSenderKmsKeyArn(projectName, stage, intent.id), customSenderKey.keyArn, {
|
|
242
|
+
description: `KMS key Cognito encrypts custom-sender codes with for auth pool '${intent.id}'. ` +
|
|
243
|
+
`The trigger Lambda decrypts with it (COGNITO_CUSTOM_SENDER_KMS_KEY_ARN).`,
|
|
244
|
+
});
|
|
245
|
+
}
|
|
159
246
|
const userPool = new cognito.UserPool(this, logicalId, {
|
|
160
247
|
userPoolName: `${projectName}-${intent.id}-${stage}`,
|
|
161
248
|
// Self-signup defaults OFF — most production apps use invite
|
|
@@ -202,11 +289,43 @@ export class VentureIdentityStack extends cdk.Stack {
|
|
|
202
289
|
: undefined,
|
|
203
290
|
accountRecovery: cognito.AccountRecovery.EMAIL_ONLY,
|
|
204
291
|
...(customAttrNames.length > 0 ? { customAttributes } : {}),
|
|
292
|
+
// `LambdaConfig.KMSKeyID` — the key Cognito encrypts custom-
|
|
293
|
+
// sender payloads with. The trigger ARNs themselves are set as
|
|
294
|
+
// L1 overrides below (see the file header for why they are
|
|
295
|
+
// computed strings, not function references).
|
|
296
|
+
...(customSenderKey ? { customSenderKmsKey: customSenderKey } : {}),
|
|
297
|
+
// Cognito rejects a `CustomSMSSender` on a pool without an SMS
|
|
298
|
+
// configuration (SNS role). CDK only creates that role when it
|
|
299
|
+
// infers SMS is needed (phone auto-verify / SMS MFA); force it
|
|
300
|
+
// whenever an SMS sender is declared so the pool validates
|
|
301
|
+
// even for email-only sign-in.
|
|
302
|
+
...(customSender?.sms ? { enableSmsRole: true } : {}),
|
|
205
303
|
});
|
|
304
|
+
const cfnPool = userPool.node.defaultChild;
|
|
206
305
|
if (isStrictRetain) {
|
|
207
|
-
const cfnPool = userPool.node.defaultChild;
|
|
208
306
|
cfnPool.cfnOptions.updateReplacePolicy = cdk.CfnDeletionPolicy.RETAIN;
|
|
209
307
|
}
|
|
308
|
+
// ── Custom-sender triggers ────────────────────────────────────
|
|
309
|
+
// The trigger Lambda is created by the APP stack from
|
|
310
|
+
// `src/functions/<id>.ts`, so reference it by its deterministic
|
|
311
|
+
// name rather than by resource — the pool must not depend on the
|
|
312
|
+
// app tier. `LambdaVersion` is fixed at `V1_0`, the only version
|
|
313
|
+
// Cognito accepts for custom senders.
|
|
314
|
+
if (customSender) {
|
|
315
|
+
const triggerArn = (fnId) => customSenderFunctionArn(this, projectName, stage, fnId);
|
|
316
|
+
if (customSender.email) {
|
|
317
|
+
cfnPool.addPropertyOverride('LambdaConfig.CustomEmailSender', {
|
|
318
|
+
LambdaArn: triggerArn(customSender.email),
|
|
319
|
+
LambdaVersion: 'V1_0',
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
if (customSender.sms) {
|
|
323
|
+
cfnPool.addPropertyOverride('LambdaConfig.CustomSMSSender', {
|
|
324
|
+
LambdaArn: triggerArn(customSender.sms),
|
|
325
|
+
LambdaVersion: 'V1_0',
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
}
|
|
210
329
|
this.userPools.set(intent.id, userPool);
|
|
211
330
|
// ── App clients ───────────────────────────────────────────────
|
|
212
331
|
const clients = intent.clients && intent.clients.length > 0
|
|
@@ -223,6 +342,14 @@ export class VentureIdentityStack extends cdk.Stack {
|
|
|
223
342
|
? intent.federated
|
|
224
343
|
: [];
|
|
225
344
|
const enableAdminAuth = federatedProviders.length > 0;
|
|
345
|
+
// Token lifetimes, when the intent declares them (`tokenValidity`); CDK
|
|
346
|
+
// leaves Cognito's defaults (1 h / 1 h / 30 d) in place for any it omits.
|
|
347
|
+
const validity = intent.tokenValidity ?? {};
|
|
348
|
+
const tokenValidity = {
|
|
349
|
+
...(validity.accessMinutes !== undefined ? { accessTokenValidity: cdk.Duration.minutes(validity.accessMinutes) } : {}),
|
|
350
|
+
...(validity.idMinutes !== undefined ? { idTokenValidity: cdk.Duration.minutes(validity.idMinutes) } : {}),
|
|
351
|
+
...(validity.refreshDays !== undefined ? { refreshTokenValidity: cdk.Duration.days(validity.refreshDays) } : {}),
|
|
352
|
+
};
|
|
226
353
|
let primaryClient;
|
|
227
354
|
for (const client of clients) {
|
|
228
355
|
const appClient = userPool.addClient(client.name, {
|
|
@@ -231,6 +358,7 @@ export class VentureIdentityStack extends cdk.Stack {
|
|
|
231
358
|
userSrp: true,
|
|
232
359
|
...(enableAdminAuth ? { adminUserPassword: true } : {}),
|
|
233
360
|
},
|
|
361
|
+
...tokenValidity,
|
|
234
362
|
// Hide whether a username exists from failed sign-in errors —
|
|
235
363
|
// standard credential-stuffing / user-enumeration defense.
|
|
236
364
|
preventUserExistenceErrors: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-stack.js","sourceRoot":"","sources":["../../src/cdk/identity-stack.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"identity-stack.js","sourceRoot":"","sources":["../../src/cdk/identity-stack.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,9 @@
|
|
|
42
42
|
* notifyBounceDlqArn` per `notify[]` intent
|
|
43
43
|
* - `configKeys.notifyEventsTopicArn /
|
|
44
44
|
* notifyConfigurationSetName / whatsappTokenSecretArn` per
|
|
45
|
-
* notify intent
|
|
45
|
+
* notify intent, plus `whatsappAppSecretArn /
|
|
46
|
+
* whatsappVerifyTokenSecretArn` when `whatsapp.webhooks` is
|
|
47
|
+
* set. (These straddle the messaging-vs-config
|
|
46
48
|
* boundary in the SSM key namespace because the operator pastes
|
|
47
49
|
* the WhatsApp token by hand and the SES configuration-set name
|
|
48
50
|
* is operator-facing identity, not just plumbing — but they're
|
|
@@ -102,6 +104,18 @@ export declare class VentureMessagingStack extends cdk.Stack {
|
|
|
102
104
|
readonly notifyDispatcherDlqs: Map<string, sqs.Queue>;
|
|
103
105
|
readonly notifyBounceDlqs: Map<string, sqs.Queue>;
|
|
104
106
|
readonly whatsappTokenSecrets: Map<string, secretsmanager.Secret>;
|
|
107
|
+
/**
|
|
108
|
+
* Meta App Secret per `notify` intent (only when
|
|
109
|
+
* `whatsapp.webhooks: true`). Verifies `x-hub-signature-256` on
|
|
110
|
+
* incoming webhooks.
|
|
111
|
+
*/
|
|
112
|
+
readonly whatsappAppSecretSecrets: Map<string, secretsmanager.Secret>;
|
|
113
|
+
/**
|
|
114
|
+
* Webhook verify token per `notify` intent (only when
|
|
115
|
+
* `whatsapp.webhooks: true`). Shared secret for the one-time Meta
|
|
116
|
+
* subscription handshake.
|
|
117
|
+
*/
|
|
118
|
+
readonly whatsappVerifyTokenSecrets: Map<string, secretsmanager.Secret>;
|
|
105
119
|
/** EventBridge custom buses for OWNED `events` intents (external ones create nothing here). */
|
|
106
120
|
readonly eventBuses: Map<string, events.EventBus>;
|
|
107
121
|
private readonly isStrictRetain;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging-stack.d.ts","sourceRoot":"","sources":["../../src/cdk/messaging-stack.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"messaging-stack.d.ts","sourceRoot":"","sources":["../../src/cdk/messaging-stack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFG;AAEH,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AAGjD,OAAO,KAAK,cAAc,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAsB,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAI1F,MAAM,WAAW,0BAA2B,SAAQ,GAAG,CAAC,UAAU;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,gEAAgE;IAChE,cAAc,EAAE,aAAa,CAAC;CAC/B;AAED,qBAAa,qBAAsB,SAAQ,GAAG,CAAC,KAAK;IAClD,SAAgB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;QAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAA;KAAE,CAAC,CAAa;IACtF,SAAgB,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAa;IACvE,SAAgB,2BAA2B,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IAC7E,SAAgB,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAa;IACzE,SAAgB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAa;IACrE,SAAgB,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAa;IACrF;;;;OAIG;IACH,SAAgB,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAa;IACzF;;;;OAIG;IACH,SAAgB,0BAA0B,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAa;IAC3F,+FAA+F;IAC/F,SAAgB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAa;IAErE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;gBAEtC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,0BAA0B;IA6B3E,OAAO,CAAC,WAAW;IAqEnB,OAAO,CAAC,YAAY;IAySpB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;CA4BvB"}
|
|
@@ -42,7 +42,9 @@
|
|
|
42
42
|
* notifyBounceDlqArn` per `notify[]` intent
|
|
43
43
|
* - `configKeys.notifyEventsTopicArn /
|
|
44
44
|
* notifyConfigurationSetName / whatsappTokenSecretArn` per
|
|
45
|
-
* notify intent
|
|
45
|
+
* notify intent, plus `whatsappAppSecretArn /
|
|
46
|
+
* whatsappVerifyTokenSecretArn` when `whatsapp.webhooks` is
|
|
47
|
+
* set. (These straddle the messaging-vs-config
|
|
46
48
|
* boundary in the SSM key namespace because the operator pastes
|
|
47
49
|
* the WhatsApp token by hand and the SES configuration-set name
|
|
48
50
|
* is operator-facing identity, not just plumbing — but they're
|
|
@@ -95,6 +97,18 @@ export class VentureMessagingStack extends cdk.Stack {
|
|
|
95
97
|
notifyDispatcherDlqs = new Map();
|
|
96
98
|
notifyBounceDlqs = new Map();
|
|
97
99
|
whatsappTokenSecrets = new Map();
|
|
100
|
+
/**
|
|
101
|
+
* Meta App Secret per `notify` intent (only when
|
|
102
|
+
* `whatsapp.webhooks: true`). Verifies `x-hub-signature-256` on
|
|
103
|
+
* incoming webhooks.
|
|
104
|
+
*/
|
|
105
|
+
whatsappAppSecretSecrets = new Map();
|
|
106
|
+
/**
|
|
107
|
+
* Webhook verify token per `notify` intent (only when
|
|
108
|
+
* `whatsapp.webhooks: true`). Shared secret for the one-time Meta
|
|
109
|
+
* subscription handshake.
|
|
110
|
+
*/
|
|
111
|
+
whatsappVerifyTokenSecrets = new Map();
|
|
98
112
|
/** EventBridge custom buses for OWNED `events` intents (external ones create nothing here). */
|
|
99
113
|
eventBuses = new Map();
|
|
100
114
|
isStrictRetain;
|
|
@@ -284,6 +298,12 @@ export class VentureMessagingStack extends cdk.Stack {
|
|
|
284
298
|
this.notifyConfigurationSetNames.set(intent.id, configurationSetName);
|
|
285
299
|
writeSsm(this, configKeys.notifyConfigurationSetName(projectName, stage, intent.id), configurationSetName, { description: `SES configuration set name — every SendEmail uses it.` });
|
|
286
300
|
// ── WhatsApp token secret ────────────────────────────────────
|
|
301
|
+
if (intent.whatsapp?.webhooks && !channels.includes('whatsapp')) {
|
|
302
|
+
throw new Error(`[venturekit] notify intent '${intent.id}' sets 'whatsapp.webhooks: true' ` +
|
|
303
|
+
`but 'whatsapp' is not in 'channels'. The webhook secrets are only ` +
|
|
304
|
+
`provisioned alongside the WhatsApp channel — add 'whatsapp' to ` +
|
|
305
|
+
`'channels' or remove the flag.`);
|
|
306
|
+
}
|
|
287
307
|
if (channels.includes('whatsapp')) {
|
|
288
308
|
if (!intent.whatsapp?.phoneNumberId) {
|
|
289
309
|
throw new Error(`[venturekit] notify intent '${intent.id}' has 'whatsapp' channel ` +
|
|
@@ -321,6 +341,57 @@ export class VentureMessagingStack extends cdk.Stack {
|
|
|
321
341
|
description: `WhatsApp token Secret ARN. Operators populate via ` +
|
|
322
342
|
`'aws secretsmanager put-secret-value'.`,
|
|
323
343
|
});
|
|
344
|
+
// ── Webhook verification secrets (opt-in via whatsapp.webhooks) ──
|
|
345
|
+
// The App Secret verifies x-hub-signature-256 on every incoming
|
|
346
|
+
// webhook; the verify token is the shared secret Meta echoes
|
|
347
|
+
// during the one-time subscription handshake. Both are
|
|
348
|
+
// operator-paste-in Secrets Manager secrets, same pattern as the
|
|
349
|
+
// token above: GenerateSecretString at create time (never a
|
|
350
|
+
// managed SecretString), RETAIN under strict, raw string value
|
|
351
|
+
// matching createSecretsTokenResolver's default wiring.
|
|
352
|
+
if (intent.whatsapp?.webhooks) {
|
|
353
|
+
const appSecret = new secretsmanager.Secret(this, `${logicalId}-whatsapp-app-secret`, {
|
|
354
|
+
secretName: `venturekit/${projectName}/${stage}/notify-${intent.id}-whatsapp-app-secret`,
|
|
355
|
+
description: `Meta App Secret for webhook signature verification (notify '${intent.id}'). ` +
|
|
356
|
+
`After first deploy, paste the App Secret from Meta App Dashboard ` +
|
|
357
|
+
`→ Settings → Basic via 'aws secretsmanager put-secret-value'.`,
|
|
358
|
+
generateSecretString: {
|
|
359
|
+
passwordLength: 64,
|
|
360
|
+
excludePunctuation: true,
|
|
361
|
+
},
|
|
362
|
+
removalPolicy: this.removalPolicy,
|
|
363
|
+
});
|
|
364
|
+
if (this.isStrictRetain) {
|
|
365
|
+
const cfn = appSecret.node.defaultChild;
|
|
366
|
+
cfn.cfnOptions.updateReplacePolicy = cdk.CfnDeletionPolicy.RETAIN;
|
|
367
|
+
}
|
|
368
|
+
this.whatsappAppSecretSecrets.set(intent.id, appSecret);
|
|
369
|
+
writeSsm(this, configKeys.whatsappAppSecretArn(projectName, stage, intent.id), appSecret.secretArn, {
|
|
370
|
+
description: `WhatsApp App Secret ARN (webhook signature verification). ` +
|
|
371
|
+
`Operators populate via 'aws secretsmanager put-secret-value'.`,
|
|
372
|
+
});
|
|
373
|
+
const verifyTokenSecret = new secretsmanager.Secret(this, `${logicalId}-whatsapp-verify-token`, {
|
|
374
|
+
secretName: `venturekit/${projectName}/${stage}/notify-${intent.id}-whatsapp-verify-token`,
|
|
375
|
+
description: `Webhook verify token for Meta subscription handshake (notify '${intent.id}'). ` +
|
|
376
|
+
`After first deploy, paste your chosen verify token via ` +
|
|
377
|
+
`'aws secretsmanager put-secret-value' and type the SAME value ` +
|
|
378
|
+
`into the Meta App Dashboard callback config.`,
|
|
379
|
+
generateSecretString: {
|
|
380
|
+
passwordLength: 48,
|
|
381
|
+
excludePunctuation: true,
|
|
382
|
+
},
|
|
383
|
+
removalPolicy: this.removalPolicy,
|
|
384
|
+
});
|
|
385
|
+
if (this.isStrictRetain) {
|
|
386
|
+
const cfn = verifyTokenSecret.node.defaultChild;
|
|
387
|
+
cfn.cfnOptions.updateReplacePolicy = cdk.CfnDeletionPolicy.RETAIN;
|
|
388
|
+
}
|
|
389
|
+
this.whatsappVerifyTokenSecrets.set(intent.id, verifyTokenSecret);
|
|
390
|
+
writeSsm(this, configKeys.whatsappVerifyTokenSecretArn(projectName, stage, intent.id), verifyTokenSecret.secretArn, {
|
|
391
|
+
description: `WhatsApp webhook verify token Secret ARN. ` +
|
|
392
|
+
`Operators populate via 'aws secretsmanager put-secret-value'.`,
|
|
393
|
+
});
|
|
394
|
+
}
|
|
324
395
|
}
|
|
325
396
|
// ── Dispatcher + bounce DLQs ─────────────────────────────────
|
|
326
397
|
// The dispatcher Lambda (cron-triggered, drains the outbox table
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messaging-stack.js","sourceRoot":"","sources":["../../src/cdk/messaging-stack.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messaging-stack.js","sourceRoot":"","sources":["../../src/cdk/messaging-stack.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFG;AAEH,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AACnC,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,wBAAwB,CAAC;AACjD,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,OAAO,MAAM,yBAAyB,CAAC;AACnD,OAAO,KAAK,cAAc,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAsC,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAUjE,MAAM,OAAO,qBAAsB,SAAQ,GAAG,CAAC,KAAK;IAClC,MAAM,GAAsD,IAAI,GAAG,EAAE,CAAC;IACtE,kBAAkB,GAA2B,IAAI,GAAG,EAAE,CAAC;IACvD,2BAA2B,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC7D,oBAAoB,GAA2B,IAAI,GAAG,EAAE,CAAC;IACzD,gBAAgB,GAA2B,IAAI,GAAG,EAAE,CAAC;IACrD,oBAAoB,GAAuC,IAAI,GAAG,EAAE,CAAC;IACrF;;;;OAIG;IACa,wBAAwB,GAAuC,IAAI,GAAG,EAAE,CAAC;IACzF;;;;OAIG;IACa,0BAA0B,GAAuC,IAAI,GAAG,EAAE,CAAC;IAC3F,+FAA+F;IAC/E,UAAU,GAAiC,IAAI,GAAG,EAAE,CAAC;IAEpD,cAAc,CAAU;IACxB,aAAa,CAAoB;IAElD,YAAY,KAAgB,EAAE,EAAU,EAAE,KAAiC;QACzE,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QACxB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;QAChE,IAAI,CAAC,cAAc,GAAG,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC;QAC1F,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC;QAEhG,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;YAC1B,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC3C,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;YAC1B,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC3C,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QACD,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;YAC1B,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC3C,8DAA8D;gBAC9D,+DAA+D;gBAC/D,wDAAwD;gBACxD,IAAI,MAAM,CAAC,QAAQ;oBAAE,SAAS;gBAC9B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,wEAAwE;IAEhE,WAAW,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;QACjE,MAAM,SAAS,GAAG,SAAS,MAAM,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAEzD,+DAA+D;QAC/D,oCAAoC;QACpC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,SAAS,MAAM,EAAE;YAClD,SAAS,EAAE,GAAG,WAAW,IAAI,MAAM,CAAC,EAAE,QAAQ,KAAK,GAAG,UAAU,EAAE;YAClE,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM;YAC5B,eAAe,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,UAAU,EAAE,GAAG,CAAC,eAAe,CAAC,WAAW;YAC3C,0DAA0D;YAC1D,+DAA+D;YAC/D,8DAA8D;YAC9D,qDAAqD;YACrD,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;QAEH,gEAAgE;QAChE,gEAAgE;QAChE,kEAAkE;QAClE,8DAA8D;QAC9D,2BAA2B;QAC3B,MAAM,wBAAwB,GAAG,MAAM,CAAC,wBAAwB;eAC3D,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QAEhC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE;YAC3C,SAAS,EAAE,GAAG,WAAW,IAAI,MAAM,CAAC,EAAE,IAAI,KAAK,GAAG,UAAU,EAAE;YAC9D,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM;YAC5B,iBAAiB,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,wBAAwB,CAAC;YACjE,eAAe,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;YAC7D,UAAU,EAAE,GAAG,CAAC,eAAe,CAAC,WAAW;YAC3C,eAAe,EAAE;gBACf,KAAK,EAAE,GAAG;gBACV,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,CAAC;aAC7C;YACD,8DAA8D;YAC9D,0DAA0D;YAC1D,6DAA6D;YAC7D,2CAA2C;YAC3C,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAE3C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE;YACpF,WAAW,EAAE,sBAAsB,MAAM,CAAC,EAAE,yBAAyB;SACtE,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE;YACpF,WAAW,EAAE,gDAAgD;SAC9D,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,EAAE;YACrF,WAAW,EAAE,8BAA8B,MAAM,CAAC,EAAE,IAAI;SACzD,CAAC,CAAC;QACH,QAAQ,CACN,IAAI,EACJ,aAAa,CAAC,6BAA6B,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAC1E,MAAM,CAAC,wBAAwB,CAAC,EAChC;YACE,WAAW,EACT,6DAA6D;gBAC7D,4DAA4D;gBAC5D,sDAAsD;SACzD,CACF,CAAC;IACJ,CAAC;IAED,wEAAwE;IAEhE,YAAY,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;QAClE,MAAM,SAAS,GAAG,UAAU,MAAM,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAa,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,MAAM,oBAAoB,GACxB,MAAM,CAAC,oBAAoB,IAAI,GAAG,WAAW,IAAI,KAAK,WAAW,MAAM,CAAC,EAAE,EAAE,CAAC;QAE/E,gEAAgE;QAChE,kEAAkE;QAClE,gEAAgE;QAChE,8DAA8D;QAC9D,iEAAiE;QACjE,iEAAiE;QACjE,0CAA0C;QAC1C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,SAAS,SAAS,EAAE;YAC7D,SAAS,EAAE,GAAG,WAAW,IAAI,KAAK,WAAW,MAAM,CAAC,EAAE,SAAS;YAC/D,WAAW,EAAE,gCAAgC,MAAM,CAAC,EAAE,KAAK,KAAK,GAAG;SACpE,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,YAA+B,CAAC;YAC7D,GAAG,CAAC,UAAU,CAAC,cAAc,GAAG,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC7D,GAAG,CAAC,UAAU,CAAC,mBAAmB,GAAG,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAEpD,QAAQ,CACN,IAAI,EACJ,UAAU,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAC9D,WAAW,CAAC,QAAQ,EACpB,EAAE,WAAW,EAAE,oCAAoC,MAAM,CAAC,EAAE,IAAI,EAAE,CACnE,CAAC;QAEF,gEAAgE;QAChE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,SAAS,SAAS,EAAE;gBACxE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC5C,WAAW,EAAE,IAAI;gBACjB,4DAA4D;gBAC5D,6DAA6D;gBAC7D,wCAAwC;gBACxC,kBAAkB,EAAE,KAAK;aAC1B,CAAC,CAAC;YAEH,6DAA6D;YAC7D,6DAA6D;YAC7D,MAAM,UAAU,GAAG;gBACjB,EAAE,IAAI,EAAE,cAAc,CAAC,iBAAiB,EAAE,KAAK,EAAE,cAAc,CAAC,kBAAkB,EAAE;gBACpF,EAAE,IAAI,EAAE,cAAc,CAAC,iBAAiB,EAAE,KAAK,EAAE,cAAc,CAAC,kBAAkB,EAAE;gBACpF,EAAE,IAAI,EAAE,cAAc,CAAC,iBAAiB,EAAE,KAAK,EAAE,cAAc,CAAC,kBAAkB,EAAE;aACrF,CAAC;YAEF,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxB,2DAA2D;gBAC3D,uDAAuD;gBACvD,6DAA6D;gBAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,wBAAwB,CACtD,IAAI,EACJ,GAAG,SAAS,OAAO,EACnB,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAC/D,CAAC;gBACF,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;oBAC5B,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,SAAS,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE;wBACjE,IAAI;wBACJ,yDAAyD;wBACzD,uDAAuD;wBACvD,UAAU,EAAE,GAAG,GAAG,CAAC,IAAI,aAAa;wBACpC,UAAU,EAAE,GAAG,GAAG,CAAC,KAAK,qBAAqB;wBAC7C,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;qBAC7B,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;YACD,8DAA8D;YAC9D,8DAA8D;YAC9D,0DAA0D;YAC1D,8DAA8D;QAChE,CAAC;aAAM,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,SAAS,QAAQ,EAAE;gBAChD,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;gBAChD,6DAA6D;gBAC7D,+BAA+B;gBAC/B,kBAAkB,EAAE,KAAK;aAC1B,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,+BAA+B,MAAM,CAAC,EAAE,wBAAwB;gBAChE,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QAED,gEAAgE;QAChE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,SAAS,aAAa,EAAE;YAC1E,oBAAoB;YACpB,cAAc,EAAE,IAAI;YACpB,gEAAgE;YAChE,0DAA0D;YAC1D,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,GAAG,CAAC,yBAAyB,CAAC,OAAO;SACjD,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,gCAAgC,CAAC,IAAI,EAAE,GAAG,SAAS,aAAa,EAAE;YACxE,gBAAgB,EAAE,SAAS;YAC3B,WAAW,EAAE,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC;YACvD,0DAA0D;YAC1D,+DAA+D;YAC/D,wDAAwD;YACxD,2CAA2C;YAC3C,MAAM,EAAE;gBACN,GAAG,CAAC,iBAAiB,CAAC,IAAI;gBAC1B,GAAG,CAAC,iBAAiB,CAAC,MAAM;gBAC5B,GAAG,CAAC,iBAAiB,CAAC,MAAM;gBAC5B,GAAG,CAAC,iBAAiB,CAAC,SAAS;gBAC/B,GAAG,CAAC,iBAAiB,CAAC,QAAQ;gBAC9B,GAAG,CAAC,iBAAiB,CAAC,IAAI;gBAC1B,GAAG,CAAC,iBAAiB,CAAC,KAAK;aAC5B;YACD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;QACtE,QAAQ,CACN,IAAI,EACJ,UAAU,CAAC,0BAA0B,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EACpE,oBAAoB,EACpB,EAAE,WAAW,EAAE,uDAAuD,EAAE,CACzE,CAAC;QAEF,gEAAgE;QAChE,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CACb,+BAA+B,MAAM,CAAC,EAAE,mCAAmC;gBAC3E,oEAAoE;gBACpE,iEAAiE;gBACjE,gCAAgC,CACjC,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACb,+BAA+B,MAAM,CAAC,EAAE,2BAA2B;oBACnE,mEAAmE;oBACnE,yBAAyB,CAC1B,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,MAAM,CACtC,IAAI,EACJ,GAAG,SAAS,iBAAiB,EAC7B;gBACE,UAAU,EAAE,cAAc,WAAW,IAAI,KAAK,WAAW,MAAM,CAAC,EAAE,iBAAiB;gBACnF,WAAW,EACT,oDAAoD,MAAM,CAAC,EAAE,KAAK;oBAClE,mEAAmE;oBACnE,gEAAgE;oBAChE,mDAAmD;gBACrD,oEAAoE;gBACpE,oDAAoD;gBACpD,mEAAmE;gBACnE,qEAAqE;gBACrE,qEAAqE;gBACrE,kEAAkE;gBAClE,qEAAqE;gBACrE,8DAA8D;gBAC9D,mEAAmE;gBACnE,sEAAsE;gBACtE,oBAAoB,EAAE;oBACpB,cAAc,EAAE,EAAE;oBAClB,kBAAkB,EAAE,IAAI;iBACzB;gBACD,aAAa,EAAE,IAAI,CAAC,aAAa;aAClC,CACF,CAAC;YACF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,YAA+B,CAAC;gBACxD,GAAG,CAAC,UAAU,CAAC,mBAAmB,GAAG,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC;YACpE,CAAC;YACD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACjD,QAAQ,CACN,IAAI,EACJ,UAAU,CAAC,sBAAsB,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAChE,MAAM,CAAC,SAAS,EAChB;gBACE,WAAW,EACT,oDAAoD;oBACpD,wCAAwC;aAC3C,CACF,CAAC;YAEF,oEAAoE;YACpE,gEAAgE;YAChE,6DAA6D;YAC7D,uDAAuD;YACvD,iEAAiE;YACjE,4DAA4D;YAC5D,+DAA+D;YAC/D,wDAAwD;YACxD,IAAI,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,MAAM,CACzC,IAAI,EACJ,GAAG,SAAS,sBAAsB,EAClC;oBACE,UAAU,EAAE,cAAc,WAAW,IAAI,KAAK,WAAW,MAAM,CAAC,EAAE,sBAAsB;oBACxF,WAAW,EACT,+DAA+D,MAAM,CAAC,EAAE,MAAM;wBAC9E,mEAAmE;wBACnE,+DAA+D;oBACjE,oBAAoB,EAAE;wBACpB,cAAc,EAAE,EAAE;wBAClB,kBAAkB,EAAE,IAAI;qBACzB;oBACD,aAAa,EAAE,IAAI,CAAC,aAAa;iBAClC,CACF,CAAC;gBACF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;oBACxB,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,YAA+B,CAAC;oBAC3D,GAAG,CAAC,UAAU,CAAC,mBAAmB,GAAG,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBACpE,CAAC;gBACD,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBACxD,QAAQ,CACN,IAAI,EACJ,UAAU,CAAC,oBAAoB,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAC9D,SAAS,CAAC,SAAS,EACnB;oBACE,WAAW,EACT,4DAA4D;wBAC5D,+DAA+D;iBAClE,CACF,CAAC;gBAEF,MAAM,iBAAiB,GAAG,IAAI,cAAc,CAAC,MAAM,CACjD,IAAI,EACJ,GAAG,SAAS,wBAAwB,EACpC;oBACE,UAAU,EAAE,cAAc,WAAW,IAAI,KAAK,WAAW,MAAM,CAAC,EAAE,wBAAwB;oBAC1F,WAAW,EACT,iEAAiE,MAAM,CAAC,EAAE,MAAM;wBAChF,yDAAyD;wBACzD,gEAAgE;wBAChE,8CAA8C;oBAChD,oBAAoB,EAAE;wBACpB,cAAc,EAAE,EAAE;wBAClB,kBAAkB,EAAE,IAAI;qBACzB;oBACD,aAAa,EAAE,IAAI,CAAC,aAAa;iBAClC,CACF,CAAC;gBACF,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;oBACxB,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAA+B,CAAC;oBACnE,GAAG,CAAC,UAAU,CAAC,mBAAmB,GAAG,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBACpE,CAAC;gBACD,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;gBAClE,QAAQ,CACN,IAAI,EACJ,UAAU,CAAC,4BAA4B,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EACtE,iBAAiB,CAAC,SAAS,EAC3B;oBACE,WAAW,EACT,4CAA4C;wBAC5C,+DAA+D;iBAClE,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,gEAAgE;QAChE,iEAAiE;QACjE,iEAAiE;QACjE,mEAAmE;QACnE,0DAA0D;QAC1D,8DAA8D;QAC9D,sBAAsB;QACtB,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,SAAS,iBAAiB,EAAE;YACvE,SAAS,EAAE,GAAG,WAAW,IAAI,KAAK,WAAW,MAAM,CAAC,EAAE,iBAAiB;YACvE,eAAe,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,UAAU,EAAE,GAAG,CAAC,eAAe,CAAC,WAAW;YAC3C,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,SAAS,aAAa,EAAE;YAC/D,SAAS,EAAE,GAAG,WAAW,IAAI,KAAK,WAAW,MAAM,CAAC,EAAE,aAAa;YACnE,eAAe,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,UAAU,EAAE,GAAG,CAAC,eAAe,CAAC,WAAW;YAC3C,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACxD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAEhD,QAAQ,CACN,IAAI,EACJ,aAAa,CAAC,sBAAsB,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EACnE,aAAa,CAAC,QAAQ,EACtB,EAAE,WAAW,EAAE,uCAAuC,EAAE,CACzD,CAAC;QACF,QAAQ,CACN,IAAI,EACJ,aAAa,CAAC,kBAAkB,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAC/D,SAAS,CAAC,QAAQ,EAClB,EAAE,WAAW,EAAE,2CAA2C,EAAE,CAC7D,CAAC;IACJ,CAAC;IAED,wEAAwE;IAExE;;;;;;;;;;OAUG;IACK,cAAc,CAAC,MAAW,EAAE,WAAmB,EAAE,KAAa;QACpE,MAAM,SAAS,GAAG,UAAU,MAAM,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,GAAG,WAAW,IAAI,KAAK,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QAEzE,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;QAE5E,iEAAiE;QACjE,gEAAgE;QAChE,oEAAoE;QACpE,iEAAiE;QACjE,gEAAgE;QAChE,+DAA+D;QAC/D,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,YAA+B,CAAC;YACrD,GAAG,CAAC,UAAU,CAAC,cAAc,GAAG,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC;YAC7D,GAAG,CAAC,UAAU,CAAC,mBAAmB,GAAG,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAEpC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,YAAY,EAAE;YAC1F,WAAW,EACT,6BAA6B,MAAM,CAAC,EAAE,yBAAyB;gBAC/D,0DAA0D;SAC7D,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE;YACxF,WAAW,EAAE,4BAA4B,MAAM,CAAC,EAAE,0CAA0C;SAC7F,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cognito custom-sender (`auth[].customSender`) helpers shared by the
|
|
3
|
+
* identity tier (which renders the pool's `LambdaConfig`) and the app
|
|
4
|
+
* tier (which owns the trigger Lambda and Cognito's invoke permission).
|
|
5
|
+
*
|
|
6
|
+
* # Why a shared module
|
|
7
|
+
*
|
|
8
|
+
* The feature straddles the identity / app stack boundary: the pool
|
|
9
|
+
* must name the trigger function by its deterministic ARN because the
|
|
10
|
+
* app tier already depends on the identity tier, and the app tier must
|
|
11
|
+
* later prove that function exists and let `cognito-idp` invoke it.
|
|
12
|
+
* Both tiers therefore need the same view of "which functions[] ids
|
|
13
|
+
* does this intent reference" — resolved here, once, so a typo is
|
|
14
|
+
* rejected identically on both sides and `app-stack.ts` only carries a
|
|
15
|
+
* one-line hook instead of the full wiring (that file is the merge
|
|
16
|
+
* hot-spot of the package).
|
|
17
|
+
*/
|
|
18
|
+
import * as cdk from 'aws-cdk-lib';
|
|
19
|
+
import type * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
20
|
+
import { type AuthIntent, type OwnedAuthIntent } from '@venturekit/core';
|
|
21
|
+
/** Normalised `AuthIntent.customSender` — `undefined` when nothing is declared. */
|
|
22
|
+
export interface ResolvedCustomSender {
|
|
23
|
+
email?: string;
|
|
24
|
+
sms?: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Validate + normalise `intent.customSender`. Returns `undefined` for
|
|
28
|
+
* absent / empty declarations (and for `external` intents, which never
|
|
29
|
+
* own a pool) so callers can branch on truthiness. Function ids are
|
|
30
|
+
* checked for the character set the file-based discovery produces
|
|
31
|
+
* (`src/functions/<id>.ts`, nested dirs joined with `-`) because the
|
|
32
|
+
* id becomes part of a Lambda ARN string in the identity tier, without
|
|
33
|
+
* a resource reference that would otherwise catch the typo at synth.
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveCustomSender(intent: Pick<OwnedAuthIntent, 'id' | 'customSender'> | AuthIntent): ResolvedCustomSender | undefined;
|
|
36
|
+
/** Distinct `functions[]` ids a resolved sender references (email + sms may share one). */
|
|
37
|
+
export declare function customSenderFunctionIds(sender: ResolvedCustomSender | undefined): string[];
|
|
38
|
+
/**
|
|
39
|
+
* ARN of the standalone function `<project>-<stage>-fn-<id>` in
|
|
40
|
+
* `stack`'s account + region. Mirrors `createStandaloneFunction` in
|
|
41
|
+
* the app stack, so the identity tier can point `LambdaConfig` at the
|
|
42
|
+
* trigger without importing the resource (that would be a cross-stack
|
|
43
|
+
* cycle — the app tier already consumes the identity tier).
|
|
44
|
+
*/
|
|
45
|
+
export declare function customSenderFunctionArn(stack: cdk.Stack, projectName: string, stage: string, fnId: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Let Cognito invoke the standalone function(s) each `auth[]` intent
|
|
48
|
+
* names in `customSender`. One `AWS::Lambda::Permission` per
|
|
49
|
+
* (function, pool) pair — a handler serving both `email` and `sms` of
|
|
50
|
+
* the same pool gets a single statement; the same handler on two
|
|
51
|
+
* pools gets two, each scoped to its own pool ARN.
|
|
52
|
+
*
|
|
53
|
+
* Throws when the referenced function was not discovered: the
|
|
54
|
+
* identity tier has already pointed the pool at
|
|
55
|
+
* `<project>-<stage>-fn-<id>`, so a missing handler would leave
|
|
56
|
+
* Cognito invoking a function that does not exist and every code
|
|
57
|
+
* email / SMS silently undelivered.
|
|
58
|
+
*/
|
|
59
|
+
export declare function grantCustomSenderInvoke(stack: cdk.Stack, authIntents: readonly AuthIntent[], functionLambdas: ReadonlyMap<string, lambda.Function>, userPoolArnsByAuthId: ReadonlyMap<string, string> | undefined): void;
|
|
60
|
+
//# sourceMappingURL=custom-sender.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-sender.d.ts","sourceRoot":"","sources":["../../../src/cdk/shared/custom-sender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAwB,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAG/F,mFAAmF;AACnF,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,cAAc,CAAC,GAAG,UAAU,GAChE,oBAAoB,GAAG,SAAS,CAuBlC;AAED,2FAA2F;AAC3F,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,GAAG,SAAS,GAAG,MAAM,EAAE,CAG1F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,MAAM,CAOR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,WAAW,EAAE,SAAS,UAAU,EAAE,EAClC,eAAe,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACrD,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC5D,IAAI,CA8BN"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cognito custom-sender (`auth[].customSender`) helpers shared by the
|
|
3
|
+
* identity tier (which renders the pool's `LambdaConfig`) and the app
|
|
4
|
+
* tier (which owns the trigger Lambda and Cognito's invoke permission).
|
|
5
|
+
*
|
|
6
|
+
* # Why a shared module
|
|
7
|
+
*
|
|
8
|
+
* The feature straddles the identity / app stack boundary: the pool
|
|
9
|
+
* must name the trigger function by its deterministic ARN because the
|
|
10
|
+
* app tier already depends on the identity tier, and the app tier must
|
|
11
|
+
* later prove that function exists and let `cognito-idp` invoke it.
|
|
12
|
+
* Both tiers therefore need the same view of "which functions[] ids
|
|
13
|
+
* does this intent reference" — resolved here, once, so a typo is
|
|
14
|
+
* rejected identically on both sides and `app-stack.ts` only carries a
|
|
15
|
+
* one-line hook instead of the full wiring (that file is the merge
|
|
16
|
+
* hot-spot of the package).
|
|
17
|
+
*/
|
|
18
|
+
import * as cdk from 'aws-cdk-lib';
|
|
19
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
20
|
+
import { isExternalAuthIntent } from '@venturekit/core';
|
|
21
|
+
import { clampLambdaFunctionName } from './lambda-helpers.js';
|
|
22
|
+
/**
|
|
23
|
+
* Validate + normalise `intent.customSender`. Returns `undefined` for
|
|
24
|
+
* absent / empty declarations (and for `external` intents, which never
|
|
25
|
+
* own a pool) so callers can branch on truthiness. Function ids are
|
|
26
|
+
* checked for the character set the file-based discovery produces
|
|
27
|
+
* (`src/functions/<id>.ts`, nested dirs joined with `-`) because the
|
|
28
|
+
* id becomes part of a Lambda ARN string in the identity tier, without
|
|
29
|
+
* a resource reference that would otherwise catch the typo at synth.
|
|
30
|
+
*/
|
|
31
|
+
export function resolveCustomSender(intent) {
|
|
32
|
+
if (isExternalAuthIntent(intent))
|
|
33
|
+
return undefined;
|
|
34
|
+
const raw = intent.customSender;
|
|
35
|
+
if (raw === undefined || raw === null)
|
|
36
|
+
return undefined;
|
|
37
|
+
if (typeof raw !== 'object' || Array.isArray(raw)) {
|
|
38
|
+
throw new Error(`[venturekit] auth '${intent.id}': customSender must be an object with email and/or sms function ids.`);
|
|
39
|
+
}
|
|
40
|
+
const pick = (channel) => {
|
|
41
|
+
const v = raw[channel];
|
|
42
|
+
if (v === undefined || v === null || v === '')
|
|
43
|
+
return undefined;
|
|
44
|
+
if (typeof v !== 'string' || !/^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(v)) {
|
|
45
|
+
throw new Error(`[venturekit] auth '${intent.id}': customSender.${channel} must be a functions[] id ` +
|
|
46
|
+
`(the dash-delimited name of a handler under src/functions/), got ${JSON.stringify(v)}.`);
|
|
47
|
+
}
|
|
48
|
+
return v;
|
|
49
|
+
};
|
|
50
|
+
const email = pick('email');
|
|
51
|
+
const sms = pick('sms');
|
|
52
|
+
return email || sms ? { email, sms } : undefined;
|
|
53
|
+
}
|
|
54
|
+
/** Distinct `functions[]` ids a resolved sender references (email + sms may share one). */
|
|
55
|
+
export function customSenderFunctionIds(sender) {
|
|
56
|
+
if (!sender)
|
|
57
|
+
return [];
|
|
58
|
+
return [...new Set([sender.email, sender.sms].filter((v) => !!v))];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* ARN of the standalone function `<project>-<stage>-fn-<id>` in
|
|
62
|
+
* `stack`'s account + region. Mirrors `createStandaloneFunction` in
|
|
63
|
+
* the app stack, so the identity tier can point `LambdaConfig` at the
|
|
64
|
+
* trigger without importing the resource (that would be a cross-stack
|
|
65
|
+
* cycle — the app tier already consumes the identity tier).
|
|
66
|
+
*/
|
|
67
|
+
export function customSenderFunctionArn(stack, projectName, stage, fnId) {
|
|
68
|
+
return stack.formatArn({
|
|
69
|
+
service: 'lambda',
|
|
70
|
+
resource: 'function',
|
|
71
|
+
resourceName: clampLambdaFunctionName(`${projectName}-${stage}-fn-${fnId}`),
|
|
72
|
+
arnFormat: cdk.ArnFormat.COLON_RESOURCE_NAME,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Let Cognito invoke the standalone function(s) each `auth[]` intent
|
|
77
|
+
* names in `customSender`. One `AWS::Lambda::Permission` per
|
|
78
|
+
* (function, pool) pair — a handler serving both `email` and `sms` of
|
|
79
|
+
* the same pool gets a single statement; the same handler on two
|
|
80
|
+
* pools gets two, each scoped to its own pool ARN.
|
|
81
|
+
*
|
|
82
|
+
* Throws when the referenced function was not discovered: the
|
|
83
|
+
* identity tier has already pointed the pool at
|
|
84
|
+
* `<project>-<stage>-fn-<id>`, so a missing handler would leave
|
|
85
|
+
* Cognito invoking a function that does not exist and every code
|
|
86
|
+
* email / SMS silently undelivered.
|
|
87
|
+
*/
|
|
88
|
+
export function grantCustomSenderInvoke(stack, authIntents, functionLambdas, userPoolArnsByAuthId) {
|
|
89
|
+
for (const auth of authIntents) {
|
|
90
|
+
const fnIds = customSenderFunctionIds(resolveCustomSender(auth));
|
|
91
|
+
if (fnIds.length === 0)
|
|
92
|
+
continue;
|
|
93
|
+
const poolArn = userPoolArnsByAuthId?.get(auth.id);
|
|
94
|
+
if (!poolArn) {
|
|
95
|
+
throw new Error(`[venturekit] auth '${auth.id}' declares customSender but no user pool ARN was ` +
|
|
96
|
+
`imported for it. Pass imports.userPoolArnsByAuthId (the generator does this ` +
|
|
97
|
+
`automatically when the identity tier is deployed).`);
|
|
98
|
+
}
|
|
99
|
+
for (const fnId of fnIds) {
|
|
100
|
+
const fn = functionLambdas.get(fnId);
|
|
101
|
+
if (!fn) {
|
|
102
|
+
throw new Error(`[venturekit] auth '${auth.id}' customSender references function '${fnId}' but no ` +
|
|
103
|
+
`handler was discovered. Add a handler at src/functions/${fnId}.ts.`);
|
|
104
|
+
}
|
|
105
|
+
fn.addPermission(`cognito-custom-sender-${auth.id}`, {
|
|
106
|
+
principal: new iam.ServicePrincipal('cognito-idp.amazonaws.com'),
|
|
107
|
+
action: 'lambda:InvokeFunction',
|
|
108
|
+
sourceArn: poolArn,
|
|
109
|
+
sourceAccount: stack.account,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=custom-sender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-sender.js","sourceRoot":"","sources":["../../../src/cdk/shared/custom-sender.ts"],"names":[],"mappings":"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"}
|