From d2a09994435272f55a96499fa54bcea672bb665e Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Sun, 23 Aug 2020 09:02:39 -0600 Subject: [PATCH] Fill cloud.account.name with accountID if account alias doesn't exist (#20736) * Fill cloud.account.name with accountID if account alias doesn't exist --- CHANGELOG.next.asciidoc | 1 + x-pack/metricbeat/module/aws/aws.go | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index d4c01ab8d16..ead13179101 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -327,6 +327,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d - Updates vm_compute metricset with more info on guest metrics. {pull}20448[20448] - Fix resource tags in aws cloudwatch metricset {issue}20326[20326] {pull}20385[20385] - Fix ec2 disk and network metrics to use Sum statistic method. {pull}20680[20680] +- Fill cloud.account.name with accountID if account alias doesn't exist. {pull}20736[20736] *Packetbeat* diff --git a/x-pack/metricbeat/module/aws/aws.go b/x-pack/metricbeat/module/aws/aws.go index ba24b8a9f98..a49e04c010b 100644 --- a/x-pack/metricbeat/module/aws/aws.go +++ b/x-pack/metricbeat/module/aws/aws.go @@ -104,19 +104,24 @@ func NewMetricSet(base mb.BaseMetricSet) (*MetricSet, error) { default: awsConfig.Region = "us-east-1" } + svcIam := iam.New(awscommon.EnrichAWSConfigWithEndpoint( config.AWSConfig.Endpoint, "iam", "", awsConfig)) req := svcIam.ListAccountAliasesRequest(&iam.ListAccountAliasesInput{}) output, err := req.Send(context.TODO()) if err != nil { base.Logger().Warn("failed to list account aliases, please check permission setting: ", err) + metricSet.AccountName = metricSet.AccountID } else { + // When there is no account alias, account ID will be used as cloud.account.name + if len(output.AccountAliases) == 0 { + metricSet.AccountName = metricSet.AccountID + } + // There can be more than one aliases for each account, for now we are only // collecting the first one. - if output.AccountAliases != nil { - metricSet.AccountName = output.AccountAliases[0] - base.Logger().Debug("AWS Credentials belong to account name: ", metricSet.AccountName) - } + metricSet.AccountName = output.AccountAliases[0] + base.Logger().Debug("AWS Credentials belong to account name: ", metricSet.AccountName) } // Get IAM account id