feat(cloudwatch): add support for cross-account alarms#16007
feat(cloudwatch): add support for cross-account alarms#16007mergify[bot] merged 12 commits intoaws:masterfrom kaizencc:xa-alarms
Conversation
rix0rrr
left a comment
There was a problem hiding this comment.
LGTM, leaving to Madeline to decide final vote
| withStat(stat, conf) { | ||
| self.validateMetricStat(stat, metric); | ||
| if (conf.renderingProperties?.label == undefined) { | ||
| if (conf.renderingProperties?.label == undefined && |
There was a problem hiding this comment.
💅 for readability, it might make sense to assign this expression to a variable to indicate what and why this is happening.
const canRenderAsLegacyMetric = /* ...expression... */;
// Do this to disturb existing templates as little as possible
if (canRenderAsLegacyMetric) {
return /* ... */;
}|
Hi, can we merge and close the ticket? |
| withStat(stat, conf) { | ||
| self.validateMetricStat(stat, metric); | ||
| if (conf.renderingProperties?.label == undefined) { | ||
| const canRenderAsLegacyMetric = conf.renderingProperties?.label == undefined && |
There was a problem hiding this comment.
Can you explain what you mean by the term "legacy" here? This doesn't quite make sense to me, since the accountId is only set if this is true, which would imply that a cross-account alarm only works if the metric is in a "legacy" format of some kind. But that doesn't make sense, since cross-account alarms are a new feature.
There was a problem hiding this comment.
The "legacy" term refers to the fact that cloudwatch has two ways to provision metrics on alarms, and only one way is being updated with new features like cross-account alarms. We want to avoid causing unnecessary diffs, so we shepherd metrics that do not require these "new" features to the "legacy" properties - the new way to provision metrics is via the CfnAlarm.MetricDataQueryProperty.
Here accountId is only set if canRenderAsLegacyMetric is false, not true. So it is correctly named here. (what seems to be the confusion is that github is hiding the unchanged lines and makes it seem like accountId is inside the if (canRenderAsLegacyMetric) scope when it is actually not.)
There was a problem hiding this comment.
aha, thank you for the explanation! The github diff was confusing me here as well :)
|
|
||
| }); | ||
|
|
||
| test('metric attached to stack3 will render in stack1 ', () => { |
There was a problem hiding this comment.
Can you add a test that uses the method of setting the account property on the metric instead of using attachTo? There should be a unit test for each way that it is possible to use the feature.
There was a problem hiding this comment.
I added an additional test that uses the account property, but I do want to push back on this a bit (or ask for clarification). Under the hood, metric.AttachTo() simply updates the metric object with the account property, so I see it as a convenience method and not an additional way to use this feature. To me, it seems like the second test duplicates the first. Does this still warrant an additional unit test?
There was a problem hiding this comment.
I suppose it is somewhat of a grey area. But I still think the extra test is helpful. Your reasoning for the additional unit test being unnecessary is based on an implementation detail. What if that changes? In this particular scenario, it doesn't seem likely. But in general, unit tests should test the API in all ways that a customer could use it, and make sure that the correct behaviour/result happens in all of them. So that if someone accidentally breaks something by changing an implementation detail, then the unit tests will catch it.
| withStat(stat, conf) { | ||
| self.validateMetricStat(stat, metric); | ||
| if (conf.renderingProperties?.label == undefined) { | ||
| const canRenderAsLegacyMetric = conf.renderingProperties?.label == undefined && |
There was a problem hiding this comment.
aha, thank you for the explanation! The github diff was confusing me here as well :)
|
|
||
| }); | ||
|
|
||
| test('metric attached to stack3 will render in stack1 ', () => { |
There was a problem hiding this comment.
I suppose it is somewhat of a grey area. But I still think the extra test is helpful. Your reasoning for the additional unit test being unnecessary is based on an implementation detail. What if that changes? In this particular scenario, it doesn't seem likely. But in general, unit tests should test the API in all ways that a customer could use it, and make sure that the correct behaviour/result happens in all of them. So that if someone accidentally breaks something by changing an implementation detail, then the unit tests will catch it.
|
Thank you for contributing! Your pull request will be updated from master 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 master and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork). |
|
Looking forward to this function, may I know when will this change get delivered in monocdk? |
Allows `accountId` to be specified in a CloudWatch Alarm. This opens up the ability to create cross-account alarms, which was just [announced](https://aws.amazon.com/about-aws/whats-new/2021/08/announcing-amazon-cloudwatch-cross-account-alarms/). closes aws#15959. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Allows `accountId` to be specified in a CloudWatch Alarm. This opens up the ability to create cross-account alarms, which was just [announced](https://aws.amazon.com/about-aws/whats-new/2021/08/announcing-amazon-cloudwatch-cross-account-alarms/). closes aws#15959. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Allows `accountId` to be specified in a CloudWatch Alarm. This opens up the ability to create cross-account alarms, which was just [announced](https://aws.amazon.com/about-aws/whats-new/2021/08/announcing-amazon-cloudwatch-cross-account-alarms/). closes aws#15959. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Allows
accountIdto be specified in a CloudWatch Alarm. This opens up the ability to create cross-account alarms, which was just announced.closes #15959.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license