1+ import {
2+ DescribeConfigurationSettingsCommand ,
3+ DescribeConfigurationSettingsMessage ,
4+ DescribeEnvironmentResourcesCommand ,
5+ DescribeEnvironmentResourcesMessage ,
6+ DescribeEnvironmentsCommand ,
7+ ElasticBeanstalkClient ,
8+ } from '@aws-sdk/client-elastic-beanstalk'
19import CloudGraph from '@cloudgraph/sdk'
2- import { AWSError } from 'aws-sdk'
3- import ElasticBeanstalk , {
10+ import { Config } from 'aws-sdk'
11+ import {
412 ConfigurationSettingsDescription ,
5- ConfigurationSettingsDescriptions ,
613 DescribeEnvironmentsMessage ,
714 EnvironmentDescription ,
8- EnvironmentDescriptionsMessage ,
915 EnvironmentResourceDescription ,
10- EnvironmentResourceDescriptionsMessage ,
1116} from 'aws-sdk/clients/elasticbeanstalk'
1217import isEmpty from 'lodash/isEmpty'
13-
14- import { Credentials , TagMap } from '../../types'
15- import { settleAllPromises } from '../../utils/index'
1618import awsLoggerText from '../../properties/logger'
17- import { initTestEndpoint } from '../../utils '
19+ import { TagMap } from '../../types '
1820import AwsErrorLog from '../../utils/errorLog'
21+ import { settleAllPromises } from '../../utils/index'
1922import { getResourceTags } from '../elasticBeanstalkApplication/data'
2023
2124const lt = { ...awsLoggerText }
2225const { logger } = CloudGraph
2326const serviceName = 'ElasticBeanstalkEnv'
2427const errorLog = new AwsErrorLog ( serviceName )
25- const endpoint = initTestEndpoint ( serviceName )
2628const MAX_ITEMS = 1000
2729
2830export interface RawAwsElasticBeanstalkEnv extends EnvironmentDescription {
@@ -32,95 +34,106 @@ export interface RawAwsElasticBeanstalkEnv extends EnvironmentDescription {
3234}
3335
3436const listEnvironments = async (
35- eb : ElasticBeanstalk
37+ eb : ElasticBeanstalkClient
3638) : Promise < EnvironmentDescription [ ] > =>
3739 new Promise ( async resolve => {
3840 const environments : EnvironmentDescription [ ] = [ ]
3941
40- const listAllEnvironmentsOpts : DescribeEnvironmentsMessage = {
42+ const input : DescribeEnvironmentsMessage = {
4143 MaxRecords : MAX_ITEMS ,
4244 }
45+
4346 const listAllEnvironments = ( token ?: string ) : void => {
4447 if ( token ) {
45- listAllEnvironmentsOpts . NextToken = token
48+ input . NextToken = token
4649 }
47- try {
48- eb . describeEnvironments (
49- listAllEnvironmentsOpts ,
50- ( err : AWSError , data : EnvironmentDescriptionsMessage ) => {
51- const { Environments = [ ] , NextToken : nextToken } = data || { }
52- if ( err ) {
53- errorLog . generateAwsErrorLog ( {
54- functionName : 'elasticBeanstalk:describeEnvironments' ,
55- err,
56- } )
57- }
50+ const command = new DescribeEnvironmentsCommand ( input )
51+ eb . send ( command )
52+ . then ( data => {
53+ if ( isEmpty ( data ) ) {
54+ return resolve ( [ ] )
55+ }
5856
59- environments . push ( ... Environments )
57+ const { Environments = [ ] , NextToken : nextToken } = data || { }
6058
61- if ( nextToken ) {
62- logger . debug ( lt . foundAnotherThousand )
63- listAllEnvironments ( nextToken )
64- } else {
65- resolve ( environments )
66- }
59+ environments . push ( ...Environments )
60+
61+ if ( nextToken ) {
62+ logger . debug ( lt . foundAnotherThousand )
63+ listAllEnvironments ( nextToken )
64+ } else {
65+ resolve ( environments )
6766 }
68- )
69- } catch ( error ) {
70- resolve ( [ ] )
71- }
67+ } )
68+ . catch ( err => {
69+ errorLog . generateAwsErrorLog ( {
70+ functionName : 'elasticBeanstalk:describeEnvironments' ,
71+ err,
72+ } )
73+ resolve ( [ ] )
74+ } )
7275 }
7376 listAllEnvironments ( )
7477 } )
7578
7679const getConfigSettingsForEnv = async (
77- eb : ElasticBeanstalk ,
80+ eb : ElasticBeanstalkClient ,
7881 ApplicationName : string ,
7982 EnvironmentName : string
8083) : Promise < ConfigurationSettingsDescription [ ] > =>
8184 new Promise ( resolve => {
82- eb . describeConfigurationSettings (
83- {
84- ApplicationName,
85- EnvironmentName,
86- } ,
87- ( err : AWSError , data : ConfigurationSettingsDescriptions ) => {
88- if ( err ) {
89- errorLog . generateAwsErrorLog ( {
90- functionName : 'elasticBeanstalk:describeConfigurationSettings' ,
91- err,
92- } )
85+ const input : DescribeConfigurationSettingsMessage = {
86+ ApplicationName,
87+ EnvironmentName,
88+ }
89+ const command = new DescribeConfigurationSettingsCommand ( input )
90+ eb . send ( command )
91+ . then ( data => {
92+ if ( isEmpty ( data ) ) {
93+ return resolve ( [ ] )
9394 }
95+
9496 const { ConfigurationSettings : settings = [ ] } = data || { }
9597 resolve ( settings )
96- }
97- )
98+ } )
99+ . catch ( err => {
100+ errorLog . generateAwsErrorLog ( {
101+ functionName : 'elasticBeanstalk:describeConfigurationSettings' ,
102+ err,
103+ } )
104+ resolve ( [ ] )
105+ } )
98106 } )
99107
100108const getResourcesForEnv = async (
101- eb : ElasticBeanstalk ,
109+ eb : ElasticBeanstalkClient ,
102110 EnvironmentName : string
103111) : Promise < EnvironmentResourceDescription > =>
104112 new Promise ( resolve => {
105- eb . describeEnvironmentResources (
106- {
107- EnvironmentName,
108- } ,
109- ( err : AWSError , data : EnvironmentResourceDescriptionsMessage ) => {
110- if ( err ) {
111- errorLog . generateAwsErrorLog ( {
112- functionName : 'elasticBeanstalk:describeEnvironmentResources' ,
113- err,
114- } )
113+ const input : DescribeEnvironmentResourcesMessage = {
114+ EnvironmentName,
115+ }
116+ const command = new DescribeEnvironmentResourcesCommand ( input )
117+ eb . send ( command )
118+ . then ( data => {
119+ if ( isEmpty ( data ) ) {
120+ return resolve ( { } )
115121 }
122+
116123 const { EnvironmentResources : resources = { } } = data || { }
117124 resolve ( resources )
118- }
119- )
125+ } )
126+ . catch ( err => {
127+ errorLog . generateAwsErrorLog ( {
128+ functionName : 'elasticBeanstalk:describeEnvironmentResources' ,
129+ err,
130+ } )
131+ resolve ( { } )
132+ } )
120133 } )
121134
122135const getEnvironments = async (
123- eb : ElasticBeanstalk
136+ eb : ElasticBeanstalkClient
124137) : Promise < RawAwsElasticBeanstalkEnv [ ] > => {
125138 const envs = await listEnvironments ( eb )
126139 if ( ! isEmpty ( envs ) ) {
@@ -152,14 +165,15 @@ const getEnvironments = async (
152165
153166export default async ( {
154167 regions,
155- credentials ,
168+ config ,
156169} : {
157170 regions : string
158- credentials : Credentials
171+ config : Config
159172} ) : Promise < {
160173 [ property : string ] : RawAwsElasticBeanstalkEnv [ ]
161174} > =>
162175 new Promise ( async resolve => {
176+ const { credentials } = config
163177 let numberOfEnvs = 0
164178 const output : {
165179 [ property : string ] : RawAwsElasticBeanstalkEnv [ ]
@@ -168,7 +182,10 @@ export default async ({
168182 // First we get all applications for all regions
169183 await Promise . all (
170184 regions . split ( ',' ) . map ( region => {
171- const eb = new ElasticBeanstalk ( { region, credentials, endpoint } )
185+ const eb = new ElasticBeanstalkClient ( {
186+ credentials,
187+ region,
188+ } )
172189 output [ region ] = [ ]
173190 return new Promise < void > ( async resolveRegion => {
174191 const envs = ( await getEnvironments ( eb ) ) || [ ]
0 commit comments