feat(ses): allow VDM settings at the configuration set level#30051
feat(ses): allow VDM settings at the configuration set level#30051mergify[bot] merged 14 commits intoaws:mainfrom
Conversation
nmussy
left a comment
There was a problem hiding this comment.
Just minor issues, good work overall 👍
| /** | ||
| * The Virtual Deliverability Manager (VDM) options that apply to the configuration set | ||
| * | ||
| * @default - use account level settings |
There was a problem hiding this comment.
We should probably indicate what the default values are first, and mention that this can be overridden by account level settings
There was a problem hiding this comment.
Thank you for the review.
I've stated that "default" indicates the absence of settings at the Configuration level, and in such cases, settings at the account level will be applied.
There was a problem hiding this comment.
Sorry, I should have made myself clearer. I think it's more important to tell the users that by default, VDM options are disabled, unless there are account level settings. Your current documentation only states that if they happen to have account level settings, those will be used. I would expect most of the CDK users will not be using account level settings.
There was a problem hiding this comment.
I understand. Sorry for the lack of explanation.
However, my understanding is that the configuration set level settings need to be used together with the account level settings. (Deploying with only the configuration set level settings enabled is possible, but VDM itself cannot be used until the account level settings are enabled.)
That's why I tried to include the above as a Note in the README, but I would like your opinion.
I'm a little unsure about how it should be written...
There was a problem hiding this comment.
Oh, got it. The AWS documentation doesn't really make it explicit that they need to be enabled account wide first:
Virtual Deliverability Manager options are also provided at the configuration set level so you can define custom settings for how a configuration set will use engagement tracking and optimized shared delivery by overriding how they’ve been defined in Virtual Deliverability Manager.
I would really emphasize it in the TSDoc as well, the README seems to have it covered
There was a problem hiding this comment.
@nmussy
Thank you. I have added a note to the README and docs that when setting Account Level settings with CDK, VdmAttributes should be used.
| /** | ||
| * Whether engagement metrics are enabled for the configuration set | ||
| * | ||
| * @default - use account level settings |
There was a problem hiding this comment.
It's the same as the comment above.
| /** | ||
| * Whether optimized shared delivery is enabled for the configuration set | ||
| * | ||
| * @default - use account level settings |
There was a problem hiding this comment.
It's the same as the comment above.
| test('configuration set with engagement metrics only', () => { | ||
| new ConfigurationSet(stack, 'ConfigurationSet', { | ||
| vdmOptions: { | ||
| engagementMetrics: true, | ||
| }, | ||
| }); | ||
|
|
||
| Template.fromStack(stack).hasResourceProperties('AWS::SES::ConfigurationSet', { | ||
| VdmOptions: { | ||
| DashboardOptions: { | ||
| EngagementMetrics: 'ENABLED', | ||
| }, | ||
| GuardianOptions: Match.absent(), | ||
| }, | ||
| }); | ||
| }); | ||
|
|
||
| test('configuration set with optimized shared delivery only', () => { | ||
| new ConfigurationSet(stack, 'ConfigurationSet', { | ||
| vdmOptions: { | ||
| optimizedSharedDelivery: true, | ||
| }, | ||
| }); | ||
|
|
||
| Template.fromStack(stack).hasResourceProperties('AWS::SES::ConfigurationSet', { | ||
| VdmOptions: { | ||
| DashboardOptions: Match.absent(), | ||
| GuardianOptions: { | ||
| OptimizedSharedDelivery: 'ENABLED', | ||
| }, | ||
| }, | ||
| }); | ||
| }); No newline at end of file |
There was a problem hiding this comment.
These tests seem a bit superfluous, given they're already being covered by the first one. It'd be more appropriate to test vdmOptions: {false, false} and vdmOptions: {},
There was a problem hiding this comment.
I've added test cases for when both options in vdmOptions are set to "DISABLED" and when vdmOptions itself is not configured.
Additionally, I'm sorry to say that I've realized from the results of these tests that the "DISABLED" setting cannot be implemented. Therefore, I'm revisiting the implementation of vdmOptions.
There was a problem hiding this comment.
Have you tried setting it to DISABLED with ENABLED account wide settings? That might be the only allowed use case
There was a problem hiding this comment.
Yes, I did and I could.
As I mentioned in a separate comment, the configuration set level settings can be deployed on their own, but to enable VDM, it is appropriate to configure them together with the account level settings.
Therefore, I also added the account level settings to the integration tests.
Co-authored-by: Jimmy Gaussen <jimmy.gaussen@gmail.com>
Co-authored-by: Jimmy Gaussen <jimmy.gaussen@gmail.com>
Co-authored-by: Jimmy Gaussen <jimmy.gaussen@gmail.com>
Co-authored-by: Jimmy Gaussen <jimmy.gaussen@gmail.com>
|
@nmussy |
| new ses.VdmAttributes(this, 'VdmAccountLevelSettings', { | ||
| engagementMetrics: true, | ||
| optimizedSharedDelivery: true, | ||
| }); |
There was a problem hiding this comment.
So there are the account-wide settings? I would indicate the construct name in the README and the TSDoc if that's the case
There was a problem hiding this comment.
As per the other comments, the README and docs have been updated.
| new integ.IntegTest(app, 'ConfigurationSetVdmOptionsInteg', { | ||
| testCases: [new TestStack(app, 'cdk-ses-configuration-set-vdmoptions-integ')], | ||
| }); |
There was a problem hiding this comment.
It's probably a good idea to run some assertions to make sure that the configuration sets and VdmAttributes are created with the expected values, see integ-tests. Let me know if you need some guidance
There was a problem hiding this comment.
@nmussy
Thank you for your comments. I have added assertions using AwsApiCall for integration testing. Please let me know if there are any inappropriate parts.
Co-authored-by: Jimmy Gaussen <jimmy.gaussen@gmail.com>
nmussy
left a comment
There was a problem hiding this comment.
LGTM, thanks for the changes 👍
GavinZZ
left a comment
There was a problem hiding this comment.
Nice work, thanks for contributing!
|
Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork). |
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
|
Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork). |
### Issue # (if applicable) Closes aws#30041 . ### Reason for this change As described in the issue. ### Description of changes To allow VDM settings at the configuration set level, `vdmOptions` property has been added to the `ConfigurationSet` Construct. ```ts new ses.ConfigurationSet(this, 'ConfigurationSetWithVdmOptions', { vdmOptions: { // Add engagementMetrics: true, optimizedSharedDelivery: true, }, }); ``` ### Description of how you validated changes I implemented unit tests and integration tests for the three cases. 1. Configuration set with both engagement metrics and optimized shared delivery enabled. 2. Configuration set with only engagement metrics enabled and optimized shared delivery not configured. 3. Configuration set with only optimized shared delivery enabled and engagement metrics not configured. ### Checklist - [x] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
### Issue # (if applicable) Closes aws#30041 . ### Reason for this change As described in the issue. ### Description of changes To allow VDM settings at the configuration set level, `vdmOptions` property has been added to the `ConfigurationSet` Construct. ```ts new ses.ConfigurationSet(this, 'ConfigurationSetWithVdmOptions', { vdmOptions: { // Add engagementMetrics: true, optimizedSharedDelivery: true, }, }); ``` ### Description of how you validated changes I implemented unit tests and integration tests for the three cases. 1. Configuration set with both engagement metrics and optimized shared delivery enabled. 2. Configuration set with only engagement metrics enabled and optimized shared delivery not configured. 3. Configuration set with only optimized shared delivery enabled and engagement metrics not configured. ### Checklist - [x] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
|
Comments on closed issues and PRs are hard for our team to see. If you need help, please open a new issue that references this one. |
Issue # (if applicable)
Closes #30041 .
Reason for this change
As described in the issue.
Description of changes
To allow VDM settings at the configuration set level,
vdmOptionsproperty has been added to theConfigurationSetConstruct.Description of how you validated changes
I implemented unit tests and integration tests for the three cases.
Checklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license