@mavogel/awscdk-rootmail 0.0.289 → 0.0.291
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/.jsii +594 -89
- package/.prettierrc +0 -0
- package/API.md +49 -5
- package/CONTRIBUTING.md +13 -2
- package/README.md +8 -0
- package/integ-tests/functions/cleanup-handler.ts +2 -2
- package/integ-tests/functions/close-opsitem-handler.ts +5 -7
- package/integ-tests/functions/send-email-handler.ts +3 -5
- package/integ-tests/integ.rootmail-custom-santa.ts +2 -20
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/RootmailIntegTestStack.assets.json +15 -15
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/RootmailIntegTestStack.template.json +435 -65
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.assets.json +6 -6
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.template.json +137 -5
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
- package/integ-tests/{integ.rootmail-filter-subject.ts.snapshot/asset.d2b520d86fd9d964c83dc0d5ce2e4456dbde5fa7ae0c791a71865cbdfe2fb855 → integ.rootmail-custom-santa.ts.snapshot/asset.2b86f8b255c50c6eba274c368849bab1c7a3747c30ef5df4c96f8dea8fffa21e}/index.js +3 -3
- package/integ-tests/{integ.rootmail-filter-subject.ts.snapshot/asset.9ac6d29f0cc4b20ec46e4c186d9a6f6448c7ea11b689e70a5dda69671a9d6848 → integ.rootmail-custom-santa.ts.snapshot/asset.b01091642674a865788c271ec84db9d88a8dfbe14d4d95583aca8814cfa848b9}/index.js +63 -60
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/cfn-response.js +1 -0
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/framework.js +3 -0
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/outbound.js +1 -0
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/util.js +1 -0
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/{asset.53e8368959effe94a6e51bef9c7c5bf0eaf5c4d64eece81632ca62aa34517978.bundle → asset.f692c9f68e4daba2abc99103efd3518bced1e9d7a2a89847b9b5d5473c64f1bd.bundle}/index.js +22701 -24111
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/integ.json +2 -2
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/manifest.json +35 -3
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/tree.json +782 -424
- package/integ-tests/integ.rootmail-filter-subject.ts +2 -20
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/RootmailIntegTestStack.assets.json +15 -15
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/RootmailIntegTestStack.template.json +435 -65
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.assets.json +6 -6
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.template.json +137 -5
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
- package/integ-tests/{integ.rootmail-custom-santa.ts.snapshot/asset.d2b520d86fd9d964c83dc0d5ce2e4456dbde5fa7ae0c791a71865cbdfe2fb855 → integ.rootmail-filter-subject.ts.snapshot/asset.2b86f8b255c50c6eba274c368849bab1c7a3747c30ef5df4c96f8dea8fffa21e}/index.js +3 -3
- package/integ-tests/{integ.rootmail-custom-santa.ts.snapshot/asset.9ac6d29f0cc4b20ec46e4c186d9a6f6448c7ea11b689e70a5dda69671a9d6848 → integ.rootmail-filter-subject.ts.snapshot/asset.b01091642674a865788c271ec84db9d88a8dfbe14d4d95583aca8814cfa848b9}/index.js +63 -60
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/cfn-response.js +1 -0
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/framework.js +3 -0
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/outbound.js +1 -0
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/util.js +1 -0
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/{asset.53e8368959effe94a6e51bef9c7c5bf0eaf5c4d64eece81632ca62aa34517978.bundle → asset.f692c9f68e4daba2abc99103efd3518bced1e9d7a2a89847b9b5d5473c64f1bd.bundle}/index.js +22701 -24111
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/integ.json +2 -2
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/manifest.json +35 -3
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/tree.json +782 -424
- package/integ-tests/integ.rootmail.ts +4 -30
- package/integ-tests/integ.rootmail.ts.snapshot/RootmailIntegTestStack.assets.json +18 -18
- package/integ-tests/integ.rootmail.ts.snapshot/RootmailIntegTestStack.template.json +437 -72
- package/integ-tests/integ.rootmail.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.assets.json +6 -6
- package/integ-tests/integ.rootmail.ts.snapshot/SetupTestIntegStackDefaultTestDeployAssert6EB6FF77.template.json +139 -7
- package/integ-tests/integ.rootmail.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
- package/integ-tests/integ.rootmail.ts.snapshot/{asset.d2b520d86fd9d964c83dc0d5ce2e4456dbde5fa7ae0c791a71865cbdfe2fb855 → asset.2b86f8b255c50c6eba274c368849bab1c7a3747c30ef5df4c96f8dea8fffa21e}/index.js +3 -3
- package/integ-tests/integ.rootmail.ts.snapshot/{asset.070f758ea9c89b8ceea9bb5141ea511633e1d72ab992b608da4efb3d6eeb2ba5 → asset.6ae1d1fcc0e69b0216c406dcb73136e88857dfc9a29784c57838e1fb0f9f7496}/index.js +5 -5
- package/integ-tests/integ.rootmail.ts.snapshot/{asset.adf960437fc6c552bee317e122c1e6839152590b199f7c44c0eee7bfbb744187 → asset.8621467f8f2410fb7445cc07fab37b2e996e541b6f7acb8549df9e88e1def73c}/index.js +63 -60
- package/integ-tests/integ.rootmail.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/cfn-response.js +1 -0
- package/integ-tests/integ.rootmail.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/framework.js +3 -0
- package/integ-tests/integ.rootmail.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/outbound.js +1 -0
- package/integ-tests/integ.rootmail.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/util.js +1 -0
- package/integ-tests/integ.rootmail.ts.snapshot/{asset.53e8368959effe94a6e51bef9c7c5bf0eaf5c4d64eece81632ca62aa34517978.bundle → asset.f692c9f68e4daba2abc99103efd3518bced1e9d7a2a89847b9b5d5473c64f1bd.bundle}/index.js +22701 -24111
- package/integ-tests/integ.rootmail.ts.snapshot/integ.json +2 -2
- package/integ-tests/integ.rootmail.ts.snapshot/manifest.json +35 -3
- package/integ-tests/integ.rootmail.ts.snapshot/tree.json +798 -445
- package/lib/hosted-zone-dkim-propagation.js +1 -11
- package/lib/hosted-zone-dkim-verification-records.js +1 -6
- package/lib/rootmail-autowire-dns.js +1 -11
- package/lib/rootmail.d.ts +15 -1
- package/lib/rootmail.js +5 -2
- package/lib/ses-receipt-ruleset-activation.js +1 -11
- package/lib/ses-receive.d.ts +12 -0
- package/lib/ses-receive.js +5 -7
- package/node_modules/@aws-sdk/client-cloudwatch-logs/package.json +2 -2
- package/node_modules/@aws-sdk/client-route-53/package.json +2 -2
- package/node_modules/@aws-sdk/client-s3/package.json +2 -2
- package/node_modules/@aws-sdk/client-ses/package.json +2 -2
- package/node_modules/@aws-sdk/client-ssm/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-ini/dist-types/fromIni.d.ts +5 -0
- package/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/fromIni.d.ts +1 -0
- package/node_modules/@aws-sdk/credential-provider-ini/package.json +1 -1
- package/node_modules/@aws-sdk/credential-provider-node/package.json +2 -2
- package/node_modules/cdk-nag/.jsii +3 -3
- package/node_modules/cdk-nag/lib/ignore-suppression-conditions.js +5 -5
- package/node_modules/cdk-nag/lib/nag-logger.js +2 -2
- package/node_modules/cdk-nag/lib/nag-pack.js +1 -1
- package/node_modules/cdk-nag/lib/nag-rules.js +1 -1
- package/node_modules/cdk-nag/lib/nag-suppressions.js +1 -1
- package/node_modules/cdk-nag/lib/packs/aws-solutions.js +1 -1
- package/node_modules/cdk-nag/lib/packs/hipaa-security.js +1 -1
- package/node_modules/cdk-nag/lib/packs/nist-800-53-r4.js +1 -1
- package/node_modules/cdk-nag/lib/packs/nist-800-53-r5.js +1 -1
- package/node_modules/cdk-nag/lib/packs/pci-dss-321.js +1 -1
- package/node_modules/cdk-nag/package.json +2 -2
- package/package.json +31 -27
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.d.ts +0 -14
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.js +0 -1
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/cfn-response.js +0 -1
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/framework.js +0 -3
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/outbound.js +0 -1
- package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/util.js +0 -1
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.d.ts +0 -14
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.js +0 -1
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/cfn-response.js +0 -1
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/framework.js +0 -3
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/outbound.js +0 -1
- package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/util.js +0 -1
- package/integ-tests/integ.rootmail.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.d.ts +0 -14
- package/integ-tests/integ.rootmail.ts.snapshot/asset.5cc92ed0cea39e2b8de2dbc527dfb5980a3af9564bd1084d840b9787c7d0467e/index.js +0 -1
- package/integ-tests/integ.rootmail.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/cfn-response.js +0 -1
- package/integ-tests/integ.rootmail.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/framework.js +0 -3
- package/integ-tests/integ.rootmail.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/outbound.js +0 -1
- package/integ-tests/integ.rootmail.ts.snapshot/asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf/util.js +0 -1
- /package/integ-tests/integ.rootmail-custom-santa.ts.snapshot/{asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf → asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca}/consts.js +0 -0
- /package/integ-tests/integ.rootmail-filter-subject.ts.snapshot/{asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf → asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca}/consts.js +0 -0
- /package/integ-tests/integ.rootmail.ts.snapshot/{asset.f2d30cfc360482320a52a4fcde8a70f3569df79ab30be24650fda58eb60052cf → asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca}/consts.js +0 -0
package/.jsii
CHANGED
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"author": {
|
|
3
|
-
"email": "mavogel@
|
|
3
|
+
"email": "8409778+mavogel@users.noreply.github.com",
|
|
4
4
|
"name": "Manuel Vogel",
|
|
5
|
+
"organization": true,
|
|
5
6
|
"roles": [
|
|
6
7
|
"author"
|
|
7
8
|
]
|
|
8
9
|
},
|
|
9
10
|
"bundled": {
|
|
10
|
-
"@aws-sdk/client-cloudwatch-logs": "^3.
|
|
11
|
-
"@aws-sdk/client-route-53": "^3.
|
|
12
|
-
"@aws-sdk/client-s3": "^3.
|
|
13
|
-
"@aws-sdk/client-ses": "^3.
|
|
14
|
-
"@aws-sdk/client-ssm": "^3.
|
|
11
|
+
"@aws-sdk/client-cloudwatch-logs": "^3.741.0",
|
|
12
|
+
"@aws-sdk/client-route-53": "^3.741.0",
|
|
13
|
+
"@aws-sdk/client-s3": "^3.741.0",
|
|
14
|
+
"@aws-sdk/client-ses": "^3.741.0",
|
|
15
|
+
"@aws-sdk/client-ssm": "^3.741.0",
|
|
15
16
|
"async-retry": "^1.3.3",
|
|
16
17
|
"axios": "^1.7.9",
|
|
17
|
-
"cdk-nag": "^2.35.
|
|
18
|
+
"cdk-nag": "^2.35.0",
|
|
18
19
|
"mailparser": "^3.7.2",
|
|
19
20
|
"uuid": "^9.0.1"
|
|
20
21
|
},
|
|
21
22
|
"dependencies": {
|
|
22
|
-
"
|
|
23
|
+
"@mavogel/mvc-projen": "^0.0.2",
|
|
24
|
+
"aws-cdk-lib": "^2.177.0",
|
|
23
25
|
"constructs": "^10.0.5"
|
|
24
26
|
},
|
|
25
27
|
"dependencyClosure": {
|
|
@@ -75,29 +77,66 @@
|
|
|
75
77
|
}
|
|
76
78
|
}
|
|
77
79
|
},
|
|
78
|
-
"@aws-cdk/asset-node-proxy-agent-
|
|
80
|
+
"@aws-cdk/asset-node-proxy-agent-v6": {
|
|
79
81
|
"targets": {
|
|
80
82
|
"dotnet": {
|
|
81
|
-
"namespace": "Amazon.CDK.Asset.
|
|
82
|
-
"packageId": "Amazon.CDK.Asset.
|
|
83
|
+
"namespace": "Amazon.CDK.Asset.NodeProxyAgentV6",
|
|
84
|
+
"packageId": "Amazon.CDK.Asset.NodeProxyAgentV6"
|
|
83
85
|
},
|
|
84
86
|
"go": {
|
|
85
87
|
"moduleName": "github.com/cdklabs/awscdk-asset-node-proxy-agent-go",
|
|
86
|
-
"packageName": "
|
|
88
|
+
"packageName": "nodeproxyagentv6"
|
|
87
89
|
},
|
|
88
90
|
"java": {
|
|
89
91
|
"maven": {
|
|
90
|
-
"artifactId": "cdk-asset-node-proxy-agent-
|
|
92
|
+
"artifactId": "cdk-asset-node-proxy-agent-v6",
|
|
91
93
|
"groupId": "software.amazon.awscdk"
|
|
92
94
|
},
|
|
93
|
-
"package": "software.amazon.awscdk.cdk.asset.node.proxy.agent.
|
|
95
|
+
"package": "software.amazon.awscdk.cdk.asset.node.proxy.agent.v6"
|
|
94
96
|
},
|
|
95
97
|
"js": {
|
|
96
|
-
"npm": "@aws-cdk/asset-node-proxy-agent-
|
|
98
|
+
"npm": "@aws-cdk/asset-node-proxy-agent-v6"
|
|
97
99
|
},
|
|
98
100
|
"python": {
|
|
99
|
-
"distName": "aws-cdk.asset-node-proxy-agent-
|
|
100
|
-
"module": "aws_cdk.
|
|
101
|
+
"distName": "aws-cdk.asset-node-proxy-agent-v6",
|
|
102
|
+
"module": "aws_cdk.asset_node_proxy_agent_v6"
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"@aws-cdk/cloud-assembly-schema": {
|
|
107
|
+
"targets": {
|
|
108
|
+
"dotnet": {
|
|
109
|
+
"iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png",
|
|
110
|
+
"namespace": "Amazon.CDK.CloudAssembly.Schema",
|
|
111
|
+
"packageId": "Amazon.CDK.CloudAssembly.Schema"
|
|
112
|
+
},
|
|
113
|
+
"go": {
|
|
114
|
+
"moduleName": "github.com/cdklabs/cloud-assembly-schema-go"
|
|
115
|
+
},
|
|
116
|
+
"java": {
|
|
117
|
+
"maven": {
|
|
118
|
+
"artifactId": "cdk-cloud-assembly-schema",
|
|
119
|
+
"groupId": "software.amazon.awscdk"
|
|
120
|
+
},
|
|
121
|
+
"package": "software.amazon.awscdk.cloudassembly.schema"
|
|
122
|
+
},
|
|
123
|
+
"js": {
|
|
124
|
+
"npm": "@aws-cdk/cloud-assembly-schema"
|
|
125
|
+
},
|
|
126
|
+
"python": {
|
|
127
|
+
"classifiers": [
|
|
128
|
+
"Framework :: AWS CDK",
|
|
129
|
+
"Framework :: AWS CDK :: 2"
|
|
130
|
+
],
|
|
131
|
+
"distName": "aws-cdk.cloud-assembly-schema",
|
|
132
|
+
"module": "aws_cdk.cloud_assembly_schema"
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"@mavogel/mvc-projen": {
|
|
137
|
+
"targets": {
|
|
138
|
+
"js": {
|
|
139
|
+
"npm": "@mavogel/mvc-projen"
|
|
101
140
|
}
|
|
102
141
|
}
|
|
103
142
|
},
|
|
@@ -233,6 +272,32 @@
|
|
|
233
272
|
}
|
|
234
273
|
}
|
|
235
274
|
},
|
|
275
|
+
"aws-cdk-lib.aws_apigatewayv2_authorizers": {
|
|
276
|
+
"targets": {
|
|
277
|
+
"dotnet": {
|
|
278
|
+
"namespace": "Amazon.CDK.AwsApigatewayv2Authorizers"
|
|
279
|
+
},
|
|
280
|
+
"java": {
|
|
281
|
+
"package": "software.amazon.awscdk.aws_apigatewayv2_authorizers"
|
|
282
|
+
},
|
|
283
|
+
"python": {
|
|
284
|
+
"module": "aws_cdk.aws_apigatewayv2_authorizers"
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
"aws-cdk-lib.aws_apigatewayv2_integrations": {
|
|
289
|
+
"targets": {
|
|
290
|
+
"dotnet": {
|
|
291
|
+
"namespace": "Amazon.CDK.AwsApigatewayv2Integrations"
|
|
292
|
+
},
|
|
293
|
+
"java": {
|
|
294
|
+
"package": "software.amazon.awscdk.aws_apigatewayv2_integrations"
|
|
295
|
+
},
|
|
296
|
+
"python": {
|
|
297
|
+
"module": "aws_cdk.aws_apigatewayv2_integrations"
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
},
|
|
236
301
|
"aws-cdk-lib.aws_appconfig": {
|
|
237
302
|
"targets": {
|
|
238
303
|
"dotnet": {
|
|
@@ -298,6 +363,19 @@
|
|
|
298
363
|
}
|
|
299
364
|
}
|
|
300
365
|
},
|
|
366
|
+
"aws-cdk-lib.aws_applicationsignals": {
|
|
367
|
+
"targets": {
|
|
368
|
+
"dotnet": {
|
|
369
|
+
"package": "Amazon.CDK.AWS.ApplicationSignals"
|
|
370
|
+
},
|
|
371
|
+
"java": {
|
|
372
|
+
"package": "software.amazon.awscdk.services.applicationsignals"
|
|
373
|
+
},
|
|
374
|
+
"python": {
|
|
375
|
+
"module": "aws_cdk.aws_applicationsignals"
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
},
|
|
301
379
|
"aws-cdk-lib.aws_appmesh": {
|
|
302
380
|
"targets": {
|
|
303
381
|
"dotnet": {
|
|
@@ -350,6 +428,19 @@
|
|
|
350
428
|
}
|
|
351
429
|
}
|
|
352
430
|
},
|
|
431
|
+
"aws-cdk-lib.aws_apptest": {
|
|
432
|
+
"targets": {
|
|
433
|
+
"dotnet": {
|
|
434
|
+
"package": "Amazon.CDK.AWS.AppTest"
|
|
435
|
+
},
|
|
436
|
+
"java": {
|
|
437
|
+
"package": "software.amazon.awscdk.services.apptest"
|
|
438
|
+
},
|
|
439
|
+
"python": {
|
|
440
|
+
"module": "aws_cdk.aws_apptest"
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
},
|
|
353
444
|
"aws-cdk-lib.aws_aps": {
|
|
354
445
|
"targets": {
|
|
355
446
|
"dotnet": {
|
|
@@ -363,6 +454,19 @@
|
|
|
363
454
|
}
|
|
364
455
|
}
|
|
365
456
|
},
|
|
457
|
+
"aws-cdk-lib.aws_arczonalshift": {
|
|
458
|
+
"targets": {
|
|
459
|
+
"dotnet": {
|
|
460
|
+
"package": "Amazon.CDK.AWS.ARCZonalShift"
|
|
461
|
+
},
|
|
462
|
+
"java": {
|
|
463
|
+
"package": "software.amazon.awscdk.services.arczonalshift"
|
|
464
|
+
},
|
|
465
|
+
"python": {
|
|
466
|
+
"module": "aws_cdk.aws_arczonalshift"
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
},
|
|
366
470
|
"aws-cdk-lib.aws_athena": {
|
|
367
471
|
"targets": {
|
|
368
472
|
"dotnet": {
|
|
@@ -441,6 +545,19 @@
|
|
|
441
545
|
}
|
|
442
546
|
}
|
|
443
547
|
},
|
|
548
|
+
"aws-cdk-lib.aws_b2bi": {
|
|
549
|
+
"targets": {
|
|
550
|
+
"dotnet": {
|
|
551
|
+
"package": "Amazon.CDK.AWS.B2BI"
|
|
552
|
+
},
|
|
553
|
+
"java": {
|
|
554
|
+
"package": "software.amazon.awscdk.services.b2bi"
|
|
555
|
+
},
|
|
556
|
+
"python": {
|
|
557
|
+
"module": "aws_cdk.aws_b2bi"
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
},
|
|
444
561
|
"aws-cdk-lib.aws_backup": {
|
|
445
562
|
"targets": {
|
|
446
563
|
"dotnet": {
|
|
@@ -460,7 +577,7 @@
|
|
|
460
577
|
"package": "Amazon.CDK.AWS.BackupGateway"
|
|
461
578
|
},
|
|
462
579
|
"java": {
|
|
463
|
-
"package": "services.backupgateway"
|
|
580
|
+
"package": "software.amazon.awscdk.services.backupgateway"
|
|
464
581
|
},
|
|
465
582
|
"python": {
|
|
466
583
|
"module": "aws_cdk.aws_backupgateway"
|
|
@@ -480,6 +597,32 @@
|
|
|
480
597
|
}
|
|
481
598
|
}
|
|
482
599
|
},
|
|
600
|
+
"aws-cdk-lib.aws_bcmdataexports": {
|
|
601
|
+
"targets": {
|
|
602
|
+
"dotnet": {
|
|
603
|
+
"package": "Amazon.CDK.AWS.BCMDataExports"
|
|
604
|
+
},
|
|
605
|
+
"java": {
|
|
606
|
+
"package": "software.amazon.awscdk.services.bcmdataexports"
|
|
607
|
+
},
|
|
608
|
+
"python": {
|
|
609
|
+
"module": "aws_cdk.aws_bcmdataexports"
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
},
|
|
613
|
+
"aws-cdk-lib.aws_bedrock": {
|
|
614
|
+
"targets": {
|
|
615
|
+
"dotnet": {
|
|
616
|
+
"package": "Amazon.CDK.AWS.Bedrock"
|
|
617
|
+
},
|
|
618
|
+
"java": {
|
|
619
|
+
"package": "software.amazon.awscdk.services.bedrock"
|
|
620
|
+
},
|
|
621
|
+
"python": {
|
|
622
|
+
"module": "aws_cdk.aws_bedrock"
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
},
|
|
483
626
|
"aws-cdk-lib.aws_billingconductor": {
|
|
484
627
|
"targets": {
|
|
485
628
|
"dotnet": {
|
|
@@ -564,13 +707,26 @@
|
|
|
564
707
|
"package": "Amazon.CDK.AWS.CleanRooms"
|
|
565
708
|
},
|
|
566
709
|
"java": {
|
|
567
|
-
"package": "services.cleanrooms"
|
|
710
|
+
"package": "software.amazon.awscdk.services.cleanrooms"
|
|
568
711
|
},
|
|
569
712
|
"python": {
|
|
570
713
|
"module": "aws_cdk.aws_cleanrooms"
|
|
571
714
|
}
|
|
572
715
|
}
|
|
573
716
|
},
|
|
717
|
+
"aws-cdk-lib.aws_cleanroomsml": {
|
|
718
|
+
"targets": {
|
|
719
|
+
"dotnet": {
|
|
720
|
+
"package": "Amazon.CDK.AWS.CleanRoomsML"
|
|
721
|
+
},
|
|
722
|
+
"java": {
|
|
723
|
+
"package": "software.amazon.awscdk.services.cleanroomsml"
|
|
724
|
+
},
|
|
725
|
+
"python": {
|
|
726
|
+
"module": "aws_cdk.aws_cleanroomsml"
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
},
|
|
574
730
|
"aws-cdk-lib.aws_cloud9": {
|
|
575
731
|
"targets": {
|
|
576
732
|
"dotnet": {
|
|
@@ -702,6 +858,19 @@
|
|
|
702
858
|
}
|
|
703
859
|
}
|
|
704
860
|
},
|
|
861
|
+
"aws-cdk-lib.aws_codeconnections": {
|
|
862
|
+
"targets": {
|
|
863
|
+
"dotnet": {
|
|
864
|
+
"package": "Amazon.CDK.AWS.CodeConnections"
|
|
865
|
+
},
|
|
866
|
+
"java": {
|
|
867
|
+
"package": "software.amazon.awscdk.services.codeconnections"
|
|
868
|
+
},
|
|
869
|
+
"python": {
|
|
870
|
+
"module": "aws_cdk.aws_codeconnections"
|
|
871
|
+
}
|
|
872
|
+
}
|
|
873
|
+
},
|
|
705
874
|
"aws-cdk-lib.aws_codedeploy": {
|
|
706
875
|
"targets": {
|
|
707
876
|
"dotnet": {
|
|
@@ -871,6 +1040,19 @@
|
|
|
871
1040
|
}
|
|
872
1041
|
}
|
|
873
1042
|
},
|
|
1043
|
+
"aws-cdk-lib.aws_connectcampaignsv2": {
|
|
1044
|
+
"targets": {
|
|
1045
|
+
"dotnet": {
|
|
1046
|
+
"package": "Amazon.CDK.AWS.ConnectCampaignsV2"
|
|
1047
|
+
},
|
|
1048
|
+
"java": {
|
|
1049
|
+
"package": "software.amazon.awscdk.services.connectcampaignsv2"
|
|
1050
|
+
},
|
|
1051
|
+
"python": {
|
|
1052
|
+
"module": "aws_cdk.aws_connectcampaignsv2"
|
|
1053
|
+
}
|
|
1054
|
+
}
|
|
1055
|
+
},
|
|
874
1056
|
"aws-cdk-lib.aws_controltower": {
|
|
875
1057
|
"targets": {
|
|
876
1058
|
"dotnet": {
|
|
@@ -949,6 +1131,19 @@
|
|
|
949
1131
|
}
|
|
950
1132
|
}
|
|
951
1133
|
},
|
|
1134
|
+
"aws-cdk-lib.aws_datazone": {
|
|
1135
|
+
"targets": {
|
|
1136
|
+
"dotnet": {
|
|
1137
|
+
"package": "Amazon.CDK.AWS.DataZone"
|
|
1138
|
+
},
|
|
1139
|
+
"java": {
|
|
1140
|
+
"package": "software.amazon.awscdk.services.datazone"
|
|
1141
|
+
},
|
|
1142
|
+
"python": {
|
|
1143
|
+
"module": "aws_cdk.aws_datazone"
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
},
|
|
952
1147
|
"aws-cdk-lib.aws_dax": {
|
|
953
1148
|
"targets": {
|
|
954
1149
|
"dotnet": {
|
|
@@ -962,6 +1157,19 @@
|
|
|
962
1157
|
}
|
|
963
1158
|
}
|
|
964
1159
|
},
|
|
1160
|
+
"aws-cdk-lib.aws_deadline": {
|
|
1161
|
+
"targets": {
|
|
1162
|
+
"dotnet": {
|
|
1163
|
+
"package": "Amazon.CDK.AWS.Deadline"
|
|
1164
|
+
},
|
|
1165
|
+
"java": {
|
|
1166
|
+
"package": "software.amazon.awscdk.services.deadline"
|
|
1167
|
+
},
|
|
1168
|
+
"python": {
|
|
1169
|
+
"module": "aws_cdk.aws_deadline"
|
|
1170
|
+
}
|
|
1171
|
+
}
|
|
1172
|
+
},
|
|
965
1173
|
"aws-cdk-lib.aws_detective": {
|
|
966
1174
|
"targets": {
|
|
967
1175
|
"dotnet": {
|
|
@@ -1300,6 +1508,19 @@
|
|
|
1300
1508
|
}
|
|
1301
1509
|
}
|
|
1302
1510
|
},
|
|
1511
|
+
"aws-cdk-lib.aws_entityresolution": {
|
|
1512
|
+
"targets": {
|
|
1513
|
+
"dotnet": {
|
|
1514
|
+
"package": "Amazon.CDK.AWS.EntityResolution"
|
|
1515
|
+
},
|
|
1516
|
+
"java": {
|
|
1517
|
+
"package": "software.amazon.awscdk.services.entityresolution"
|
|
1518
|
+
},
|
|
1519
|
+
"python": {
|
|
1520
|
+
"module": "aws_cdk.aws_entityresolution"
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
},
|
|
1303
1524
|
"aws-cdk-lib.aws_events": {
|
|
1304
1525
|
"targets": {
|
|
1305
1526
|
"dotnet": {
|
|
@@ -1547,6 +1768,19 @@
|
|
|
1547
1768
|
}
|
|
1548
1769
|
}
|
|
1549
1770
|
},
|
|
1771
|
+
"aws-cdk-lib.aws_healthimaging": {
|
|
1772
|
+
"targets": {
|
|
1773
|
+
"dotnet": {
|
|
1774
|
+
"package": "Amazon.CDK.AWS.HealthImaging"
|
|
1775
|
+
},
|
|
1776
|
+
"java": {
|
|
1777
|
+
"package": "software.amazon.awscdk.services.healthimaging"
|
|
1778
|
+
},
|
|
1779
|
+
"python": {
|
|
1780
|
+
"module": "aws_cdk.aws_healthimaging"
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
},
|
|
1550
1784
|
"aws-cdk-lib.aws_healthlake": {
|
|
1551
1785
|
"targets": {
|
|
1552
1786
|
"dotnet": {
|
|
@@ -1638,29 +1872,29 @@
|
|
|
1638
1872
|
}
|
|
1639
1873
|
}
|
|
1640
1874
|
},
|
|
1641
|
-
"aws-cdk-lib.
|
|
1875
|
+
"aws-cdk-lib.aws_invoicing": {
|
|
1642
1876
|
"targets": {
|
|
1643
1877
|
"dotnet": {
|
|
1644
|
-
"
|
|
1878
|
+
"package": "Amazon.CDK.AWS.Invoicing"
|
|
1645
1879
|
},
|
|
1646
1880
|
"java": {
|
|
1647
|
-
"package": "software.amazon.awscdk.services.
|
|
1881
|
+
"package": "software.amazon.awscdk.services.invoicing"
|
|
1648
1882
|
},
|
|
1649
1883
|
"python": {
|
|
1650
|
-
"module": "aws_cdk.
|
|
1884
|
+
"module": "aws_cdk.aws_invoicing"
|
|
1651
1885
|
}
|
|
1652
1886
|
}
|
|
1653
1887
|
},
|
|
1654
|
-
"aws-cdk-lib.
|
|
1888
|
+
"aws-cdk-lib.aws_iot": {
|
|
1655
1889
|
"targets": {
|
|
1656
1890
|
"dotnet": {
|
|
1657
|
-
"namespace": "Amazon.CDK.AWS.
|
|
1891
|
+
"namespace": "Amazon.CDK.AWS.IoT"
|
|
1658
1892
|
},
|
|
1659
1893
|
"java": {
|
|
1660
|
-
"package": "software.amazon.awscdk.services.
|
|
1894
|
+
"package": "software.amazon.awscdk.services.iot"
|
|
1661
1895
|
},
|
|
1662
1896
|
"python": {
|
|
1663
|
-
"module": "aws_cdk.
|
|
1897
|
+
"module": "aws_cdk.aws_iot"
|
|
1664
1898
|
}
|
|
1665
1899
|
}
|
|
1666
1900
|
},
|
|
@@ -1989,6 +2223,19 @@
|
|
|
1989
2223
|
}
|
|
1990
2224
|
}
|
|
1991
2225
|
},
|
|
2226
|
+
"aws-cdk-lib.aws_launchwizard": {
|
|
2227
|
+
"targets": {
|
|
2228
|
+
"dotnet": {
|
|
2229
|
+
"package": "Amazon.CDK.AWS.LaunchWizard"
|
|
2230
|
+
},
|
|
2231
|
+
"java": {
|
|
2232
|
+
"package": "software.amazon.awscdk.services.launchwizard"
|
|
2233
|
+
},
|
|
2234
|
+
"python": {
|
|
2235
|
+
"module": "aws_cdk.aws_launchwizard"
|
|
2236
|
+
}
|
|
2237
|
+
}
|
|
2238
|
+
},
|
|
1992
2239
|
"aws-cdk-lib.aws_lex": {
|
|
1993
2240
|
"targets": {
|
|
1994
2241
|
"dotnet": {
|
|
@@ -2197,6 +2444,19 @@
|
|
|
2197
2444
|
}
|
|
2198
2445
|
}
|
|
2199
2446
|
},
|
|
2447
|
+
"aws-cdk-lib.aws_mediapackagev2": {
|
|
2448
|
+
"targets": {
|
|
2449
|
+
"dotnet": {
|
|
2450
|
+
"package": "Amazon.CDK.AWS.MediaPackageV2"
|
|
2451
|
+
},
|
|
2452
|
+
"java": {
|
|
2453
|
+
"package": "software.amazon.awscdk.services.mediapackagev2"
|
|
2454
|
+
},
|
|
2455
|
+
"python": {
|
|
2456
|
+
"module": "aws_cdk.aws_mediapackagev2"
|
|
2457
|
+
}
|
|
2458
|
+
}
|
|
2459
|
+
},
|
|
2200
2460
|
"aws-cdk-lib.aws_mediastore": {
|
|
2201
2461
|
"targets": {
|
|
2202
2462
|
"dotnet": {
|
|
@@ -2275,6 +2535,19 @@
|
|
|
2275
2535
|
}
|
|
2276
2536
|
}
|
|
2277
2537
|
},
|
|
2538
|
+
"aws-cdk-lib.aws_neptunegraph": {
|
|
2539
|
+
"targets": {
|
|
2540
|
+
"dotnet": {
|
|
2541
|
+
"package": "Amazon.CDK.AWS.NeptuneGraph"
|
|
2542
|
+
},
|
|
2543
|
+
"java": {
|
|
2544
|
+
"package": "software.amazon.awscdk.services.neptunegraph"
|
|
2545
|
+
},
|
|
2546
|
+
"python": {
|
|
2547
|
+
"module": "aws_cdk.aws_neptunegraph"
|
|
2548
|
+
}
|
|
2549
|
+
}
|
|
2550
|
+
},
|
|
2278
2551
|
"aws-cdk-lib.aws_networkfirewall": {
|
|
2279
2552
|
"targets": {
|
|
2280
2553
|
"dotnet": {
|
|
@@ -2314,6 +2587,32 @@
|
|
|
2314
2587
|
}
|
|
2315
2588
|
}
|
|
2316
2589
|
},
|
|
2590
|
+
"aws-cdk-lib.aws_notifications": {
|
|
2591
|
+
"targets": {
|
|
2592
|
+
"dotnet": {
|
|
2593
|
+
"package": "Amazon.CDK.AWS.Notifications"
|
|
2594
|
+
},
|
|
2595
|
+
"java": {
|
|
2596
|
+
"package": "software.amazon.awscdk.services.notifications"
|
|
2597
|
+
},
|
|
2598
|
+
"python": {
|
|
2599
|
+
"module": "aws_cdk.aws_notifications"
|
|
2600
|
+
}
|
|
2601
|
+
}
|
|
2602
|
+
},
|
|
2603
|
+
"aws-cdk-lib.aws_notificationscontacts": {
|
|
2604
|
+
"targets": {
|
|
2605
|
+
"dotnet": {
|
|
2606
|
+
"package": "Amazon.CDK.AWS.NotificationsContacts"
|
|
2607
|
+
},
|
|
2608
|
+
"java": {
|
|
2609
|
+
"package": "software.amazon.awscdk.services.notificationscontacts"
|
|
2610
|
+
},
|
|
2611
|
+
"python": {
|
|
2612
|
+
"module": "aws_cdk.aws_notificationscontacts"
|
|
2613
|
+
}
|
|
2614
|
+
}
|
|
2615
|
+
},
|
|
2317
2616
|
"aws-cdk-lib.aws_oam": {
|
|
2318
2617
|
"targets": {
|
|
2319
2618
|
"dotnet": {
|
|
@@ -2411,7 +2710,7 @@
|
|
|
2411
2710
|
"package": "Amazon.CDK.AWS.OSIS"
|
|
2412
2711
|
},
|
|
2413
2712
|
"java": {
|
|
2414
|
-
"package": "services.osis"
|
|
2713
|
+
"package": "software.amazon.awscdk.services.osis"
|
|
2415
2714
|
},
|
|
2416
2715
|
"python": {
|
|
2417
2716
|
"module": "aws_cdk.aws_osis"
|
|
@@ -2431,6 +2730,58 @@
|
|
|
2431
2730
|
}
|
|
2432
2731
|
}
|
|
2433
2732
|
},
|
|
2733
|
+
"aws-cdk-lib.aws_paymentcryptography": {
|
|
2734
|
+
"targets": {
|
|
2735
|
+
"dotnet": {
|
|
2736
|
+
"package": "Amazon.CDK.AWS.PaymentCryptography"
|
|
2737
|
+
},
|
|
2738
|
+
"java": {
|
|
2739
|
+
"package": "software.amazon.awscdk.services.paymentcryptography"
|
|
2740
|
+
},
|
|
2741
|
+
"python": {
|
|
2742
|
+
"module": "aws_cdk.aws_paymentcryptography"
|
|
2743
|
+
}
|
|
2744
|
+
}
|
|
2745
|
+
},
|
|
2746
|
+
"aws-cdk-lib.aws_pcaconnectorad": {
|
|
2747
|
+
"targets": {
|
|
2748
|
+
"dotnet": {
|
|
2749
|
+
"package": "Amazon.CDK.AWS.PCAConnectorAD"
|
|
2750
|
+
},
|
|
2751
|
+
"java": {
|
|
2752
|
+
"package": "software.amazon.awscdk.services.pcaconnectorad"
|
|
2753
|
+
},
|
|
2754
|
+
"python": {
|
|
2755
|
+
"module": "aws_cdk.aws_pcaconnectorad"
|
|
2756
|
+
}
|
|
2757
|
+
}
|
|
2758
|
+
},
|
|
2759
|
+
"aws-cdk-lib.aws_pcaconnectorscep": {
|
|
2760
|
+
"targets": {
|
|
2761
|
+
"dotnet": {
|
|
2762
|
+
"package": "Amazon.CDK.AWS.PCAConnectorSCEP"
|
|
2763
|
+
},
|
|
2764
|
+
"java": {
|
|
2765
|
+
"package": "software.amazon.awscdk.services.pcaconnectorscep"
|
|
2766
|
+
},
|
|
2767
|
+
"python": {
|
|
2768
|
+
"module": "aws_cdk.aws_pcaconnectorscep"
|
|
2769
|
+
}
|
|
2770
|
+
}
|
|
2771
|
+
},
|
|
2772
|
+
"aws-cdk-lib.aws_pcs": {
|
|
2773
|
+
"targets": {
|
|
2774
|
+
"dotnet": {
|
|
2775
|
+
"package": "Amazon.CDK.AWS.PCS"
|
|
2776
|
+
},
|
|
2777
|
+
"java": {
|
|
2778
|
+
"package": "software.amazon.awscdk.services.pcs"
|
|
2779
|
+
},
|
|
2780
|
+
"python": {
|
|
2781
|
+
"module": "aws_cdk.aws_pcs"
|
|
2782
|
+
}
|
|
2783
|
+
}
|
|
2784
|
+
},
|
|
2434
2785
|
"aws-cdk-lib.aws_personalize": {
|
|
2435
2786
|
"targets": {
|
|
2436
2787
|
"dotnet": {
|
|
@@ -2489,13 +2840,26 @@
|
|
|
2489
2840
|
"package": "Amazon.CDK.AWS.Proton"
|
|
2490
2841
|
},
|
|
2491
2842
|
"java": {
|
|
2492
|
-
"package": "services.proton"
|
|
2843
|
+
"package": "software.amazon.awscdk.services.proton"
|
|
2493
2844
|
},
|
|
2494
2845
|
"python": {
|
|
2495
2846
|
"module": "aws_cdk.aws_proton"
|
|
2496
2847
|
}
|
|
2497
2848
|
}
|
|
2498
2849
|
},
|
|
2850
|
+
"aws-cdk-lib.aws_qbusiness": {
|
|
2851
|
+
"targets": {
|
|
2852
|
+
"dotnet": {
|
|
2853
|
+
"package": "Amazon.CDK.AWS.QBusiness"
|
|
2854
|
+
},
|
|
2855
|
+
"java": {
|
|
2856
|
+
"package": "software.amazon.awscdk.services.qbusiness"
|
|
2857
|
+
},
|
|
2858
|
+
"python": {
|
|
2859
|
+
"module": "aws_cdk.aws_qbusiness"
|
|
2860
|
+
}
|
|
2861
|
+
}
|
|
2862
|
+
},
|
|
2499
2863
|
"aws-cdk-lib.aws_qldb": {
|
|
2500
2864
|
"targets": {
|
|
2501
2865
|
"dotnet": {
|
|
@@ -2535,6 +2899,19 @@
|
|
|
2535
2899
|
}
|
|
2536
2900
|
}
|
|
2537
2901
|
},
|
|
2902
|
+
"aws-cdk-lib.aws_rbin": {
|
|
2903
|
+
"targets": {
|
|
2904
|
+
"dotnet": {
|
|
2905
|
+
"package": "Amazon.CDK.AWS.Rbin"
|
|
2906
|
+
},
|
|
2907
|
+
"java": {
|
|
2908
|
+
"package": "software.amazon.awscdk.services.rbin"
|
|
2909
|
+
},
|
|
2910
|
+
"python": {
|
|
2911
|
+
"module": "aws_cdk.aws_rbin"
|
|
2912
|
+
}
|
|
2913
|
+
}
|
|
2914
|
+
},
|
|
2538
2915
|
"aws-cdk-lib.aws_rds": {
|
|
2539
2916
|
"targets": {
|
|
2540
2917
|
"dotnet": {
|
|
@@ -2704,6 +3081,19 @@
|
|
|
2704
3081
|
}
|
|
2705
3082
|
}
|
|
2706
3083
|
},
|
|
3084
|
+
"aws-cdk-lib.aws_route53profiles": {
|
|
3085
|
+
"targets": {
|
|
3086
|
+
"dotnet": {
|
|
3087
|
+
"package": "Amazon.CDK.AWS.Route53Profiles"
|
|
3088
|
+
},
|
|
3089
|
+
"java": {
|
|
3090
|
+
"package": "software.amazon.awscdk.services.route53profiles"
|
|
3091
|
+
},
|
|
3092
|
+
"python": {
|
|
3093
|
+
"module": "aws_cdk.aws_route53profiles"
|
|
3094
|
+
}
|
|
3095
|
+
}
|
|
3096
|
+
},
|
|
2707
3097
|
"aws-cdk-lib.aws_route53recoverycontrol": {
|
|
2708
3098
|
"targets": {
|
|
2709
3099
|
"dotnet": {
|
|
@@ -2808,6 +3198,19 @@
|
|
|
2808
3198
|
}
|
|
2809
3199
|
}
|
|
2810
3200
|
},
|
|
3201
|
+
"aws-cdk-lib.aws_s3express": {
|
|
3202
|
+
"targets": {
|
|
3203
|
+
"dotnet": {
|
|
3204
|
+
"package": "Amazon.CDK.AWS.S3Express"
|
|
3205
|
+
},
|
|
3206
|
+
"java": {
|
|
3207
|
+
"package": "software.amazon.awscdk.services.s3express"
|
|
3208
|
+
},
|
|
3209
|
+
"python": {
|
|
3210
|
+
"module": "aws_cdk.aws_s3express"
|
|
3211
|
+
}
|
|
3212
|
+
}
|
|
3213
|
+
},
|
|
2811
3214
|
"aws-cdk-lib.aws_s3objectlambda": {
|
|
2812
3215
|
"targets": {
|
|
2813
3216
|
"dotnet": {
|
|
@@ -2834,6 +3237,19 @@
|
|
|
2834
3237
|
}
|
|
2835
3238
|
}
|
|
2836
3239
|
},
|
|
3240
|
+
"aws-cdk-lib.aws_s3tables": {
|
|
3241
|
+
"targets": {
|
|
3242
|
+
"dotnet": {
|
|
3243
|
+
"package": "Amazon.CDK.AWS.S3Tables"
|
|
3244
|
+
},
|
|
3245
|
+
"java": {
|
|
3246
|
+
"package": "software.amazon.awscdk.services.s3tables"
|
|
3247
|
+
},
|
|
3248
|
+
"python": {
|
|
3249
|
+
"module": "aws_cdk.aws_s3tables"
|
|
3250
|
+
}
|
|
3251
|
+
}
|
|
3252
|
+
},
|
|
2837
3253
|
"aws-cdk-lib.aws_sagemaker": {
|
|
2838
3254
|
"targets": {
|
|
2839
3255
|
"dotnet": {
|
|
@@ -2912,6 +3328,19 @@
|
|
|
2912
3328
|
}
|
|
2913
3329
|
}
|
|
2914
3330
|
},
|
|
3331
|
+
"aws-cdk-lib.aws_securitylake": {
|
|
3332
|
+
"targets": {
|
|
3333
|
+
"dotnet": {
|
|
3334
|
+
"package": "Amazon.CDK.AWS.SecurityLake"
|
|
3335
|
+
},
|
|
3336
|
+
"java": {
|
|
3337
|
+
"package": "software.amazon.awscdk.services.securitylake"
|
|
3338
|
+
},
|
|
3339
|
+
"python": {
|
|
3340
|
+
"module": "aws_cdk.aws_securitylake"
|
|
3341
|
+
}
|
|
3342
|
+
}
|
|
3343
|
+
},
|
|
2915
3344
|
"aws-cdk-lib.aws_servicecatalog": {
|
|
2916
3345
|
"targets": {
|
|
2917
3346
|
"dotnet": {
|
|
@@ -2983,7 +3412,7 @@
|
|
|
2983
3412
|
"package": "Amazon.CDK.AWS.Shield"
|
|
2984
3413
|
},
|
|
2985
3414
|
"java": {
|
|
2986
|
-
"package": "services.shield"
|
|
3415
|
+
"package": "software.amazon.awscdk.services.shield"
|
|
2987
3416
|
},
|
|
2988
3417
|
"python": {
|
|
2989
3418
|
"module": "aws_cdk.aws_shield"
|
|
@@ -3094,6 +3523,19 @@
|
|
|
3094
3523
|
}
|
|
3095
3524
|
}
|
|
3096
3525
|
},
|
|
3526
|
+
"aws-cdk-lib.aws_ssmquicksetup": {
|
|
3527
|
+
"targets": {
|
|
3528
|
+
"dotnet": {
|
|
3529
|
+
"package": "Amazon.CDK.AWS.SSMQuickSetup"
|
|
3530
|
+
},
|
|
3531
|
+
"java": {
|
|
3532
|
+
"package": "software.amazon.awscdk.services.ssmquicksetup"
|
|
3533
|
+
},
|
|
3534
|
+
"python": {
|
|
3535
|
+
"module": "aws_cdk.aws_ssmquicksetup"
|
|
3536
|
+
}
|
|
3537
|
+
}
|
|
3538
|
+
},
|
|
3097
3539
|
"aws-cdk-lib.aws_sso": {
|
|
3098
3540
|
"targets": {
|
|
3099
3541
|
"dotnet": {
|
|
@@ -3204,7 +3646,7 @@
|
|
|
3204
3646
|
"package": "Amazon.CDK.AWS.VerifiedPermissions"
|
|
3205
3647
|
},
|
|
3206
3648
|
"java": {
|
|
3207
|
-
"package": "services.verifiedpermissions"
|
|
3649
|
+
"package": "software.amazon.awscdk.services.verifiedpermissions"
|
|
3208
3650
|
},
|
|
3209
3651
|
"python": {
|
|
3210
3652
|
"module": "aws_cdk.aws_verifiedpermissions"
|
|
@@ -3302,32 +3744,46 @@
|
|
|
3302
3744
|
}
|
|
3303
3745
|
}
|
|
3304
3746
|
},
|
|
3305
|
-
"aws-cdk-lib.
|
|
3747
|
+
"aws-cdk-lib.aws_workspacesthinclient": {
|
|
3306
3748
|
"targets": {
|
|
3307
3749
|
"dotnet": {
|
|
3308
|
-
"
|
|
3750
|
+
"package": "Amazon.CDK.AWS.WorkSpacesThinClient"
|
|
3309
3751
|
},
|
|
3310
3752
|
"java": {
|
|
3311
|
-
"package": "software.amazon.awscdk.services.
|
|
3753
|
+
"package": "software.amazon.awscdk.services.workspacesthinclient"
|
|
3312
3754
|
},
|
|
3313
3755
|
"python": {
|
|
3314
|
-
"module": "aws_cdk.
|
|
3756
|
+
"module": "aws_cdk.aws_workspacesthinclient"
|
|
3757
|
+
}
|
|
3758
|
+
}
|
|
3759
|
+
},
|
|
3760
|
+
"aws-cdk-lib.aws_workspacesweb": {
|
|
3761
|
+
"targets": {
|
|
3762
|
+
"dotnet": {
|
|
3763
|
+
"package": "Amazon.CDK.AWS.WorkSpacesWeb"
|
|
3764
|
+
},
|
|
3765
|
+
"java": {
|
|
3766
|
+
"package": "software.amazon.awscdk.services.workspacesweb"
|
|
3767
|
+
},
|
|
3768
|
+
"python": {
|
|
3769
|
+
"module": "aws_cdk.aws_workspacesweb"
|
|
3315
3770
|
}
|
|
3316
3771
|
}
|
|
3317
3772
|
},
|
|
3318
|
-
"aws-cdk-lib.
|
|
3773
|
+
"aws-cdk-lib.aws_xray": {
|
|
3319
3774
|
"targets": {
|
|
3320
3775
|
"dotnet": {
|
|
3321
|
-
"namespace": "Amazon.CDK.
|
|
3776
|
+
"namespace": "Amazon.CDK.AWS.XRay"
|
|
3322
3777
|
},
|
|
3323
3778
|
"java": {
|
|
3324
|
-
"package": "software.amazon.awscdk.
|
|
3779
|
+
"package": "software.amazon.awscdk.services.xray"
|
|
3325
3780
|
},
|
|
3326
3781
|
"python": {
|
|
3327
|
-
"module": "aws_cdk.
|
|
3782
|
+
"module": "aws_cdk.aws_xray"
|
|
3328
3783
|
}
|
|
3329
3784
|
}
|
|
3330
3785
|
},
|
|
3786
|
+
"aws-cdk-lib.cloud_assembly_schema": {},
|
|
3331
3787
|
"aws-cdk-lib.cloudformation_include": {
|
|
3332
3788
|
"targets": {
|
|
3333
3789
|
"dotnet": {
|
|
@@ -3496,14 +3952,53 @@
|
|
|
3496
3952
|
"module": "constructs"
|
|
3497
3953
|
}
|
|
3498
3954
|
}
|
|
3955
|
+
},
|
|
3956
|
+
"projen": {
|
|
3957
|
+
"submodules": {
|
|
3958
|
+
"projen.awscdk": {},
|
|
3959
|
+
"projen.build": {},
|
|
3960
|
+
"projen.cdk": {},
|
|
3961
|
+
"projen.cdk8s": {},
|
|
3962
|
+
"projen.cdktf": {},
|
|
3963
|
+
"projen.circleci": {},
|
|
3964
|
+
"projen.github": {},
|
|
3965
|
+
"projen.github.workflows": {},
|
|
3966
|
+
"projen.gitlab": {},
|
|
3967
|
+
"projen.java": {},
|
|
3968
|
+
"projen.javascript": {},
|
|
3969
|
+
"projen.python": {},
|
|
3970
|
+
"projen.release": {},
|
|
3971
|
+
"projen.typescript": {},
|
|
3972
|
+
"projen.vscode": {},
|
|
3973
|
+
"projen.web": {}
|
|
3974
|
+
},
|
|
3975
|
+
"targets": {
|
|
3976
|
+
"go": {
|
|
3977
|
+
"moduleName": "github.com/projen/projen-go"
|
|
3978
|
+
},
|
|
3979
|
+
"java": {
|
|
3980
|
+
"maven": {
|
|
3981
|
+
"artifactId": "projen",
|
|
3982
|
+
"groupId": "io.github.cdklabs"
|
|
3983
|
+
},
|
|
3984
|
+
"package": "io.github.cdklabs.projen"
|
|
3985
|
+
},
|
|
3986
|
+
"js": {
|
|
3987
|
+
"npm": "projen"
|
|
3988
|
+
},
|
|
3989
|
+
"python": {
|
|
3990
|
+
"distName": "projen",
|
|
3991
|
+
"module": "projen"
|
|
3992
|
+
}
|
|
3993
|
+
}
|
|
3499
3994
|
}
|
|
3500
3995
|
},
|
|
3501
3996
|
"description": "An opinionated way to secure root email addresses for AWS accounts.",
|
|
3502
3997
|
"docs": {
|
|
3503
|
-
"stability": "
|
|
3998
|
+
"stability": "experimental"
|
|
3504
3999
|
},
|
|
3505
4000
|
"homepage": "https://github.com/MV-Consulting/awscdk-rootmail",
|
|
3506
|
-
"jsiiVersion": "5.5
|
|
4001
|
+
"jsiiVersion": "5.7.5 (build eb860fb)",
|
|
3507
4002
|
"keywords": [
|
|
3508
4003
|
"aws",
|
|
3509
4004
|
"cdk",
|
|
@@ -3522,7 +4017,7 @@
|
|
|
3522
4017
|
},
|
|
3523
4018
|
"name": "@mavogel/awscdk-rootmail",
|
|
3524
4019
|
"readme": {
|
|
3525
|
-
"markdown": "# awscdk-rootmail\n\nA single email box for all your root user emails in all AWS accounts of the organization.\n- The cdk implementation and **adaption** of the [superwerker](https://superwerker.cloud/) rootmail feature.\n- See [here](docs/adrs/rootmail.md) for a detailed Architectural Decision Record ([ADR](https://adr.github.io/))\n\n## TL;DR ⚡\nEach AWS account needs one unique email address (the so-called \"AWS account root user email address\").\n\nAccess to these email addresses must be adequately secured since they provide privileged access to AWS accounts, such as account deletion procedures.\n\nThis is why you only need 1 mailing list for the AWS Management (formerly *root*) account,\nwe recommend the following pattern `aws-roots+<uuid>@mycompany.test`\n\n> [!NOTE]\n> Maximum **64** characters are allowed for the whole address.\n\nAnd as you own the domain `mycompany.test` you can add a subdomain, e.g. `aws`, for which all EMails will then be received with this solution within this particular AWS Management account.\n\nFeel free to take a look at the design\n\n\n## Usage ✨\n\nInstall the dependencies:\n```sh\nbrew install aws-cli node@18 esbuild\n```\n\nYou can chose via embedding the construct in your cdk-app or use is directly via Cloudformation.\n### cdk 🤖\n1. To start a new project we recommend using [projen](https://projen.io/).\n 1. Create a new projen project\n ```sh\n npx projen new awscdk-app-ts\n ```\n 2. Add `@mavogel/awscdk-rootmail` as a dependency to your project in the `.projenrc.ts` file\n 3. Run `yarn run projen` to install it\n2. In you `main.ts` file add the following code\n```ts\nimport { Rootmail } from '@mavogel/awscdk-rootmail';\nimport {\n App,\n Stack,\n StackProps,\n aws_route53 as r53,\n} from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\n\nexport class MyStack extends Stack {\n constructor(scope: Construct, id: string, props: StackProps = {}) {\n super(scope, id, props);\n\n const domain = 'mycompany.com' // registered via Route53 in the SAME account\n\n const hostedZone = r53.HostedZone.fromLookup(this, 'rootmail-parent-hosted-zone', {\n domainName: domain,\n });\n\n new Rootmail(this, 'rootmail', {\n // 1. a domain you own, registered via Route53 in the SAME account\n domain: domain,\n // 2. so the subdomain will be aws.mycompany.test and\n subdomain: 'aws',\n // 3. wired / delegated automatically to\n wireDNSToHostedZoneID: hostedZone.hostedZoneId,\n });\n }\n}\n```\n2. run on your commandline\n```sh\nyarn run deploy\n```\n1. No need to do anything, the NS records are **automatically** propagated as the parent Hosted Zone is in the same account!\n2. The `hosted-zone-dkim-propagation-provider.is-complete-handler` Lambda function checks every 10 seconds if the DNS for the subdomain is propagated. Details are in the Cloudwatch log group.\n\n> [!TIP]\n> Take a look at the solution design [here](docs/adrs/solution-design-domain-same-aws-account.md) for more details.\n\n### cdk with your own receiver function 🏗️\nYou might also want to pass in you own function on what to do when an EMail is received\n\n> [!TIP]\n> You can add any custom code as receiver function you want.\n\n<details>\n <summary>... click here for the details</summary>\n\nfile `functions/custom-ses-receive-function.ts` which gets the 2 environment variables populated\n- `EMAIL_BUCKET`\n- `EMAIL_BUCKET_ARN`\n\nas well as `s3:GetObject` on the `RootMail/*` objects in the created Rootmail `S3` bucket.\n\n```ts\nimport { S3 } from '@aws-sdk/client-s3';\nimport { ParsedMail, simpleParser } from 'mailparser';\n// populated by default\nconst emailBucket = process.env.EMAIL_BUCKET;\nconst emailBucketArn = process.env.EMAIL_BUCKET_ARN;\nconst s3 = new S3();\n\n// SESEventRecordsToLambda\n// from https://docs.aws.amazon.com/ses/latest/dg/receiving-email-action-lambda-event.html\nexport const handler = async (event: SESEventRecordsToLambda) => {\n for (const record of event.Records) {\n\n const id = record.ses.mail.messageId;\n const key = `RootMail/${id}`;\n const response = await s3.getObject({ Bucket: emailBucket as string, Key: key });\n\n const msg: ParsedMail = await simpleParser(response.Body as unknown as Buffer);\n\n let title = msg.subject;\n console.log(`Title: ${title} from emailBucketArn: ${emailBucketArn}`);\n // use the content of the email body\n const body = msg.html;\n // add your custom code here ...\n\n // dummy example: list s3 buckets\n const buckets = await s3.listBuckets({});\n if (!buckets.Buckets) {\n console.log('No buckets found');\n return;\n }\n console.log('Buckets:');\n for (const bucket of buckets.Buckets || []) {\n console.log(bucket.Name);\n }\n }\n\n};\n```\nand you create a separate `NodejsFunction` as follows with the additionally needed IAM permissions:\n```ts\nconst customSesReceiveFunction = new NodejsFunction(stackUnderTest, 'custom-ses-receive-function', {\n functionName: PhysicalName.GENERATE_IF_NEEDED,\n entry: path.join(__dirname, 'functions', 'custom-ses-receive-function.ts'),\n runtime: lambda.Runtime.NODEJS_18_X,\n logRetention: 1,\n timeout: Duration.seconds(30),\n});\n\n// Note: any additional permissions you need to add to the function yourself!\ncustomSesReceiveFunction.addToRolePolicy(new iam.PolicyStatement({\n actions: [\n 's3:List*',\n ],\n resources: ['*'],\n}))\n```\nand then pass it into the `Rootmail` Stack\n```ts\nexport class MyStack extends Stack {\n constructor(scope: Construct, id: string, props: StackProps = {}) {\n super(scope, id, props);\n\n const domain = 'mycompany.test'\n const hostedZone = r53.HostedZone.fromLookup(this, 'rootmail-parent-hosted-zone', {\n domainName: domain,\n });\n\n const rootmail = new Rootmail(this, 'rootmail-stack', {\n domain: domain;\n autowireDNSParentHostedZoneID: hostedZone.hostedZoneId,\n env: {\n region: 'eu-west-1',\n },\n customSesReceiveFunction: customSesReceiveFunction, // <- pass it in here\n });\n }\n}\n```\n\n\n> [!TIP]\n> Take a look at the solution design for external DNS [here](docs/adrs/solution-design-external-dns-provider.md) for more details.\n\n</details>\n\n### Cloudformation 📦\nor use it directly a Cloudformation template `yaml` from the URL [here](https://mvc-prod-releases.s3.eu-central-1.amazonaws.com/rootmail/v0.0.258/awscdk-rootmail.template.yaml).\n\n\n<details>\n <summary>... click here for the details</summary>\n\nand fill out the parameters\n\n\n</details>\n\n\n## Known issues\n- [jsii/2071](https://github.com/aws/jsii/issues/2071): so adding `compilerOptions.\"esModuleInterop\": true,` in `tsconfig.json` is not possible. See aws-cdk usage with[typescript](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/#Usage_with_TypeScript). So we needed to change import from `import AWS from 'aws-sdk';` -> `import * as AWS from 'aws-sdk';` to be able to compile.\n\n## Related projects / questions\n- [aws-account-factory-email](https://github.com/aws-samples/aws-account-factory-email): a similar approach with SES, however you need to manually configure it upfront and also it about delivering root mails for a specific account to a specific mailing list and mainly decouples the real email address from the one of the AWS account. The main difference is that we do not *hide* or decouple the email address, but more make those as unique and unguessable/bruteforable as possible (with `uuids`).\n- The question `Is it best practise to use a shared mailbox as AWS root user address?` from [stackoverflow](https://stackoverflow.com/questions/76739635/is-it-best-practise-to-use-a-shared-mailbox-as-aws-root-user-address): yes of course you can also use `root+alias-1@mycompany.com` and `root+alias-2@mycompany.com` etc. for your\nroot EMail boxes.\n\n## 🚀 Unlock the Full Potential of Your AWS Cloud Infrastructure\n\nHi, I’m Manuel, an AWS expert passionate about empowering businesses with **scalable, resilient, and cost-optimized cloud solutions**. With **MV Consulting**, I specialize in crafting **tailored AWS architectures** and **DevOps-driven workflows** that not only meet your current needs but grow with you.\n\n---\n\n### 🌟 Why Work With Me?\n\n✔️ **Tailored AWS Solutions:** Every business is unique, so I design custom solutions that fit your goals and challenges.\n✔️ **Well-Architected Designs:** From scalability to security, my solutions align with AWS Well-Architected Framework.\n✔️ **Cloud-Native Focus:** I specialize in modern, cloud-native systems that embrace the full potential of AWS.\n✔️ **Business-Driven Tech:** Technology should serve your business, not the other way around.\n\n---\n\n### 🛠 What I Bring to the Table\n\n🔑 **12x AWS Certifications**\nI’m **AWS Certified Solutions Architect and DevOps – Professional** and hold numerous additional certifications, so you can trust I’ll bring industry best practices to your projects. Feel free to explose by [badges](https://www.credly.com/users/manuel-vogel)\n\n⚙️ **Infrastructure as Code (IaC)**\nWith deep expertise in **AWS CDK** and **Terraform**, I ensure your infrastructure is automated, maintainable, and scalable.\n\n📦 **DevOps Expertise**\nFrom CI/CD pipelines with **GitHub Actions** and **GitLab CI** to container orchestration **Kubernetes** and others, I deliver workflows that are smooth and efficient.\n\n🌐 **Hands-On Experience**\nWith over **7 years of AWS experience** and a decade in the tech world, I’ve delivered solutions for companies large and small. My open-source contributions showcase my commitment to transparency and innovation. Feel free to explore my [GitHub profile](https://github.com/mavogel)\n\n---\n\n### 💼 Let’s Build Something Great Together\n\nI know that choosing the right partner is critical to your success. When you work with me, you’re not just contracting an engineer – you’re gaining a trusted advisor and hands-on expert who cares about your business as much as you do.\n\n✔️ **Direct Collaboration**: No middlemen or red tape – you work with me directly.\n✔️ **Transparent Process**: Expect open communication, clear timelines, and visible results.\n✔️ **Real Value**: My solutions focus on delivering measurable impact for your business.\n\n\n<a href=\"https://tinyurl.com/mvc-15min\"><img alt=\"Schedule your call\" src=\"https://img.shields.io/badge/schedule%20your%20call-success.svg?style=for-the-badge\"/></a>\n\n---\n\n## 🙌 Acknowledgements\n\nBig shoutout to the amazing team behind [Projen](https://github.com/projen/projen)!\nTheir groundbreaking work simplifies cloud infrastructure projects and inspires us every day. 💡\n\n## Author\n\n[Manuel Vogel](https://manuel-vogel.de/about/)\n\n[](https://www.linkedin.com/in/manuel-vogel)\n[](https://github.com/mavogel)"
|
|
4020
|
+
"markdown": "\n[](https://github.com/MV-Consulting/awscdk-rootmail/actions/workflows/build.yml)\n[](https://eslint.org)\n[](https://github.com/MV-Consulting/awscdk-rootmail/releases)\n\n[](https://www.npmjs.com/package/@mavogel/awscdk-rootmail)\n[](https://www.npmjs.com/package/@mavogel/cdk-vscode-server)\n\n# awscdk-rootmail\n\nA single email box for all your root user emails in all AWS accounts of the organization.\n- The cdk implementation and **adaption** of the [superwerker](https://superwerker.cloud/) rootmail feature.\n- See [here](docs/adrs/rootmail.md) for a detailed Architectural Decision Record ([ADR](https://adr.github.io/))\n\n## TL;DR ⚡\nEach AWS account needs one unique email address (the so-called \"AWS account root user email address\").\n\nAccess to these email addresses must be adequately secured since they provide privileged access to AWS accounts, such as account deletion procedures.\n\nThis is why you only need 1 mailing list for the AWS Management (formerly *root*) account,\nwe recommend the following pattern `aws-roots+<uuid>@mycompany.test`\n\n> [!NOTE]\n> Maximum **64** characters are allowed for the whole address.\n\nAnd as you own the domain `mycompany.test` you can add a subdomain, e.g. `aws`, for which all EMails will then be received with this solution within this particular AWS Management account.\n\nFeel free to take a look at the design\n\n\n## Usage ✨\n\nInstall the dependencies:\n```sh\nbrew install aws-cli node@18 esbuild\n```\n\nYou can chose via embedding the construct in your cdk-app or use is directly via Cloudformation.\n### cdk 🤖\n1. To start a new project we recommend using [projen](https://projen.io/).\n 1. Create a new projen project\n ```sh\n npx projen new awscdk-app-ts\n ```\n 2. Add `@mavogel/awscdk-rootmail` as a dependency to your project in the `.projenrc.ts` file\n 3. Run `yarn run projen` to install it\n2. In you `main.ts` file add the following code\n```ts\nimport { Rootmail } from '@mavogel/awscdk-rootmail';\nimport {\n App,\n Stack,\n StackProps,\n aws_route53 as r53,\n} from 'aws-cdk-lib';\nimport { Construct } from 'constructs';\n\nexport class MyStack extends Stack {\n constructor(scope: Construct, id: string, props: StackProps = {}) {\n super(scope, id, props);\n\n const domain = 'mycompany.com' // registered via Route53 in the SAME account\n\n const hostedZone = r53.HostedZone.fromLookup(this, 'rootmail-parent-hosted-zone', {\n domainName: domain,\n });\n\n new Rootmail(this, 'rootmail', {\n // 1. a domain you own, registered via Route53 in the SAME account\n domain: domain,\n // 2. so the subdomain will be aws.mycompany.test and\n subdomain: 'aws',\n // 3. wired / delegated automatically to\n wireDNSToHostedZoneID: hostedZone.hostedZoneId,\n });\n }\n}\n```\n2. run on your commandline\n```sh\nyarn run deploy\n```\n1. No need to do anything, the NS records are **automatically** propagated as the parent Hosted Zone is in the same account!\n2. The `hosted-zone-dkim-propagation-provider.is-complete-handler` Lambda function checks every 10 seconds if the DNS for the subdomain is propagated. Details are in the Cloudwatch log group.\n\n> [!TIP]\n> Take a look at the solution design [here](docs/adrs/solution-design-domain-same-aws-account.md) for more details.\n\n### cdk with your own receiver function 🏗️\nYou might also want to pass in you own function on what to do when an EMail is received\n\n> [!TIP]\n> You can add any custom code as receiver function you want.\n\n<details>\n <summary>... click here for the details</summary>\n\nfile `functions/custom-ses-receive-function.ts` which gets the 2 environment variables populated\n- `EMAIL_BUCKET`\n- `EMAIL_BUCKET_ARN`\n\nas well as `s3:GetObject` on the `RootMail/*` objects in the created Rootmail `S3` bucket.\n\n```ts\nimport { S3 } from '@aws-sdk/client-s3';\nimport { ParsedMail, simpleParser } from 'mailparser';\n// populated by default\nconst emailBucket = process.env.EMAIL_BUCKET;\nconst emailBucketArn = process.env.EMAIL_BUCKET_ARN;\nconst s3 = new S3();\n\n// SESEventRecordsToLambda\n// from https://docs.aws.amazon.com/ses/latest/dg/receiving-email-action-lambda-event.html\nexport const handler = async (event: SESEventRecordsToLambda) => {\n for (const record of event.Records) {\n\n const id = record.ses.mail.messageId;\n const key = `RootMail/${id}`;\n const response = await s3.getObject({ Bucket: emailBucket as string, Key: key });\n\n const msg: ParsedMail = await simpleParser(response.Body as unknown as Buffer);\n\n let title = msg.subject;\n console.log(`Title: ${title} from emailBucketArn: ${emailBucketArn}`);\n // use the content of the email body\n const body = msg.html;\n // add your custom code here ...\n\n // dummy example: list s3 buckets\n const buckets = await s3.listBuckets({});\n if (!buckets.Buckets) {\n console.log('No buckets found');\n return;\n }\n console.log('Buckets:');\n for (const bucket of buckets.Buckets || []) {\n console.log(bucket.Name);\n }\n }\n\n};\n```\nand you create a separate `NodejsFunction` as follows with the additionally needed IAM permissions:\n```ts\nconst customSesReceiveFunction = new NodejsFunction(stackUnderTest, 'custom-ses-receive-function', {\n functionName: PhysicalName.GENERATE_IF_NEEDED,\n entry: path.join(__dirname, 'functions', 'custom-ses-receive-function.ts'),\n runtime: lambda.Runtime.NODEJS_18_X,\n logRetention: 1,\n timeout: Duration.seconds(30),\n});\n\n// Note: any additional permissions you need to add to the function yourself!\ncustomSesReceiveFunction.addToRolePolicy(new iam.PolicyStatement({\n actions: [\n 's3:List*',\n ],\n resources: ['*'],\n}))\n```\nand then pass it into the `Rootmail` Stack\n```ts\nexport class MyStack extends Stack {\n constructor(scope: Construct, id: string, props: StackProps = {}) {\n super(scope, id, props);\n\n const domain = 'mycompany.test'\n const hostedZone = r53.HostedZone.fromLookup(this, 'rootmail-parent-hosted-zone', {\n domainName: domain,\n });\n\n const rootmail = new Rootmail(this, 'rootmail-stack', {\n domain: domain;\n autowireDNSParentHostedZoneID: hostedZone.hostedZoneId,\n env: {\n region: 'eu-west-1',\n },\n customSesReceiveFunction: customSesReceiveFunction, // <- pass it in here\n });\n }\n}\n```\n\n\n> [!TIP]\n> Take a look at the solution design for external DNS [here](docs/adrs/solution-design-external-dns-provider.md) for more details.\n\n</details>\n\n### Cloudformation 📦\nor use it directly a Cloudformation template `yaml` from the URL [here](https://mvc-prod-releases.s3.eu-central-1.amazonaws.com/rootmail/v0.0.258/awscdk-rootmail.template.yaml).\n\n\n<details>\n <summary>... click here for the details</summary>\n\nand fill out the parameters\n\n\n</details>\n\n\n## Known issues\n- [jsii/2071](https://github.com/aws/jsii/issues/2071): so adding `compilerOptions.\"esModuleInterop\": true,` in `tsconfig.json` is not possible. See aws-cdk usage with[typescript](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/#Usage_with_TypeScript). So we needed to change import from `import AWS from 'aws-sdk';` -> `import * as AWS from 'aws-sdk';` to be able to compile.\n\n## Related projects / questions\n- [aws-account-factory-email](https://github.com/aws-samples/aws-account-factory-email): a similar approach with SES, however you need to manually configure it upfront and also it about delivering root mails for a specific account to a specific mailing list and mainly decouples the real email address from the one of the AWS account. The main difference is that we do not *hide* or decouple the email address, but more make those as unique and unguessable/bruteforable as possible (with `uuids`).\n- The question `Is it best practise to use a shared mailbox as AWS root user address?` from [stackoverflow](https://stackoverflow.com/questions/76739635/is-it-best-practise-to-use-a-shared-mailbox-as-aws-root-user-address): yes of course you can also use `root+alias-1@mycompany.com` and `root+alias-2@mycompany.com` etc. for your\nroot EMail boxes.\n\n## 🚀 Unlock the Full Potential of Your AWS Cloud Infrastructure\n\nHi, I’m Manuel, an AWS expert passionate about empowering businesses with **scalable, resilient, and cost-optimized cloud solutions**. With **MV Consulting**, I specialize in crafting **tailored AWS architectures** and **DevOps-driven workflows** that not only meet your current needs but grow with you.\n\n---\n\n### 🌟 Why Work With Me?\n\n✔️ **Tailored AWS Solutions:** Every business is unique, so I design custom solutions that fit your goals and challenges.\n✔️ **Well-Architected Designs:** From scalability to security, my solutions align with AWS Well-Architected Framework.\n✔️ **Cloud-Native Focus:** I specialize in modern, cloud-native systems that embrace the full potential of AWS.\n✔️ **Business-Driven Tech:** Technology should serve your business, not the other way around.\n\n---\n\n### 🛠 What I Bring to the Table\n\n🔑 **12x AWS Certifications**\nI’m **AWS Certified Solutions Architect and DevOps – Professional** and hold numerous additional certifications, so you can trust I’ll bring industry best practices to your projects. Feel free to explose by [badges](https://www.credly.com/users/manuel-vogel)\n\n⚙️ **Infrastructure as Code (IaC)**\nWith deep expertise in **AWS CDK** and **Terraform**, I ensure your infrastructure is automated, maintainable, and scalable.\n\n📦 **DevOps Expertise**\nFrom CI/CD pipelines with **GitHub Actions** and **GitLab CI** to container orchestration **Kubernetes** and others, I deliver workflows that are smooth and efficient.\n\n🌐 **Hands-On Experience**\nWith over **7 years of AWS experience** and a decade in the tech world, I’ve delivered solutions for companies large and small. My open-source contributions showcase my commitment to transparency and innovation. Feel free to explore my [GitHub profile](https://github.com/mavogel)\n\n---\n\n### 💼 Let’s Build Something Great Together\n\nI know that choosing the right partner is critical to your success. When you work with me, you’re not just contracting an engineer – you’re gaining a trusted advisor and hands-on expert who cares about your business as much as you do.\n\n✔️ **Direct Collaboration**: No middlemen or red tape – you work with me directly.\n✔️ **Transparent Process**: Expect open communication, clear timelines, and visible results.\n✔️ **Real Value**: My solutions focus on delivering measurable impact for your business.\n\n\n<a href=\"https://tinyurl.com/mvc-15min\"><img alt=\"Schedule your call\" src=\"https://img.shields.io/badge/schedule%20your%20call-success.svg?style=for-the-badge\"/></a>\n\n---\n\n## 🙌 Acknowledgements\n\nBig shoutout to the amazing team behind [Projen](https://github.com/projen/projen)!\nTheir groundbreaking work simplifies cloud infrastructure projects and inspires us every day. 💡\n\n## Author\n\n[Manuel Vogel](https://manuel-vogel.de/about/)\n\n[](https://www.linkedin.com/in/manuel-vogel)\n[](https://github.com/mavogel)"
|
|
3526
4021
|
},
|
|
3527
4022
|
"repository": {
|
|
3528
4023
|
"type": "git",
|
|
@@ -3539,16 +4034,17 @@
|
|
|
3539
4034
|
"assembly": "@mavogel/awscdk-rootmail",
|
|
3540
4035
|
"base": "constructs.Construct",
|
|
3541
4036
|
"docs": {
|
|
3542
|
-
"stability": "
|
|
4037
|
+
"stability": "experimental",
|
|
4038
|
+
"summary": "Rootmail construct."
|
|
3543
4039
|
},
|
|
3544
4040
|
"fqn": "@mavogel/awscdk-rootmail.Rootmail",
|
|
3545
4041
|
"initializer": {
|
|
3546
4042
|
"docs": {
|
|
3547
|
-
"stability": "
|
|
4043
|
+
"stability": "experimental"
|
|
3548
4044
|
},
|
|
3549
4045
|
"locationInModule": {
|
|
3550
4046
|
"filename": "src/rootmail.ts",
|
|
3551
|
-
"line":
|
|
4047
|
+
"line": 94
|
|
3552
4048
|
},
|
|
3553
4049
|
"parameters": [
|
|
3554
4050
|
{
|
|
@@ -3574,18 +4070,19 @@
|
|
|
3574
4070
|
"kind": "class",
|
|
3575
4071
|
"locationInModule": {
|
|
3576
4072
|
"filename": "src/rootmail.ts",
|
|
3577
|
-
"line":
|
|
4073
|
+
"line": 83
|
|
3578
4074
|
},
|
|
3579
4075
|
"name": "Rootmail",
|
|
3580
4076
|
"properties": [
|
|
3581
4077
|
{
|
|
3582
4078
|
"docs": {
|
|
3583
|
-
"stability": "
|
|
4079
|
+
"stability": "experimental",
|
|
4080
|
+
"summary": "S3 bucket to store the root mails in."
|
|
3584
4081
|
},
|
|
3585
4082
|
"immutable": true,
|
|
3586
4083
|
"locationInModule": {
|
|
3587
4084
|
"filename": "src/rootmail.ts",
|
|
3588
|
-
"line":
|
|
4085
|
+
"line": 92
|
|
3589
4086
|
},
|
|
3590
4087
|
"name": "emailBucket",
|
|
3591
4088
|
"type": {
|
|
@@ -3594,12 +4091,13 @@
|
|
|
3594
4091
|
},
|
|
3595
4092
|
{
|
|
3596
4093
|
"docs": {
|
|
3597
|
-
"stability": "
|
|
4094
|
+
"stability": "experimental",
|
|
4095
|
+
"summary": "The name parameter in SSM to store the domain name server."
|
|
3598
4096
|
},
|
|
3599
4097
|
"immutable": true,
|
|
3600
4098
|
"locationInModule": {
|
|
3601
4099
|
"filename": "src/rootmail.ts",
|
|
3602
|
-
"line":
|
|
4100
|
+
"line": 87
|
|
3603
4101
|
},
|
|
3604
4102
|
"name": "hostedZoneParameterName",
|
|
3605
4103
|
"type": {
|
|
@@ -3613,26 +4111,27 @@
|
|
|
3613
4111
|
"assembly": "@mavogel/awscdk-rootmail",
|
|
3614
4112
|
"datatype": true,
|
|
3615
4113
|
"docs": {
|
|
3616
|
-
"stability": "
|
|
4114
|
+
"stability": "experimental",
|
|
4115
|
+
"summary": "Properties for the construct."
|
|
3617
4116
|
},
|
|
3618
4117
|
"fqn": "@mavogel/awscdk-rootmail.RootmailProps",
|
|
3619
4118
|
"kind": "interface",
|
|
3620
4119
|
"locationInModule": {
|
|
3621
4120
|
"filename": "src/rootmail.ts",
|
|
3622
|
-
"line":
|
|
4121
|
+
"line": 23
|
|
3623
4122
|
},
|
|
3624
4123
|
"name": "RootmailProps",
|
|
3625
4124
|
"properties": [
|
|
3626
4125
|
{
|
|
3627
4126
|
"abstract": true,
|
|
3628
4127
|
"docs": {
|
|
3629
|
-
"stability": "
|
|
4128
|
+
"stability": "experimental",
|
|
3630
4129
|
"summary": "Domain used for root mail feature."
|
|
3631
4130
|
},
|
|
3632
4131
|
"immutable": true,
|
|
3633
4132
|
"locationInModule": {
|
|
3634
4133
|
"filename": "src/rootmail.ts",
|
|
3635
|
-
"line":
|
|
4134
|
+
"line": 27
|
|
3636
4135
|
},
|
|
3637
4136
|
"name": "domain",
|
|
3638
4137
|
"type": {
|
|
@@ -3642,13 +4141,14 @@
|
|
|
3642
4141
|
{
|
|
3643
4142
|
"abstract": true,
|
|
3644
4143
|
"docs": {
|
|
3645
|
-
"
|
|
4144
|
+
"default": "the provided functions within the construct",
|
|
4145
|
+
"stability": "experimental",
|
|
3646
4146
|
"summary": "The custom SES receive function to use."
|
|
3647
4147
|
},
|
|
3648
4148
|
"immutable": true,
|
|
3649
4149
|
"locationInModule": {
|
|
3650
4150
|
"filename": "src/rootmail.ts",
|
|
3651
|
-
"line":
|
|
4151
|
+
"line": 56
|
|
3652
4152
|
},
|
|
3653
4153
|
"name": "customSesReceiveFunction",
|
|
3654
4154
|
"optional": true,
|
|
@@ -3660,13 +4160,13 @@
|
|
|
3660
4160
|
"abstract": true,
|
|
3661
4161
|
"docs": {
|
|
3662
4162
|
"default": "RemovalPolicy.RETAIN",
|
|
3663
|
-
"stability": "
|
|
4163
|
+
"stability": "experimental",
|
|
3664
4164
|
"summary": "The removal policy for the email bucket."
|
|
3665
4165
|
},
|
|
3666
4166
|
"immutable": true,
|
|
3667
4167
|
"locationInModule": {
|
|
3668
4168
|
"filename": "src/rootmail.ts",
|
|
3669
|
-
"line":
|
|
4169
|
+
"line": 70
|
|
3670
4170
|
},
|
|
3671
4171
|
"name": "emailBucketDeletePolicy",
|
|
3672
4172
|
"optional": true,
|
|
@@ -3679,13 +4179,13 @@
|
|
|
3679
4179
|
"docs": {
|
|
3680
4180
|
"default": "[]",
|
|
3681
4181
|
"remarks": "NOTE: must not contain commas.",
|
|
3682
|
-
"stability": "
|
|
4182
|
+
"stability": "experimental",
|
|
3683
4183
|
"summary": "Filtered email subjects."
|
|
3684
4184
|
},
|
|
3685
4185
|
"immutable": true,
|
|
3686
4186
|
"locationInModule": {
|
|
3687
4187
|
"filename": "src/rootmail.ts",
|
|
3688
|
-
"line":
|
|
4188
|
+
"line": 63
|
|
3689
4189
|
},
|
|
3690
4190
|
"name": "filteredEmailSubjects",
|
|
3691
4191
|
"optional": true,
|
|
@@ -3703,13 +4203,13 @@
|
|
|
3703
4203
|
"docs": {
|
|
3704
4204
|
"default": "false",
|
|
3705
4205
|
"remarks": "This is useful for integration testing purposes.",
|
|
3706
|
-
"stability": "
|
|
4206
|
+
"stability": "experimental",
|
|
3707
4207
|
"summary": "Whether to set all removal policies to DESTROY."
|
|
3708
4208
|
},
|
|
3709
4209
|
"immutable": true,
|
|
3710
4210
|
"locationInModule": {
|
|
3711
4211
|
"filename": "src/rootmail.ts",
|
|
3712
|
-
"line":
|
|
4212
|
+
"line": 77
|
|
3713
4213
|
},
|
|
3714
4214
|
"name": "setDestroyPolicyToAllResources",
|
|
3715
4215
|
"optional": true,
|
|
@@ -3721,13 +4221,13 @@
|
|
|
3721
4221
|
"abstract": true,
|
|
3722
4222
|
"docs": {
|
|
3723
4223
|
"default": "'aws'",
|
|
3724
|
-
"stability": "
|
|
4224
|
+
"stability": "experimental",
|
|
3725
4225
|
"summary": "Subdomain used for root mail feature."
|
|
3726
4226
|
},
|
|
3727
4227
|
"immutable": true,
|
|
3728
4228
|
"locationInModule": {
|
|
3729
4229
|
"filename": "src/rootmail.ts",
|
|
3730
|
-
"line":
|
|
4230
|
+
"line": 34
|
|
3731
4231
|
},
|
|
3732
4232
|
"name": "subdomain",
|
|
3733
4233
|
"optional": true,
|
|
@@ -3739,13 +4239,13 @@
|
|
|
3739
4239
|
"abstract": true,
|
|
3740
4240
|
"docs": {
|
|
3741
4241
|
"default": "Duration.hours(2)",
|
|
3742
|
-
"stability": "
|
|
4242
|
+
"stability": "experimental",
|
|
3743
4243
|
"summary": "The total time to wait for the DNS records to be available/wired."
|
|
3744
4244
|
},
|
|
3745
4245
|
"immutable": true,
|
|
3746
4246
|
"locationInModule": {
|
|
3747
4247
|
"filename": "src/rootmail.ts",
|
|
3748
|
-
"line":
|
|
4248
|
+
"line": 41
|
|
3749
4249
|
},
|
|
3750
4250
|
"name": "totalTimeToWireDNS",
|
|
3751
4251
|
"optional": true,
|
|
@@ -3756,14 +4256,14 @@
|
|
|
3756
4256
|
{
|
|
3757
4257
|
"abstract": true,
|
|
3758
4258
|
"docs": {
|
|
3759
|
-
"default": "
|
|
3760
|
-
"stability": "
|
|
4259
|
+
"default": "emtpy string",
|
|
4260
|
+
"stability": "experimental",
|
|
3761
4261
|
"summary": "The hosted zone ID of the domain that is registered Route53 AND in the same AWS account to enable autowiring of the DNS records."
|
|
3762
4262
|
},
|
|
3763
4263
|
"immutable": true,
|
|
3764
4264
|
"locationInModule": {
|
|
3765
4265
|
"filename": "src/rootmail.ts",
|
|
3766
|
-
"line":
|
|
4266
|
+
"line": 49
|
|
3767
4267
|
},
|
|
3768
4268
|
"name": "wireDNSToHostedZoneID",
|
|
3769
4269
|
"optional": true,
|
|
@@ -3778,16 +4278,17 @@
|
|
|
3778
4278
|
"assembly": "@mavogel/awscdk-rootmail",
|
|
3779
4279
|
"base": "constructs.Construct",
|
|
3780
4280
|
"docs": {
|
|
3781
|
-
"stability": "
|
|
4281
|
+
"stability": "experimental",
|
|
4282
|
+
"summary": "SES Receive construct."
|
|
3782
4283
|
},
|
|
3783
4284
|
"fqn": "@mavogel/awscdk-rootmail.SESReceive",
|
|
3784
4285
|
"initializer": {
|
|
3785
4286
|
"docs": {
|
|
3786
|
-
"stability": "
|
|
4287
|
+
"stability": "experimental"
|
|
3787
4288
|
},
|
|
3788
4289
|
"locationInModule": {
|
|
3789
4290
|
"filename": "src/ses-receive.ts",
|
|
3790
|
-
"line":
|
|
4291
|
+
"line": 65
|
|
3791
4292
|
},
|
|
3792
4293
|
"parameters": [
|
|
3793
4294
|
{
|
|
@@ -3813,7 +4314,7 @@
|
|
|
3813
4314
|
"kind": "class",
|
|
3814
4315
|
"locationInModule": {
|
|
3815
4316
|
"filename": "src/ses-receive.ts",
|
|
3816
|
-
"line":
|
|
4317
|
+
"line": 64
|
|
3817
4318
|
},
|
|
3818
4319
|
"name": "SESReceive",
|
|
3819
4320
|
"symbolId": "src/ses-receive:SESReceive"
|
|
@@ -3822,26 +4323,27 @@
|
|
|
3822
4323
|
"assembly": "@mavogel/awscdk-rootmail",
|
|
3823
4324
|
"datatype": true,
|
|
3824
4325
|
"docs": {
|
|
3825
|
-
"stability": "
|
|
4326
|
+
"stability": "experimental",
|
|
4327
|
+
"summary": "Properties for the SESReceive construct."
|
|
3826
4328
|
},
|
|
3827
4329
|
"fqn": "@mavogel/awscdk-rootmail.SESReceiveProps",
|
|
3828
4330
|
"kind": "interface",
|
|
3829
4331
|
"locationInModule": {
|
|
3830
4332
|
"filename": "src/ses-receive.ts",
|
|
3831
|
-
"line":
|
|
4333
|
+
"line": 23
|
|
3832
4334
|
},
|
|
3833
4335
|
"name": "SESReceiveProps",
|
|
3834
4336
|
"properties": [
|
|
3835
4337
|
{
|
|
3836
4338
|
"abstract": true,
|
|
3837
4339
|
"docs": {
|
|
3838
|
-
"stability": "
|
|
4340
|
+
"stability": "experimental",
|
|
3839
4341
|
"summary": "Domain used for root mail feature."
|
|
3840
4342
|
},
|
|
3841
4343
|
"immutable": true,
|
|
3842
4344
|
"locationInModule": {
|
|
3843
4345
|
"filename": "src/ses-receive.ts",
|
|
3844
|
-
"line":
|
|
4346
|
+
"line": 27
|
|
3845
4347
|
},
|
|
3846
4348
|
"name": "domain",
|
|
3847
4349
|
"type": {
|
|
@@ -3851,13 +4353,13 @@
|
|
|
3851
4353
|
{
|
|
3852
4354
|
"abstract": true,
|
|
3853
4355
|
"docs": {
|
|
3854
|
-
"stability": "
|
|
4356
|
+
"stability": "experimental",
|
|
3855
4357
|
"summary": "S3 bucket to store received emails."
|
|
3856
4358
|
},
|
|
3857
4359
|
"immutable": true,
|
|
3858
4360
|
"locationInModule": {
|
|
3859
4361
|
"filename": "src/ses-receive.ts",
|
|
3860
|
-
"line":
|
|
4362
|
+
"line": 37
|
|
3861
4363
|
},
|
|
3862
4364
|
"name": "emailbucket",
|
|
3863
4365
|
"type": {
|
|
@@ -3867,13 +4369,13 @@
|
|
|
3867
4369
|
{
|
|
3868
4370
|
"abstract": true,
|
|
3869
4371
|
"docs": {
|
|
3870
|
-
"stability": "
|
|
4372
|
+
"stability": "experimental",
|
|
3871
4373
|
"summary": "Subdomain used for root mail feature."
|
|
3872
4374
|
},
|
|
3873
4375
|
"immutable": true,
|
|
3874
4376
|
"locationInModule": {
|
|
3875
4377
|
"filename": "src/ses-receive.ts",
|
|
3876
|
-
"line":
|
|
4378
|
+
"line": 32
|
|
3877
4379
|
},
|
|
3878
4380
|
"name": "subdomain",
|
|
3879
4381
|
"type": {
|
|
@@ -3883,13 +4385,14 @@
|
|
|
3883
4385
|
{
|
|
3884
4386
|
"abstract": true,
|
|
3885
4387
|
"docs": {
|
|
3886
|
-
"
|
|
4388
|
+
"default": "the provided functions within the construct",
|
|
4389
|
+
"stability": "experimental",
|
|
3887
4390
|
"summary": "The custom SES receive function to use."
|
|
3888
4391
|
},
|
|
3889
4392
|
"immutable": true,
|
|
3890
4393
|
"locationInModule": {
|
|
3891
4394
|
"filename": "src/ses-receive.ts",
|
|
3892
|
-
"line":
|
|
4395
|
+
"line": 44
|
|
3893
4396
|
},
|
|
3894
4397
|
"name": "customSesReceiveFunction",
|
|
3895
4398
|
"optional": true,
|
|
@@ -3900,14 +4403,15 @@
|
|
|
3900
4403
|
{
|
|
3901
4404
|
"abstract": true,
|
|
3902
4405
|
"docs": {
|
|
4406
|
+
"default": "2 subjects: 'Your AWS Account is Ready - Get Started Now' and 'Welcome to Amazon Web Services'",
|
|
3903
4407
|
"remarks": "NOTE: must not contain commas.",
|
|
3904
|
-
"stability": "
|
|
4408
|
+
"stability": "experimental",
|
|
3905
4409
|
"summary": "Filtered email subjects."
|
|
3906
4410
|
},
|
|
3907
4411
|
"immutable": true,
|
|
3908
4412
|
"locationInModule": {
|
|
3909
4413
|
"filename": "src/ses-receive.ts",
|
|
3910
|
-
"line":
|
|
4414
|
+
"line": 51
|
|
3911
4415
|
},
|
|
3912
4416
|
"name": "filteredEmailSubjects",
|
|
3913
4417
|
"optional": true,
|
|
@@ -3923,14 +4427,15 @@
|
|
|
3923
4427
|
{
|
|
3924
4428
|
"abstract": true,
|
|
3925
4429
|
"docs": {
|
|
4430
|
+
"default": "false",
|
|
3926
4431
|
"remarks": "This is useful for integration testing purposes.",
|
|
3927
|
-
"stability": "
|
|
4432
|
+
"stability": "experimental",
|
|
3928
4433
|
"summary": "Whether to set all removal policies to DESTROY."
|
|
3929
4434
|
},
|
|
3930
4435
|
"immutable": true,
|
|
3931
4436
|
"locationInModule": {
|
|
3932
4437
|
"filename": "src/ses-receive.ts",
|
|
3933
|
-
"line":
|
|
4438
|
+
"line": 58
|
|
3934
4439
|
},
|
|
3935
4440
|
"name": "setDestroyPolicyToAllResources",
|
|
3936
4441
|
"optional": true,
|
|
@@ -3942,6 +4447,6 @@
|
|
|
3942
4447
|
"symbolId": "src/ses-receive:SESReceiveProps"
|
|
3943
4448
|
}
|
|
3944
4449
|
},
|
|
3945
|
-
"version": "0.0.
|
|
3946
|
-
"fingerprint": "
|
|
4450
|
+
"version": "0.0.291",
|
|
4451
|
+
"fingerprint": "F2w6BZYOq3Z1zixOr0ZFaDZZ7r05YtJTvz+OPiEOxeU="
|
|
3947
4452
|
}
|