@@ -43,18 +43,29 @@ func init() {
43
43
}
44
44
}
45
45
46
- func handleGetMetricStatistics (req * cwRequest , c * middleware.Context ) {
46
+ var awsCredentials map [string ]* credentials.Credentials = make (map [string ]* credentials.Credentials )
47
+
48
+ func getCredentials (profile string ) * credentials.Credentials {
49
+ if _ , ok := awsCredentials [profile ]; ok {
50
+ return awsCredentials [profile ]
51
+ }
52
+
47
53
sess := session .New ()
48
54
creds := credentials .NewChainCredentials (
49
55
[]credentials.Provider {
50
56
& credentials.EnvProvider {},
51
- & credentials.SharedCredentialsProvider {Filename : "" , Profile : req . DataSource . Database },
57
+ & credentials.SharedCredentialsProvider {Filename : "" , Profile : profile },
52
58
& ec2rolecreds.EC2RoleProvider {Client : ec2metadata .New (sess ), ExpiryWindow : 5 * time .Minute },
53
59
})
60
+ awsCredentials [profile ] = creds
54
61
62
+ return creds
63
+ }
64
+
65
+ func handleGetMetricStatistics (req * cwRequest , c * middleware.Context ) {
55
66
cfg := & aws.Config {
56
67
Region : aws .String (req .Region ),
57
- Credentials : creds ,
68
+ Credentials : getCredentials ( req . DataSource . Database ) ,
58
69
}
59
70
60
71
svc := cloudwatch .New (session .New (cfg ), cfg )
@@ -92,17 +103,9 @@ func handleGetMetricStatistics(req *cwRequest, c *middleware.Context) {
92
103
}
93
104
94
105
func handleListMetrics (req * cwRequest , c * middleware.Context ) {
95
- sess := session .New ()
96
- creds := credentials .NewChainCredentials (
97
- []credentials.Provider {
98
- & credentials.EnvProvider {},
99
- & credentials.SharedCredentialsProvider {Filename : "" , Profile : req .DataSource .Database },
100
- & ec2rolecreds.EC2RoleProvider {Client : ec2metadata .New (sess ), ExpiryWindow : 5 * time .Minute },
101
- })
102
-
103
106
cfg := & aws.Config {
104
107
Region : aws .String (req .Region ),
105
- Credentials : creds ,
108
+ Credentials : getCredentials ( req . DataSource . Database ) ,
106
109
}
107
110
108
111
svc := cloudwatch .New (session .New (cfg ), cfg )
@@ -140,17 +143,9 @@ func handleListMetrics(req *cwRequest, c *middleware.Context) {
140
143
}
141
144
142
145
func handleDescribeAlarmsForMetric (req * cwRequest , c * middleware.Context ) {
143
- sess := session .New ()
144
- creds := credentials .NewChainCredentials (
145
- []credentials.Provider {
146
- & credentials.EnvProvider {},
147
- & credentials.SharedCredentialsProvider {Filename : "" , Profile : req .DataSource .Database },
148
- & ec2rolecreds.EC2RoleProvider {Client : ec2metadata .New (sess ), ExpiryWindow : 5 * time .Minute },
149
- })
150
-
151
146
cfg := & aws.Config {
152
147
Region : aws .String (req .Region ),
153
- Credentials : creds ,
148
+ Credentials : getCredentials ( req . DataSource . Database ) ,
154
149
}
155
150
156
151
svc := cloudwatch .New (session .New (cfg ), cfg )
@@ -188,17 +183,9 @@ func handleDescribeAlarmsForMetric(req *cwRequest, c *middleware.Context) {
188
183
}
189
184
190
185
func handleDescribeAlarmHistory (req * cwRequest , c * middleware.Context ) {
191
- sess := session .New ()
192
- creds := credentials .NewChainCredentials (
193
- []credentials.Provider {
194
- & credentials.EnvProvider {},
195
- & credentials.SharedCredentialsProvider {Filename : "" , Profile : req .DataSource .Database },
196
- & ec2rolecreds.EC2RoleProvider {Client : ec2metadata .New (sess ), ExpiryWindow : 5 * time .Minute },
197
- })
198
-
199
186
cfg := & aws.Config {
200
187
Region : aws .String (req .Region ),
201
- Credentials : creds ,
188
+ Credentials : getCredentials ( req . DataSource . Database ) ,
202
189
}
203
190
204
191
svc := cloudwatch .New (session .New (cfg ), cfg )
@@ -232,17 +219,9 @@ func handleDescribeAlarmHistory(req *cwRequest, c *middleware.Context) {
232
219
}
233
220
234
221
func handleDescribeInstances (req * cwRequest , c * middleware.Context ) {
235
- sess := session .New ()
236
- creds := credentials .NewChainCredentials (
237
- []credentials.Provider {
238
- & credentials.EnvProvider {},
239
- & credentials.SharedCredentialsProvider {Filename : "" , Profile : req .DataSource .Database },
240
- & ec2rolecreds.EC2RoleProvider {Client : ec2metadata .New (sess ), ExpiryWindow : 5 * time .Minute },
241
- })
242
-
243
222
cfg := & aws.Config {
244
223
Region : aws .String (req .Region ),
245
- Credentials : creds ,
224
+ Credentials : getCredentials ( req . DataSource . Database ) ,
246
225
}
247
226
248
227
svc := ec2 .New (session .New (cfg ), cfg )
0 commit comments