Skip to content

Commit

Permalink
Add column configuration_settings to aws_elastic_beanstalk_environmen…
Browse files Browse the repository at this point in the history
…t table closes #1906 (#1916)

Co-authored-by: madhushreeray@30 <madhushree@turbot.com>
  • Loading branch information
misraved and madhushreeray30 committed Sep 26, 2023
1 parent 9817e2f commit 2f1aaa2
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
40 changes: 40 additions & 0 deletions aws/table_aws_elastic_beanstalk_environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,13 @@ func tableAwsElasticBeanstalkEnvironment(_ context.Context) *plugin.Table {
Description: "The application version deployed in this environment.",
Type: proto.ColumnType_STRING,
},
{
Name: "configuration_settings",
Description: "Returns a description of the settings for the specified configuration set, that is, either a configuration template or the configuration set associated with a running environment.",
Type: proto.ColumnType_JSON,
Hydrate: getAwsElasticBeanstalkConfigurationSettings,
Transform: transform.FromValue(),
},
{
Name: "environment_links",
Description: "A list of links to other environments in the same group.",
Expand Down Expand Up @@ -331,6 +338,39 @@ func getAwsElasticBeanstalkEnvironmentManagedActions(ctx context.Context, d *plu
return nil, nil
}

func getAwsElasticBeanstalkConfigurationSettings(ctx context.Context, d *plugin.QueryData, h *plugin.HydrateData) (interface{}, error) {
// Create Session
svc, err := ElasticBeanstalkClient(ctx, d)
if err != nil {
plugin.Logger(ctx).Error("elastic_beanstalk_environment.getAwsElasticBeanstalkConfigurationSettings", "connection_error", err)
return nil, err
}

env := h.Item.(types.EnvironmentDescription)
// Build params
params := &elasticbeanstalk.DescribeConfigurationSettingsInput{
ApplicationName: env.ApplicationName,
EnvironmentName: env.EnvironmentName,
}

configurationSettings, err := svc.DescribeConfigurationSettings(ctx, params)
if err != nil {
var ae smithy.APIError
if errors.As(err, &ae) {
if ae.ErrorCode() == "InvalidParameterValue" {
return nil, nil
}
}
plugin.Logger(ctx).Error("elastic_beanstalk_environment.getAwsElasticBeanstalkConfigurationSettings", "api_error", err)
return nil, err
}

if configurationSettings != nil && len(configurationSettings.ConfigurationSettings) > 0 {
return configurationSettings.ConfigurationSettings, nil
}
return nil, nil
}

func listElasticBeanstalkEnvironmentTags(ctx context.Context, d *plugin.QueryData, h *plugin.HydrateData) (interface{}, error) {
resourceArn := h.Item.(types.EnvironmentDescription).EnvironmentArn

Expand Down
22 changes: 22 additions & 0 deletions docs/tables/aws_elastic_beanstalk_environment.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,26 @@ select
from
aws_elastic_beanstalk_environment,
jsonb_array_elements(managed_actions) as a;
```

### list the configuration settings for each environment

```sql
select
environment_name,
application_name,
c ->> 'DateCreated' as date_created,
c ->> 'DateUpdated' as date_updated,
c ->> 'DeploymentStatus' as deployment_status,
c ->> 'Description' as description,
c -> 'OptionSettings' ->> 'Namespace' as option_settings_namespace,
c -> 'OptionSettings' ->> 'OptionName' as option_name,
c -> 'OptionSettings' ->> 'ResourceName' as option_resource_name,
c -> 'OptionSettings' ->> 'Value' as option_value,
c ->> 'PlatformArn' as platform_arn,
c ->> 'SolutionStackName' as solution_stack_name,
c ->> 'TemplateName' as template_name
from
aws_elastic_beanstalk_environment,
jsonb_array_elements(configuration_settings) as c;
```

0 comments on commit 2f1aaa2

Please sign in to comment.