@mavogel/awscdk-rootmail 0.0.272 → 0.0.274

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 CHANGED
@@ -7,11 +7,11 @@
7
7
  ]
8
8
  },
9
9
  "bundled": {
10
- "@aws-sdk/client-cloudwatch-logs": "^3.731.0",
11
- "@aws-sdk/client-route-53": "^3.731.0",
12
- "@aws-sdk/client-s3": "^3.731.0",
13
- "@aws-sdk/client-ses": "^3.731.0",
14
- "@aws-sdk/client-ssm": "^3.731.0",
10
+ "@aws-sdk/client-cloudwatch-logs": "^3.731.1",
11
+ "@aws-sdk/client-route-53": "^3.731.1",
12
+ "@aws-sdk/client-s3": "^3.731.1",
13
+ "@aws-sdk/client-ses": "^3.731.1",
14
+ "@aws-sdk/client-ssm": "^3.731.1",
15
15
  "async-retry": "^1.3.3",
16
16
  "axios": "^1.7.9",
17
17
  "cdk-nag": "^2.34.23",
@@ -3522,7 +3522,7 @@
3522
3522
  },
3523
3523
  "name": "@mavogel/awscdk-rootmail",
3524
3524
  "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![rootmail-solution-diagram-v1](docs/img/awscdk-rootmail-v1-min.png)\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![cloudformation-template](docs/img/cloudformation-tpl-min.png)\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 potention of your infrastructure - Partner with us!\n\n> [!TIP]\n> Bring your AWS Infrastructure with [MV Consulting](https://manuel-vogel.de/) to the next level. We ship well-architected, resilient, and cost-optimized AWS solutions designed to scale using Infrastructure as Code (IaC), tailoring cloud-native systems for businesses of all sizes.\n>\n> Our Approach:\n>\n> - **Tailored AWS Solutions**: Custom-built for your unique business needs\n> - **Future-Proof Architecture**: Scalable designs that grow with you\n> - **Empowerment Through Ownership**: Your vision, your infrastructure, our expertise\n>\n> Why Choose Us:\n> - 7+ Years of AWS Experience\n> - 12x AWS Certified, including DevOps Engineer & Solutions Architect Professional\n> - Proven Track Record and Testimonials\n>\n> Ready to elevate your AWS CDK Infrastructure?\n>\n> <a href=\"https://manuel-vogel.de/contact\"><img alt=\"Schedule your call\" src=\"https://img.shields.io/badge/schedule%20your%20call-success.svg?style=for-the-badge\"/></a>\n> <details><summary>☁️ <strong>Discover more about my one-person business: MV Consulting</strong></summary>\n>\n> <br/>\n>\n> Hi, I'm Manuel – AWS expert and founder of [MV Consulting](https://manuel-vogel.de). With over a decade of hands-on experience, I specialized myself in deploying well-architected, highly scalable and cost-effective AWS Solutions using Infrastructure as Code (IaC).\n>\n> #### When you work with me, you're getting a package deal of expertise and personalized service:\n>\n> - **AWS CDK Proficiency**: I bring deep AWS CDK knowledge to the table, ensuring your infrastructure is not just maintainable and scalable, but also fully automated.\n> - **AWS Certified**: [Equipped with 12 AWS Certifications](https://www.credly.com/users/manuel-vogel/badges), including DevOps Engineer & Solutions Architect Professional, to ensure best practices across diverse cloud scenarios.\n> - **Direct Access**: You work with me, not a team of managers. Expect quick decisions and high-quality work.\n> - **Tailored Solutions**: Understanding that no two businesses are alike, I Custom-fit cloud infrastructure for your unique needs.\n> - **Cost-Effective**: I'll optimize your AWS spending without cutting corners on performance or security.\n> - **Seamless CI/CD**: I'll set up smooth CI/CD processes using GitHub Actions, making changes a breeze through Pull Requests.\n>\n> *My mission is simple: I'll free you from infrastructure headaches so you can focus on what truly matters – your core business.*\n>\n> Ready to unlock the full potential of AWS Cloud?\n>\n> <a href=\"https://manuel-vogel.de/contact\"><img alt=\"Schedule your call\" src=\"https://img.shields.io/badge/schedule%20your%20call-success.svg?style=for-the-badge\"/></a>\n> </details>\n\n## Acknowledgements\n\nBig thank you to the creators of [projen](https://github.com/projen/projen). This project stands on the shoulders of giants, made possible by their pioneering work in simplifying cloud infrastructure projects!\n\n## Author\n\n[Manuel Vogel](https://manuel-vogel.de/about/)\n\n[![](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/manuel-vogel)\n[![](https://img.shields.io/badge/GitHub-2b3137?style=for-the-badge&logo=github&logoColor=white)](https://github.com/mavogel)"
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![rootmail-solution-diagram-v1](docs/img/awscdk-rootmail-v1-min.png)\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![cloudformation-template](docs/img/cloudformation-tpl-min.png)\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://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/manuel-vogel)\n[![](https://img.shields.io/badge/GitHub-2b3137?style=for-the-badge&logo=github&logoColor=white)](https://github.com/mavogel)"
3526
3526
  },
3527
3527
  "repository": {
3528
3528
  "type": "git",
@@ -3942,6 +3942,6 @@
3942
3942
  "symbolId": "src/ses-receive:SESReceiveProps"
3943
3943
  }
3944
3944
  },
3945
- "version": "0.0.272",
3946
- "fingerprint": "SxlQkYSIcBvODwHjPjyulU7KMdUyBQgmMWOZf5QrbNs="
3945
+ "version": "0.0.274",
3946
+ "fingerprint": "q+HQvOsEQETLSHMHjlTzKJhSZyo8HVrmErnUore7HPI="
3947
3947
  }
package/README.md CHANGED
@@ -200,50 +200,54 @@ and fill out the parameters
200
200
  - 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
201
201
  root EMail boxes.
202
202
 
203
- ## Unlock the full potention of your infrastructure - Partner with us!
203
+ ## 🚀 Unlock the Full Potential of Your AWS Cloud Infrastructure
204
204
 
205
- > [!TIP]
206
- > Bring your AWS Infrastructure with [MV Consulting](https://manuel-vogel.de/) to the next level. We ship well-architected, resilient, and cost-optimized AWS solutions designed to scale using Infrastructure as Code (IaC), tailoring cloud-native systems for businesses of all sizes.
207
- >
208
- > Our Approach:
209
- >
210
- > - **Tailored AWS Solutions**: Custom-built for your unique business needs
211
- > - **Future-Proof Architecture**: Scalable designs that grow with you
212
- > - **Empowerment Through Ownership**: Your vision, your infrastructure, our expertise
213
- >
214
- > Why Choose Us:
215
- > - 7+ Years of AWS Experience
216
- > - 12x AWS Certified, including DevOps Engineer & Solutions Architect Professional
217
- > - Proven Track Record and Testimonials
218
- >
219
- > Ready to elevate your AWS CDK Infrastructure?
220
- >
221
- > <a href="https://manuel-vogel.de/contact"><img alt="Schedule your call" src="https://img.shields.io/badge/schedule%20your%20call-success.svg?style=for-the-badge"/></a>
222
- > <details><summary>☁️ <strong>Discover more about my one-person business: MV Consulting</strong></summary>
223
- >
224
- > <br/>
225
- >
226
- > Hi, I'm Manuel – AWS expert and founder of [MV Consulting](https://manuel-vogel.de). With over a decade of hands-on experience, I specialized myself in deploying well-architected, highly scalable and cost-effective AWS Solutions using Infrastructure as Code (IaC).
227
- >
228
- > #### When you work with me, you're getting a package deal of expertise and personalized service:
229
- >
230
- > - **AWS CDK Proficiency**: I bring deep AWS CDK knowledge to the table, ensuring your infrastructure is not just maintainable and scalable, but also fully automated.
231
- > - **AWS Certified**: [Equipped with 12 AWS Certifications](https://www.credly.com/users/manuel-vogel/badges), including DevOps Engineer & Solutions Architect Professional, to ensure best practices across diverse cloud scenarios.
232
- > - **Direct Access**: You work with me, not a team of managers. Expect quick decisions and high-quality work.
233
- > - **Tailored Solutions**: Understanding that no two businesses are alike, I Custom-fit cloud infrastructure for your unique needs.
234
- > - **Cost-Effective**: I'll optimize your AWS spending without cutting corners on performance or security.
235
- > - **Seamless CI/CD**: I'll set up smooth CI/CD processes using GitHub Actions, making changes a breeze through Pull Requests.
236
- >
237
- > *My mission is simple: I'll free you from infrastructure headaches so you can focus on what truly matters – your core business.*
238
- >
239
- > Ready to unlock the full potential of AWS Cloud?
240
- >
241
- > <a href="https://manuel-vogel.de/contact"><img alt="Schedule your call" src="https://img.shields.io/badge/schedule%20your%20call-success.svg?style=for-the-badge"/></a>
242
- > </details>
243
-
244
- ## Acknowledgements
245
-
246
- Big thank you to the creators of [projen](https://github.com/projen/projen). This project stands on the shoulders of giants, made possible by their pioneering work in simplifying cloud infrastructure projects!
205
+ Hi, 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.
206
+
207
+ ---
208
+
209
+ ### 🌟 Why Work With Me?
210
+
211
+ ✔️ **Tailored AWS Solutions:** Every business is unique, so I design custom solutions that fit your goals and challenges.
212
+ ✔️ **Well-Architected Designs:** From scalability to security, my solutions align with AWS Well-Architected Framework.
213
+ ✔️ **Cloud-Native Focus:** I specialize in modern, cloud-native systems that embrace the full potential of AWS.
214
+ ✔️ **Business-Driven Tech:** Technology should serve your business, not the other way around.
215
+
216
+ ---
217
+
218
+ ### 🛠 What I Bring to the Table
219
+
220
+ 🔑 **12x AWS Certifications**
221
+ I’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)
222
+
223
+ ⚙️ **Infrastructure as Code (IaC)**
224
+ With deep expertise in **AWS CDK** and **Terraform**, I ensure your infrastructure is automated, maintainable, and scalable.
225
+
226
+ 📦 **DevOps Expertise**
227
+ From CI/CD pipelines with **GitHub Actions** and **GitLab CI** to container orchestration **Kubernetes** and others, I deliver workflows that are smooth and efficient.
228
+
229
+ 🌐 **Hands-On Experience**
230
+ With 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)
231
+
232
+ ---
233
+
234
+ ### 💼 Let’s Build Something Great Together
235
+
236
+ I 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.
237
+
238
+ ✔️ **Direct Collaboration**: No middlemen or red tape – you work with me directly.
239
+ ✔️ **Transparent Process**: Expect open communication, clear timelines, and visible results.
240
+ ✔️ **Real Value**: My solutions focus on delivering measurable impact for your business.
241
+
242
+
243
+ <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>
244
+
245
+ ---
246
+
247
+ ## 🙌 Acknowledgements
248
+
249
+ Big shoutout to the amazing team behind [Projen](https://github.com/projen/projen)!
250
+ Their groundbreaking work simplifies cloud infrastructure projects and inspires us every day. 💡
247
251
 
248
252
  ## Author
249
253
 
package/lib/rootmail.js CHANGED
@@ -79,7 +79,7 @@ class Rootmail extends constructs_1.Construct {
79
79
  }
80
80
  exports.Rootmail = Rootmail;
81
81
  _a = JSII_RTTI_SYMBOL_1;
82
- Rootmail[_a] = { fqn: "@mavogel/awscdk-rootmail.Rootmail", version: "0.0.272" };
82
+ Rootmail[_a] = { fqn: "@mavogel/awscdk-rootmail.Rootmail", version: "0.0.274" };
83
83
  /**
84
84
  * Aspect for setting all removal policies to DESTROY
85
85
  */
@@ -131,7 +131,7 @@ class SESReceive extends constructs_1.Construct {
131
131
  }
132
132
  exports.SESReceive = SESReceive;
133
133
  _a = JSII_RTTI_SYMBOL_1;
134
- SESReceive[_a] = { fqn: "@mavogel/awscdk-rootmail.SESReceive", version: "0.0.272" };
134
+ SESReceive[_a] = { fqn: "@mavogel/awscdk-rootmail.SESReceive", version: "0.0.274" };
135
135
  /**
136
136
  * Aspect for setting all removal policies to DESTROY
137
137
  */
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-cloudwatch-logs",
3
3
  "description": "AWS SDK for JavaScript Cloudwatch Logs Client for Node.js, Browser and React Native",
4
- "version": "3.731.0",
4
+ "version": "3.731.1",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-cloudwatch-logs",
@@ -21,7 +21,7 @@
21
21
  "@aws-crypto/sha256-browser": "5.2.0",
22
22
  "@aws-crypto/sha256-js": "5.2.0",
23
23
  "@aws-sdk/core": "3.731.0",
24
- "@aws-sdk/credential-provider-node": "3.731.0",
24
+ "@aws-sdk/credential-provider-node": "3.731.1",
25
25
  "@aws-sdk/middleware-host-header": "3.731.0",
26
26
  "@aws-sdk/middleware-logger": "3.731.0",
27
27
  "@aws-sdk/middleware-recursion-detection": "3.731.0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-route-53",
3
3
  "description": "AWS SDK for JavaScript Route 53 Client for Node.js, Browser and React Native",
4
- "version": "3.731.0",
4
+ "version": "3.731.1",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-route-53",
@@ -21,7 +21,7 @@
21
21
  "@aws-crypto/sha256-browser": "5.2.0",
22
22
  "@aws-crypto/sha256-js": "5.2.0",
23
23
  "@aws-sdk/core": "3.731.0",
24
- "@aws-sdk/credential-provider-node": "3.731.0",
24
+ "@aws-sdk/credential-provider-node": "3.731.1",
25
25
  "@aws-sdk/middleware-host-header": "3.731.0",
26
26
  "@aws-sdk/middleware-logger": "3.731.0",
27
27
  "@aws-sdk/middleware-recursion-detection": "3.731.0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-s3",
3
3
  "description": "AWS SDK for JavaScript S3 Client for Node.js, Browser and React Native",
4
- "version": "3.731.0",
4
+ "version": "3.731.1",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-s3",
@@ -28,7 +28,7 @@
28
28
  "@aws-crypto/sha256-browser": "5.2.0",
29
29
  "@aws-crypto/sha256-js": "5.2.0",
30
30
  "@aws-sdk/core": "3.731.0",
31
- "@aws-sdk/credential-provider-node": "3.731.0",
31
+ "@aws-sdk/credential-provider-node": "3.731.1",
32
32
  "@aws-sdk/middleware-bucket-endpoint": "3.731.0",
33
33
  "@aws-sdk/middleware-expect-continue": "3.731.0",
34
34
  "@aws-sdk/middleware-flexible-checksums": "3.731.0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-ses",
3
3
  "description": "AWS SDK for JavaScript Ses Client for Node.js, Browser and React Native",
4
- "version": "3.731.0",
4
+ "version": "3.731.1",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-ses",
@@ -21,7 +21,7 @@
21
21
  "@aws-crypto/sha256-browser": "5.2.0",
22
22
  "@aws-crypto/sha256-js": "5.2.0",
23
23
  "@aws-sdk/core": "3.731.0",
24
- "@aws-sdk/credential-provider-node": "3.731.0",
24
+ "@aws-sdk/credential-provider-node": "3.731.1",
25
25
  "@aws-sdk/middleware-host-header": "3.731.0",
26
26
  "@aws-sdk/middleware-logger": "3.731.0",
27
27
  "@aws-sdk/middleware-recursion-detection": "3.731.0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aws-sdk/client-ssm",
3
3
  "description": "AWS SDK for JavaScript Ssm Client for Node.js, Browser and React Native",
4
- "version": "3.731.0",
4
+ "version": "3.731.1",
5
5
  "scripts": {
6
6
  "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'",
7
7
  "build:cjs": "node ../../scripts/compilation/inline client-ssm",
@@ -21,7 +21,7 @@
21
21
  "@aws-crypto/sha256-browser": "5.2.0",
22
22
  "@aws-crypto/sha256-js": "5.2.0",
23
23
  "@aws-sdk/core": "3.731.0",
24
- "@aws-sdk/credential-provider-node": "3.731.0",
24
+ "@aws-sdk/credential-provider-node": "3.731.1",
25
25
  "@aws-sdk/middleware-host-header": "3.731.0",
26
26
  "@aws-sdk/middleware-logger": "3.731.0",
27
27
  "@aws-sdk/middleware-recursion-detection": "3.731.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-sdk/credential-provider-ini",
3
- "version": "3.731.0",
3
+ "version": "3.731.1",
4
4
  "description": "AWS credential provider that sources credentials from ~/.aws/credentials and ~/.aws/config",
5
5
  "main": "./dist-cjs/index.js",
6
6
  "module": "./dist-es/index.js",
@@ -31,9 +31,9 @@
31
31
  "@aws-sdk/credential-provider-env": "3.731.0",
32
32
  "@aws-sdk/credential-provider-http": "3.731.0",
33
33
  "@aws-sdk/credential-provider-process": "3.731.0",
34
- "@aws-sdk/credential-provider-sso": "3.731.0",
35
- "@aws-sdk/credential-provider-web-identity": "3.731.0",
36
- "@aws-sdk/nested-clients": "3.731.0",
34
+ "@aws-sdk/credential-provider-sso": "3.731.1",
35
+ "@aws-sdk/credential-provider-web-identity": "3.731.1",
36
+ "@aws-sdk/nested-clients": "3.731.1",
37
37
  "@aws-sdk/types": "3.731.0",
38
38
  "@smithy/credential-provider-imds": "^4.0.0",
39
39
  "@smithy/property-provider": "^4.0.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-sdk/credential-provider-node",
3
- "version": "3.731.0",
3
+ "version": "3.731.1",
4
4
  "description": "AWS credential provider that sources credentials from a Node.JS environment. ",
5
5
  "engines": {
6
6
  "node": ">=18.0.0"
@@ -31,10 +31,10 @@
31
31
  "dependencies": {
32
32
  "@aws-sdk/credential-provider-env": "3.731.0",
33
33
  "@aws-sdk/credential-provider-http": "3.731.0",
34
- "@aws-sdk/credential-provider-ini": "3.731.0",
34
+ "@aws-sdk/credential-provider-ini": "3.731.1",
35
35
  "@aws-sdk/credential-provider-process": "3.731.0",
36
- "@aws-sdk/credential-provider-sso": "3.731.0",
37
- "@aws-sdk/credential-provider-web-identity": "3.731.0",
36
+ "@aws-sdk/credential-provider-sso": "3.731.1",
37
+ "@aws-sdk/credential-provider-web-identity": "3.731.1",
38
38
  "@aws-sdk/types": "3.731.0",
39
39
  "@smithy/credential-provider-imds": "^4.0.0",
40
40
  "@smithy/property-provider": "^4.0.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-sdk/credential-provider-sso",
3
- "version": "3.731.0",
3
+ "version": "3.731.1",
4
4
  "description": "AWS credential provider that exchanges a resolved SSO login token file for temporary AWS credentials",
5
5
  "main": "./dist-cjs/index.js",
6
6
  "module": "./dist-es/index.js",
@@ -27,7 +27,7 @@
27
27
  "dependencies": {
28
28
  "@aws-sdk/client-sso": "3.731.0",
29
29
  "@aws-sdk/core": "3.731.0",
30
- "@aws-sdk/token-providers": "3.731.0",
30
+ "@aws-sdk/token-providers": "3.731.1",
31
31
  "@aws-sdk/types": "3.731.0",
32
32
  "@smithy/property-provider": "^4.0.0",
33
33
  "@smithy/shared-ini-file-loader": "^4.0.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-sdk/credential-provider-web-identity",
3
- "version": "3.731.0",
3
+ "version": "3.731.1",
4
4
  "description": "AWS credential provider that calls STS assumeRole for temporary AWS credentials",
5
5
  "main": "./dist-cjs/index.js",
6
6
  "module": "./dist-es/index.js",
@@ -34,7 +34,7 @@
34
34
  "license": "Apache-2.0",
35
35
  "dependencies": {
36
36
  "@aws-sdk/core": "3.731.0",
37
- "@aws-sdk/nested-clients": "3.731.0",
37
+ "@aws-sdk/nested-clients": "3.731.1",
38
38
  "@aws-sdk/types": "3.731.0",
39
39
  "@smithy/property-provider": "^4.0.0",
40
40
  "@smithy/types": "^4.0.0",
@@ -21,10 +21,9 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  // src/submodules/sso-oidc/index.ts
22
22
  var sso_oidc_exports = {};
23
23
  __export(sso_oidc_exports, {
24
- $Command: () => import_smithy_client5.Command,
24
+ $Command: () => import_smithy_client6.Command,
25
25
  AccessDeniedException: () => AccessDeniedException,
26
26
  AuthorizationPendingException: () => AuthorizationPendingException,
27
- ClientInputEndpointParameters: () => import_EndpointParameters3.ClientInputEndpointParameters,
28
27
  CreateTokenCommand: () => CreateTokenCommand,
29
28
  CreateTokenRequestFilterSensitiveLog: () => CreateTokenRequestFilterSensitiveLog,
30
29
  CreateTokenResponseFilterSensitiveLog: () => CreateTokenResponseFilterSensitiveLog,
@@ -40,7 +39,7 @@ __export(sso_oidc_exports, {
40
39
  SlowDownException: () => SlowDownException,
41
40
  UnauthorizedClientException: () => UnauthorizedClientException,
42
41
  UnsupportedGrantTypeException: () => UnsupportedGrantTypeException,
43
- __Client: () => import_smithy_client.Client
42
+ __Client: () => import_smithy_client2.Client
44
43
  });
45
44
  module.exports = __toCommonJS(sso_oidc_exports);
46
45
 
@@ -54,12 +53,93 @@ var import_core = require("@smithy/core");
54
53
  var import_middleware_content_length = require("@smithy/middleware-content-length");
55
54
  var import_middleware_endpoint = require("@smithy/middleware-endpoint");
56
55
  var import_middleware_retry = require("@smithy/middleware-retry");
57
- var import_smithy_client = require("@smithy/smithy-client");
56
+ var import_smithy_client2 = require("@smithy/smithy-client");
58
57
  var import_httpAuthSchemeProvider = require("./auth/httpAuthSchemeProvider");
59
- var import_EndpointParameters = require("./submodules/sts/endpoint/EndpointParameters");
58
+
59
+ // src/submodules/sso-oidc/endpoint/EndpointParameters.ts
60
+ var resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {
61
+ return {
62
+ ...options,
63
+ useDualstackEndpoint: options.useDualstackEndpoint ?? false,
64
+ useFipsEndpoint: options.useFipsEndpoint ?? false,
65
+ defaultSigningName: "sso-oauth"
66
+ };
67
+ }, "resolveClientEndpointParameters");
68
+ var commonParams = {
69
+ UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" },
70
+ Endpoint: { type: "builtInParams", name: "endpoint" },
71
+ Region: { type: "builtInParams", name: "region" },
72
+ UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }
73
+ };
74
+
75
+ // src/submodules/sso-oidc/SSOOIDCClient.ts
60
76
  var import_runtimeConfig = require("./runtimeConfig");
61
- var import_runtimeExtensions = require("./submodules/sts/runtimeExtensions");
62
- var SSOOIDCClient = class extends import_smithy_client.Client {
77
+
78
+ // src/submodules/sso-oidc/runtimeExtensions.ts
79
+ var import_region_config_resolver = require("@aws-sdk/region-config-resolver");
80
+ var import_protocol_http = require("@smithy/protocol-http");
81
+ var import_smithy_client = require("@smithy/smithy-client");
82
+
83
+ // src/submodules/sso-oidc/auth/httpAuthExtensionConfiguration.ts
84
+ var getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {
85
+ const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;
86
+ let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;
87
+ let _credentials = runtimeConfig.credentials;
88
+ return {
89
+ setHttpAuthScheme(httpAuthScheme) {
90
+ const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);
91
+ if (index === -1) {
92
+ _httpAuthSchemes.push(httpAuthScheme);
93
+ } else {
94
+ _httpAuthSchemes.splice(index, 1, httpAuthScheme);
95
+ }
96
+ },
97
+ httpAuthSchemes() {
98
+ return _httpAuthSchemes;
99
+ },
100
+ setHttpAuthSchemeProvider(httpAuthSchemeProvider) {
101
+ _httpAuthSchemeProvider = httpAuthSchemeProvider;
102
+ },
103
+ httpAuthSchemeProvider() {
104
+ return _httpAuthSchemeProvider;
105
+ },
106
+ setCredentials(credentials) {
107
+ _credentials = credentials;
108
+ },
109
+ credentials() {
110
+ return _credentials;
111
+ }
112
+ };
113
+ }, "getHttpAuthExtensionConfiguration");
114
+ var resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {
115
+ return {
116
+ httpAuthSchemes: config.httpAuthSchemes(),
117
+ httpAuthSchemeProvider: config.httpAuthSchemeProvider(),
118
+ credentials: config.credentials()
119
+ };
120
+ }, "resolveHttpAuthRuntimeConfig");
121
+
122
+ // src/submodules/sso-oidc/runtimeExtensions.ts
123
+ var asPartial = /* @__PURE__ */ __name((t) => t, "asPartial");
124
+ var resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {
125
+ const extensionConfiguration = {
126
+ ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),
127
+ ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),
128
+ ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),
129
+ ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))
130
+ };
131
+ extensions.forEach((extension) => extension.configure(extensionConfiguration));
132
+ return {
133
+ ...runtimeConfig,
134
+ ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),
135
+ ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),
136
+ ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),
137
+ ...resolveHttpAuthRuntimeConfig(extensionConfiguration)
138
+ };
139
+ }, "resolveRuntimeExtensions");
140
+
141
+ // src/submodules/sso-oidc/SSOOIDCClient.ts
142
+ var SSOOIDCClient = class extends import_smithy_client2.Client {
63
143
  static {
64
144
  __name(this, "SSOOIDCClient");
65
145
  }
@@ -69,14 +149,14 @@ var SSOOIDCClient = class extends import_smithy_client.Client {
69
149
  config;
70
150
  constructor(...[configuration]) {
71
151
  const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});
72
- const _config_1 = (0, import_EndpointParameters.resolveClientEndpointParameters)(_config_0);
152
+ const _config_1 = resolveClientEndpointParameters(_config_0);
73
153
  const _config_2 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_1);
74
154
  const _config_3 = (0, import_middleware_retry.resolveRetryConfig)(_config_2);
75
155
  const _config_4 = (0, import_config_resolver.resolveRegionConfig)(_config_3);
76
156
  const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);
77
157
  const _config_6 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_5);
78
158
  const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);
79
- const _config_8 = (0, import_runtimeExtensions.resolveRuntimeExtensions)(_config_7, configuration?.extensions || []);
159
+ const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []);
80
160
  super(_config_8);
81
161
  this.config = _config_8;
82
162
  this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));
@@ -106,20 +186,19 @@ var SSOOIDCClient = class extends import_smithy_client.Client {
106
186
  };
107
187
 
108
188
  // src/submodules/sso-oidc/SSOOIDC.ts
109
- var import_smithy_client6 = require("@smithy/smithy-client");
189
+ var import_smithy_client7 = require("@smithy/smithy-client");
110
190
 
111
191
  // src/submodules/sso-oidc/commands/CreateTokenCommand.ts
112
192
  var import_middleware_endpoint2 = require("@smithy/middleware-endpoint");
113
193
  var import_middleware_serde = require("@smithy/middleware-serde");
114
- var import_smithy_client5 = require("@smithy/smithy-client");
115
- var import_EndpointParameters2 = require("./submodules/sts/endpoint/EndpointParameters");
194
+ var import_smithy_client6 = require("@smithy/smithy-client");
116
195
 
117
196
  // src/submodules/sso-oidc/models/models_0.ts
118
- var import_smithy_client3 = require("@smithy/smithy-client");
197
+ var import_smithy_client4 = require("@smithy/smithy-client");
119
198
 
120
199
  // src/submodules/sso-oidc/models/SSOOIDCServiceException.ts
121
- var import_smithy_client2 = require("@smithy/smithy-client");
122
- var SSOOIDCServiceException = class _SSOOIDCServiceException extends import_smithy_client2.ServiceException {
200
+ var import_smithy_client3 = require("@smithy/smithy-client");
201
+ var SSOOIDCServiceException = class _SSOOIDCServiceException extends import_smithy_client3.ServiceException {
123
202
  static {
124
203
  __name(this, "SSOOIDCServiceException");
125
204
  }
@@ -199,15 +278,15 @@ var AuthorizationPendingException = class _AuthorizationPendingException extends
199
278
  };
200
279
  var CreateTokenRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({
201
280
  ...obj,
202
- ...obj.clientSecret && { clientSecret: import_smithy_client3.SENSITIVE_STRING },
203
- ...obj.refreshToken && { refreshToken: import_smithy_client3.SENSITIVE_STRING },
204
- ...obj.codeVerifier && { codeVerifier: import_smithy_client3.SENSITIVE_STRING }
281
+ ...obj.clientSecret && { clientSecret: import_smithy_client4.SENSITIVE_STRING },
282
+ ...obj.refreshToken && { refreshToken: import_smithy_client4.SENSITIVE_STRING },
283
+ ...obj.codeVerifier && { codeVerifier: import_smithy_client4.SENSITIVE_STRING }
205
284
  }), "CreateTokenRequestFilterSensitiveLog");
206
285
  var CreateTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({
207
286
  ...obj,
208
- ...obj.accessToken && { accessToken: import_smithy_client3.SENSITIVE_STRING },
209
- ...obj.refreshToken && { refreshToken: import_smithy_client3.SENSITIVE_STRING },
210
- ...obj.idToken && { idToken: import_smithy_client3.SENSITIVE_STRING }
287
+ ...obj.accessToken && { accessToken: import_smithy_client4.SENSITIVE_STRING },
288
+ ...obj.refreshToken && { refreshToken: import_smithy_client4.SENSITIVE_STRING },
289
+ ...obj.idToken && { idToken: import_smithy_client4.SENSITIVE_STRING }
211
290
  }), "CreateTokenResponseFilterSensitiveLog");
212
291
  var ExpiredTokenException = class _ExpiredTokenException extends SSOOIDCServiceException {
213
292
  static {
@@ -501,7 +580,7 @@ var UnsupportedGrantTypeException = class _UnsupportedGrantTypeException extends
501
580
  // src/submodules/sso-oidc/protocols/Aws_restJson1.ts
502
581
  var import_core2 = require("@aws-sdk/core");
503
582
  var import_core3 = require("@smithy/core");
504
- var import_smithy_client4 = require("@smithy/smithy-client");
583
+ var import_smithy_client5 = require("@smithy/smithy-client");
505
584
  var se_CreateTokenCommand = /* @__PURE__ */ __name(async (input, context) => {
506
585
  const b = (0, import_core3.requestBuilder)(input, context);
507
586
  const headers = {
@@ -510,7 +589,7 @@ var se_CreateTokenCommand = /* @__PURE__ */ __name(async (input, context) => {
510
589
  b.bp("/token");
511
590
  let body;
512
591
  body = JSON.stringify(
513
- (0, import_smithy_client4.take)(input, {
592
+ (0, import_smithy_client5.take)(input, {
514
593
  clientId: [],
515
594
  clientSecret: [],
516
595
  code: [],
@@ -519,7 +598,7 @@ var se_CreateTokenCommand = /* @__PURE__ */ __name(async (input, context) => {
519
598
  grantType: [],
520
599
  redirectUri: [],
521
600
  refreshToken: [],
522
- scope: (_) => (0, import_smithy_client4._json)(_)
601
+ scope: (_) => (0, import_smithy_client5._json)(_)
523
602
  })
524
603
  );
525
604
  b.m("POST").h(headers).b(body);
@@ -529,16 +608,16 @@ var de_CreateTokenCommand = /* @__PURE__ */ __name(async (output, context) => {
529
608
  if (output.statusCode !== 200 && output.statusCode >= 300) {
530
609
  return de_CommandError(output, context);
531
610
  }
532
- const contents = (0, import_smithy_client4.map)({
611
+ const contents = (0, import_smithy_client5.map)({
533
612
  $metadata: deserializeMetadata(output)
534
613
  });
535
- const data = (0, import_smithy_client4.expectNonNull)((0, import_smithy_client4.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
536
- const doc = (0, import_smithy_client4.take)(data, {
537
- accessToken: import_smithy_client4.expectString,
538
- expiresIn: import_smithy_client4.expectInt32,
539
- idToken: import_smithy_client4.expectString,
540
- refreshToken: import_smithy_client4.expectString,
541
- tokenType: import_smithy_client4.expectString
614
+ const data = (0, import_smithy_client5.expectNonNull)((0, import_smithy_client5.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), "body");
615
+ const doc = (0, import_smithy_client5.take)(data, {
616
+ accessToken: import_smithy_client5.expectString,
617
+ expiresIn: import_smithy_client5.expectInt32,
618
+ idToken: import_smithy_client5.expectString,
619
+ refreshToken: import_smithy_client5.expectString,
620
+ tokenType: import_smithy_client5.expectString
542
621
  });
543
622
  Object.assign(contents, doc);
544
623
  return contents;
@@ -592,160 +671,160 @@ var de_CommandError = /* @__PURE__ */ __name(async (output, context) => {
592
671
  });
593
672
  }
594
673
  }, "de_CommandError");
595
- var throwDefaultError = (0, import_smithy_client4.withBaseException)(SSOOIDCServiceException);
674
+ var throwDefaultError = (0, import_smithy_client5.withBaseException)(SSOOIDCServiceException);
596
675
  var de_AccessDeniedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {
597
- const contents = (0, import_smithy_client4.map)({});
676
+ const contents = (0, import_smithy_client5.map)({});
598
677
  const data = parsedOutput.body;
599
- const doc = (0, import_smithy_client4.take)(data, {
600
- error: import_smithy_client4.expectString,
601
- error_description: import_smithy_client4.expectString
678
+ const doc = (0, import_smithy_client5.take)(data, {
679
+ error: import_smithy_client5.expectString,
680
+ error_description: import_smithy_client5.expectString
602
681
  });
603
682
  Object.assign(contents, doc);
604
683
  const exception = new AccessDeniedException({
605
684
  $metadata: deserializeMetadata(parsedOutput),
606
685
  ...contents
607
686
  });
608
- return (0, import_smithy_client4.decorateServiceException)(exception, parsedOutput.body);
687
+ return (0, import_smithy_client5.decorateServiceException)(exception, parsedOutput.body);
609
688
  }, "de_AccessDeniedExceptionRes");
610
689
  var de_AuthorizationPendingExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {
611
- const contents = (0, import_smithy_client4.map)({});
690
+ const contents = (0, import_smithy_client5.map)({});
612
691
  const data = parsedOutput.body;
613
- const doc = (0, import_smithy_client4.take)(data, {
614
- error: import_smithy_client4.expectString,
615
- error_description: import_smithy_client4.expectString
692
+ const doc = (0, import_smithy_client5.take)(data, {
693
+ error: import_smithy_client5.expectString,
694
+ error_description: import_smithy_client5.expectString
616
695
  });
617
696
  Object.assign(contents, doc);
618
697
  const exception = new AuthorizationPendingException({
619
698
  $metadata: deserializeMetadata(parsedOutput),
620
699
  ...contents
621
700
  });
622
- return (0, import_smithy_client4.decorateServiceException)(exception, parsedOutput.body);
701
+ return (0, import_smithy_client5.decorateServiceException)(exception, parsedOutput.body);
623
702
  }, "de_AuthorizationPendingExceptionRes");
624
703
  var de_ExpiredTokenExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {
625
- const contents = (0, import_smithy_client4.map)({});
704
+ const contents = (0, import_smithy_client5.map)({});
626
705
  const data = parsedOutput.body;
627
- const doc = (0, import_smithy_client4.take)(data, {
628
- error: import_smithy_client4.expectString,
629
- error_description: import_smithy_client4.expectString
706
+ const doc = (0, import_smithy_client5.take)(data, {
707
+ error: import_smithy_client5.expectString,
708
+ error_description: import_smithy_client5.expectString
630
709
  });
631
710
  Object.assign(contents, doc);
632
711
  const exception = new ExpiredTokenException({
633
712
  $metadata: deserializeMetadata(parsedOutput),
634
713
  ...contents
635
714
  });
636
- return (0, import_smithy_client4.decorateServiceException)(exception, parsedOutput.body);
715
+ return (0, import_smithy_client5.decorateServiceException)(exception, parsedOutput.body);
637
716
  }, "de_ExpiredTokenExceptionRes");
638
717
  var de_InternalServerExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {
639
- const contents = (0, import_smithy_client4.map)({});
718
+ const contents = (0, import_smithy_client5.map)({});
640
719
  const data = parsedOutput.body;
641
- const doc = (0, import_smithy_client4.take)(data, {
642
- error: import_smithy_client4.expectString,
643
- error_description: import_smithy_client4.expectString
720
+ const doc = (0, import_smithy_client5.take)(data, {
721
+ error: import_smithy_client5.expectString,
722
+ error_description: import_smithy_client5.expectString
644
723
  });
645
724
  Object.assign(contents, doc);
646
725
  const exception = new InternalServerException({
647
726
  $metadata: deserializeMetadata(parsedOutput),
648
727
  ...contents
649
728
  });
650
- return (0, import_smithy_client4.decorateServiceException)(exception, parsedOutput.body);
729
+ return (0, import_smithy_client5.decorateServiceException)(exception, parsedOutput.body);
651
730
  }, "de_InternalServerExceptionRes");
652
731
  var de_InvalidClientExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {
653
- const contents = (0, import_smithy_client4.map)({});
732
+ const contents = (0, import_smithy_client5.map)({});
654
733
  const data = parsedOutput.body;
655
- const doc = (0, import_smithy_client4.take)(data, {
656
- error: import_smithy_client4.expectString,
657
- error_description: import_smithy_client4.expectString
734
+ const doc = (0, import_smithy_client5.take)(data, {
735
+ error: import_smithy_client5.expectString,
736
+ error_description: import_smithy_client5.expectString
658
737
  });
659
738
  Object.assign(contents, doc);
660
739
  const exception = new InvalidClientException({
661
740
  $metadata: deserializeMetadata(parsedOutput),
662
741
  ...contents
663
742
  });
664
- return (0, import_smithy_client4.decorateServiceException)(exception, parsedOutput.body);
743
+ return (0, import_smithy_client5.decorateServiceException)(exception, parsedOutput.body);
665
744
  }, "de_InvalidClientExceptionRes");
666
745
  var de_InvalidGrantExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {
667
- const contents = (0, import_smithy_client4.map)({});
746
+ const contents = (0, import_smithy_client5.map)({});
668
747
  const data = parsedOutput.body;
669
- const doc = (0, import_smithy_client4.take)(data, {
670
- error: import_smithy_client4.expectString,
671
- error_description: import_smithy_client4.expectString
748
+ const doc = (0, import_smithy_client5.take)(data, {
749
+ error: import_smithy_client5.expectString,
750
+ error_description: import_smithy_client5.expectString
672
751
  });
673
752
  Object.assign(contents, doc);
674
753
  const exception = new InvalidGrantException({
675
754
  $metadata: deserializeMetadata(parsedOutput),
676
755
  ...contents
677
756
  });
678
- return (0, import_smithy_client4.decorateServiceException)(exception, parsedOutput.body);
757
+ return (0, import_smithy_client5.decorateServiceException)(exception, parsedOutput.body);
679
758
  }, "de_InvalidGrantExceptionRes");
680
759
  var de_InvalidRequestExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {
681
- const contents = (0, import_smithy_client4.map)({});
760
+ const contents = (0, import_smithy_client5.map)({});
682
761
  const data = parsedOutput.body;
683
- const doc = (0, import_smithy_client4.take)(data, {
684
- error: import_smithy_client4.expectString,
685
- error_description: import_smithy_client4.expectString
762
+ const doc = (0, import_smithy_client5.take)(data, {
763
+ error: import_smithy_client5.expectString,
764
+ error_description: import_smithy_client5.expectString
686
765
  });
687
766
  Object.assign(contents, doc);
688
767
  const exception = new InvalidRequestException({
689
768
  $metadata: deserializeMetadata(parsedOutput),
690
769
  ...contents
691
770
  });
692
- return (0, import_smithy_client4.decorateServiceException)(exception, parsedOutput.body);
771
+ return (0, import_smithy_client5.decorateServiceException)(exception, parsedOutput.body);
693
772
  }, "de_InvalidRequestExceptionRes");
694
773
  var de_InvalidScopeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {
695
- const contents = (0, import_smithy_client4.map)({});
774
+ const contents = (0, import_smithy_client5.map)({});
696
775
  const data = parsedOutput.body;
697
- const doc = (0, import_smithy_client4.take)(data, {
698
- error: import_smithy_client4.expectString,
699
- error_description: import_smithy_client4.expectString
776
+ const doc = (0, import_smithy_client5.take)(data, {
777
+ error: import_smithy_client5.expectString,
778
+ error_description: import_smithy_client5.expectString
700
779
  });
701
780
  Object.assign(contents, doc);
702
781
  const exception = new InvalidScopeException({
703
782
  $metadata: deserializeMetadata(parsedOutput),
704
783
  ...contents
705
784
  });
706
- return (0, import_smithy_client4.decorateServiceException)(exception, parsedOutput.body);
785
+ return (0, import_smithy_client5.decorateServiceException)(exception, parsedOutput.body);
707
786
  }, "de_InvalidScopeExceptionRes");
708
787
  var de_SlowDownExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {
709
- const contents = (0, import_smithy_client4.map)({});
788
+ const contents = (0, import_smithy_client5.map)({});
710
789
  const data = parsedOutput.body;
711
- const doc = (0, import_smithy_client4.take)(data, {
712
- error: import_smithy_client4.expectString,
713
- error_description: import_smithy_client4.expectString
790
+ const doc = (0, import_smithy_client5.take)(data, {
791
+ error: import_smithy_client5.expectString,
792
+ error_description: import_smithy_client5.expectString
714
793
  });
715
794
  Object.assign(contents, doc);
716
795
  const exception = new SlowDownException({
717
796
  $metadata: deserializeMetadata(parsedOutput),
718
797
  ...contents
719
798
  });
720
- return (0, import_smithy_client4.decorateServiceException)(exception, parsedOutput.body);
799
+ return (0, import_smithy_client5.decorateServiceException)(exception, parsedOutput.body);
721
800
  }, "de_SlowDownExceptionRes");
722
801
  var de_UnauthorizedClientExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {
723
- const contents = (0, import_smithy_client4.map)({});
802
+ const contents = (0, import_smithy_client5.map)({});
724
803
  const data = parsedOutput.body;
725
- const doc = (0, import_smithy_client4.take)(data, {
726
- error: import_smithy_client4.expectString,
727
- error_description: import_smithy_client4.expectString
804
+ const doc = (0, import_smithy_client5.take)(data, {
805
+ error: import_smithy_client5.expectString,
806
+ error_description: import_smithy_client5.expectString
728
807
  });
729
808
  Object.assign(contents, doc);
730
809
  const exception = new UnauthorizedClientException({
731
810
  $metadata: deserializeMetadata(parsedOutput),
732
811
  ...contents
733
812
  });
734
- return (0, import_smithy_client4.decorateServiceException)(exception, parsedOutput.body);
813
+ return (0, import_smithy_client5.decorateServiceException)(exception, parsedOutput.body);
735
814
  }, "de_UnauthorizedClientExceptionRes");
736
815
  var de_UnsupportedGrantTypeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {
737
- const contents = (0, import_smithy_client4.map)({});
816
+ const contents = (0, import_smithy_client5.map)({});
738
817
  const data = parsedOutput.body;
739
- const doc = (0, import_smithy_client4.take)(data, {
740
- error: import_smithy_client4.expectString,
741
- error_description: import_smithy_client4.expectString
818
+ const doc = (0, import_smithy_client5.take)(data, {
819
+ error: import_smithy_client5.expectString,
820
+ error_description: import_smithy_client5.expectString
742
821
  });
743
822
  Object.assign(contents, doc);
744
823
  const exception = new UnsupportedGrantTypeException({
745
824
  $metadata: deserializeMetadata(parsedOutput),
746
825
  ...contents
747
826
  });
748
- return (0, import_smithy_client4.decorateServiceException)(exception, parsedOutput.body);
827
+ return (0, import_smithy_client5.decorateServiceException)(exception, parsedOutput.body);
749
828
  }, "de_UnsupportedGrantTypeExceptionRes");
750
829
  var deserializeMetadata = /* @__PURE__ */ __name((output) => ({
751
830
  httpStatusCode: output.statusCode,
@@ -755,7 +834,7 @@ var deserializeMetadata = /* @__PURE__ */ __name((output) => ({
755
834
  }), "deserializeMetadata");
756
835
 
757
836
  // src/submodules/sso-oidc/commands/CreateTokenCommand.ts
758
- var CreateTokenCommand = class extends import_smithy_client5.Command.classBuilder().ep(import_EndpointParameters2.commonParams).m(function(Command, cs, config, o) {
837
+ var CreateTokenCommand = class extends import_smithy_client6.Command.classBuilder().ep(commonParams).m(function(Command, cs, config, o) {
759
838
  return [
760
839
  (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),
761
840
  (0, import_middleware_endpoint2.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())
@@ -775,16 +854,12 @@ var SSOOIDC = class extends SSOOIDCClient {
775
854
  __name(this, "SSOOIDC");
776
855
  }
777
856
  };
778
- (0, import_smithy_client6.createAggregatedClient)(commands, SSOOIDC);
779
-
780
- // src/submodules/sso-oidc/index.ts
781
- var import_EndpointParameters3 = require("./submodules/sts/endpoint/EndpointParameters");
857
+ (0, import_smithy_client7.createAggregatedClient)(commands, SSOOIDC);
782
858
  // Annotate the CommonJS export names for ESM import in node:
783
859
  0 && (module.exports = {
784
860
  $Command,
785
861
  AccessDeniedException,
786
862
  AuthorizationPendingException,
787
- ClientInputEndpointParameters,
788
863
  CreateTokenCommand,
789
864
  CreateTokenRequestFilterSensitiveLog,
790
865
  CreateTokenResponseFilterSensitiveLog,
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * This package exports nothing at the root.
3
3
  * Use submodules e.g. \@aws-sdk/nested-clients/client-sts.
4
+ *
4
5
  * @internal
5
6
  */
6
7
  export {};
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-sdk/nested-clients",
3
- "version": "3.731.0",
3
+ "version": "3.731.1",
4
4
  "description": "Nested clients for AWS SDK packages.",
5
5
  "main": "./dist-cjs/index.js",
6
6
  "module": "./dist-es/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-sdk/token-providers",
3
- "version": "3.731.0",
3
+ "version": "3.731.1",
4
4
  "description": "A collection of token providers",
5
5
  "main": "./dist-cjs/index.js",
6
6
  "module": "./dist-es/index.js",
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "license": "Apache-2.0",
29
29
  "dependencies": {
30
- "@aws-sdk/nested-clients": "3.731.0",
30
+ "@aws-sdk/nested-clients": "3.731.1",
31
31
  "@aws-sdk/types": "3.731.0",
32
32
  "@smithy/property-provider": "^4.0.0",
33
33
  "@smithy/shared-ini-file-loader": "^4.0.0",
package/package.json CHANGED
@@ -56,7 +56,7 @@
56
56
  "@typescript-eslint/eslint-plugin": "^8",
57
57
  "@typescript-eslint/parser": "^8",
58
58
  "aws-cdk-lib": "2.90.0",
59
- "cdk-assets": "^2.155.88",
59
+ "cdk-assets": "^2.155.89",
60
60
  "commit-and-tag-version": "^12",
61
61
  "constructs": "10.0.5",
62
62
  "eslint": "^9",
@@ -81,11 +81,11 @@
81
81
  "constructs": "^10.0.5"
82
82
  },
83
83
  "dependencies": {
84
- "@aws-sdk/client-cloudwatch-logs": "^3.731.0",
85
- "@aws-sdk/client-route-53": "^3.731.0",
86
- "@aws-sdk/client-s3": "^3.731.0",
87
- "@aws-sdk/client-ses": "^3.731.0",
88
- "@aws-sdk/client-ssm": "^3.731.0",
84
+ "@aws-sdk/client-cloudwatch-logs": "^3.731.1",
85
+ "@aws-sdk/client-route-53": "^3.731.1",
86
+ "@aws-sdk/client-s3": "^3.731.1",
87
+ "@aws-sdk/client-ses": "^3.731.1",
88
+ "@aws-sdk/client-ssm": "^3.731.1",
89
89
  "async-retry": "^1.3.3",
90
90
  "axios": "^1.7.9",
91
91
  "cdk-nag": "^2.34.23",
@@ -116,7 +116,7 @@
116
116
  "publishConfig": {
117
117
  "access": "public"
118
118
  },
119
- "version": "0.0.272",
119
+ "version": "0.0.274",
120
120
  "jest": {
121
121
  "coverageProvider": "v8",
122
122
  "testMatch": [