Skip to content

Commit 54d8195

Browse files
dj00808Zhang DajiangCopilot
authored
feat: add monitoring_subscription column to aws_cloudfront_distribution (#2695)
Co-authored-by: Zhang Dajiang <zhang_dajiang@tech.gov.sg> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 5572ecf commit 54d8195

4 files changed

Lines changed: 69 additions & 1 deletion

File tree

aws-test/tests/aws_cloudfront_distribution/test-get-expected.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
"domain_name": "{{ output.domain_name.value }}",
66
"e_tag": "{{ output.etag.value }}",
77
"id": "{{ output.resource_id.value }}",
8+
"monitoring_subscription": {
9+
"RealtimeMetricsSubscriptionConfig": {
10+
"RealtimeMetricsSubscriptionStatus": "Enabled"
11+
}
12+
},
813
"price_class": "PriceClass_200",
914
"status": "Deployed",
1015
"tags": {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
select id, akas, tags, status, domain_name, default_root_object, e_tag, price_class
1+
select id, akas, tags, status, domain_name, default_root_object, e_tag, price_class, monitoring_subscription
22
from aws.aws_cloudfront_distribution
33
where id = '{{ output.resource_id.value }}';

aws-test/tests/aws_cloudfront_distribution/variables.tf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,16 @@ resource "aws_cloudfront_distribution" "named_test_resource" {
101101
}
102102
}
103103

104+
resource "aws_cloudfront_monitoring_subscription" "test" {
105+
distribution_id = aws_cloudfront_distribution.named_test_resource.id
106+
107+
monitoring_subscription {
108+
realtime_metrics_subscription_config {
109+
realtime_metrics_subscription_status = "Enabled"
110+
}
111+
}
112+
}
113+
104114
output "resource_aka" {
105115
value = aws_cloudfront_distribution.named_test_resource.arn
106116
}

aws/table_aws_cloudfront_distribution.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ func tableAwsCloudFrontDistribution(_ context.Context) *plugin.Table {
3838
Func: getCloudFrontDistributionTags,
3939
Tags: map[string]string{"service": "cloudfront", "action": "ListTagsForResource"},
4040
},
41+
{
42+
Func: getCloudFrontDistributionMonitoringSubscription,
43+
Tags: map[string]string{"service": "cloudfront", "action": "GetMonitoringSubscription"},
44+
IgnoreConfig: &plugin.IgnoreConfig{
45+
ShouldIgnoreErrorFunc: shouldIgnoreErrors([]string{"NoSuchMonitoringSubscription"}),
46+
},
47+
},
4148
},
4249
Columns: awsRegionalColumns([]*plugin.Column{
4350
{
@@ -215,6 +222,13 @@ func tableAwsCloudFrontDistribution(_ context.Context) *plugin.Table {
215222
Type: proto.ColumnType_JSON,
216223
Transform: transform.FromField("ViewerCertificate", "Distribution.DistributionConfig.ViewerCertificate"),
217224
},
225+
{
226+
Name: "monitoring_subscription",
227+
Description: "The monitoring subscription for the CloudFront distribution.",
228+
Type: proto.ColumnType_JSON,
229+
Hydrate: getCloudFrontDistributionMonitoringSubscription,
230+
Transform: transform.FromValue(),
231+
},
218232

219233
// Standard columns for all tables
220234
{
@@ -356,6 +370,45 @@ func getCloudFrontDistributionTags(ctx context.Context, d *plugin.QueryData, h *
356370
return op, nil
357371
}
358372

373+
func getCloudFrontDistributionMonitoringSubscription(ctx context.Context, d *plugin.QueryData, h *plugin.HydrateData) (interface{}, error) {
374+
// Get client
375+
svc, err := CloudFrontClient(ctx, d)
376+
if err != nil {
377+
plugin.Logger(ctx).Error("aws_cloudfront_distribution.getCloudFrontDistributionMonitoringSubscription", "client_error", err)
378+
return nil, err
379+
}
380+
381+
var distributionID string
382+
if h.Item != nil {
383+
switch item := h.Item.(type) {
384+
case types.DistributionSummary:
385+
distributionID = *item.Id
386+
case cloudfront.GetDistributionOutput:
387+
distributionID = *item.Distribution.Id
388+
}
389+
} else {
390+
distributionID = d.EqualsQuals["id"].GetStringValue()
391+
}
392+
393+
if strings.TrimSpace(distributionID) == "" {
394+
return nil, nil
395+
}
396+
397+
// Build the params
398+
params := &cloudfront.GetMonitoringSubscriptionInput{
399+
DistributionId: &distributionID,
400+
}
401+
402+
// Get call
403+
op, err := svc.GetMonitoringSubscription(ctx, params)
404+
if err != nil {
405+
plugin.Logger(ctx).Error("aws_cloudfront_distribution.getCloudFrontDistributionMonitoringSubscription", "api_error", err)
406+
return nil, err
407+
}
408+
409+
return op.MonitoringSubscription, nil
410+
}
411+
359412
//// TRANSFORM FUNCTIONS
360413

361414
func cloudFrontDistributionTagListToTurbotTags(ctx context.Context, d *transform.TransformData) (interface{}, error) {

0 commit comments

Comments
 (0)