├── LICENSE
├── README.md
├── _img
├── Screenshot_2021-04-10_at_13.36.56.png
├── Screenshot_2021-04-10_at_13.56.12.png
├── Screenshot_2021-04-10_at_14.03.16.png
├── Screenshot_2021-04-10_at_14.06.18.png
├── Screenshot_2021-04-10_at_14.08.01.png
├── Screenshot_2021-04-10_at_14.43.51.png
└── Screenshot_2021-04-10_at_14.45.51.png
├── go.mod
├── go.sum
├── helper
└── helper.go
├── main.go
├── servicemaster
└── servicemaster.go
├── servicestructs
└── servicestructs.go
└── utils
└── utils.go
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AWS Service Enumeration
2 |
3 | # Disclaimer
4 |
5 | The tool is in beta stage (testing in progress), no destructive API Calls used ( read only actions ).
6 | I hope, there will be no issues with the tool. If any issues encountered, please submit the ticket.
7 |
8 | # Description
9 |
10 | The AWS Enumerator was created for service enumeration and info dumping for investigations of penetration testers during Black-Box testing. The tool is intended to speed up the process of Cloud review in case the security researcher compromised AWS Account Credentials.
11 |
12 | AWS Enumerator supports more than 600 API Calls ( reading actions `Get`, `List`, `Describe` etc... ), and will be extended.
13 |
14 | The tool provides interface for result analysis. All results are saved in json files (one time "Database").
15 |
16 | # Install
17 |
18 | If you have Go installed and configured (i.e. with `$GOPATH/bin` in your `$PATH`):
19 |
20 | ```
21 | go get -u github.com/shabarkin/aws-enumerator
22 | ```
23 | ```
24 | go install -v github.com/shabarkin/aws-enumerator@latest
25 | ```
26 |
27 | # Basic Usage
28 |
29 | ## Credentials setup
30 |
31 | To setup credentials, you should use cred subcommand and supply credentials:
32 |
33 | ```bash
34 | ./aws-enumerator cred -aws_access_key_id AKIA***********XKU -aws_region us-west-2 -aws_secret_access_key kIm6m********************5JPF
35 | ```
36 |
37 | 
38 |
39 | 
40 |
41 | It creates `.env` file, which is loaded to global variables each time you call `enum` subcommand.
42 |
43 | **WARNING:** If you set these values `AWS_REGION`, `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN` in global variables manually before running the tool, it will not be able to load AWS Credentials specified in `.env` file ( It can't overwrite global variables ).
44 |
45 | ## Enumeration
46 |
47 | To enumerate all services, you should use enum subcommand and supply all value or iam,s3,sts,rds ( no spaces between commas ), etc. ...
48 |
49 | ```bash
50 | ./aws-enumerator enum -services all
51 | ```
52 |
53 | If you want to check specific services (up to 10 ):
54 |
55 | ```bash
56 | ./aws-enumerator enum -services iam,sts,rds
57 | ```
58 |
59 | 
60 |
61 | (`-speed` flag is optional, the default value is `normal` ) There are 3 options `slow`, `normal`, `fast`
62 |
63 | ```bash
64 | ./aws-enumerator enum -services all -speed slow
65 | ```
66 |
67 | ## Analysis
68 |
69 | To analyse the collected information, you should use `dump` subcommand: ( Use `all` for quick overview of available API calls )
70 |
71 | ```bash
72 | ./aws-enumerator dump -services all
73 | ```
74 |
75 | 
76 |
77 | Analyze specific services (up to 10) `iam,s3,sts`, etc ...
78 |
79 | ```bash
80 | ./aws-enumerator dump -services iam,s3,sts
81 | ```
82 |
83 | 
84 |
85 | To filter API calls, you should use `-filter` option, start typing the name of API call (`GetA` ...):
86 |
87 | ```bash
88 | ./aws-enumerator dump -services iam -filter GetA
89 | ```
90 |
91 | 
92 |
93 | To retrieve the result of API call, you should use `-print` option
94 |
95 | ```bash
96 | ./aws-enumerator dump -services iam -filter ListS -print
97 | ```
98 |
99 | 
100 |
101 | ## Demo Video
102 |
103 | [Pavel Shabarkin LinkedIn](https://www.linkedin.com/posts/pavelshabarkin_cybersecurity-hacking-awssecurity-activity-6785479892881416192-O29U/)
104 |
--------------------------------------------------------------------------------
/_img/Screenshot_2021-04-10_at_13.36.56.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shabarkin/aws-enumerator/4f2a98387b02fb03f3bf84ac0d82faf0d299f29b/_img/Screenshot_2021-04-10_at_13.36.56.png
--------------------------------------------------------------------------------
/_img/Screenshot_2021-04-10_at_13.56.12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shabarkin/aws-enumerator/4f2a98387b02fb03f3bf84ac0d82faf0d299f29b/_img/Screenshot_2021-04-10_at_13.56.12.png
--------------------------------------------------------------------------------
/_img/Screenshot_2021-04-10_at_14.03.16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shabarkin/aws-enumerator/4f2a98387b02fb03f3bf84ac0d82faf0d299f29b/_img/Screenshot_2021-04-10_at_14.03.16.png
--------------------------------------------------------------------------------
/_img/Screenshot_2021-04-10_at_14.06.18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shabarkin/aws-enumerator/4f2a98387b02fb03f3bf84ac0d82faf0d299f29b/_img/Screenshot_2021-04-10_at_14.06.18.png
--------------------------------------------------------------------------------
/_img/Screenshot_2021-04-10_at_14.08.01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shabarkin/aws-enumerator/4f2a98387b02fb03f3bf84ac0d82faf0d299f29b/_img/Screenshot_2021-04-10_at_14.08.01.png
--------------------------------------------------------------------------------
/_img/Screenshot_2021-04-10_at_14.43.51.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shabarkin/aws-enumerator/4f2a98387b02fb03f3bf84ac0d82faf0d299f29b/_img/Screenshot_2021-04-10_at_14.43.51.png
--------------------------------------------------------------------------------
/_img/Screenshot_2021-04-10_at_14.45.51.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/shabarkin/aws-enumerator/4f2a98387b02fb03f3bf84ac0d82faf0d299f29b/_img/Screenshot_2021-04-10_at_14.45.51.png
--------------------------------------------------------------------------------
/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/shabarkin/aws-enumerator
2 |
3 | go 1.15
4 |
5 | require (
6 | github.com/aws/aws-sdk-go-v2/config v1.1.5
7 | github.com/aws/aws-sdk-go-v2/service/acm v1.2.2
8 | github.com/aws/aws-sdk-go-v2/service/amplify v1.1.5
9 | github.com/aws/aws-sdk-go-v2/service/apigateway v1.2.2
10 | github.com/aws/aws-sdk-go-v2/service/appmesh v1.2.2
11 | github.com/aws/aws-sdk-go-v2/service/appsync v1.2.2
12 | github.com/aws/aws-sdk-go-v2/service/athena v1.2.2
13 | github.com/aws/aws-sdk-go-v2/service/autoscaling v1.3.0
14 | github.com/aws/aws-sdk-go-v2/service/backup v1.2.2
15 | github.com/aws/aws-sdk-go-v2/service/batch v1.3.1
16 | github.com/aws/aws-sdk-go-v2/service/chime v1.2.2
17 | github.com/aws/aws-sdk-go-v2/service/cloud9 v1.3.0
18 | github.com/aws/aws-sdk-go-v2/service/clouddirectory v1.1.5
19 | github.com/aws/aws-sdk-go-v2/service/cloudformation v1.3.1
20 | github.com/aws/aws-sdk-go-v2/service/cloudfront v1.3.0
21 | github.com/aws/aws-sdk-go-v2/service/cloudhsm v1.1.5
22 | github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.1.5
23 | github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.2.2
24 | github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.2.2
25 | github.com/aws/aws-sdk-go-v2/service/codebuild v1.2.2
26 | github.com/aws/aws-sdk-go-v2/service/codecommit v1.1.5
27 | github.com/aws/aws-sdk-go-v2/service/codedeploy v1.3.0
28 | github.com/aws/aws-sdk-go-v2/service/codepipeline v1.2.2
29 | github.com/aws/aws-sdk-go-v2/service/codestar v1.1.5
30 | github.com/aws/aws-sdk-go-v2/service/comprehend v1.3.1
31 | github.com/aws/aws-sdk-go-v2/service/datapipeline v1.2.1
32 | github.com/aws/aws-sdk-go-v2/service/datasync v1.2.2
33 | github.com/aws/aws-sdk-go-v2/service/dax v1.1.5
34 | github.com/aws/aws-sdk-go-v2/service/devicefarm v1.1.5
35 | github.com/aws/aws-sdk-go-v2/service/directconnect v1.3.1
36 | github.com/aws/aws-sdk-go-v2/service/dlm v1.2.2
37 | github.com/aws/aws-sdk-go-v2/service/dynamodb v1.2.2
38 | github.com/aws/aws-sdk-go-v2/service/ec2 v1.4.0
39 | github.com/aws/aws-sdk-go-v2/service/ecr v1.2.2
40 | github.com/aws/aws-sdk-go-v2/service/ecs v1.2.2
41 | github.com/aws/aws-sdk-go-v2/service/eks v1.2.2
42 | github.com/aws/aws-sdk-go-v2/service/elasticache v1.3.0
43 | github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.2.2
44 | github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.2.2
45 | github.com/aws/aws-sdk-go-v2/service/firehose v1.2.2
46 | github.com/aws/aws-sdk-go-v2/service/fms v1.3.0
47 | github.com/aws/aws-sdk-go-v2/service/fsx v1.2.2
48 | github.com/aws/aws-sdk-go-v2/service/gamelift v1.3.1
49 | github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.2.2
50 | github.com/aws/aws-sdk-go-v2/service/glue v1.3.1
51 | github.com/aws/aws-sdk-go-v2/service/greengrass v1.3.1
52 | github.com/aws/aws-sdk-go-v2/service/guardduty v1.2.2
53 | github.com/aws/aws-sdk-go-v2/service/health v1.2.2
54 | github.com/aws/aws-sdk-go-v2/service/iam v1.3.1
55 | github.com/aws/aws-sdk-go-v2/service/inspector v1.1.5
56 | github.com/aws/aws-sdk-go-v2/service/iot v1.3.1
57 | github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.1.5
58 | github.com/aws/aws-sdk-go-v2/service/kafka v1.2.2
59 | github.com/aws/aws-sdk-go-v2/service/kinesis v1.2.2
60 | github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.1.5
61 | github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.1.5
62 | github.com/aws/aws-sdk-go-v2/service/kms v1.2.2
63 | github.com/aws/aws-sdk-go-v2/service/lambda v1.2.2
64 | github.com/aws/aws-sdk-go-v2/service/lightsail v1.3.0
65 | github.com/aws/aws-sdk-go-v2/service/machinelearning v1.3.1
66 | github.com/aws/aws-sdk-go-v2/service/macie v1.2.2
67 | github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.2.2
68 | github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.3.0
69 | github.com/aws/aws-sdk-go-v2/service/medialive v1.4.0
70 | github.com/aws/aws-sdk-go-v2/service/mediapackage v1.3.0
71 | github.com/aws/aws-sdk-go-v2/service/mediastore v1.1.5
72 | github.com/aws/aws-sdk-go-v2/service/mediatailor v1.2.2
73 | github.com/aws/aws-sdk-go-v2/service/mobile v1.1.5
74 | github.com/aws/aws-sdk-go-v2/service/mq v1.1.5
75 | github.com/aws/aws-sdk-go-v2/service/opsworks v1.2.2
76 | github.com/aws/aws-sdk-go-v2/service/organizations v1.2.2
77 | github.com/aws/aws-sdk-go-v2/service/pinpoint v1.3.1
78 | github.com/aws/aws-sdk-go-v2/service/polly v1.1.5
79 | github.com/aws/aws-sdk-go-v2/service/pricing v1.3.1
80 | github.com/aws/aws-sdk-go-v2/service/ram v1.3.0
81 | github.com/aws/aws-sdk-go-v2/service/rds v1.2.2
82 | github.com/aws/aws-sdk-go-v2/service/redshift v1.3.1
83 | github.com/aws/aws-sdk-go-v2/service/rekognition v1.3.1
84 | github.com/aws/aws-sdk-go-v2/service/robomaker v1.3.0
85 | github.com/aws/aws-sdk-go-v2/service/route53 v1.4.0
86 | github.com/aws/aws-sdk-go-v2/service/route53domains v1.1.5
87 | github.com/aws/aws-sdk-go-v2/service/route53resolver v1.3.0
88 | github.com/aws/aws-sdk-go-v2/service/s3 v1.5.0
89 | github.com/aws/aws-sdk-go-v2/service/sagemaker v1.3.1
90 | github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.2.2
91 | github.com/aws/aws-sdk-go-v2/service/securityhub v1.2.2
92 | github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.2.2
93 | github.com/aws/aws-sdk-go-v2/service/shield v1.2.2
94 | github.com/aws/aws-sdk-go-v2/service/signer v1.2.2
95 | github.com/aws/aws-sdk-go-v2/service/sms v1.1.5
96 | github.com/aws/aws-sdk-go-v2/service/snowball v1.2.2
97 | github.com/aws/aws-sdk-go-v2/service/sns v1.2.2
98 | github.com/aws/aws-sdk-go-v2/service/sqs v1.3.1
99 | github.com/aws/aws-sdk-go-v2/service/ssm v1.4.0
100 | github.com/aws/aws-sdk-go-v2/service/storagegateway v1.2.0
101 | github.com/aws/aws-sdk-go-v2/service/sts v1.2.2
102 | github.com/aws/aws-sdk-go-v2/service/support v1.1.5
103 | github.com/aws/aws-sdk-go-v2/service/transcribe v1.2.1
104 | github.com/aws/aws-sdk-go-v2/service/transfer v1.2.2
105 | github.com/aws/aws-sdk-go-v2/service/translate v1.1.5
106 | github.com/aws/aws-sdk-go-v2/service/waf v1.1.5
107 | github.com/aws/aws-sdk-go-v2/service/workdocs v1.1.5
108 | github.com/aws/aws-sdk-go-v2/service/worklink v1.1.5
109 | github.com/aws/aws-sdk-go-v2/service/workmail v1.2.1
110 | github.com/aws/aws-sdk-go-v2/service/workspaces v1.2.2
111 | github.com/aws/aws-sdk-go-v2/service/xray v1.2.2
112 | github.com/fatih/color v1.10.0
113 | github.com/joho/godotenv v1.3.0
114 | github.com/wayneashleyberry/terminal-dimensions v1.0.0
115 | )
116 |
--------------------------------------------------------------------------------
/go.sum:
--------------------------------------------------------------------------------
1 | github.com/aws/aws-sdk-go v1.38.12 h1:khtODkUna3iF53Cg3dCF4e6oWgrAEbZDU4x1aq+G0WY=
2 | github.com/aws/aws-sdk-go v1.38.12/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
3 | github.com/aws/aws-sdk-go-v2 v1.3.0 h1:2B/SbB1oOJe8RSl/TIgE11BDE4sX7Z+JupLxTdA2Rjs=
4 | github.com/aws/aws-sdk-go-v2 v1.3.0/go.mod h1:hTQc/9pYq5bfFACIUY9tc/2SYWd9Vnmw+testmuQeRY=
5 | github.com/aws/aws-sdk-go-v2 v1.3.1 h1:KKstwh6zsuUhQH3GvSor7M3am/+imPqydFOZHzlkTKc=
6 | github.com/aws/aws-sdk-go-v2 v1.3.1/go.mod h1:5SmWRTjN6uTRFNCc7rR69xHsdcUJnthmaRHGDsYhpTE=
7 | github.com/aws/aws-sdk-go-v2 v1.3.2 h1:RQj8l98yKUm0UV2Wd3w/Ms+TXV9Rs1E6Kr5tRRMfyU4=
8 | github.com/aws/aws-sdk-go-v2 v1.3.2/go.mod h1:7OaACgj2SX3XGWnrIjGlJM22h6yD6MEWKvm7levnnM8=
9 | github.com/aws/aws-sdk-go-v2/config v1.1.3 h1:pYDr4DTr0w4GfweXhX2ns1ZGyH46nLP/ZeQQodl1s68=
10 | github.com/aws/aws-sdk-go-v2/config v1.1.3/go.mod h1:yf3tNRNqZKlylefSdp5R3v+sm1el90fhUTcSa/t69Ro=
11 | github.com/aws/aws-sdk-go-v2/config v1.1.4 h1:2hjdDldmJJjb+rFieQySfOFt4WwxKZJVTEB6RBI74T4=
12 | github.com/aws/aws-sdk-go-v2/config v1.1.4/go.mod h1:op05ummoVoAqctpA80jVt/+hvEtLfuKmDyx0bIuvfbE=
13 | github.com/aws/aws-sdk-go-v2/config v1.1.5 h1:imDWOGwlIrRpHLallJ9mli2SIQ4egtGKtFUFsuGRIaQ=
14 | github.com/aws/aws-sdk-go-v2/config v1.1.5/go.mod h1:P3F1hku7qzC81txjwXnwOM6Ex6ezkU6+/557Teyb64E=
15 | github.com/aws/aws-sdk-go-v2/credentials v1.1.3 h1:Q0S5OPP4l9kWrmPNK500pdQhg81x4E3UpvugYG5Wilc=
16 | github.com/aws/aws-sdk-go-v2/credentials v1.1.3/go.mod h1:afuzRuLhPEe08fePFh4gI9jnHuXd8AJDCYZNo3rKRKE=
17 | github.com/aws/aws-sdk-go-v2/credentials v1.1.4 h1:whYYw2srG+zUQzUw4LhML83f+xd22Vm7gv0I7aJglc8=
18 | github.com/aws/aws-sdk-go-v2/credentials v1.1.4/go.mod h1:UQwsT2w2XelrWoVV2v/zL2uce1RxmVCiHaZsoKLamZg=
19 | github.com/aws/aws-sdk-go-v2/credentials v1.1.5 h1:R9v/eN5cXv5yMLC619xRYl5PgCSuy5SarizmM7+qqSA=
20 | github.com/aws/aws-sdk-go-v2/credentials v1.1.5/go.mod h1:Ir1R6tPiR1/2y1hes8yOijFMz54hzSmgcmCDo6F45Qc=
21 | github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.4 h1:V7DByJMo5kq31ZiyQMmjihjexftM1oJ6luRs09M5/Uc=
22 | github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.4/go.mod h1:BDw1ukadBHn//M/n7LqpEgimGS0QtiJePnygMsbuYMs=
23 | github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.5 h1:5gCrezE41xYQHWDsDkJD9nT22tUH3s+Zrvs4c3v2FGc=
24 | github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.5/go.mod h1:z/NKNlYxMzphl7TzjV+ctUebHF4CFNGGlSvmV/NKcJU=
25 | github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.6 h1:zoOz5V56jO/rGixsCDnrQtAzYRYM2hGA/43U6jVMFbo=
26 | github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.6/go.mod h1:0+fWMitrmIpENiY8/1DyhdYPUCAPvd9UNz9mtCsEoLQ=
27 | github.com/aws/aws-sdk-go-v2/service/acm v1.2.1 h1:s3Yka4ZE67lTTbSG7ZXlgwIjC122RkG6okTcrEbCBBY=
28 | github.com/aws/aws-sdk-go-v2/service/acm v1.2.1/go.mod h1:X6p3MQnaIMOJ6+A1D7OfW3WKt7rJzgZzSeVkua6lZrg=
29 | github.com/aws/aws-sdk-go-v2/service/acm v1.2.2 h1:V/hFBaY4MQyTyCBMnQ9iacetd7+XLzNSLekKJFbUyO4=
30 | github.com/aws/aws-sdk-go-v2/service/acm v1.2.2/go.mod h1:dqFW/dd0pYR+UJzDpaa0DJ3h57EkUon77+TgKIZe9zg=
31 | github.com/aws/aws-sdk-go-v2/service/amplify v1.1.4 h1:d21f/W8RxL/Yz1e2OS88rnZYSRkul1wLrVPNFaFEM4k=
32 | github.com/aws/aws-sdk-go-v2/service/amplify v1.1.4/go.mod h1:uP/CKdW9vN23rotFkqOWVMqBMIbsiP4y+Cv4qrP0JIk=
33 | github.com/aws/aws-sdk-go-v2/service/amplify v1.1.5 h1:U/pP6r7YdLQBB4KT8NSi9AyqRzvJR9Id7zE3gRxOEoQ=
34 | github.com/aws/aws-sdk-go-v2/service/amplify v1.1.5/go.mod h1:ZlNzNP6GscyUQTsfYHC1gzrTVHY5hIj5lo64ekHPzgA=
35 | github.com/aws/aws-sdk-go-v2/service/apigateway v1.2.1 h1:2kxNxcT9QVSckqagWevdNOAOCOAmGHsCbkowF6Rmur8=
36 | github.com/aws/aws-sdk-go-v2/service/apigateway v1.2.1/go.mod h1:4fO3jaFTaz/8ygZBVNSk4NSdAwcc/NZ++HUrG9kpJ0I=
37 | github.com/aws/aws-sdk-go-v2/service/apigateway v1.2.2 h1:U/33opBj4zJf667z1rei2x0VyA1szpxd/SFTHCTMXCk=
38 | github.com/aws/aws-sdk-go-v2/service/apigateway v1.2.2/go.mod h1:PG5C99oGw1oXybDMmuF8iAHtLT3Y9PfvRHT8uyCk5Vw=
39 | github.com/aws/aws-sdk-go-v2/service/appmesh v1.2.1 h1:RpnzchLbHfAG3F8G+j2OVrERwNTT8TOH9sb5uLzXDW4=
40 | github.com/aws/aws-sdk-go-v2/service/appmesh v1.2.1/go.mod h1:cQOQSZW8CH7cOUTCeo8pAYfYPom+1UCK4rphIloopSo=
41 | github.com/aws/aws-sdk-go-v2/service/appmesh v1.2.2 h1:nfi4svG8zVZovKLH16uCIUteFLd+3M3H4XyOgpUfVpY=
42 | github.com/aws/aws-sdk-go-v2/service/appmesh v1.2.2/go.mod h1:vAXae2vpQX/RkMLBwXUDWyjwATyC7fyNrMxTQOebn7Q=
43 | github.com/aws/aws-sdk-go-v2/service/appsync v1.2.1 h1:qHxx2jl6nI6Sn5fuXtBQVWbhaG+fErDAB47BHm+Kw1A=
44 | github.com/aws/aws-sdk-go-v2/service/appsync v1.2.1/go.mod h1:JkdNL71yKS0qmF+dFJJzxf1WJZWFGIhTepXHaxtKipE=
45 | github.com/aws/aws-sdk-go-v2/service/appsync v1.2.2 h1:dgF/c3yky6NIJdqbZZz5/3WWZFi49tL6bCC4D/H5wtk=
46 | github.com/aws/aws-sdk-go-v2/service/appsync v1.2.2/go.mod h1:z3GPLYmwPl/6JDvjpAG9Wh2tRonHnEvqbqdSHTzElkU=
47 | github.com/aws/aws-sdk-go-v2/service/athena v1.2.1 h1:XD0aqHoCSgpuSDu84nwZu9KCh9sHR/Cg69M0gwuqzGw=
48 | github.com/aws/aws-sdk-go-v2/service/athena v1.2.1/go.mod h1:jjOo+l6LE5oN7q8azjtP2rTrulron6NbfAyILN8oMjc=
49 | github.com/aws/aws-sdk-go-v2/service/athena v1.2.2 h1:QVelXZL3kPFcCW6Pu1l4L452plxhw1k9ZFA7kFG9BU0=
50 | github.com/aws/aws-sdk-go-v2/service/athena v1.2.2/go.mod h1:KcYPapeybJ2jsWZa9WfCWSEQGsioAXUZWonR9ncRVb8=
51 | github.com/aws/aws-sdk-go-v2/service/autoscaling v1.2.1 h1:imL02JGNApN3z+9u/meTDeZF37QfpqRmrDnGghGNFvY=
52 | github.com/aws/aws-sdk-go-v2/service/autoscaling v1.2.1/go.mod h1:bOqVTdQoE8zqisF2vwsiZxZLxLDCOjOvfFohzXsJ/vE=
53 | github.com/aws/aws-sdk-go-v2/service/autoscaling v1.3.0 h1:2d4dJ122x2DKQ4JCy2DlB5U6YW+TJWwLOjjrQOIAP0E=
54 | github.com/aws/aws-sdk-go-v2/service/autoscaling v1.3.0/go.mod h1:hMFVW0TCp/vzPZmqiaJCofY9B20RyVepiQRrXl0nCIo=
55 | github.com/aws/aws-sdk-go-v2/service/backup v1.2.1 h1:cCN4he7bn68I/T7oz1F9K11ftK3kiJmPu/BbUcRwIoc=
56 | github.com/aws/aws-sdk-go-v2/service/backup v1.2.1/go.mod h1:hVEBC/NoLAspOWSrArd8LjMlftDO/al+OVaTMkFQowU=
57 | github.com/aws/aws-sdk-go-v2/service/backup v1.2.2 h1:hy9S4XuQWrSMLTh8NaNfWf8t0M2PHriPlXM2iwxRKMc=
58 | github.com/aws/aws-sdk-go-v2/service/backup v1.2.2/go.mod h1:W7vTWxH4McTQoqxrTsziaIKh/1VHxPM+5XIgwU5sQKo=
59 | github.com/aws/aws-sdk-go-v2/service/batch v1.3.0 h1:/9zSt4IetfWO73+FUfQ2rLZiDdX8ccIACTa5X/bT2Bk=
60 | github.com/aws/aws-sdk-go-v2/service/batch v1.3.0/go.mod h1:5Gw4d9mNqTMaRjDTL4AjO94q0pBTel9ki3ZPEHNdE7w=
61 | github.com/aws/aws-sdk-go-v2/service/batch v1.3.1 h1:dZSRS8i4wL+lB87FCCHBynaD7BgrYyESuEzmx23/pOg=
62 | github.com/aws/aws-sdk-go-v2/service/batch v1.3.1/go.mod h1:sx7fSwDOWJhJ9Z/+SCHfisxlIXmPXqovaksLqQy/+w0=
63 | github.com/aws/aws-sdk-go-v2/service/chime v1.2.1 h1:ln4Z3mlipA/uNlNjVKITL22Uj50DtQpTRwDjn6qi7+s=
64 | github.com/aws/aws-sdk-go-v2/service/chime v1.2.1/go.mod h1:/vaJEMhB3THhvMWqFL0rxci3em7OHwvMLXaP+Hf9W9I=
65 | github.com/aws/aws-sdk-go-v2/service/chime v1.2.2 h1:2nolP7uO856HSgDcG2FP5GokF8oWUd12+7v2as0KXTY=
66 | github.com/aws/aws-sdk-go-v2/service/chime v1.2.2/go.mod h1:ILto3C9liCGfKA7V4bkUsNFG97jm9BGyC70lIE7JvD4=
67 | github.com/aws/aws-sdk-go-v2/service/cloud9 v1.2.0 h1:FURCj1vAxCnGKxncV5PzdD3YiCqLHH6vRCRnJxC4zT0=
68 | github.com/aws/aws-sdk-go-v2/service/cloud9 v1.2.0/go.mod h1:d6SajoAO+exx0kSwdppv62Mcb6uJrn+jXrYAc4LKEdc=
69 | github.com/aws/aws-sdk-go-v2/service/cloud9 v1.3.0 h1:Gn3cNJmfAPxdxxj0Hwirn6r9UwxD7ePoZNvEOjqOe2o=
70 | github.com/aws/aws-sdk-go-v2/service/cloud9 v1.3.0/go.mod h1:SKC1PrYIBEqkB2gXagP+cQvEealIr+pzKz1KD24+JBM=
71 | github.com/aws/aws-sdk-go-v2/service/clouddirectory v1.1.4 h1:Z1qFfM6iXdVLEVBBpPzp+gw83OL/FEilIFsZJeBcZKc=
72 | github.com/aws/aws-sdk-go-v2/service/clouddirectory v1.1.4/go.mod h1:hJ1yjEToIuIll/wTCFcP57gfm8hi7hn8K5WWwAExqNQ=
73 | github.com/aws/aws-sdk-go-v2/service/clouddirectory v1.1.5 h1:c1WSxD4zMe0zgZ646HPRl68AWDMuEtunhAKdoe29Jjo=
74 | github.com/aws/aws-sdk-go-v2/service/clouddirectory v1.1.5/go.mod h1:XuSnzbtLNz0317noCJF7zqrd9Upt3PSXz3CaKalOrD8=
75 | github.com/aws/aws-sdk-go-v2/service/cloudformation v1.3.0 h1:+eHZIcEQ7jMuAAWL9uS9RfQz8ElLcRksWqXSIQ7essE=
76 | github.com/aws/aws-sdk-go-v2/service/cloudformation v1.3.0/go.mod h1:9PLAEZCkzDVh+/fq7OwOloe/RqSpqwes2x+ozcRyloM=
77 | github.com/aws/aws-sdk-go-v2/service/cloudformation v1.3.1 h1:Hw2Ten8sgwpwYnagyiuL35VAd5pLIrGofJQWOZRrZd8=
78 | github.com/aws/aws-sdk-go-v2/service/cloudformation v1.3.1/go.mod h1:MH1u3+6v48cHFGorEvYNBu+QJ6bE8gZVmvQo0NSWZls=
79 | github.com/aws/aws-sdk-go-v2/service/cloudfront v1.2.1 h1:7Zh+ShMr7awq0s76kwca8efPiWOZaWV5267fa6avwOQ=
80 | github.com/aws/aws-sdk-go-v2/service/cloudfront v1.2.1/go.mod h1:AlMkBlBn/pyqVYIDcHRkf2FQRm9q0czFdMOMn1SV8oQ=
81 | github.com/aws/aws-sdk-go-v2/service/cloudfront v1.3.0 h1:8fOeCj6bb2JtkWvxP6McS4RR/CV20IG4JzZWYz4Z12E=
82 | github.com/aws/aws-sdk-go-v2/service/cloudfront v1.3.0/go.mod h1:J04vwlb6n/oVJNtNyT+sLx2KDgzyo7nDRyHPnnZQYnk=
83 | github.com/aws/aws-sdk-go-v2/service/cloudhsm v1.1.4 h1:Bh3H42m11h4hmP6cU5FwWqwtSBiDfVNR1G1fKcdW2/Y=
84 | github.com/aws/aws-sdk-go-v2/service/cloudhsm v1.1.4/go.mod h1:BYRMrC1HLkmxZL/EpzLgxN1khdTq5vi5hwhd4gtNJ7M=
85 | github.com/aws/aws-sdk-go-v2/service/cloudhsm v1.1.5 h1:OZiwVB6iJqVYYTzOunQRrsbvONmClxQRRi+hu/SONJw=
86 | github.com/aws/aws-sdk-go-v2/service/cloudhsm v1.1.5/go.mod h1:6I5Ab4/5eR2X+JFlRxMpYyDRs69U5sizNB1+sgJm/TM=
87 | github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.1.4 h1:j+WXsiwkQ+Cd9Zg3W+1q0zqqtSeRZXKtAb66ZmDBMBg=
88 | github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.1.4/go.mod h1:D43F9iOEVNFNdj6LB2yTupIBVlM0rRLoqBX23ej2f1s=
89 | github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.1.5 h1:k8SL5dZhyn4AIichsZllnd3DNC37qfAaXaHbwe1g82g=
90 | github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.1.5/go.mod h1:WiBGda7ECnY0hufrcV+TemPpVWaobiwOD9U+GaaCUcQ=
91 | github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.2.1 h1:eR/LzGaBQBOSyfxayScGb626gl3nuhbkuFI/l4EBvLc=
92 | github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.2.1/go.mod h1:WVKx1eczQAhH4ZR+qOvUMb7OC6AWGr68sSjZV12SBQE=
93 | github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.2.2 h1:sZejbUwiP0V3gPPuC3NVP3FZFcI0Ny6sDCV/jnbJQVg=
94 | github.com/aws/aws-sdk-go-v2/service/cloudsearch v1.2.2/go.mod h1:yAXkm7ayftXNZlSVcq3ZhjdiLlPCCNkwPyKSKoELC4o=
95 | github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.2.1 h1:egAyiJ8xpfed+I+8t+71OxyNr4Vbw1xRA+9EjSu15tU=
96 | github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.2.1/go.mod h1:GtzMwrY6i7/RXMKBZAMXyXFmZ1UHxtxDeIiUO3lBXRI=
97 | github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.2.2 h1:gpKrPgcK7K766EmXyX2Lie5A3PRhJ0uYe3+OvRsQB6E=
98 | github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.2.2/go.mod h1:gJ6gvtfYCsjlkFxNxopzA6sW2CJ1Ph8Vzu7IQwXendY=
99 | github.com/aws/aws-sdk-go-v2/service/codebuild v1.2.1 h1:Kn8KgAStqC7/FMP927qsWUUQJH9gw/ubKTuMqyKUpds=
100 | github.com/aws/aws-sdk-go-v2/service/codebuild v1.2.1/go.mod h1:n5wJZmnZAZxSQDf7CnNpyTCOP9cjTGsmH1xkCs8Giy4=
101 | github.com/aws/aws-sdk-go-v2/service/codebuild v1.2.2 h1:79hSOBAYUnd2whLKr10dZlb9hvSiPYNdYX2PR1GwjgE=
102 | github.com/aws/aws-sdk-go-v2/service/codebuild v1.2.2/go.mod h1:ItYplXbqecVEIyiareYt1qHWHuzZm2yC4AVJX49b6Gg=
103 | github.com/aws/aws-sdk-go-v2/service/codecommit v1.1.4 h1:ltl1WkdER+wf0ZsWTI1OUEvnULxL0aV7J8jb/4luguk=
104 | github.com/aws/aws-sdk-go-v2/service/codecommit v1.1.4/go.mod h1:yodSutg2dlBEXshEJtcJZVANNw6Tvv9bN1yuwV9Zh4U=
105 | github.com/aws/aws-sdk-go-v2/service/codecommit v1.1.5 h1:ZV7xK1yNcLEuJSZf/zc8ZjY8HnbdzF3BZ9m5zLx2+d0=
106 | github.com/aws/aws-sdk-go-v2/service/codecommit v1.1.5/go.mod h1:2FgwS83dRjbkAoFliDanx6tPaFsDsxLjF1xz0UH4vJ0=
107 | github.com/aws/aws-sdk-go-v2/service/codedeploy v1.2.1 h1:WEqfKQLKriwX7BQyUXfJzK/gO6wMelZxtwOHD2cyjeg=
108 | github.com/aws/aws-sdk-go-v2/service/codedeploy v1.2.1/go.mod h1:yLCnpa5QV9tRDM7Hl+2sMgOsL1+Od9L/i9EmRUxBK5s=
109 | github.com/aws/aws-sdk-go-v2/service/codedeploy v1.3.0 h1:QEZpnIX4Gf7tEGkMSBf/erDybo2HF9ASc6gzsSm7q+M=
110 | github.com/aws/aws-sdk-go-v2/service/codedeploy v1.3.0/go.mod h1:sQGjjmkpYuua2Z9zP63WTtjL3EBFcf72z1fs3VHHoSU=
111 | github.com/aws/aws-sdk-go-v2/service/codepipeline v1.2.1 h1:rFLNwNLEB+1wvueAOwTmuGS2WM4tc4Ly9vidfA6642Q=
112 | github.com/aws/aws-sdk-go-v2/service/codepipeline v1.2.1/go.mod h1:FQdcXAJhwsXv9IqpIQYw4FjpTtdUv/CMjQ/C54HuyIs=
113 | github.com/aws/aws-sdk-go-v2/service/codepipeline v1.2.2 h1:N3Ny8kFHmPjcgRTw//OYBj8jVFG+N1hROBv8f4v5juw=
114 | github.com/aws/aws-sdk-go-v2/service/codepipeline v1.2.2/go.mod h1:ezx1UmWA4G9U3LzWAuXnoaUxDfm+tAC9C2n0ig4C29w=
115 | github.com/aws/aws-sdk-go-v2/service/codestar v1.1.4 h1:gjt45Qn4SCZhgFKXEaTvAuEvULUcqVHUpI4yuXPriVw=
116 | github.com/aws/aws-sdk-go-v2/service/codestar v1.1.4/go.mod h1:yyBLLFKa5xOhuYlme5nF3rM2blBkzAij1I1LpGeLWlU=
117 | github.com/aws/aws-sdk-go-v2/service/codestar v1.1.5 h1:EO282yFlPL84NrUzltyEglFKx35aCgw1Xtm15Ntp/N4=
118 | github.com/aws/aws-sdk-go-v2/service/codestar v1.1.5/go.mod h1:LOUK0tstkT73gTwAEkTIIRdF1Q3EbLMlkkF3SBR9bS8=
119 | github.com/aws/aws-sdk-go-v2/service/comprehend v1.3.0 h1:96FoGwdIZFHPHM2M6ANelkkJ4rKOI2B8XLOzC0w/9qk=
120 | github.com/aws/aws-sdk-go-v2/service/comprehend v1.3.0/go.mod h1:Tz85be6bzbfacIAf3ta3XMsZYCr3QgUcIdVsiVTbqwM=
121 | github.com/aws/aws-sdk-go-v2/service/comprehend v1.3.1 h1:7APNB6ECEZ6YqTCQbg1pdrmFoVk3Q0qi91ZnimSTlmc=
122 | github.com/aws/aws-sdk-go-v2/service/comprehend v1.3.1/go.mod h1:jEDdMzy8e5Ug9fuZJcCg1YWqxEpyBgWt7FyafjjB/CE=
123 | github.com/aws/aws-sdk-go-v2/service/datapipeline v1.2.0 h1:bA6MWMDhG3aJnI4IYiZWf9FJ4mQVzC2gaLK4w4lhVMw=
124 | github.com/aws/aws-sdk-go-v2/service/datapipeline v1.2.0/go.mod h1:jQbGvJZEGS5zgzwiEeNqCaDaQeF0/ulJXeX8SCd8kaI=
125 | github.com/aws/aws-sdk-go-v2/service/datapipeline v1.2.1 h1:BkQQbyqp0a6keDQyTp9Uo/V7RLxNyiAxRkqg6XkSLSI=
126 | github.com/aws/aws-sdk-go-v2/service/datapipeline v1.2.1/go.mod h1:nIMyavmm9kyslDhayb5zax1FZGGmB624riEXjZxiuXQ=
127 | github.com/aws/aws-sdk-go-v2/service/datasync v1.2.1 h1:cYaRrIfDZODhx048sw8x9EHuFcwTFu/Vv3nuTfXEJd0=
128 | github.com/aws/aws-sdk-go-v2/service/datasync v1.2.1/go.mod h1:AH/WS//GIxzogIX4V87u+XVLqKwZs2xh5G4Qj5tkhlA=
129 | github.com/aws/aws-sdk-go-v2/service/datasync v1.2.2 h1:Ybnq/fRjWYmFj2OwPRJa0U0xBVi/5Em26uuM6d6OmZc=
130 | github.com/aws/aws-sdk-go-v2/service/datasync v1.2.2/go.mod h1:8E/jzMQV3ZRgaIe9y5TRyuAa4WfHfSmtPOyzogPrihE=
131 | github.com/aws/aws-sdk-go-v2/service/dax v1.1.4 h1:1oGLDaB86Fm/hEKoBua7X0uqgBF3SN23fTQ86T2hxMw=
132 | github.com/aws/aws-sdk-go-v2/service/dax v1.1.4/go.mod h1:1aw2PkqYt6DjSwxYn0VesXvURmespl/LQnjl9NjMSD4=
133 | github.com/aws/aws-sdk-go-v2/service/dax v1.1.5 h1:wGFdCdvfpaV2Wzm/LDQUiAPAsw3HYuIOJRBFVpYrudM=
134 | github.com/aws/aws-sdk-go-v2/service/dax v1.1.5/go.mod h1:hVODD7togT3MgQc9FuEyjuLUfnC00snzFVa3S+x1FKk=
135 | github.com/aws/aws-sdk-go-v2/service/devicefarm v1.1.4 h1:1AZhsSXUE+Cbc7UsaeHQtMSN4XOKWaub/RWdDrF3Q8A=
136 | github.com/aws/aws-sdk-go-v2/service/devicefarm v1.1.4/go.mod h1:c4WI4cPN3dWLm3rW0hU8uzNZs95u/FAlHt2myHR2TXQ=
137 | github.com/aws/aws-sdk-go-v2/service/devicefarm v1.1.5 h1:s88kjsQgqTna66qcLOss6c4LZ1EyVHnozjs5ubwJCXE=
138 | github.com/aws/aws-sdk-go-v2/service/devicefarm v1.1.5/go.mod h1:TKt3Z4KC3bdnp2Hd9hJxzMMazYYBOjsfR+iWsICoZQo=
139 | github.com/aws/aws-sdk-go-v2/service/directconnect v1.3.0 h1:8bTPEWxo2cEGbzjEFSnjtTXGmQxpTDrVmRE/+HLyW6Y=
140 | github.com/aws/aws-sdk-go-v2/service/directconnect v1.3.0/go.mod h1:adMqvI6e3E37yy6ZN8gsKGEZvA7XcryYnjSvo/4pL0s=
141 | github.com/aws/aws-sdk-go-v2/service/directconnect v1.3.1 h1:D5bbZyze26oBhAIgjx90xHA2aCM581T1A2ex9uiuTuk=
142 | github.com/aws/aws-sdk-go-v2/service/directconnect v1.3.1/go.mod h1:MqMofKML1ilBFKkdcA8b2B7hl4IMo+zScDDStnBCOt0=
143 | github.com/aws/aws-sdk-go-v2/service/dlm v1.2.1 h1:I1l8c6sdXcnIVpEaBPHvmfn3PHlAmKzc/Xu6jiKeljc=
144 | github.com/aws/aws-sdk-go-v2/service/dlm v1.2.1/go.mod h1:Qua62VBXOJr8d6nLu5yAqmJFD/XWkCL3vpAWRv5nzUs=
145 | github.com/aws/aws-sdk-go-v2/service/dlm v1.2.2 h1:NIYzK70pGzwd2fNd2blOfD57PqZ0kKC3TF2qBcwNAlY=
146 | github.com/aws/aws-sdk-go-v2/service/dlm v1.2.2/go.mod h1:IdgJfhq8MpCc/KB5otC0x7gBT0lEQ62ZDzs5zq9LUxc=
147 | github.com/aws/aws-sdk-go-v2/service/dynamodb v1.2.1 h1:NnYXRukLvkiTnNyZHCCQcZaoWJSeE5Y7tCVPgvTyWfw=
148 | github.com/aws/aws-sdk-go-v2/service/dynamodb v1.2.1/go.mod h1:WqAbIrpO0PSa3AIDxMG12aPPN4D1u99rOFdEfSM/KgY=
149 | github.com/aws/aws-sdk-go-v2/service/dynamodb v1.2.2 h1:8tA7Go+R0crArjhD+Cu7QKmhSy+F24Ll1WHzQN/VOGY=
150 | github.com/aws/aws-sdk-go-v2/service/dynamodb v1.2.2/go.mod h1:1/onFSTaj5Pz/pI/3YjomZQcx1BYdttnOJUJVKSOh7A=
151 | github.com/aws/aws-sdk-go-v2/service/ec2 v1.3.0 h1:y82WbYudKuiWx0KuKQheqTQ4RIF8ZHoHvS/rD8HCYCc=
152 | github.com/aws/aws-sdk-go-v2/service/ec2 v1.3.0/go.mod h1:KW2/Fgs+L1m1X53O9hTFpJqPtLyYGbf9j1Ay5xPSy74=
153 | github.com/aws/aws-sdk-go-v2/service/ec2 v1.4.0 h1:tEU8RVLh5tNT5/Yz3yhEUycOnTYVJcCadp59tzSNHLs=
154 | github.com/aws/aws-sdk-go-v2/service/ec2 v1.4.0/go.mod h1:3iBezuZtNxZnKX7Zv2JB/lGyGCSYOES8TMq4WSXPBl0=
155 | github.com/aws/aws-sdk-go-v2/service/ecr v1.2.1 h1:rdvoJaE51N1tuNc2B75vNsZu2P0xV6y7ibOAwNeb1mI=
156 | github.com/aws/aws-sdk-go-v2/service/ecr v1.2.1/go.mod h1:iuqVazSEO7GWaX6WYrVWCVECL3ixXwhL6Q6RF4V2Db0=
157 | github.com/aws/aws-sdk-go-v2/service/ecr v1.2.2 h1:2EY0F1skAOArBsRM6nD9kPo0sdK32IPzT8O7PKocVR8=
158 | github.com/aws/aws-sdk-go-v2/service/ecr v1.2.2/go.mod h1:XnQfi4PwRBjy+CQD7zqVRRHKWe529+1nTsrWXvsSSJk=
159 | github.com/aws/aws-sdk-go-v2/service/ecs v1.2.1 h1:T8CKZFKySyOivXUc/80qlvNqvX9MQvvRCxFQCL6xxQU=
160 | github.com/aws/aws-sdk-go-v2/service/ecs v1.2.1/go.mod h1:7gzy9DNs3NWZnxJcV61X0EjhLzDuZm8uUA+moRIoiKs=
161 | github.com/aws/aws-sdk-go-v2/service/ecs v1.2.2 h1:Hel1rLI6Wjn/N1xAf7hVfqEPJxwwdOFFBG881M41fPI=
162 | github.com/aws/aws-sdk-go-v2/service/ecs v1.2.2/go.mod h1:wfsCxzXu9fYoNl8NWbjc8OpC3ljwmL+5M/Zfa2xwm+M=
163 | github.com/aws/aws-sdk-go-v2/service/eks v1.2.1 h1:eNSGiZZKcrjT1/UlxOSL/v1gjR5bePJk4xMdGBZXd1o=
164 | github.com/aws/aws-sdk-go-v2/service/eks v1.2.1/go.mod h1:XGNXr+eBGsXebPMHCHHJEaOWaenvyybnUU+dsdKpDXg=
165 | github.com/aws/aws-sdk-go-v2/service/eks v1.2.2 h1:WdaRevsJe42tAhEJJ8ShxzR04zNs1Glu9KRDRwhKGrk=
166 | github.com/aws/aws-sdk-go-v2/service/eks v1.2.2/go.mod h1:GlSwCB/FZ8JE0mwhPOS8aYDULY9bUf2GsR0tugQ6D4o=
167 | github.com/aws/aws-sdk-go-v2/service/elasticache v1.2.1 h1:r2GU9mRLlZtKNQiB8A6LeKMlxG0BK/LXU+86uv3zUos=
168 | github.com/aws/aws-sdk-go-v2/service/elasticache v1.2.1/go.mod h1:H/CnUlHdpSJ6bi4PTZn7H046nY+OF0O1ItZGpOHbZ1s=
169 | github.com/aws/aws-sdk-go-v2/service/elasticache v1.3.0 h1:ftZ/5F/CPqW7A18xVD02hGX1b1r8QsdLRk/w/BEg3E8=
170 | github.com/aws/aws-sdk-go-v2/service/elasticache v1.3.0/go.mod h1:e1FkqFNH1T9yPSPyONXxVld5n/si/508e64Is5OX7tk=
171 | github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.2.1 h1:ngD2ETQ+bmpE9dXIwpovAKfEqhK0SODf0EQDMY7qkMA=
172 | github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.2.1/go.mod h1:h2ETsoGWjnQFCsd5aYeg6+sf/HqLo7Qr7OKjSe4Axs4=
173 | github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.2.2 h1:uagPjNH5H0FndneCyYL/tF2CwfZ+jNeDh8LDO6m68Lg=
174 | github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk v1.2.2/go.mod h1:KPfN2IOuLy61sVeKgOfhvww4n5p1vGY9y6qcxQ0ATME=
175 | github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.2.1 h1:jN/we+fXuZeye2ZIPAGCI8xV6MT/JiT1JnpRUgkmG2M=
176 | github.com/aws/aws-sdk-go-v2/service/elasticloadbalancing v1.2.1/go.mod h1:2J/pAuvfB8TQHdrbVX3t4Udjv6Cd2JohqGnoMZHKhe0=
177 | github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.2.1 h1:ksGPqwdxRzwSK1H3O4z4jrDbhFnsap0HvmJNK0dzdEc=
178 | github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.2.1/go.mod h1:yamuBOz26zfLo7FiZekizZDkmGE7MGFtLGMlbHFL0Zg=
179 | github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.2.2 h1:C8e6DTx7YD3lLMAYJnFlmsK2RmbT/h1POAKjY6sH/t8=
180 | github.com/aws/aws-sdk-go-v2/service/elastictranscoder v1.2.2/go.mod h1:m6k3o5Bp4GbSk24lUoFXoI/SQqmg/r8SzDJaSF5X6Qs=
181 | github.com/aws/aws-sdk-go-v2/service/firehose v1.2.1 h1:XG4P2vpReYdY920Pf0pze6O7h7SFUkyIRVNYHNWtA2Y=
182 | github.com/aws/aws-sdk-go-v2/service/firehose v1.2.1/go.mod h1:Zt1lhxCqEWgjYOtpQp1zNg+KGz5GBrJ3Kh2CY3tuAM0=
183 | github.com/aws/aws-sdk-go-v2/service/firehose v1.2.2 h1:pRqP+i6H2vad3pthnZQLVEVTtbygfmfvm6vLMl8urU0=
184 | github.com/aws/aws-sdk-go-v2/service/firehose v1.2.2/go.mod h1:EirX3/zx3KlqrusJyikVSSeRdB5QuyaR3xmtbvzlrnE=
185 | github.com/aws/aws-sdk-go-v2/service/fms v1.2.1 h1:GQOo8orIydwBSZSH93Z2gHlVTjkjen5KT6OW0gJKnnQ=
186 | github.com/aws/aws-sdk-go-v2/service/fms v1.2.1/go.mod h1:uclej6lMNDMjuaxyTQ1EvhVtpuFwuRxhpwMgnC8zQXQ=
187 | github.com/aws/aws-sdk-go-v2/service/fms v1.3.0 h1:FaG9I0iPubYRX5Upjz1qGMxrAxZPoF/ckA3eY/04nTQ=
188 | github.com/aws/aws-sdk-go-v2/service/fms v1.3.0/go.mod h1:liZRK1WWgCM45I2gNQ+Dk/Vs+a9EjVRBRUZ1jfZRdQg=
189 | github.com/aws/aws-sdk-go-v2/service/fsx v1.2.1 h1:LGYEQ4uhlvWadzJybVEpQ1mpMZqL3z1X/tGMA2xQzAw=
190 | github.com/aws/aws-sdk-go-v2/service/fsx v1.2.1/go.mod h1:FYDI4zfy5zJuBdZZGj0YoqNW/OcrC6GcyagOTL77+Cs=
191 | github.com/aws/aws-sdk-go-v2/service/fsx v1.2.2 h1:aEnIgDlSfXY+8cbvAMvpiVLdu4OMbEcw3CdY3YrQuBo=
192 | github.com/aws/aws-sdk-go-v2/service/fsx v1.2.2/go.mod h1:5zJfITEcP4sAuq7dJg5gQTVuNknpEObtjNHqYJlcBjA=
193 | github.com/aws/aws-sdk-go-v2/service/gamelift v1.3.0 h1:TvqEAgeFUnjagxouUM9dgIsLMIhDPw59lfUsLFidiqo=
194 | github.com/aws/aws-sdk-go-v2/service/gamelift v1.3.0/go.mod h1:W3FA4iUkDo0BUfuKxTd1AVBvBR1Yh8GaO8t+8HsCrDw=
195 | github.com/aws/aws-sdk-go-v2/service/gamelift v1.3.1 h1:iEfopwA3n9km/YihaYPZc/zfZciWP82W1v70R20VXHg=
196 | github.com/aws/aws-sdk-go-v2/service/gamelift v1.3.1/go.mod h1:Fo2ybFxF/Y1MsMXcwGjUuW3l8vc2Q3VATTClVZ0bVNo=
197 | github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.2.1 h1:V7i9hzGjSpt5trBJ/0nYkW5PFEZ4LlFNL4+z7IZEF2I=
198 | github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.2.1/go.mod h1:37faQqNVhuM0Ief52pRe0bDgZPZok7pArmVHr4t2DBg=
199 | github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.2.2 h1:3g+vU+QOAP4oD5ls4PY5oXVmSjPMiXrpTU3un3nRu1A=
200 | github.com/aws/aws-sdk-go-v2/service/globalaccelerator v1.2.2/go.mod h1:qQTy1yP4cqfHHKugHxTMbGYiaDvwEKUjQNSfBkA9OcY=
201 | github.com/aws/aws-sdk-go-v2/service/glue v1.3.0 h1:xnSuV0C7FGfe9+/GJ/2KOTFD3WMXtLdk8gZzxuuuIRM=
202 | github.com/aws/aws-sdk-go-v2/service/glue v1.3.0/go.mod h1:ITzMOyWhffmh06X4DxvN85ww8Ppt0uZGh8Qcty22/yQ=
203 | github.com/aws/aws-sdk-go-v2/service/glue v1.3.1 h1:P/5LYR31nIqNJEsDm/qBsiwuLuxHd6lL3QmZh9FIhJk=
204 | github.com/aws/aws-sdk-go-v2/service/glue v1.3.1/go.mod h1:5+2zmLu4763LfhvpBTM3o7ZT2pZwazJhLnVFe0z0Uqs=
205 | github.com/aws/aws-sdk-go-v2/service/greengrass v1.3.0 h1:bLjlXQYXsQP/3r74XcKBvBHlyMTUiCQZaqU+BfQMm7Q=
206 | github.com/aws/aws-sdk-go-v2/service/greengrass v1.3.0/go.mod h1:JEhZgFXHgR0b8CH3ud85Pe96aezh8WkDOFObK8Ng+so=
207 | github.com/aws/aws-sdk-go-v2/service/greengrass v1.3.1 h1:trnMGtZaiWSsOg3PZxBI4d2VDyO5NdqLh5Yn3rNI5ic=
208 | github.com/aws/aws-sdk-go-v2/service/greengrass v1.3.1/go.mod h1:r0bxuK0pxLlzCWKnFdpUrncCskij6cUfFl+/6bEbNcw=
209 | github.com/aws/aws-sdk-go-v2/service/guardduty v1.2.1 h1:ah+72txVcIrXbTymv9PQox4oHMh56330R3+CSWoGWwE=
210 | github.com/aws/aws-sdk-go-v2/service/guardduty v1.2.1/go.mod h1:yqXMDJMiKl8LRdN84XBWVpTz7wYK37fdFMAtwC4kRsU=
211 | github.com/aws/aws-sdk-go-v2/service/guardduty v1.2.2 h1:cZLG8BU13XVOx1bt/oS2Mt0rf5w2l11878tpH8E1Ikc=
212 | github.com/aws/aws-sdk-go-v2/service/guardduty v1.2.2/go.mod h1:8SdXxhqOcjQDTbSpw/hZ8wMcuNF2WtA714SiQc0tH4U=
213 | github.com/aws/aws-sdk-go-v2/service/health v1.2.1 h1:AHBUqUzswSyusXQNEBQAoje95hrTcy93cE9rMPNwoBU=
214 | github.com/aws/aws-sdk-go-v2/service/health v1.2.1/go.mod h1:Q+8sGLEYrvBTvsTOeT9QUq7eDp8SHddv47+jwP1HbRc=
215 | github.com/aws/aws-sdk-go-v2/service/health v1.2.2 h1:YSVnMHqOejXToDBpUFjIqv205mYEu2gAzNo+KcW/HJw=
216 | github.com/aws/aws-sdk-go-v2/service/health v1.2.2/go.mod h1:153FfY7DdwZDyv8ISsyE3LBoyyvYwOMckP9aA1D9Thg=
217 | github.com/aws/aws-sdk-go-v2/service/iam v1.2.0 h1:uY8XHIk4Yl1xZWhNhrM2hXsTkq5YOC8SHwk6TaRIlB0=
218 | github.com/aws/aws-sdk-go-v2/service/iam v1.2.0/go.mod h1:4uIqdAKzvQSCQTzjIiI6m7hnv5Wc4blFKB29BkGK1VQ=
219 | github.com/aws/aws-sdk-go-v2/service/iam v1.3.0 h1:V95YLxbxLGlTcFR0KMMSZEaudIxYCAhycSGcO7/Favs=
220 | github.com/aws/aws-sdk-go-v2/service/iam v1.3.0/go.mod h1:gPUYT7MBEb30j9eAsJ17LN9KbXtD1uqKOOKesCC4tjc=
221 | github.com/aws/aws-sdk-go-v2/service/iam v1.3.1 h1:aTJTynJuqZjZ0ptNubJcEEN511FDiajRYI/PTnRO1U8=
222 | github.com/aws/aws-sdk-go-v2/service/iam v1.3.1/go.mod h1:b1K3TViQAwFbfJn8htcD5vtM8AqkMtDc53OreIpCRtk=
223 | github.com/aws/aws-sdk-go-v2/service/inspector v1.1.4 h1:hWTtvY2tNftaWrExiGdFIoaMNyEVsu08NBQylEd348o=
224 | github.com/aws/aws-sdk-go-v2/service/inspector v1.1.4/go.mod h1:Nc3vBGnDYupw2BEjSFqsLA9+HMKDrCHFTFRjjEtfzCU=
225 | github.com/aws/aws-sdk-go-v2/service/inspector v1.1.5 h1:QqpoPzjgfpdzSqkKvArv0TllnUVFdn48DiMl4BMQPMk=
226 | github.com/aws/aws-sdk-go-v2/service/inspector v1.1.5/go.mod h1:sKx7ETpan/wJCh/wCS3W4y96xLFvd50jb6DFR6UJzow=
227 | github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.0.3 h1:iLFz4nrWkXMTFeVn0n99wRyc4Xib4SlDbtAM3h2z8P8=
228 | github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.0.3/go.mod h1:g3Xw4tO/W+ae4EMzkxB6nGnJ48cLM4i1Z61WmD+IKtY=
229 | github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.0.4 h1:8yeByqOL6UWBsOOXsHnW93/ukwL66O008tRfxXxnTwA=
230 | github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.0.4/go.mod h1:BCfU3Uo2fhKcMZFp9zU5QQGQxqWCOYmZ/27Dju3S/do=
231 | github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.4 h1:DRIpujxvhdv3+xLXCoaKk1VB4vk/Sh8sIOBewLJJpes=
232 | github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.4/go.mod h1:DGOKKGeqXdIWX3xD5DKr4otrgNw5cstwUCJYwSKxbp0=
233 | github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.5 h1:GbW4bbc1iED64aIL203xcGSfLzWOWuIdnKV0guMcJvg=
234 | github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.5/go.mod h1:MW0O/RpmVpS6MWKn6W03XEJmqXlG7+d3iaYLzkd2fAc=
235 | github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.6 h1:ldYIsOP4WyjdzW8t6RC/aSieajrlx+3UN3UCZy1KM5Y=
236 | github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.6/go.mod h1:L0KWr0ASo83PRZu9NaZaDsw3koS6PspKv137DMDZjHo=
237 | github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.2.1 h1:wCzfVBrF1QRQFacZn1ywE/o2p92FzfpDNI2aCpIv+sY=
238 | github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.2.1/go.mod h1:6A0VfJAnYwhcXzt7KsixOdFlITEH5NFl4QeYxlZ5TtQ=
239 | github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.2.2 h1:aU8H58DoYxNo8R1TaSPTofkuxfQNnoqZmWL+G3+k/vA=
240 | github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.2.2/go.mod h1:nnutjMLuna0s3GVY/MAkpLX03thyNER06gXvnMAPj5g=
241 | github.com/aws/aws-sdk-go-v2/service/iot v1.3.0 h1:2XPCAh07+oDQKF9n+VPAThvhaqUuIOCIxFa9+xHnc0s=
242 | github.com/aws/aws-sdk-go-v2/service/iot v1.3.0/go.mod h1:jKAI1pEblx/JVQ5KxgEBnTiB0/CzQBVfIk6IQz1bJPY=
243 | github.com/aws/aws-sdk-go-v2/service/iot v1.3.1 h1:Y9mGyFBRHt+ASTitIAQrSicYOVauDr4bSNmSijo++CY=
244 | github.com/aws/aws-sdk-go-v2/service/iot v1.3.1/go.mod h1:lTOHtMnNgFBpueaGyB7FkVIcm3MGX9w051x3pAsa0IE=
245 | github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.1.4 h1:lh9EwwgBCkiC/DGhZbA/115Q3W6YJGN19Db5a1Q7qrg=
246 | github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.1.4/go.mod h1:Lecye6agzTOBvSIg3E7Vah7JetW5LB8ttpEyeCSuX2M=
247 | github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.1.5 h1:VXQMy3yM7kCyMtT+ctdMDVfNPmePZJ0ZDL057yl3+f8=
248 | github.com/aws/aws-sdk-go-v2/service/iotanalytics v1.1.5/go.mod h1:SqoHzFkPwiBrYEjjV+YaUzEWpC+nPhUJdJ749D37hDE=
249 | github.com/aws/aws-sdk-go-v2/service/kafka v1.2.1 h1:70IRtg4hU1mQ5aAtjEHPQR+KCeVIDwLOpvbofiSEODE=
250 | github.com/aws/aws-sdk-go-v2/service/kafka v1.2.1/go.mod h1:2gy+VDVpxUvxQRdjpFlZNhXSjybrxnYrb9Byuzz855I=
251 | github.com/aws/aws-sdk-go-v2/service/kafka v1.2.2 h1:PEuhKj+k8wOd+Xu0Wv/ONKn+J2sJoiEevi50NTdfPwc=
252 | github.com/aws/aws-sdk-go-v2/service/kafka v1.2.2/go.mod h1:C+OMMf4KutWEMu+EEqcg7Q/Ry9BXA04f+vynMJVe9wA=
253 | github.com/aws/aws-sdk-go-v2/service/kinesis v1.2.1 h1:MXy6AyLlbBYypXEsmK94l9yGjKKtxNaD/jFzVVOsnYQ=
254 | github.com/aws/aws-sdk-go-v2/service/kinesis v1.2.1/go.mod h1:ZdVDeEkxSDTPYDtb8kVxXzyOSBkAQVXCA9fanM45a/c=
255 | github.com/aws/aws-sdk-go-v2/service/kinesis v1.2.2 h1:yUbA7VZcykLVML673r2XiG+bnKLZAceyZbBe/X/kSIk=
256 | github.com/aws/aws-sdk-go-v2/service/kinesis v1.2.2/go.mod h1:J9JZs+dk4zhz9NnfGCMPxmhQMAPX4ThHKidWNTxduxg=
257 | github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.1.4 h1:3+ZEih+xtz8Fcqb8ZYwBCVaM8ZtK0WocL40B26yhrfQ=
258 | github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.1.4/go.mod h1:hTyovby5q34j374msk5N3EecGrrMQSZ3O/EQzrRmrOM=
259 | github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.1.5 h1:3LsbYgN+I3139ewliPDtTJoQanYDko14SOnO2KQ+BNU=
260 | github.com/aws/aws-sdk-go-v2/service/kinesisanalytics v1.1.5/go.mod h1:WB5S3Q5zF7CnXmP0HdDR4EHSNv5yLNiLHTYQSqsZHPk=
261 | github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.1.4 h1:tWOm70WscxPN/cpQ3FfX12lLl3O/k47033DJuOkPRPM=
262 | github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.1.4/go.mod h1:gdHJcmtEqppKm5+nI3gyJkIU5CnHAsetc2lZO5vUqEE=
263 | github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.1.5 h1:viwyFdr25QhLZiGvHPqe+WumNlxxdcpg2XBmR/pSnyA=
264 | github.com/aws/aws-sdk-go-v2/service/kinesisvideo v1.1.5/go.mod h1:0Gbr763PMwc5S5zrf14HliE0PnxWHR5Qj79q3jk6biU=
265 | github.com/aws/aws-sdk-go-v2/service/kms v1.2.1 h1:X77wgZdglt2hU9zZS3DufyJiR4ZGW4F5x72OauDMSsM=
266 | github.com/aws/aws-sdk-go-v2/service/kms v1.2.1/go.mod h1:VJL8/fcYPX11A7hdOPAXtzU6+yDifhKW5MgwaA6HIwY=
267 | github.com/aws/aws-sdk-go-v2/service/kms v1.2.2 h1:9CJBrElBVX699f4ugbwsD2EPyHYWEdf9rGZZJwDzPSU=
268 | github.com/aws/aws-sdk-go-v2/service/kms v1.2.2/go.mod h1:aDkYNnoS4NikbSA7AiTomko1eJIZgrIG0ZE0yPJRn+w=
269 | github.com/aws/aws-sdk-go-v2/service/lambda v1.2.1 h1:U1AhnZgIHWCh6kIXuq6RkTptzU6szpDHjRbrA7g+99s=
270 | github.com/aws/aws-sdk-go-v2/service/lambda v1.2.1/go.mod h1:lczLef9EKYeQQ23eksYHU/Qf8j+66FSlX+g+15ZEP+k=
271 | github.com/aws/aws-sdk-go-v2/service/lambda v1.2.2 h1:F1vBHHT+x008mllAfLncqC0L2sgshS/ka1HFuL4jewc=
272 | github.com/aws/aws-sdk-go-v2/service/lambda v1.2.2/go.mod h1:VjOrBW4srZJGZJmcyW00FDRVJFrBXoDlzd00vW4vCyw=
273 | github.com/aws/aws-sdk-go-v2/service/lightsail v1.2.1 h1:KtqKLszWLiVi9BkFtXNKzhJJiaQKYWwS34/fNRFjCJ4=
274 | github.com/aws/aws-sdk-go-v2/service/lightsail v1.2.1/go.mod h1:7rcU+rFxjIN9zHyc1WhcVviu1bA6GGTyWQjLzZKsG7M=
275 | github.com/aws/aws-sdk-go-v2/service/lightsail v1.3.0 h1:E05vqV1st86MUvDVv0qCj3NjydzobuNvCQOXb/5QMmo=
276 | github.com/aws/aws-sdk-go-v2/service/lightsail v1.3.0/go.mod h1:CdVKvFLxKn+9yEipoCHW4iWR41yQUD8VTeZh8NnhxSU=
277 | github.com/aws/aws-sdk-go-v2/service/machinelearning v1.3.0 h1:BJNr8yViaL0KdQgbmy7JRv+igxKAnQfPdaxg6OPmykM=
278 | github.com/aws/aws-sdk-go-v2/service/machinelearning v1.3.0/go.mod h1:5HweB0hmhPWBi6z9rMTyNv9zhzkIMM1c01y44ugHhWU=
279 | github.com/aws/aws-sdk-go-v2/service/machinelearning v1.3.1 h1:JclCmiT9w2Zt+6MfpsrWkUbkhjUEyNzhMoNqb+rkp+Y=
280 | github.com/aws/aws-sdk-go-v2/service/machinelearning v1.3.1/go.mod h1:xlYpjEzK+3mYF69SnS28WJ78x77V9V2X0BREasg1C18=
281 | github.com/aws/aws-sdk-go-v2/service/macie v1.2.1 h1:mztaducFFYst6lgq5jTzKcsvIxAxjZ0ClcIMIKYadE0=
282 | github.com/aws/aws-sdk-go-v2/service/macie v1.2.1/go.mod h1:GfQ3yKXXIIKPtJAHIbhoIhG7wzkzc/Ay5AUs3qKypJM=
283 | github.com/aws/aws-sdk-go-v2/service/macie v1.2.2 h1:3kuEA0efTg1U3GZ4447v8ve3MqG37fA8gT0c8kk6dmE=
284 | github.com/aws/aws-sdk-go-v2/service/macie v1.2.2/go.mod h1:5v9CkkmmVsREfXMr1shIBgVVg3vSKjLgYhdoKa2EbPg=
285 | github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.2.1 h1:4oztZA8BxgDdy2PqjlVv5dJIcAhPKe2epVr0I1tKrQg=
286 | github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.2.1/go.mod h1:s5oYpOImXaX0s372mu9S75ntpUArAxbUHtjWnLxqR2U=
287 | github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.2.2 h1:seYftRutT0Ez26RK50UVraWhBVsccd3UqOFmwal3OQM=
288 | github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.2.2/go.mod h1:rNOq/hrx7N2hXYrv5KqjHgiiSCp07qXENCwdiZ7YlHE=
289 | github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.2.1 h1:BJt4hXiZxFl06KKiM0NrModBhNAxeVPgCYQAuPau3uw=
290 | github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.2.1/go.mod h1:2DQ6LFGDMmtgZLfUn4jz//9GN+JkWknaj/KxWbPELDA=
291 | github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.3.0 h1:uxHmRB6A4Dv7BaC9wO8Fn8WpR0Fjooq9SqPVXkgRaLg=
292 | github.com/aws/aws-sdk-go-v2/service/mediaconvert v1.3.0/go.mod h1:c5OLB7zfZwpU0gbQMQwq1VP7N/YkNcJ6UXvbbuzMigQ=
293 | github.com/aws/aws-sdk-go-v2/service/medialive v1.3.0 h1:NFYyYF/VWJd4qc5+tLACVBxx/4mLE0dqHw0J+ccKNrM=
294 | github.com/aws/aws-sdk-go-v2/service/medialive v1.3.0/go.mod h1:fX5nUlifozxBmD4/5SfSg6SL4LWog8s4p+TzrKZixIE=
295 | github.com/aws/aws-sdk-go-v2/service/medialive v1.4.0 h1:ih4iMdVqIdcI7HeeHNNBWg1Szw6AD9gDIHxNPSiIRIk=
296 | github.com/aws/aws-sdk-go-v2/service/medialive v1.4.0/go.mod h1:4F8aH2SpAuSz3T4I+Q+EJDrHngFRCXY57PM3qhmBIfg=
297 | github.com/aws/aws-sdk-go-v2/service/mediapackage v1.2.1 h1:/NgTgipY3ADAqLp18q1dDomqHYULUrcD3v3XGdqIhT8=
298 | github.com/aws/aws-sdk-go-v2/service/mediapackage v1.2.1/go.mod h1:S3JR8Z73bcaBwD1ddXzMcEkR1FFptmmY9pbsmCVWfn0=
299 | github.com/aws/aws-sdk-go-v2/service/mediapackage v1.3.0 h1:aUMwMSsy193HvHWIPS3W2FqWIaZ6korXIZEgVfssr7E=
300 | github.com/aws/aws-sdk-go-v2/service/mediapackage v1.3.0/go.mod h1:Os26hDJ4kx/LSGN2ML4cjQwJD8swk1OmEsQLFX/Txtc=
301 | github.com/aws/aws-sdk-go-v2/service/mediastore v1.1.4 h1:7ho72LnawdmIm8J8KdkLoLWgcsqLcS8oKBDuT3005wg=
302 | github.com/aws/aws-sdk-go-v2/service/mediastore v1.1.4/go.mod h1:kXoBJPOMmUdpMEqWUhEPolBoycGzLGUHS5a/mL1+y1k=
303 | github.com/aws/aws-sdk-go-v2/service/mediastore v1.1.5 h1:qouxiG9OanxnMvXVby6kPhOtuAJL9XjnXuQqOt9jUps=
304 | github.com/aws/aws-sdk-go-v2/service/mediastore v1.1.5/go.mod h1:QPhXJl1/gnI93OZVHl4yfnVB/JLeMRNxAiUfcU+5Q2U=
305 | github.com/aws/aws-sdk-go-v2/service/mediatailor v1.2.1 h1:CKlduZwqNaG/b4AhjdTCe94DyVs7xOf6o5/ypbnOL5M=
306 | github.com/aws/aws-sdk-go-v2/service/mediatailor v1.2.1/go.mod h1:UHDbnNtfrCQd44LGCp+pvTsGFQ+upmI02o+8xVQ/fNs=
307 | github.com/aws/aws-sdk-go-v2/service/mediatailor v1.2.2 h1:NKT/QpHeW+PwFm4pXnd/xAaGJf0dZqVhFOti3u7XMkA=
308 | github.com/aws/aws-sdk-go-v2/service/mediatailor v1.2.2/go.mod h1:j6kAbnJJM9TJM1DuXaFScvAM2s/+4V2qF4pRg9b7FtI=
309 | github.com/aws/aws-sdk-go-v2/service/mobile v1.1.4 h1:vFln2csvHf4WLzNOWz4ipbPzVX0h1eWwZ8AsxjVmOEk=
310 | github.com/aws/aws-sdk-go-v2/service/mobile v1.1.4/go.mod h1:H1Gg3hBwqnHYyOLWL7wwkdZmPYaOT7exx6+riLzGXmE=
311 | github.com/aws/aws-sdk-go-v2/service/mobile v1.1.5 h1:5UZ62JLxd8ha8LwUzE+VVQvZgAcKi8JZ1BpsTDhnBnU=
312 | github.com/aws/aws-sdk-go-v2/service/mobile v1.1.5/go.mod h1:91t3fZCx5xLQAA39qcuMnogtW20xao69FXy6gJCt/jU=
313 | github.com/aws/aws-sdk-go-v2/service/mq v1.1.4 h1:j4D4AfYPQxA6lSwozj59RR96DAd2+H7jX9l8qML/RQM=
314 | github.com/aws/aws-sdk-go-v2/service/mq v1.1.4/go.mod h1:ZQZbB/43oplbGYJw0R1wf6V7ukrOwbWmYFUx5kFmFQs=
315 | github.com/aws/aws-sdk-go-v2/service/mq v1.1.5 h1:CJolbqAUmMc6MV0f4qwEAI8jR5KJHDJbVc3DAQSuRlg=
316 | github.com/aws/aws-sdk-go-v2/service/mq v1.1.5/go.mod h1:oMCZCQYJ8VOJkLxgo0LqynnfPlHuwxOeqT1KTr2pcAc=
317 | github.com/aws/aws-sdk-go-v2/service/opsworks v1.2.1 h1:IO7VrzPWU0y8Zv7eS28H5lbhl40SND58IAKR+jrMdy8=
318 | github.com/aws/aws-sdk-go-v2/service/opsworks v1.2.1/go.mod h1:Q/5tmZPs9IBo+wivcBWnPaWlOuCf0Q49ERxEvh2RzMg=
319 | github.com/aws/aws-sdk-go-v2/service/opsworks v1.2.2 h1:CMif3Cy79NfLPcYuyYidNdynqeEZCK0i2LTPKB4sMQQ=
320 | github.com/aws/aws-sdk-go-v2/service/opsworks v1.2.2/go.mod h1:elwiAmL4KdGNzNE5HjyxgKBoj7pjOhyOof0KGciJRAg=
321 | github.com/aws/aws-sdk-go-v2/service/organizations v1.2.1 h1:TvDVD1mBXP60NIHrqbP8uuzTf4vu48HlOm5jtoQQcW0=
322 | github.com/aws/aws-sdk-go-v2/service/organizations v1.2.1/go.mod h1:iy7PhC7Wxk3aRePrvaUU7ngXjcAedbTBeKYAYVhnvfI=
323 | github.com/aws/aws-sdk-go-v2/service/organizations v1.2.2 h1:YunGbcDrceUUsCN9ZG9SnrHKMx4JXB8RtqnvZGs9xWg=
324 | github.com/aws/aws-sdk-go-v2/service/organizations v1.2.2/go.mod h1:QW0vcI3+B+SVn4OVKCmG7BhinCLCGNgFQklGKFzfTCM=
325 | github.com/aws/aws-sdk-go-v2/service/pinpoint v1.3.0 h1:KYqwfNZ1mNR2Fk+j9I3+k+HVGEqVpplIJjoaOnQrrH8=
326 | github.com/aws/aws-sdk-go-v2/service/pinpoint v1.3.0/go.mod h1:3AKvj9mJfq9iUNPjK9j/2QmX1UWSG33ZwDDrtlZ2WKM=
327 | github.com/aws/aws-sdk-go-v2/service/pinpoint v1.3.1 h1:6J5ElC/9TZ82VrzelbUu8uRXeEPdMfxAUfF/VDLKkvg=
328 | github.com/aws/aws-sdk-go-v2/service/pinpoint v1.3.1/go.mod h1:6x/Y6yieRSyeADniIsoWAICNI/1/Y74FOMyrHHQXlns=
329 | github.com/aws/aws-sdk-go-v2/service/polly v1.1.4 h1:XIGUxdZS9FbPX2obj+MzQBKrGKFuhNt6Xwh042yN7+o=
330 | github.com/aws/aws-sdk-go-v2/service/polly v1.1.4/go.mod h1:gpK0hSfdCtIi/FqrxHmfl6sDmNi4lVfSoF1PDaro474=
331 | github.com/aws/aws-sdk-go-v2/service/polly v1.1.5 h1:MCwgF6K9gHNW5+li0IuubFys6T/WRog7yYWk/Pfq4YA=
332 | github.com/aws/aws-sdk-go-v2/service/polly v1.1.5/go.mod h1:z9+jdCxKWfBzZxbArgSt0VcI91izge5I2kLbV7ELses=
333 | github.com/aws/aws-sdk-go-v2/service/pricing v1.3.0 h1:joT6DC/wWGJoTGu6os36FrZg093WJXOvPPX7kvXGmZA=
334 | github.com/aws/aws-sdk-go-v2/service/pricing v1.3.0/go.mod h1:sEHV+uECzaOIj5GIJpSjsvin0nxXGasz7FgJm4gMoPk=
335 | github.com/aws/aws-sdk-go-v2/service/pricing v1.3.1 h1:+ImtL0PJx+VSLvN14F3lO4x0y3edAgqULjtp1iLWU1U=
336 | github.com/aws/aws-sdk-go-v2/service/pricing v1.3.1/go.mod h1:XASKSA1dP07gIpzBb0MHCqrQQVnKdyjoRy0EY9aH5/8=
337 | github.com/aws/aws-sdk-go-v2/service/ram v1.2.1 h1:aU5wjc6/Xj/KmJX0tH6VHRvlFFNKpxGVsRkwkcyK9CU=
338 | github.com/aws/aws-sdk-go-v2/service/ram v1.2.1/go.mod h1:H/JwDTgOajeQz30mi0GjPvhmPQ1p9wpeEGObDFobNGI=
339 | github.com/aws/aws-sdk-go-v2/service/ram v1.3.0 h1:brC5siAYJnA+9Ijtk7U1qqi+3dm9Z8n6xOAMUYo6Ufo=
340 | github.com/aws/aws-sdk-go-v2/service/ram v1.3.0/go.mod h1:/PRZ6HcYOt05pAginXKMj9PKAJX4aVdYQhIBP/iwFHM=
341 | github.com/aws/aws-sdk-go-v2/service/rds v1.2.1 h1:nh6V70gwG0bE6Ocz34rg5VZvmthKuDSa785CBpvY2g8=
342 | github.com/aws/aws-sdk-go-v2/service/rds v1.2.1/go.mod h1:QQ6pD2d3AUbZblcKzZ5aJ58mMMfcofx2j8KAXcHe8rg=
343 | github.com/aws/aws-sdk-go-v2/service/rds v1.2.2 h1:Wy1uuze7S0lugMvy3CSGYmAclqeADe0k8e/NYp9xog8=
344 | github.com/aws/aws-sdk-go-v2/service/rds v1.2.2/go.mod h1:mW+SUZrd1ky9iSCwVmcWNAAiUMDUbIkU51lzNi4XBnU=
345 | github.com/aws/aws-sdk-go-v2/service/redshift v1.3.0 h1:Eiv449szSm77R2AFB8Up0oW3DGJTuaICBkOwptibmfQ=
346 | github.com/aws/aws-sdk-go-v2/service/redshift v1.3.0/go.mod h1:FSg9SNvu62Ac+jjWjTS7R/mmtXj9zl6nXwacwDGxK0s=
347 | github.com/aws/aws-sdk-go-v2/service/redshift v1.3.1 h1:9hREk2Sn/7o8OKtA+7o1YdNKujgNx8TzXKqHc9BFY6I=
348 | github.com/aws/aws-sdk-go-v2/service/redshift v1.3.1/go.mod h1:MRsZonKZ+BOVGxGFrCxCwHYbrs5PdWmGZ1udfeL8hIg=
349 | github.com/aws/aws-sdk-go-v2/service/rekognition v1.3.0 h1:1+mSXr9v1G462XDMbGYMeZkrBODCEYAsQ6ylbkx0uuk=
350 | github.com/aws/aws-sdk-go-v2/service/rekognition v1.3.0/go.mod h1:3JG7w8GPo2c43KOz2+NH7MTacZ2NspE+hCeS12DcK3U=
351 | github.com/aws/aws-sdk-go-v2/service/rekognition v1.3.1 h1:yjfSszGW0bMpoe0HKwgmuSq0pP4wcMBofJqP7Q4LeAY=
352 | github.com/aws/aws-sdk-go-v2/service/rekognition v1.3.1/go.mod h1:nWnSBXE6l/EQsqEuNtomZarBdcUwHzsMtqApm1/Jt0s=
353 | github.com/aws/aws-sdk-go-v2/service/robomaker v1.2.1 h1:wRlJAb1iGLhOjZUTiPzuTnuQ2B1LyE/BLtIEhH4jjM0=
354 | github.com/aws/aws-sdk-go-v2/service/robomaker v1.2.1/go.mod h1:0bt4h3SYU6vaHbPI85+BdZHwrNULH3O4SNW3wYnhU8A=
355 | github.com/aws/aws-sdk-go-v2/service/robomaker v1.3.0 h1:IZqLWRhNNhbe++jq6KMCGLN/IPN9KzroF62kcGVabvw=
356 | github.com/aws/aws-sdk-go-v2/service/robomaker v1.3.0/go.mod h1:VwRnohGf4MCVvYJ7omCFc74aNock2bdsSVXQ2xeeHzM=
357 | github.com/aws/aws-sdk-go-v2/service/route53 v1.3.0 h1:uwKwx0iSdZyIwQmsMPtAoBjlRC1lFUAhx2c6HGWjfPM=
358 | github.com/aws/aws-sdk-go-v2/service/route53 v1.3.0/go.mod h1:vwPNxNmptQ70lgw8W4EzuHKCygDpVvhjJ/Xri8cnF80=
359 | github.com/aws/aws-sdk-go-v2/service/route53 v1.4.0 h1:O0uJ4SI2f3q84vPcwsVyLTuASS1hAKb8RKnMVGgMqaU=
360 | github.com/aws/aws-sdk-go-v2/service/route53 v1.4.0/go.mod h1:BNPIchdQA/UcqNmWkPBmUruDm7asbm/Q6nxBmURvAHU=
361 | github.com/aws/aws-sdk-go-v2/service/route53domains v1.1.4 h1:58BznccDxmfO4s499bHf80aaQZNwiWVAXDTxhkMUaBg=
362 | github.com/aws/aws-sdk-go-v2/service/route53domains v1.1.4/go.mod h1:3BYq6Mn84r6Aw7CBy6wAF+MNE4jyr9q4uwVMLihkOFA=
363 | github.com/aws/aws-sdk-go-v2/service/route53domains v1.1.5 h1:YzN/hwQTpXTqNXQjJ7aoAhS9mt6TLkxwoN8DX2L/yiE=
364 | github.com/aws/aws-sdk-go-v2/service/route53domains v1.1.5/go.mod h1:qshQuUcDSCTHlWwysgQpa21qHS2fKHB0arp5kXTgGRw=
365 | github.com/aws/aws-sdk-go-v2/service/route53resolver v1.2.1 h1:BzXCrdOnD1N7CAxm9zTTKKwYvyWJIh83YZqQktJWFws=
366 | github.com/aws/aws-sdk-go-v2/service/route53resolver v1.2.1/go.mod h1:4viSA3gDsj3ESCHUWiR0SkRW6LK/4261rmJLaPfEt1c=
367 | github.com/aws/aws-sdk-go-v2/service/route53resolver v1.3.0 h1:nzhb58Nhso11x3nFPBcy7Ieyw2xj0OD9iyNrA3jLgGA=
368 | github.com/aws/aws-sdk-go-v2/service/route53resolver v1.3.0/go.mod h1:cATrgaiOqhGmcfjS6D2LkTa3Zhut4m4l+MLqFjqhzHg=
369 | github.com/aws/aws-sdk-go-v2/service/s3 v1.4.0 h1:045tK3IL+TxOSWWQyG199A0BYJ/Yhgk8XV9xo+nQkLQ=
370 | github.com/aws/aws-sdk-go-v2/service/s3 v1.4.0/go.mod h1:zFD4go1gW0I/WxeGfCNSsz/BnZSJyu5arLPMPnw0gvQ=
371 | github.com/aws/aws-sdk-go-v2/service/s3 v1.5.0 h1:VbwXUI3L0hyhVmrFxbDxrs6cBX8TNFX0YxCpooMNjvY=
372 | github.com/aws/aws-sdk-go-v2/service/s3 v1.5.0/go.mod h1:uwA7gs93Qcss43astPUb1eq4RyceNmYWAQjZFDOAMLo=
373 | github.com/aws/aws-sdk-go-v2/service/sagemaker v1.3.0 h1:qPkVtYSSqSk74C/nqgySjXxDQppfb8E4fi51Cp0bekY=
374 | github.com/aws/aws-sdk-go-v2/service/sagemaker v1.3.0/go.mod h1:WkC5JCt449oFeQmtbWv8uGG6AmaP4pWrQJzSGXu3gho=
375 | github.com/aws/aws-sdk-go-v2/service/sagemaker v1.3.1 h1:OjEzRWmCSRlT/uRSbVN6IabSIbCZ48j9hwTlc5QQS9s=
376 | github.com/aws/aws-sdk-go-v2/service/sagemaker v1.3.1/go.mod h1:TemNRYl2uKv5PkRnxJ6LOme4AL4GyvTXDTGmwXT/q+E=
377 | github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.2.1 h1:g5UomfutRdIkbsqdGr4XyuVyTZM+sp7ySmnoU8zai9s=
378 | github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.2.1/go.mod h1:5UqHs6oUHhBRimgTAWZJ1uXa+A8QFLbOCi5yRZxLQAs=
379 | github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.2.2 h1:gt5ueN7RuySBmdRnczL0B6oT+LzxxQQ524oTpRv3mU8=
380 | github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.2.2/go.mod h1:RaGPWwyy/DaKCyqzdELQgLS8TVO5uNDZEiFoc6yusKk=
381 | github.com/aws/aws-sdk-go-v2/service/securityhub v1.2.1 h1:qZplAHGJFl16wbZAWEnP73dzATdJDBly6ccPfeSeffc=
382 | github.com/aws/aws-sdk-go-v2/service/securityhub v1.2.1/go.mod h1:SI3V2iXBWczkoetsurbZjbTNv2rCJihbo5APtlDLbCQ=
383 | github.com/aws/aws-sdk-go-v2/service/securityhub v1.2.2 h1:98HxONwbO0i40LLgQStDxB7eQ8GFuw0Iwps9tb8tKgU=
384 | github.com/aws/aws-sdk-go-v2/service/securityhub v1.2.2/go.mod h1:5K5frfLOpGPTQGY6ijF+0Z0ghXa9B15E8WT7at3SYSg=
385 | github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.2.1 h1:/FTF3YGI/WxRnRKhruU1nyhR/gzgfYP0kQF7yIaqEjU=
386 | github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.2.1/go.mod h1:bivtoAQvh328aJFiY3+h4lQpyv9kPjJAP/y/PCQbnVY=
387 | github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.2.2 h1:WRTKESeTUs9mf36IYLy0NZzsyb7HM2ZL+aH0jCZxg9U=
388 | github.com/aws/aws-sdk-go-v2/service/servicecatalog v1.2.2/go.mod h1:Ub9kxF9jgkl0NWSAQvioSYDSFnujdxvwplEAXMK9gAk=
389 | github.com/aws/aws-sdk-go-v2/service/shield v1.2.1 h1:2K2rtKrNrvrVp2bUtY6sTiB8qwRB0/ibzsSTgi4dptI=
390 | github.com/aws/aws-sdk-go-v2/service/shield v1.2.1/go.mod h1:IDdbDkyMfkRaZ8v7vjOMktOP5qfXWHdNVjQEB+IDE/8=
391 | github.com/aws/aws-sdk-go-v2/service/shield v1.2.2 h1:Uo90tKSV1VPE/pWlIqUP9GJUKgs8YsJYL7vDvtZAL9U=
392 | github.com/aws/aws-sdk-go-v2/service/shield v1.2.2/go.mod h1:2QfCefBuS2ivcPNA6weVTJZUpVP8Eof2S9p6wi9nF0g=
393 | github.com/aws/aws-sdk-go-v2/service/signer v1.2.1 h1:uuWmJyQSVT7gWYNf1aLlfWsnGCUW47R4HryCkPlMTlw=
394 | github.com/aws/aws-sdk-go-v2/service/signer v1.2.1/go.mod h1:+gVW6mpCRIrOf5i59zwn3blK6mWB0LMoLBLGz9npCl4=
395 | github.com/aws/aws-sdk-go-v2/service/signer v1.2.2 h1:2SDtQ3dFjFOwsIIHxSYnAEMsfUqcHwFPc0UeA5A5/lk=
396 | github.com/aws/aws-sdk-go-v2/service/signer v1.2.2/go.mod h1:igKOejiga4JY1SgvjxwDjHUmsoL0XXLuuxUjS27gBgs=
397 | github.com/aws/aws-sdk-go-v2/service/sms v1.1.4 h1:D/YzXwT30LavDXfgGAiIPqosEM6TBbtccctqmRm7/K8=
398 | github.com/aws/aws-sdk-go-v2/service/sms v1.1.4/go.mod h1:lI/4btGH3c2CC6bfmPyZids6lQQTLYEBoP7MRgzYszM=
399 | github.com/aws/aws-sdk-go-v2/service/sms v1.1.5 h1:sjTAmc4IrcUgFl0ZMZUjLicI5UNmtPv5rXuduv4FlmY=
400 | github.com/aws/aws-sdk-go-v2/service/sms v1.1.5/go.mod h1:4QTDMnITdW0nF/9ateJ6x3omZadEU/fpcgFWDIGpdvQ=
401 | github.com/aws/aws-sdk-go-v2/service/snowball v1.2.1 h1:QhXuQ1t+053KKanw3I+mA3wQYXAGngpx/LuPvzBU//o=
402 | github.com/aws/aws-sdk-go-v2/service/snowball v1.2.1/go.mod h1:ovFWP8NHIdZOAhItjiYaI1tjP3++y2sj+mxdTD2mjFo=
403 | github.com/aws/aws-sdk-go-v2/service/snowball v1.2.2 h1:wFG5fohslmo7p8CdLXdxk1mVbyCq3QaKDaseqI9M5uY=
404 | github.com/aws/aws-sdk-go-v2/service/snowball v1.2.2/go.mod h1:ddP26kOINA/79ZzTtLP0LT7pbPI99VJM1ppgvWtaT3U=
405 | github.com/aws/aws-sdk-go-v2/service/sns v1.2.1 h1:IVHrunoAsIp1OV445PE84mM+WArZChXrxNbFIx4uAWQ=
406 | github.com/aws/aws-sdk-go-v2/service/sns v1.2.1/go.mod h1:23FVJ4I/AHqbkh4vMa1Cz6/vXMCuMLPkU9Pi4RCFgxk=
407 | github.com/aws/aws-sdk-go-v2/service/sns v1.2.2 h1:phLGFAc2O7yX2ZmDENxd8CJ/jwGtsKp+ZycI9vJtCgI=
408 | github.com/aws/aws-sdk-go-v2/service/sns v1.2.2/go.mod h1:bmy5i6vmXNNTOK8ZXGxD1qEuZtzfKaJXy6PEMBMt5sQ=
409 | github.com/aws/aws-sdk-go-v2/service/sqs v1.3.0 h1:iePzn4Gr4p5QKat3G7snhUvopc/lOj25ZiPJ4/PPzq8=
410 | github.com/aws/aws-sdk-go-v2/service/sqs v1.3.0/go.mod h1:9bo6m/Pes+TR6ORT97E1BkczbSgbpKB1qTyFt08s9yw=
411 | github.com/aws/aws-sdk-go-v2/service/sqs v1.3.1 h1:JHv/dumXk3jooM7CrYoYp9+74YRZ4dGsXzMob2Kds5s=
412 | github.com/aws/aws-sdk-go-v2/service/sqs v1.3.1/go.mod h1:E6ASpQhmNCYI1xKp//5LwIsdvtAqcFMFA7chocaSWY8=
413 | github.com/aws/aws-sdk-go-v2/service/ssm v1.3.0 h1:0swJm4MqIjN1v1tM9GQ8hGv+KXv4smEiftpAXg84aZg=
414 | github.com/aws/aws-sdk-go-v2/service/ssm v1.3.0/go.mod h1:WX5OhauvURAo0+ljp29uEIitBkt3+Y3RGnVa9ix2xc8=
415 | github.com/aws/aws-sdk-go-v2/service/ssm v1.4.0 h1:gTHcyXVnSTKNECgqTNLuQYmYhaEVUAlxsiog0XXvq60=
416 | github.com/aws/aws-sdk-go-v2/service/ssm v1.4.0/go.mod h1:QcyvOwA2xPxSnC34A+yMZnK8vJEkP0/TwxTcwQdu3Yg=
417 | github.com/aws/aws-sdk-go-v2/service/sso v1.1.3 h1:NVLHdz3KtZhCrX0GWZKpdINKuDh7PsaZ8Vsr4OxP88s=
418 | github.com/aws/aws-sdk-go-v2/service/sso v1.1.3/go.mod h1:F1l5lKzDzoY3/0cFbB3AA/ey9MsNiH5rhf6HOssy1/Q=
419 | github.com/aws/aws-sdk-go-v2/service/sso v1.1.4 h1:Tr/SsFDXWN8rntdzTNrDs/MvuBXRCjY6xvJrPFUPKRM=
420 | github.com/aws/aws-sdk-go-v2/service/sso v1.1.4/go.mod h1:yQayEbOWH75NaKFylsFocBc3yanYEGndlOaH4i/Lvno=
421 | github.com/aws/aws-sdk-go-v2/service/sso v1.1.5 h1:B7ec5wE4+3Ldkurmq0C4gfQFtElGTG+/iTpi/YPMzi4=
422 | github.com/aws/aws-sdk-go-v2/service/sso v1.1.5/go.mod h1:bpGz0tidC4y39sZkQSkpO/J0tzWCMXHbw6FZ0j1GkWM=
423 | github.com/aws/aws-sdk-go-v2/service/storagegateway v1.1.4 h1:NAs1Q7ONLoXb4ns06M11Cu8kitN1cBVFeWWl/ltvSmQ=
424 | github.com/aws/aws-sdk-go-v2/service/storagegateway v1.1.4/go.mod h1:pSHXnfSdRGGBhFpXrPKTSCViSvrlhzbyf5saOtbMXLA=
425 | github.com/aws/aws-sdk-go-v2/service/storagegateway v1.2.0 h1:n6zV9ocF9xNvrFlW3qVUmCV9C6KUX7qDtGCCiB4VQ18=
426 | github.com/aws/aws-sdk-go-v2/service/storagegateway v1.2.0/go.mod h1:C0r5Zm/+1bSmsYqvh7KduGzUru5qpCFJ8Z0ucgAVHdg=
427 | github.com/aws/aws-sdk-go-v2/service/sts v1.2.0 h1:fGo3atNqTj3SOu1VKb52BUzRcYOhrpJ1wHrzTuMs+QA=
428 | github.com/aws/aws-sdk-go-v2/service/sts v1.2.0/go.mod h1:iGyHChDhzbddWEbC/+g/mT3z+A2JTJthcw+8QubXSgk=
429 | github.com/aws/aws-sdk-go-v2/service/sts v1.2.1 h1:1koRvKlZMN+FhTGV5f4q6vRHXNJzeZlPKzbs1/Y32Kg=
430 | github.com/aws/aws-sdk-go-v2/service/sts v1.2.1/go.mod h1:L1LH5nHMXxdkKj057ZUx7Wi50CCrkZ+9jkTnBnY2j/w=
431 | github.com/aws/aws-sdk-go-v2/service/sts v1.2.2 h1:fKw6QSGcFlvZCBPYx3fo4sL0HfTmaT06ZtMHJfQQNQQ=
432 | github.com/aws/aws-sdk-go-v2/service/sts v1.2.2/go.mod h1:ssRzzJ2RZOVuKj2Vx1YE7ypfil/BIlgmQnCSW4DistU=
433 | github.com/aws/aws-sdk-go-v2/service/support v1.1.4 h1:vLq5jr/FPU8Lfrxh2CB6pyWJv4fqWZS0+9tfCfLGqXw=
434 | github.com/aws/aws-sdk-go-v2/service/support v1.1.4/go.mod h1:ygUZwdHF14zl0vR7HcqYWKpwtl7asuFBFUyqht9EWL0=
435 | github.com/aws/aws-sdk-go-v2/service/support v1.1.5 h1:XGUkpmrZWzMOIx0xZliO8SwSsn6j8ouZgd9nSp8RwrM=
436 | github.com/aws/aws-sdk-go-v2/service/support v1.1.5/go.mod h1:HHVCJgf8uE2Ni6Odisf9Uo33cu95Ib8HiVgaY4+J2HI=
437 | github.com/aws/aws-sdk-go-v2/service/transcribe v1.2.0 h1:6LIPo57QHjv09Yz8Jgipkmz+7d2NkdvNPUxwaho14S4=
438 | github.com/aws/aws-sdk-go-v2/service/transcribe v1.2.0/go.mod h1:8fVRiNeaB8pKvNAtfM36KrlMlOicD2FGzqQXS0v0Aa8=
439 | github.com/aws/aws-sdk-go-v2/service/transcribe v1.2.1 h1:ovDTbAsLm6alImwDAhsGrjGiHNefZBjAZN5tu6zzMr0=
440 | github.com/aws/aws-sdk-go-v2/service/transcribe v1.2.1/go.mod h1:71/4+47+zrrskFtl+Rx5W5+OnDiMBSEjs7Db231LCWs=
441 | github.com/aws/aws-sdk-go-v2/service/transfer v1.2.1 h1:v/6bx+zqeKaMRJv+tcJ/1vMjrwXTMLWIMjsnGUFTdzU=
442 | github.com/aws/aws-sdk-go-v2/service/transfer v1.2.1/go.mod h1:oYvanEiB6oIDUuniw8dTFCwYCQUvMzafr2pJtBWoaIk=
443 | github.com/aws/aws-sdk-go-v2/service/transfer v1.2.2 h1:pFMTcAD4gsTxs8BD7ii7PveSsgse5/2+tc1SViD1aXw=
444 | github.com/aws/aws-sdk-go-v2/service/transfer v1.2.2/go.mod h1:Age/hzcmLNV9TFHZ0iEINuCP71DHyWBDeRMNttfZcRw=
445 | github.com/aws/aws-sdk-go-v2/service/translate v1.1.4 h1:H3UpWG0SYq+pl/7LuX0UuLvTnGH9TR5FtWHzUHgAw9Q=
446 | github.com/aws/aws-sdk-go-v2/service/translate v1.1.4/go.mod h1:MJFm+XFq2c2DQ1Oy7PrNmknWNYAlLlO+NYgV79oKJ/M=
447 | github.com/aws/aws-sdk-go-v2/service/translate v1.1.5 h1:vFMSbY7ZghW0YEdCx6W81hOvFMaqS1Ohph03HvfpDKk=
448 | github.com/aws/aws-sdk-go-v2/service/translate v1.1.5/go.mod h1:BSiGHq2yDx5bl9rV/Pl2NRhVmcdfMvXH13K8iYOM9O0=
449 | github.com/aws/aws-sdk-go-v2/service/waf v1.1.4 h1:Wh0YMwF394A9eBC8Pv8Uxk6CBx9KTWmoqyflQIBx6DU=
450 | github.com/aws/aws-sdk-go-v2/service/waf v1.1.4/go.mod h1:Ujifac0yyu5RLw3cPCGua50uHnsjiJo9LAhXEJZ+tVk=
451 | github.com/aws/aws-sdk-go-v2/service/waf v1.1.5 h1:EBisjXgewS0cSXVeDputnu7wkXfS4+SosXx+lxXQx1k=
452 | github.com/aws/aws-sdk-go-v2/service/waf v1.1.5/go.mod h1:Adfl4Y9hmOJR0CJX7mFRjI7JC1guxF2390AQ2k+ayLw=
453 | github.com/aws/aws-sdk-go-v2/service/workdocs v1.1.4 h1:vbJ6fJhTdIMMcpOEclGpZsvqIjU4KF5DDAYEx0UgFf0=
454 | github.com/aws/aws-sdk-go-v2/service/workdocs v1.1.4/go.mod h1:gLGVTqPzRx9wRFEu5S+OGWJWAkMbi4w1Ojt5eVmJjf0=
455 | github.com/aws/aws-sdk-go-v2/service/workdocs v1.1.5 h1:SqH3xbSc0eOtDQ0/8RuZ9iAl7HxVBGdYmHMC/kuM8rY=
456 | github.com/aws/aws-sdk-go-v2/service/workdocs v1.1.5/go.mod h1:FgU4Mx/N5+l69zu1UZcn+5RmHqoqzdsAqSb+YaP+ceo=
457 | github.com/aws/aws-sdk-go-v2/service/worklink v1.1.4 h1:WvkzxOG0TjqioXXtmEz/ZR7gic16hFZYSVw0f8MckAs=
458 | github.com/aws/aws-sdk-go-v2/service/worklink v1.1.4/go.mod h1:MN2syLXOwAwhBFBKToIlNAPvqgaxfsybVEo5fMHUFAw=
459 | github.com/aws/aws-sdk-go-v2/service/worklink v1.1.5 h1:7fzHvio55flimltXbD7rOyeOtBDo+dg7m0nPCPrHrsI=
460 | github.com/aws/aws-sdk-go-v2/service/worklink v1.1.5/go.mod h1:7bHDT27ZK5jEiCaGIsAakAlqwmJTL1q+gt099yHM95c=
461 | github.com/aws/aws-sdk-go-v2/service/workmail v1.2.0 h1:LLnWufOy+Ne+ZfRwL3gJ9f44lSFwA6UrmXxH3R2caF8=
462 | github.com/aws/aws-sdk-go-v2/service/workmail v1.2.0/go.mod h1:2MxZF3RaykedHX8GDaDOI0fnvHtc9xFFM2hYO9gOhJg=
463 | github.com/aws/aws-sdk-go-v2/service/workmail v1.2.1 h1:UA0qUG5tzUXxBCgvK56fBLRqQ/QzQdVP3r3g7sHYO0Y=
464 | github.com/aws/aws-sdk-go-v2/service/workmail v1.2.1/go.mod h1:nu9P6XYRZTYyOsbXFPEx8pwY1UnsU2dpR0LCrCS7Igw=
465 | github.com/aws/aws-sdk-go-v2/service/workspaces v1.2.1 h1:hSzpp50D6D37eIELSSpYwJ75e8XL9bvTzjspZgt4+5A=
466 | github.com/aws/aws-sdk-go-v2/service/workspaces v1.2.1/go.mod h1:8k9EEz8LMNPUDENPlW0laaQkAZC2TbEYF+XNUu1lFLk=
467 | github.com/aws/aws-sdk-go-v2/service/workspaces v1.2.2 h1:JHB4L69luscPXGk0LEdQR1GDwGHCAaCry79qeV6spbc=
468 | github.com/aws/aws-sdk-go-v2/service/workspaces v1.2.2/go.mod h1:q3Ej+yyFh3MazI7lHHgXS7DM3Vu0lKsBCdWOoktzjxU=
469 | github.com/aws/aws-sdk-go-v2/service/xray v1.2.1 h1:RiTWbH90tIuJNnZZys9HeqBfpT3oSPulh7fM7anPQiY=
470 | github.com/aws/aws-sdk-go-v2/service/xray v1.2.1/go.mod h1:MZS769M8/1Xm4XYQydDJbvugo7dG8fXzsVU3J84QXzY=
471 | github.com/aws/aws-sdk-go-v2/service/xray v1.2.2 h1:g1w5YvFBAASuyY/Ol+w+P3Cjs/2+LONYy73hmz4EYBA=
472 | github.com/aws/aws-sdk-go-v2/service/xray v1.2.2/go.mod h1:ONuVPw/R+eCW5JPstY3BA4ZbgKhHPAyhDdiikPdJUZg=
473 | github.com/aws/smithy-go v1.2.0 h1:0PoGBWXkXDIyVdPaZW9gMhaGzj3UOAgTdiVoHuuZAFA=
474 | github.com/aws/smithy-go v1.2.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
475 | github.com/aws/smithy-go v1.3.0 h1:awbB2OJBZ/Txj+c4q+qhDQs3Ob0sRhBuIIkOD4Aq8yc=
476 | github.com/aws/smithy-go v1.3.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
477 | github.com/aws/smithy-go v1.3.1 h1:xJFO4pK0y9J8fCl34uGsSJX5KNnGbdARDlA5BPhXnwE=
478 | github.com/aws/smithy-go v1.3.1/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
479 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
480 | github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg=
481 | github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
482 | github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
483 | github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
484 | github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
485 | github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
486 | github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc=
487 | github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
488 | github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
489 | github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
490 | github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
491 | github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
492 | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
493 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
494 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
495 | github.com/wayneashleyberry/terminal-dimensions v1.0.0 h1:LawtS1nqKjAfqrmKOzkcrDLAjSzh38lEhC401JPjQVA=
496 | github.com/wayneashleyberry/terminal-dimensions v1.0.0/go.mod h1:PW2XrtV6KmKOPhuf7wbtcmw1/IFnC39mryRET2XbxeE=
497 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
498 | golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
499 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
500 | golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
501 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
502 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
503 | golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
504 | golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae h1:/WDfKMnPU+m5M4xB+6x4kaepxRw6jWvR5iDRdvjHgy8=
505 | golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
506 | golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
507 | golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
508 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
509 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
510 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
511 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
512 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
513 | gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
514 |
--------------------------------------------------------------------------------
/helper/helper.go:
--------------------------------------------------------------------------------
1 | package helper
2 |
3 | import (
4 | "flag"
5 | "fmt"
6 |
7 | "github.com/shabarkin/aws-enumerator/servicemaster"
8 | "github.com/shabarkin/aws-enumerator/servicestructs"
9 | "github.com/shabarkin/aws-enumerator/utils"
10 | )
11 |
12 | func changeSpeedForTime(speed string) (time int) {
13 | if speed == "fast" {
14 | time = 2000
15 | } else if speed == "slow" {
16 | time = 4000
17 | } else {
18 | time = 3000
19 | }
20 | return time
21 | }
22 |
23 | func SetEnumerationPipeline(services, speed *string) {
24 | // Load Global Variables from file
25 | utils.LoadEnv()
26 |
27 | if servicemaster.CheckAWSCredentials() {
28 |
29 | servicemaster.ServiceCall(
30 | servicestructs.GetServices(),
31 | utils.ProcessServiceArgument(*services),
32 | changeSpeedForTime(*speed),
33 | )
34 |
35 | }
36 | }
37 |
38 | func DumpInfo(services_dump *string, print_apicalls *bool, filter *string, errors_dump *bool) {
39 | if *services_dump == "all" {
40 | for _, service := range utils.ServiceNames() {
41 | utils.AnalyseService(service, *print_apicalls, *filter, *errors_dump)
42 | }
43 | fmt.Println()
44 | } else {
45 | for _, service := range utils.ProcessServiceArgument(*services_dump) {
46 | utils.AnalyseService(service, *print_apicalls, *filter, *errors_dump)
47 | }
48 | fmt.Println()
49 | }
50 | }
51 |
52 | var Cloudrider_help string = `Usage:
53 | aws-enumerator [command]
54 |
55 | Available Commands:
56 | cred Saves AWS credentials to .env file in a propriate format for later authentication
57 | enum Enumerates AWS Services with given AWS credentials, it can enumerate all services or target specific services
58 | dump Displays gathered information about AWS Services available for a AWS account
59 |
60 | Flags:
61 | -h Help for cloudride
62 | `
63 |
64 | var Cloudrider_cred_help string = `Usage:
65 | aws-enumerator cred [command]
66 |
67 | Flags:
68 | -aws_region Specify AWS region to which the account may have access to.
69 | -aws_access_key_id Specify AWS Access Key for wanted account.
70 | -aws_secret_access_key Specify AWS Secret Access Key for wanted account.
71 | -aws_session_token Specify AWS Session Token for wanted account.
72 |
73 | Example:
74 | ./aws-enumerator cred -aws_region us-west-2 -aws_access_key_id AKIA85CEHPO3GLIABKZD -aws_secret_access_key LW3bDF8xJvzGgArqMo0h4kuCYsnubU23kGICGp/p -aws_session_token LW3bDF8xJvzGgArqM.......
75 | `
76 |
77 | var Cloudrider_enum_help string = `Usage:
78 | aws-enumerator enum [command]
79 |
80 | Flags:
81 | -services Enumerate permissions specifying services divided by comma or 'all' for total enumeration
82 | -speed Speed parameter has three defitions : fast or normal or slow (default is normal)
83 |
84 | Example:
85 | ./aws-enumerator enum -services iam,sts,s3,ec2 -speed normal
86 | ./aws-enumerator enum -services all
87 | `
88 |
89 | var Cloudrider_dump_help string = `Usage:
90 | aws-enumerator dump [command]
91 |
92 | Flags:
93 | -services Enumerate permissions specifying services divided by comma or 'all' for total enumeration
94 | -filter Retrieve only wanted API Call Names by filtering the name. Additional flag. (Filters by first specified chars)
95 | -print Print data for a specified service API Calls Get the list of accessible apicalls. Additional flag.
96 | -errors Analyse errors returned by AWS API for a specific service. Additional flag.
97 |
98 | Example:
99 | #1
100 | ./aws-enumerator dump -services iam
101 | ./aws-enumerator dump -services iam -filter List
102 | ./aws-enumerator dump -services iam -filter List -print
103 | ./aws-enumerator dump -services iam -filter List -print -errors
104 |
105 | #2
106 | ./aws-enumerator dump -services all
107 | ./aws-enumerator dump -services all -filter Get
108 | ./aws-enumerator dump -services all -filter Get -print
109 | ./aws-enumerator dump -services all -filter Get -print -errors
110 | `
111 |
112 | // Command line flags:
113 |
114 | var Cred *flag.FlagSet = flag.NewFlagSet("cred", flag.ExitOnError)
115 | var AWS_region *string = Cred.String("aws_region", "", "")
116 | var AWS_access_key_id *string = Cred.String("aws_access_key_id", "", "")
117 | var AWS_secret_access_key *string = Cred.String("aws_secret_access_key", "", "")
118 | var AWS_session_token *string = Cred.String("aws_session_token", "", "")
119 |
120 | var Enum *flag.FlagSet = flag.NewFlagSet("enum", flag.ExitOnError)
121 | var Services_enum *string = Enum.String("services", "all", "")
122 | var Speed *string = Enum.String("speed", "normal", "")
123 |
124 | var Dump *flag.FlagSet = flag.NewFlagSet("dump", flag.ExitOnError)
125 | var Services_dump *string = Dump.String("services", "all", "")
126 | var Errors_dump *bool = Dump.Bool("errors", false, "")
127 | var Print *bool = Dump.Bool("print", false, "")
128 | var Filter *string = Dump.String("filter", "", "")
129 |
--------------------------------------------------------------------------------
/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "fmt"
5 | "os"
6 |
7 | "github.com/shabarkin/aws-enumerator/helper"
8 | "github.com/shabarkin/aws-enumerator/utils"
9 | )
10 |
11 | func main() {
12 | //var flagNoColor *bool
13 |
14 | helper.Cred.Usage = func() {
15 | fmt.Fprintf(os.Stderr, helper.Cloudrider_cred_help)
16 | }
17 | helper.Enum.Usage = func() {
18 | fmt.Fprintf(os.Stderr, helper.Cloudrider_enum_help)
19 | }
20 | helper.Dump.Usage = func() {
21 | fmt.Fprintf(os.Stderr, helper.Cloudrider_dump_help)
22 | }
23 |
24 | if len(os.Args) < 2 {
25 | fmt.Println(helper.Cloudrider_help)
26 | os.Exit(1)
27 | }
28 | switch os.Args[1] {
29 |
30 | case "cred":
31 | helper.Cred.Parse(os.Args[2:])
32 | utils.CreateAWScredentialsFile(helper.AWS_region, helper.AWS_access_key_id, helper.AWS_secret_access_key, helper.AWS_session_token)
33 | fmt.Println(utils.Green("Message: "), utils.Yellow("File"), utils.Red(".env"), utils.Yellow("with AWS credentials were created in current folder"))
34 | case "enum":
35 | helper.Enum.Parse(os.Args[2:])
36 | helper.SetEnumerationPipeline(helper.Services_enum, helper.Speed)
37 | fmt.Println(utils.Green("Message: "), utils.Yellow("Enumeration finished"))
38 |
39 | case "dump":
40 | helper.Dump.Parse(os.Args[2:])
41 | helper.DumpInfo(helper.Services_dump, helper.Print, helper.Filter, helper.Errors_dump)
42 |
43 | default:
44 | fmt.Println(helper.Cloudrider_help)
45 | os.Exit(1)
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/servicemaster/servicemaster.go:
--------------------------------------------------------------------------------
1 | package servicemaster
2 |
3 | import (
4 | "context"
5 | "fmt"
6 | "io/ioutil"
7 | "log"
8 | "os"
9 | "reflect"
10 | "strings"
11 | "sync"
12 | "time"
13 |
14 | "github.com/aws/aws-sdk-go-v2/config"
15 | "github.com/aws/aws-sdk-go-v2/service/sts"
16 | "github.com/shabarkin/aws-enumerator/utils"
17 | )
18 |
19 | type ServiceMaster struct {
20 | Svc interface{}
21 | SvcName string
22 |
23 | ApiCalls []map[string]interface{}
24 | json_result_struct map[string][]string
25 | json_error_struct map[string][]string
26 |
27 | api_call_result_channel chan string
28 | api_call_error_channel chan string
29 |
30 | result_counter int
31 | error_counter int
32 | }
33 |
34 | func (svc *ServiceMaster) ServiceEnumerator() {
35 | // initialize counters, channels, result struct
36 | svc.initialize()
37 |
38 | // Starting go routines (handles 200 goroutines, then rate limit error of AWS, (recommended number of goroutines is less than 100)
39 | for i := 0; i < len(svc.ApiCalls); i++ {
40 | go svc.apicall_wrapper(i)
41 | }
42 |
43 | // Launch control manager for goroutines
44 | svc.control_node()
45 |
46 | // Save all gathered results to a json file
47 | svc.save_result_to_file()
48 | defer wg.Done()
49 | }
50 |
51 | func (svc *ServiceMaster) initialize() {
52 | // reset & init counters
53 | svc.error_counter = 0
54 | svc.result_counter = 0
55 |
56 | // reset & init result map
57 | delete(svc.json_error_struct, "errors")
58 | svc.json_error_struct = make(map[string][]string)
59 |
60 | // reset & init error map
61 | delete(svc.json_result_struct, svc.SvcName)
62 | svc.json_result_struct = make(map[string][]string)
63 |
64 | // reset & init channels
65 | svc.api_call_result_channel = make(chan string, len(svc.ApiCalls))
66 | svc.api_call_error_channel = make(chan string, len(svc.ApiCalls))
67 | }
68 |
69 | func (svc *ServiceMaster) control_node() {
70 | // Handling Goroutine results
71 | for {
72 | // If all of the api calls were done, close channels and break the loop
73 | if svc.result_counter >= len(svc.ApiCalls) {
74 | defer close(svc.api_call_result_channel)
75 | defer close(svc.api_call_error_channel)
76 | fmt.Println(utils.Green("Message: "), utils.Yellow("Successful"), utils.Yellow(strings.ToUpper(svc.SvcName))+utils.Yellow(":"), utils.Green(svc.result_counter-svc.error_counter), utils.Yellow("/"), utils.Red(svc.result_counter))
77 | break
78 | }
79 |
80 | select {
81 | // Handling results
82 | case msg := <-svc.api_call_result_channel:
83 | // Dumping to the map
84 | svc.json_result_struct[svc.SvcName] = append(svc.json_result_struct[svc.SvcName], msg)
85 | svc.result_counter++
86 |
87 | // Handling any kind of errors
88 | case err := <-svc.api_call_error_channel:
89 | svc.json_error_struct[svc.SvcName] = append(svc.json_error_struct[svc.SvcName], err)
90 | svc.result_counter++
91 | svc.error_counter++
92 | }
93 | }
94 | }
95 |
96 | func (svc *ServiceMaster) apicall_wrapper(it int) {
97 |
98 | apicall_name := reflect.ValueOf(svc.ApiCalls[it]["apicall"]).Interface().(string)
99 |
100 | s := reflect.ValueOf(svc.Svc).MethodByName(apicall_name).Call(
101 | []reflect.Value{
102 | reflect.ValueOf(context.TODO()),
103 | reflect.ValueOf(svc.ApiCalls[it]["input_obj"]),
104 | },
105 | )
106 | response := s[0].Interface()
107 | err := s[1].Interface()
108 |
109 | if err != nil {
110 | svc.api_call_error_channel <- utils.PackResponse(map[string]string{apicall_name: err.(error).Error()})
111 | } else {
112 | svc.api_call_result_channel <- utils.PackResponse(map[string]interface{}{apicall_name: response})
113 | }
114 | }
115 |
116 | // 1. ADD THE FOLDER CREATION IF NOT EXISTED
117 | func (svc *ServiceMaster) save_result_to_file() {
118 |
119 | if _, err := os.Stat(utils.FILEPATH); os.IsNotExist(err) {
120 | errDir := os.MkdirAll(utils.FILEPATH, 0755)
121 | if errDir != nil {
122 | log.Fatalln(utils.Red(err))
123 | }
124 | }
125 | // results
126 | file_results := utils.PackResponse(svc.json_result_struct)
127 | ioutil.WriteFile(utils.FILEPATH+svc.SvcName+".json", []byte(file_results), 0644)
128 |
129 | if _, err := os.Stat(utils.ERROR_FILEPATH); os.IsNotExist(err) {
130 | errDir := os.MkdirAll(utils.ERROR_FILEPATH, 0755)
131 | if errDir != nil {
132 | log.Fatalln(utils.Red(err))
133 | }
134 | }
135 |
136 | // save errors
137 | file_errors := utils.PackResponse(svc.json_error_struct)
138 | ioutil.WriteFile(utils.ERROR_FILEPATH+svc.SvcName+"_errors.json", []byte(file_errors), 0644)
139 | }
140 |
141 | func CheckAWSCredentials() bool {
142 | if utils.CheckEnvFileExistance() {
143 | cfg, err := config.LoadDefaultConfig(context.TODO())
144 | if err != nil {
145 | fmt.Println(utils.Red("Error:"), utils.Yellow("Unable to load SDK config,"))
146 | fmt.Println(utils.Green("Fix:"), utils.Yellow("The problem should be on our side, contact support please"))
147 | fmt.Println(utils.Red("Trace:"), utils.Yellow(err))
148 | os.Exit(1)
149 | }
150 |
151 | sts_svc := sts.NewFromConfig(cfg)
152 | _, aws_err := sts_svc.GetCallerIdentity(context.TODO(), &sts.GetCallerIdentityInput{})
153 | if aws_err != nil {
154 | fmt.Println(utils.Red("Error:"), utils.Yellow("AWS Credentials are not valid"))
155 | fmt.Println(utils.Green("Fix:"), utils.Yellow("Provide AWS Credentials, use `./aws-enumerator cred -h` command"))
156 | fmt.Println(utils.Red("Trace:"), utils.Yellow(aws_err))
157 | os.Exit(1)
158 | }
159 | return true
160 | } else {
161 | return false
162 | }
163 | }
164 |
165 | func sleep_delay(i, speed int) {
166 | if (i+1)%5 == 0 {
167 | time.Sleep(time.Duration(speed) * time.Millisecond)
168 | }
169 | }
170 |
171 | var wg sync.WaitGroup
172 |
173 | func ServiceCall(AllAWSServices []ServiceMaster, wanted_services []string, speed int) {
174 |
175 | start := time.Now()
176 | if utils.Find(wanted_services, "all") {
177 | for i := range AllAWSServices {
178 | wg.Add(1)
179 | go AllAWSServices[i].ServiceEnumerator()
180 | sleep_delay(i, speed)
181 | }
182 | wg.Wait()
183 |
184 | } else {
185 | for aws_i := range AllAWSServices {
186 | for str_i := range wanted_services {
187 |
188 | if AllAWSServices[aws_i].SvcName == wanted_services[str_i] {
189 | wg.Add(1)
190 | go AllAWSServices[aws_i].ServiceEnumerator()
191 | break
192 | }
193 | }
194 |
195 | }
196 | wg.Wait()
197 | }
198 | t := time.Now()
199 | elapsed := t.Sub(start)
200 | fmt.Println(utils.Green("Time:"), elapsed)
201 | }
202 |
--------------------------------------------------------------------------------
/servicestructs/servicestructs.go:
--------------------------------------------------------------------------------
1 | package servicestructs
2 |
3 | import (
4 | "context"
5 | "log"
6 |
7 | "github.com/aws/aws-sdk-go-v2/config"
8 | "github.com/aws/aws-sdk-go-v2/service/acm"
9 | "github.com/aws/aws-sdk-go-v2/service/amplify"
10 | "github.com/aws/aws-sdk-go-v2/service/apigateway"
11 | "github.com/aws/aws-sdk-go-v2/service/appmesh"
12 | "github.com/aws/aws-sdk-go-v2/service/appsync"
13 | "github.com/aws/aws-sdk-go-v2/service/athena"
14 | "github.com/aws/aws-sdk-go-v2/service/autoscaling"
15 | "github.com/aws/aws-sdk-go-v2/service/backup"
16 | "github.com/aws/aws-sdk-go-v2/service/batch"
17 | "github.com/aws/aws-sdk-go-v2/service/chime"
18 | "github.com/aws/aws-sdk-go-v2/service/cloud9"
19 | "github.com/aws/aws-sdk-go-v2/service/clouddirectory"
20 | "github.com/aws/aws-sdk-go-v2/service/cloudformation"
21 | "github.com/aws/aws-sdk-go-v2/service/cloudfront"
22 | "github.com/aws/aws-sdk-go-v2/service/cloudhsm"
23 | "github.com/aws/aws-sdk-go-v2/service/cloudhsmv2"
24 | "github.com/aws/aws-sdk-go-v2/service/cloudsearch"
25 | "github.com/aws/aws-sdk-go-v2/service/cloudtrail"
26 | "github.com/aws/aws-sdk-go-v2/service/codebuild"
27 | "github.com/aws/aws-sdk-go-v2/service/codecommit"
28 | "github.com/aws/aws-sdk-go-v2/service/codedeploy"
29 | "github.com/aws/aws-sdk-go-v2/service/codepipeline"
30 | "github.com/aws/aws-sdk-go-v2/service/codestar"
31 | "github.com/aws/aws-sdk-go-v2/service/comprehend"
32 | "github.com/aws/aws-sdk-go-v2/service/datapipeline"
33 | "github.com/aws/aws-sdk-go-v2/service/datasync"
34 | "github.com/aws/aws-sdk-go-v2/service/dax"
35 | "github.com/aws/aws-sdk-go-v2/service/devicefarm"
36 | "github.com/aws/aws-sdk-go-v2/service/directconnect"
37 | "github.com/aws/aws-sdk-go-v2/service/dlm"
38 | "github.com/aws/aws-sdk-go-v2/service/dynamodb"
39 | "github.com/aws/aws-sdk-go-v2/service/ec2"
40 | "github.com/aws/aws-sdk-go-v2/service/ecr"
41 | "github.com/aws/aws-sdk-go-v2/service/ecs"
42 | "github.com/aws/aws-sdk-go-v2/service/eks"
43 | "github.com/aws/aws-sdk-go-v2/service/elasticache"
44 | "github.com/aws/aws-sdk-go-v2/service/elasticbeanstalk"
45 | "github.com/aws/aws-sdk-go-v2/service/elastictranscoder"
46 | "github.com/aws/aws-sdk-go-v2/service/firehose"
47 | "github.com/aws/aws-sdk-go-v2/service/fms"
48 | "github.com/aws/aws-sdk-go-v2/service/fsx"
49 | "github.com/aws/aws-sdk-go-v2/service/gamelift"
50 | "github.com/aws/aws-sdk-go-v2/service/globalaccelerator"
51 | "github.com/aws/aws-sdk-go-v2/service/glue"
52 | "github.com/aws/aws-sdk-go-v2/service/greengrass"
53 | "github.com/aws/aws-sdk-go-v2/service/guardduty"
54 | "github.com/aws/aws-sdk-go-v2/service/health"
55 | "github.com/aws/aws-sdk-go-v2/service/iam"
56 | "github.com/aws/aws-sdk-go-v2/service/inspector"
57 | "github.com/aws/aws-sdk-go-v2/service/iot"
58 | "github.com/aws/aws-sdk-go-v2/service/iotanalytics"
59 | "github.com/aws/aws-sdk-go-v2/service/kafka"
60 | "github.com/aws/aws-sdk-go-v2/service/kinesis"
61 | "github.com/aws/aws-sdk-go-v2/service/kinesisanalytics"
62 | "github.com/aws/aws-sdk-go-v2/service/kinesisvideo"
63 | "github.com/aws/aws-sdk-go-v2/service/kms"
64 | "github.com/aws/aws-sdk-go-v2/service/lambda"
65 | "github.com/aws/aws-sdk-go-v2/service/lightsail"
66 | "github.com/aws/aws-sdk-go-v2/service/machinelearning"
67 | "github.com/aws/aws-sdk-go-v2/service/macie"
68 | "github.com/aws/aws-sdk-go-v2/service/mediaconnect"
69 | "github.com/aws/aws-sdk-go-v2/service/mediaconvert"
70 | "github.com/aws/aws-sdk-go-v2/service/medialive"
71 | "github.com/aws/aws-sdk-go-v2/service/mediapackage"
72 | "github.com/aws/aws-sdk-go-v2/service/mediastore"
73 | "github.com/aws/aws-sdk-go-v2/service/mediatailor"
74 | "github.com/aws/aws-sdk-go-v2/service/mobile"
75 | "github.com/aws/aws-sdk-go-v2/service/mq"
76 | "github.com/aws/aws-sdk-go-v2/service/opsworks"
77 | "github.com/aws/aws-sdk-go-v2/service/organizations"
78 | "github.com/aws/aws-sdk-go-v2/service/pinpoint"
79 | "github.com/aws/aws-sdk-go-v2/service/polly"
80 | "github.com/aws/aws-sdk-go-v2/service/pricing"
81 | "github.com/aws/aws-sdk-go-v2/service/ram"
82 | "github.com/aws/aws-sdk-go-v2/service/rds"
83 | "github.com/aws/aws-sdk-go-v2/service/redshift"
84 | "github.com/aws/aws-sdk-go-v2/service/rekognition"
85 | "github.com/aws/aws-sdk-go-v2/service/robomaker"
86 | "github.com/aws/aws-sdk-go-v2/service/route53"
87 | "github.com/aws/aws-sdk-go-v2/service/route53domains"
88 | "github.com/aws/aws-sdk-go-v2/service/route53resolver"
89 | "github.com/aws/aws-sdk-go-v2/service/s3"
90 | "github.com/aws/aws-sdk-go-v2/service/sagemaker"
91 | "github.com/aws/aws-sdk-go-v2/service/secretsmanager"
92 | "github.com/aws/aws-sdk-go-v2/service/securityhub"
93 | "github.com/aws/aws-sdk-go-v2/service/servicecatalog"
94 | "github.com/aws/aws-sdk-go-v2/service/shield"
95 | "github.com/aws/aws-sdk-go-v2/service/signer"
96 | "github.com/aws/aws-sdk-go-v2/service/sms"
97 | "github.com/aws/aws-sdk-go-v2/service/snowball"
98 | "github.com/aws/aws-sdk-go-v2/service/sns"
99 | "github.com/aws/aws-sdk-go-v2/service/sqs"
100 | "github.com/aws/aws-sdk-go-v2/service/ssm"
101 | "github.com/aws/aws-sdk-go-v2/service/storagegateway"
102 | "github.com/aws/aws-sdk-go-v2/service/sts"
103 | "github.com/aws/aws-sdk-go-v2/service/support"
104 | "github.com/aws/aws-sdk-go-v2/service/transcribe"
105 | "github.com/aws/aws-sdk-go-v2/service/transfer"
106 | "github.com/aws/aws-sdk-go-v2/service/translate"
107 | "github.com/aws/aws-sdk-go-v2/service/waf"
108 | "github.com/aws/aws-sdk-go-v2/service/workdocs"
109 | "github.com/aws/aws-sdk-go-v2/service/worklink"
110 | "github.com/aws/aws-sdk-go-v2/service/workmail"
111 | "github.com/aws/aws-sdk-go-v2/service/workspaces"
112 | "github.com/aws/aws-sdk-go-v2/service/xray"
113 | "github.com/shabarkin/aws-enumerator/servicemaster"
114 | "github.com/shabarkin/aws-enumerator/utils"
115 | )
116 |
117 | func GetServices() []servicemaster.ServiceMaster {
118 |
119 | cfg, err := config.LoadDefaultConfig(context.TODO())
120 |
121 | if err != nil {
122 | log.Fatalln(utils.Red("Error:"), utils.Yellow("Unable to load SDK config,"))
123 | }
124 |
125 | acm_svc := &servicemaster.ServiceMaster{
126 | Svc: acm.NewFromConfig(cfg),
127 | SvcName: "acm",
128 | ApiCalls: []map[string]interface{}{
129 | {"apicall": "ListCertificates", "input_obj": &acm.ListCertificatesInput{}},
130 | }}
131 |
132 | amplify_svc := &servicemaster.ServiceMaster{
133 | Svc: amplify.NewFromConfig(cfg),
134 | SvcName: "amplify",
135 | ApiCalls: []map[string]interface{}{
136 | {"apicall": "ListApps", "input_obj": &lify.ListAppsInput{}},
137 | }}
138 |
139 | apigateway_svc := &servicemaster.ServiceMaster{
140 | Svc: apigateway.NewFromConfig(cfg),
141 | SvcName: "apigateway",
142 | ApiCalls: []map[string]interface{}{
143 | {"apicall": "GetAccount", "input_obj": &apigateway.GetAccountInput{}},
144 | {"apicall": "GetDomainNames", "input_obj": &apigateway.GetDomainNamesInput{}},
145 | {"apicall": "GetUsagePlans", "input_obj": &apigateway.GetUsagePlansInput{}},
146 | {"apicall": "GetClientCertificates", "input_obj": &apigateway.GetClientCertificatesInput{}},
147 | {"apicall": "GetApiKeys", "input_obj": &apigateway.GetApiKeysInput{}},
148 | {"apicall": "GetSdkTypes", "input_obj": &apigateway.GetSdkTypesInput{}},
149 | {"apicall": "GetVpcLinks", "input_obj": &apigateway.GetVpcLinksInput{}},
150 | {"apicall": "GetRestApis", "input_obj": &apigateway.GetRestApisInput{}},
151 | }}
152 |
153 | appmesh_svc := &servicemaster.ServiceMaster{
154 | Svc: appmesh.NewFromConfig(cfg),
155 | SvcName: "appmesh",
156 | ApiCalls: []map[string]interface{}{
157 | {"apicall": "ListMeshes", "input_obj": &appmesh.ListMeshesInput{}},
158 | }}
159 |
160 | appsync_svc := &servicemaster.ServiceMaster{
161 | Svc: appsync.NewFromConfig(cfg),
162 | SvcName: "appsync",
163 | ApiCalls: []map[string]interface{}{
164 | {"apicall": "ListGraphqlApis", "input_obj": &appsync.ListGraphqlApisInput{}},
165 | }}
166 |
167 | athena_svc := &servicemaster.ServiceMaster{
168 | Svc: athena.NewFromConfig(cfg),
169 | SvcName: "athena",
170 | ApiCalls: []map[string]interface{}{
171 | {"apicall": "ListQueryExecutions", "input_obj": &athena.ListQueryExecutionsInput{}},
172 | {"apicall": "ListNamedQueries", "input_obj": &athena.ListNamedQueriesInput{}},
173 | {"apicall": "ListWorkGroups", "input_obj": &athena.ListWorkGroupsInput{}},
174 | }}
175 |
176 | autoscaling_svc := &servicemaster.ServiceMaster{
177 | Svc: autoscaling.NewFromConfig(cfg),
178 | SvcName: "autoscaling",
179 | ApiCalls: []map[string]interface{}{
180 | {"apicall": "DescribeAdjustmentTypes", "input_obj": &autoscaling.DescribeAdjustmentTypesInput{}},
181 | {"apicall": "DescribeScheduledActions", "input_obj": &autoscaling.DescribeScheduledActionsInput{}},
182 | {"apicall": "DescribeAutoScalingGroups", "input_obj": &autoscaling.DescribeAutoScalingGroupsInput{}},
183 | {"apicall": "DescribeNotificationConfigurations", "input_obj": &autoscaling.DescribeNotificationConfigurationsInput{}},
184 | {"apicall": "DescribeAccountLimits", "input_obj": &autoscaling.DescribeAccountLimitsInput{}},
185 | {"apicall": "DescribePolicies", "input_obj": &autoscaling.DescribePoliciesInput{}},
186 | {"apicall": "DescribeScalingProcessTypes", "input_obj": &autoscaling.DescribeScalingProcessTypesInput{}},
187 | {"apicall": "DescribeTerminationPolicyTypes", "input_obj": &autoscaling.DescribeTerminationPolicyTypesInput{}},
188 | {"apicall": "DescribeScalingActivities", "input_obj": &autoscaling.DescribeScalingActivitiesInput{}},
189 | {"apicall": "DescribeAutoScalingNotificationTypes", "input_obj": &autoscaling.DescribeAutoScalingNotificationTypesInput{}},
190 | {"apicall": "DescribeLaunchConfigurations", "input_obj": &autoscaling.DescribeLaunchConfigurationsInput{}},
191 | {"apicall": "DescribeLifecycleHookTypes", "input_obj": &autoscaling.DescribeLifecycleHookTypesInput{}},
192 | {"apicall": "DescribeMetricCollectionTypes", "input_obj": &autoscaling.DescribeMetricCollectionTypesInput{}},
193 | {"apicall": "DescribeTags", "input_obj": &autoscaling.DescribeTagsInput{}},
194 | {"apicall": "DescribeAutoScalingInstances", "input_obj": &autoscaling.DescribeAutoScalingInstancesInput{}},
195 | }}
196 |
197 | backup_svc := &servicemaster.ServiceMaster{
198 | Svc: backup.NewFromConfig(cfg),
199 | SvcName: "backup",
200 | ApiCalls: []map[string]interface{}{
201 | {"apicall": "ListBackupVaults", "input_obj": &backup.ListBackupVaultsInput{}},
202 | {"apicall": "ListProtectedResources", "input_obj": &backup.ListProtectedResourcesInput{}},
203 | {"apicall": "ListBackupPlanTemplates", "input_obj": &backup.ListBackupPlanTemplatesInput{}},
204 | {"apicall": "ListBackupJobs", "input_obj": &backup.ListBackupJobsInput{}},
205 | {"apicall": "GetSupportedResourceTypes", "input_obj": &backup.GetSupportedResourceTypesInput{}},
206 | {"apicall": "ListRestoreJobs", "input_obj": &backup.ListRestoreJobsInput{}},
207 | {"apicall": "ListBackupPlans", "input_obj": &backup.ListBackupPlansInput{}},
208 | }}
209 |
210 | batch_svc := &servicemaster.ServiceMaster{
211 | Svc: batch.NewFromConfig(cfg),
212 | SvcName: "batch",
213 | ApiCalls: []map[string]interface{}{
214 | {"apicall": "ListJobs", "input_obj": &batch.ListJobsInput{}},
215 | {"apicall": "DescribeComputeEnvironments", "input_obj": &batch.DescribeComputeEnvironmentsInput{}},
216 | {"apicall": "DescribeJobDefinitions", "input_obj": &batch.DescribeJobDefinitionsInput{}},
217 | {"apicall": "DescribeJobQueues", "input_obj": &batch.DescribeJobQueuesInput{}},
218 | }}
219 |
220 | chime_svc := &servicemaster.ServiceMaster{
221 | Svc: chime.NewFromConfig(cfg),
222 | SvcName: "chime",
223 | ApiCalls: []map[string]interface{}{
224 | {"apicall": "ListAccounts", "input_obj": &chime.ListAccountsInput{}},
225 | }}
226 |
227 | cloud9_svc := &servicemaster.ServiceMaster{
228 | Svc: cloud9.NewFromConfig(cfg),
229 | SvcName: "cloud9",
230 | ApiCalls: []map[string]interface{}{
231 | {"apicall": "ListEnvironments", "input_obj": &cloud9.ListEnvironmentsInput{}},
232 | {"apicall": "DescribeEnvironmentMemberships", "input_obj": &cloud9.DescribeEnvironmentMembershipsInput{}},
233 | }}
234 |
235 | clouddirectory_svc := &servicemaster.ServiceMaster{
236 | Svc: clouddirectory.NewFromConfig(cfg),
237 | SvcName: "clouddirectory",
238 | ApiCalls: []map[string]interface{}{
239 | {"apicall": "ListDevelopmentSchemaArns", "input_obj": &clouddirectory.ListDevelopmentSchemaArnsInput{}},
240 | {"apicall": "ListManagedSchemaArns", "input_obj": &clouddirectory.ListManagedSchemaArnsInput{}},
241 | {"apicall": "ListDirectories", "input_obj": &clouddirectory.ListDirectoriesInput{}},
242 | {"apicall": "ListPublishedSchemaArns", "input_obj": &clouddirectory.ListPublishedSchemaArnsInput{}},
243 | }}
244 |
245 | cloudformation_svc := &servicemaster.ServiceMaster{
246 | Svc: cloudformation.NewFromConfig(cfg),
247 | SvcName: "cloudformation",
248 | ApiCalls: []map[string]interface{}{
249 | {"apicall": "DescribeStackEvents", "input_obj": &cloudformation.DescribeStackEventsInput{}},
250 | {"apicall": "ListExports", "input_obj": &cloudformation.ListExportsInput{}},
251 | {"apicall": "DescribeStackResources", "input_obj": &cloudformation.DescribeStackResourcesInput{}},
252 | {"apicall": "DescribeAccountLimits", "input_obj": &cloudformation.DescribeAccountLimitsInput{}},
253 | {"apicall": "ListStackSets", "input_obj": &cloudformation.ListStackSetsInput{}},
254 | {"apicall": "ListStacks", "input_obj": &cloudformation.ListStacksInput{}},
255 | {"apicall": "GetTemplateSummary", "input_obj": &cloudformation.GetTemplateSummaryInput{}},
256 | {"apicall": "GetTemplate", "input_obj": &cloudformation.GetTemplateInput{}},
257 | }}
258 |
259 | cloudfront_svc := &servicemaster.ServiceMaster{
260 | Svc: cloudfront.NewFromConfig(cfg),
261 | SvcName: "cloudfront",
262 | ApiCalls: []map[string]interface{}{
263 | {"apicall": "ListFieldLevelEncryptionProfiles", "input_obj": &cloudfront.ListFieldLevelEncryptionProfilesInput{}},
264 | {"apicall": "ListCloudFrontOriginAccessIdentities", "input_obj": &cloudfront.ListCloudFrontOriginAccessIdentitiesInput{}},
265 | {"apicall": "ListFieldLevelEncryptionConfigs", "input_obj": &cloudfront.ListFieldLevelEncryptionConfigsInput{}},
266 | {"apicall": "ListDistributions", "input_obj": &cloudfront.ListDistributionsInput{}},
267 | {"apicall": "ListStreamingDistributions", "input_obj": &cloudfront.ListStreamingDistributionsInput{}},
268 | }}
269 |
270 | cloudhsm_svc := &servicemaster.ServiceMaster{
271 | Svc: cloudhsm.NewFromConfig(cfg),
272 | SvcName: "cloudhsm",
273 | ApiCalls: []map[string]interface{}{
274 | {"apicall": "ListHapgs", "input_obj": &cloudhsm.ListHapgsInput{}},
275 | {"apicall": "ListHsms", "input_obj": &cloudhsm.ListHsmsInput{}},
276 | {"apicall": "DescribeLunaClient", "input_obj": &cloudhsm.DescribeLunaClientInput{}},
277 | {"apicall": "ListAvailableZones", "input_obj": &cloudhsm.ListAvailableZonesInput{}},
278 | {"apicall": "DescribeHsm", "input_obj": &cloudhsm.DescribeHsmInput{}},
279 | {"apicall": "ListLunaClients", "input_obj": &cloudhsm.ListLunaClientsInput{}},
280 | }}
281 |
282 | cloudhsmv2_svc := &servicemaster.ServiceMaster{
283 | Svc: cloudhsmv2.NewFromConfig(cfg),
284 | SvcName: "cloudhsmv2",
285 | ApiCalls: []map[string]interface{}{
286 | {"apicall": "DescribeBackups", "input_obj": &cloudhsmv2.DescribeBackupsInput{}},
287 | {"apicall": "DescribeClusters", "input_obj": &cloudhsmv2.DescribeClustersInput{}},
288 | }}
289 |
290 | cloudsearch_svc := &servicemaster.ServiceMaster{
291 | Svc: cloudsearch.NewFromConfig(cfg),
292 | SvcName: "cloudsearch",
293 | ApiCalls: []map[string]interface{}{
294 | {"apicall": "DescribeDomains", "input_obj": &cloudsearch.DescribeDomainsInput{}},
295 | {"apicall": "ListDomainNames", "input_obj": &cloudsearch.ListDomainNamesInput{}},
296 | }}
297 |
298 | cloudtrail_svc := &servicemaster.ServiceMaster{
299 | Svc: cloudtrail.NewFromConfig(cfg),
300 | SvcName: "cloudtrail",
301 | ApiCalls: []map[string]interface{}{
302 | {"apicall": "DescribeTrails", "input_obj": &cloudtrail.DescribeTrailsInput{}},
303 | }}
304 |
305 | codebuild_svc := &servicemaster.ServiceMaster{
306 | Svc: codebuild.NewFromConfig(cfg),
307 | SvcName: "codebuild",
308 | ApiCalls: []map[string]interface{}{
309 | {"apicall": "ListBuilds", "input_obj": &codebuild.ListBuildsInput{}},
310 | {"apicall": "ListProjects", "input_obj": &codebuild.ListProjectsInput{}},
311 | {"apicall": "ListCuratedEnvironmentImages", "input_obj": &codebuild.ListCuratedEnvironmentImagesInput{}},
312 | {"apicall": "ListSourceCredentials", "input_obj": &codebuild.ListSourceCredentialsInput{}},
313 | }}
314 |
315 | codecommit_svc := &servicemaster.ServiceMaster{
316 | Svc: codecommit.NewFromConfig(cfg),
317 | SvcName: "codecommit",
318 | ApiCalls: []map[string]interface{}{
319 | {"apicall": "ListRepositories", "input_obj": &codecommit.ListRepositoriesInput{}},
320 | {"apicall": "GetBranch", "input_obj": &codecommit.GetBranchInput{}},
321 | }}
322 |
323 | codedeploy_svc := &servicemaster.ServiceMaster{
324 | Svc: codedeploy.NewFromConfig(cfg),
325 | SvcName: "codedeploy",
326 | ApiCalls: []map[string]interface{}{
327 | {"apicall": "GetDeploymentTarget", "input_obj": &codedeploy.GetDeploymentTargetInput{}},
328 | {"apicall": "ListGitHubAccountTokenNames", "input_obj": &codedeploy.ListGitHubAccountTokenNamesInput{}},
329 | {"apicall": "ListDeploymentConfigs", "input_obj": &codedeploy.ListDeploymentConfigsInput{}},
330 | {"apicall": "BatchGetDeploymentTargets", "input_obj": &codedeploy.BatchGetDeploymentTargetsInput{}},
331 | {"apicall": "ListDeploymentTargets", "input_obj": &codedeploy.ListDeploymentTargetsInput{}},
332 | {"apicall": "ListApplications", "input_obj": &codedeploy.ListApplicationsInput{}},
333 | {"apicall": "ListOnPremisesInstances", "input_obj": &codedeploy.ListOnPremisesInstancesInput{}},
334 | {"apicall": "ListDeployments", "input_obj": &codedeploy.ListDeploymentsInput{}},
335 | }}
336 |
337 | codepipeline_svc := &servicemaster.ServiceMaster{
338 | Svc: codepipeline.NewFromConfig(cfg),
339 | SvcName: "codepipeline",
340 | ApiCalls: []map[string]interface{}{
341 | {"apicall": "ListActionTypes", "input_obj": &codepipeline.ListActionTypesInput{}},
342 | {"apicall": "ListPipelines", "input_obj": &codepipeline.ListPipelinesInput{}},
343 | {"apicall": "ListWebhooks", "input_obj": &codepipeline.ListWebhooksInput{}},
344 | }}
345 |
346 | codestar_svc := &servicemaster.ServiceMaster{
347 | Svc: codestar.NewFromConfig(cfg),
348 | SvcName: "codestar",
349 | ApiCalls: []map[string]interface{}{
350 | {"apicall": "ListProjects", "input_obj": &codestar.ListProjectsInput{}},
351 | {"apicall": "ListUserProfiles", "input_obj": &codestar.ListUserProfilesInput{}},
352 | }}
353 |
354 | comprehend_svc := &servicemaster.ServiceMaster{
355 | Svc: comprehend.NewFromConfig(cfg),
356 | SvcName: "comprehend",
357 | ApiCalls: []map[string]interface{}{
358 | {"apicall": "ListDominantLanguageDetectionJobs", "input_obj": &comprehend.ListDominantLanguageDetectionJobsInput{}},
359 | {"apicall": "ListTopicsDetectionJobs", "input_obj": &comprehend.ListTopicsDetectionJobsInput{}},
360 | {"apicall": "ListEntitiesDetectionJobs", "input_obj": &comprehend.ListEntitiesDetectionJobsInput{}},
361 | {"apicall": "ListEntityRecognizers", "input_obj": &comprehend.ListEntityRecognizersInput{}},
362 | {"apicall": "ListDocumentClassifiers", "input_obj": &comprehend.ListDocumentClassifiersInput{}},
363 | {"apicall": "ListSentimentDetectionJobs", "input_obj": &comprehend.ListSentimentDetectionJobsInput{}},
364 | {"apicall": "ListKeyPhrasesDetectionJobs", "input_obj": &comprehend.ListKeyPhrasesDetectionJobsInput{}},
365 | {"apicall": "ListDocumentClassificationJobs", "input_obj": &comprehend.ListDocumentClassificationJobsInput{}},
366 | }}
367 |
368 | datapipeline_svc := &servicemaster.ServiceMaster{
369 | Svc: datapipeline.NewFromConfig(cfg),
370 | SvcName: "datapipeline",
371 | ApiCalls: []map[string]interface{}{
372 | {"apicall": "ListPipelines", "input_obj": &datapipeline.ListPipelinesInput{}},
373 | }}
374 |
375 | datasync_svc := &servicemaster.ServiceMaster{
376 | Svc: datasync.NewFromConfig(cfg),
377 | SvcName: "datasync",
378 | ApiCalls: []map[string]interface{}{
379 | {"apicall": "ListLocations", "input_obj": &datasync.ListLocationsInput{}},
380 | {"apicall": "ListTaskExecutions", "input_obj": &datasync.ListTaskExecutionsInput{}},
381 | {"apicall": "ListTasks", "input_obj": &datasync.ListTasksInput{}},
382 | {"apicall": "ListAgents", "input_obj": &datasync.ListAgentsInput{}},
383 | }}
384 |
385 | dax_svc := &servicemaster.ServiceMaster{
386 | Svc: dax.NewFromConfig(cfg),
387 | SvcName: "dax",
388 | ApiCalls: []map[string]interface{}{
389 | {"apicall": "DescribeDefaultParameters", "input_obj": &dax.DescribeDefaultParametersInput{}},
390 | {"apicall": "DescribeSubnetGroups", "input_obj": &dax.DescribeSubnetGroupsInput{}},
391 | {"apicall": "DescribeClusters", "input_obj": &dax.DescribeClustersInput{}},
392 | {"apicall": "DescribeParameterGroups", "input_obj": &dax.DescribeParameterGroupsInput{}},
393 | }}
394 |
395 | devicefarm_svc := &servicemaster.ServiceMaster{
396 | Svc: devicefarm.NewFromConfig(cfg),
397 | SvcName: "devicefarm",
398 | ApiCalls: []map[string]interface{}{
399 | {"apicall": "ListProjects", "input_obj": &devicefarm.ListProjectsInput{}},
400 | {"apicall": "ListOfferingPromotions", "input_obj": &devicefarm.ListOfferingPromotionsInput{}},
401 | {"apicall": "ListOfferings", "input_obj": &devicefarm.ListOfferingsInput{}},
402 | {"apicall": "GetOfferingStatus", "input_obj": &devicefarm.GetOfferingStatusInput{}},
403 | {"apicall": "ListOfferingTransactions", "input_obj": &devicefarm.ListOfferingTransactionsInput{}},
404 | {"apicall": "ListVPCEConfigurations", "input_obj": &devicefarm.ListVPCEConfigurationsInput{}},
405 | {"apicall": "ListDeviceInstances", "input_obj": &devicefarm.ListDeviceInstancesInput{}},
406 | {"apicall": "ListInstanceProfiles", "input_obj": &devicefarm.ListInstanceProfilesInput{}},
407 | {"apicall": "ListDevices", "input_obj": &devicefarm.ListDevicesInput{}},
408 | {"apicall": "GetAccountSettings", "input_obj": &devicefarm.GetAccountSettingsInput{}},
409 | }}
410 |
411 | directconnect_svc := &servicemaster.ServiceMaster{
412 | Svc: directconnect.NewFromConfig(cfg),
413 | SvcName: "directconnect",
414 | ApiCalls: []map[string]interface{}{
415 | {"apicall": "DescribeDirectConnectGatewayAssociations", "input_obj": &directconnect.DescribeDirectConnectGatewayAssociationsInput{}},
416 | {"apicall": "DescribeConnections", "input_obj": &directconnect.DescribeConnectionsInput{}},
417 | {"apicall": "DescribeDirectConnectGatewayAttachments", "input_obj": &directconnect.DescribeDirectConnectGatewayAttachmentsInput{}},
418 | {"apicall": "DescribeLags", "input_obj": &directconnect.DescribeLagsInput{}},
419 | {"apicall": "DescribeDirectConnectGateways", "input_obj": &directconnect.DescribeDirectConnectGatewaysInput{}},
420 | {"apicall": "DescribeLocations", "input_obj": &directconnect.DescribeLocationsInput{}},
421 | {"apicall": "DescribeVirtualGateways", "input_obj": &directconnect.DescribeVirtualGatewaysInput{}},
422 | {"apicall": "DescribeInterconnects", "input_obj": &directconnect.DescribeInterconnectsInput{}},
423 | {"apicall": "DescribeVirtualInterfaces", "input_obj": &directconnect.DescribeVirtualInterfacesInput{}},
424 | }}
425 |
426 | dlm_svc := &servicemaster.ServiceMaster{
427 | Svc: dlm.NewFromConfig(cfg),
428 | SvcName: "dlm",
429 | ApiCalls: []map[string]interface{}{
430 | {"apicall": "GetLifecyclePolicies", "input_obj": &dlm.GetLifecyclePoliciesInput{}},
431 | }}
432 |
433 | dynamodb_svc := &servicemaster.ServiceMaster{
434 | Svc: dynamodb.NewFromConfig(cfg),
435 | SvcName: "dynamodb",
436 | ApiCalls: []map[string]interface{}{
437 | {"apicall": "ListBackups", "input_obj": &dynamodb.ListBackupsInput{}},
438 | {"apicall": "ListTables", "input_obj": &dynamodb.ListTablesInput{}},
439 | {"apicall": "DescribeLimits", "input_obj": &dynamodb.DescribeLimitsInput{}},
440 | {"apicall": "ListGlobalTables", "input_obj": &dynamodb.ListGlobalTablesInput{}},
441 | {"apicall": "DescribeEndpoints", "input_obj": &dynamodb.DescribeEndpointsInput{}},
442 | }}
443 |
444 | ec2_svc := &servicemaster.ServiceMaster{
445 | Svc: ec2.NewFromConfig(cfg),
446 | SvcName: "ec2",
447 | ApiCalls: []map[string]interface{}{
448 | {"apicall": "DescribeImages", "input_obj": &ec2.DescribeImagesInput{}},
449 | {"apicall": "DescribeSubnets", "input_obj": &ec2.DescribeSubnetsInput{}},
450 | {"apicall": "DescribeIamInstanceProfileAssociations", "input_obj": &ec2.DescribeIamInstanceProfileAssociationsInput{}},
451 | {"apicall": "DescribeNatGateways", "input_obj": &ec2.DescribeNatGatewaysInput{}},
452 | {"apicall": "DescribeSpotFleetRequests", "input_obj": &ec2.DescribeSpotFleetRequestsInput{}},
453 | {"apicall": "DescribeVpcEndpointConnections", "input_obj": &ec2.DescribeVpcEndpointConnectionsInput{}},
454 | {"apicall": "DescribeVpcEndpointServiceConfigurations", "input_obj": &ec2.DescribeVpcEndpointServiceConfigurationsInput{}},
455 | {"apicall": "DescribeVpcClassicLink", "input_obj": &ec2.DescribeVpcClassicLinkInput{}},
456 | {"apicall": "DescribeReservedInstances", "input_obj": &ec2.DescribeReservedInstancesInput{}},
457 | {"apicall": "DescribeReservedInstancesModifications", "input_obj": &ec2.DescribeReservedInstancesModificationsInput{}},
458 | {"apicall": "DescribeSpotPriceHistory", "input_obj": &ec2.DescribeSpotPriceHistoryInput{}},
459 | {"apicall": "DescribeTransitGatewayAttachments", "input_obj": &ec2.DescribeTransitGatewayAttachmentsInput{}},
460 | {"apicall": "DescribeReservedInstancesOfferings", "input_obj": &ec2.DescribeReservedInstancesOfferingsInput{}},
461 | {"apicall": "DescribeVpcEndpoints", "input_obj": &ec2.DescribeVpcEndpointsInput{}},
462 | {"apicall": "DescribeSnapshots", "input_obj": &ec2.DescribeSnapshotsInput{}},
463 | {"apicall": "DescribeNetworkAcls", "input_obj": &ec2.DescribeNetworkAclsInput{}},
464 | {"apicall": "DescribeRouteTables", "input_obj": &ec2.DescribeRouteTablesInput{}},
465 | {"apicall": "DescribeRegions", "input_obj": &ec2.DescribeRegionsInput{}},
466 | {"apicall": "DescribeInstances", "input_obj": &ec2.DescribeInstancesInput{}},
467 | {"apicall": "DescribeFleets", "input_obj": &ec2.DescribeFleetsInput{}},
468 | {"apicall": "DescribeInstanceCreditSpecifications", "input_obj": &ec2.DescribeInstanceCreditSpecificationsInput{}},
469 | {"apicall": "DescribeImportSnapshotTasks", "input_obj": &ec2.DescribeImportSnapshotTasksInput{}},
470 | {"apicall": "DescribeClientVpnEndpoints", "input_obj": &ec2.DescribeClientVpnEndpointsInput{}},
471 | {"apicall": "DescribeKeyPairs", "input_obj": &ec2.DescribeKeyPairsInput{}},
472 | {"apicall": "DescribeIdFormat", "input_obj": &ec2.DescribeIdFormatInput{}},
473 | {"apicall": "DescribePublicIpv4Pools", "input_obj": &ec2.DescribePublicIpv4PoolsInput{}},
474 | {"apicall": "DescribeScheduledInstances", "input_obj": &ec2.DescribeScheduledInstancesInput{}},
475 | {"apicall": "DescribeConversionTasks", "input_obj": &ec2.DescribeConversionTasksInput{}},
476 | {"apicall": "DescribeEgressOnlyInternetGateways", "input_obj": &ec2.DescribeEgressOnlyInternetGatewaysInput{}},
477 | {"apicall": "DescribePrincipalIdFormat", "input_obj": &ec2.DescribePrincipalIdFormatInput{}},
478 | {"apicall": "DescribeNetworkInterfacePermissions", "input_obj": &ec2.DescribeNetworkInterfacePermissionsInput{}},
479 | {"apicall": "DescribeVpnConnections", "input_obj": &ec2.DescribeVpnConnectionsInput{}},
480 | {"apicall": "DescribeVpcs", "input_obj": &ec2.DescribeVpcsInput{}},
481 | {"apicall": "DescribeNetworkInterfaces", "input_obj": &ec2.DescribeNetworkInterfacesInput{}},
482 | {"apicall": "DescribeSecurityGroups", "input_obj": &ec2.DescribeSecurityGroupsInput{}},
483 | {"apicall": "DescribeHostReservations", "input_obj": &ec2.DescribeHostReservationsInput{}},
484 | {"apicall": "DescribePrefixLists", "input_obj": &ec2.DescribePrefixListsInput{}},
485 | {"apicall": "DescribeVpnGateways", "input_obj": &ec2.DescribeVpnGatewaysInput{}},
486 | {"apicall": "DescribeImportImageTasks", "input_obj": &ec2.DescribeImportImageTasksInput{}},
487 | {"apicall": "DescribeClassicLinkInstances", "input_obj": &ec2.DescribeClassicLinkInstancesInput{}},
488 | {"apicall": "DescribeVpcPeeringConnections", "input_obj": &ec2.DescribeVpcPeeringConnectionsInput{}},
489 | {"apicall": "DescribeSpotDatafeedSubscription", "input_obj": &ec2.DescribeSpotDatafeedSubscriptionInput{}},
490 | {"apicall": "DescribeMovingAddresses", "input_obj": &ec2.DescribeMovingAddressesInput{}},
491 | {"apicall": "DescribeAvailabilityZones", "input_obj": &ec2.DescribeAvailabilityZonesInput{}},
492 | {"apicall": "DescribeAddresses", "input_obj": &ec2.DescribeAddressesInput{}},
493 | {"apicall": "DescribeElasticGpus", "input_obj": &ec2.DescribeElasticGpusInput{}},
494 | {"apicall": "DescribeHosts", "input_obj": &ec2.DescribeHostsInput{}},
495 | {"apicall": "DescribeTransitGateways", "input_obj": &ec2.DescribeTransitGatewaysInput{}},
496 | {"apicall": "DescribeLaunchTemplateVersions", "input_obj": &ec2.DescribeLaunchTemplateVersionsInput{}},
497 | {"apicall": "DescribeTags", "input_obj": &ec2.DescribeTagsInput{}},
498 | {"apicall": "DescribeDhcpOptions", "input_obj": &ec2.DescribeDhcpOptionsInput{}},
499 | {"apicall": "DescribeLaunchTemplates", "input_obj": &ec2.DescribeLaunchTemplatesInput{}},
500 | {"apicall": "DescribeVolumeStatus", "input_obj": &ec2.DescribeVolumeStatusInput{}},
501 | {"apicall": "DescribePlacementGroups", "input_obj": &ec2.DescribePlacementGroupsInput{}},
502 | {"apicall": "DescribeAggregateIdFormat", "input_obj": &ec2.DescribeAggregateIdFormatInput{}},
503 | {"apicall": "DescribeTransitGatewayRouteTables", "input_obj": &ec2.DescribeTransitGatewayRouteTablesInput{}},
504 | {"apicall": "DescribeInstanceStatus", "input_obj": &ec2.DescribeInstanceStatusInput{}},
505 | {"apicall": "DescribeCustomerGateways", "input_obj": &ec2.DescribeCustomerGatewaysInput{}},
506 | {"apicall": "DescribeInternetGateways", "input_obj": &ec2.DescribeInternetGatewaysInput{}},
507 | {"apicall": "DescribeHostReservationOfferings", "input_obj": &ec2.DescribeHostReservationOfferingsInput{}},
508 | {"apicall": "DescribeBundleTasks", "input_obj": &ec2.DescribeBundleTasksInput{}},
509 | {"apicall": "DescribeVolumesModifications", "input_obj": &ec2.DescribeVolumesModificationsInput{}},
510 | {"apicall": "DescribeExportTasks", "input_obj": &ec2.DescribeExportTasksInput{}},
511 | {"apicall": "DescribeVolumes", "input_obj": &ec2.DescribeVolumesInput{}},
512 | {"apicall": "DescribeFlowLogs", "input_obj": &ec2.DescribeFlowLogsInput{}},
513 | {"apicall": "DescribeSpotInstanceRequests", "input_obj": &ec2.DescribeSpotInstanceRequestsInput{}},
514 | {"apicall": "DescribeVpcEndpointServices", "input_obj": &ec2.DescribeVpcEndpointServicesInput{}},
515 | {"apicall": "DescribeTransitGatewayVpcAttachments", "input_obj": &ec2.DescribeTransitGatewayVpcAttachmentsInput{}},
516 | {"apicall": "DescribeFpgaImages", "input_obj": &ec2.DescribeFpgaImagesInput{}},
517 | {"apicall": "DescribeCapacityReservations", "input_obj": &ec2.DescribeCapacityReservationsInput{}},
518 | {"apicall": "DescribeVpcClassicLinkDnsSupport", "input_obj": &ec2.DescribeVpcClassicLinkDnsSupportInput{}},
519 | {"apicall": "DescribeReservedInstancesListings", "input_obj": &ec2.DescribeReservedInstancesListingsInput{}},
520 | {"apicall": "DescribeVpcEndpointConnectionNotifications", "input_obj": &ec2.DescribeVpcEndpointConnectionNotificationsInput{}},
521 | {"apicall": "DescribeAccountAttributes", "input_obj": &ec2.DescribeAccountAttributesInput{}},
522 | }}
523 |
524 | ecr_svc := &servicemaster.ServiceMaster{
525 | Svc: ecr.NewFromConfig(cfg),
526 | SvcName: "ecr",
527 | ApiCalls: []map[string]interface{}{
528 | {"apicall": "DescribeRepositories", "input_obj": &ecr.DescribeRepositoriesInput{}},
529 | {"apicall": "GetAuthorizationToken", "input_obj": &ecr.GetAuthorizationTokenInput{}},
530 | }}
531 |
532 | ecs_svc := &servicemaster.ServiceMaster{
533 | Svc: ecs.NewFromConfig(cfg),
534 | SvcName: "ecs",
535 | ApiCalls: []map[string]interface{}{
536 | {"apicall": "ListServices", "input_obj": &ecs.ListServicesInput{}},
537 | {"apicall": "DescribeClusters", "input_obj": &ecs.DescribeClustersInput{}},
538 | {"apicall": "ListClusters", "input_obj": &ecs.ListClustersInput{}},
539 | {"apicall": "ListTasks", "input_obj": &ecs.ListTasksInput{}},
540 | {"apicall": "ListTaskDefinitions", "input_obj": &ecs.ListTaskDefinitionsInput{}},
541 | {"apicall": "ListContainerInstances", "input_obj": &ecs.ListContainerInstancesInput{}},
542 | {"apicall": "ListAccountSettings", "input_obj": &ecs.ListAccountSettingsInput{}},
543 | {"apicall": "ListTaskDefinitionFamilies", "input_obj": &ecs.ListTaskDefinitionFamiliesInput{}},
544 | }}
545 |
546 | eks_svc := &servicemaster.ServiceMaster{
547 | Svc: eks.NewFromConfig(cfg),
548 | SvcName: "eks",
549 | ApiCalls: []map[string]interface{}{
550 | {"apicall": "ListClusters", "input_obj": &eks.ListClustersInput{}},
551 | }}
552 |
553 | elasticache_svc := &servicemaster.ServiceMaster{
554 | Svc: elasticache.NewFromConfig(cfg),
555 | SvcName: "elasticache",
556 | ApiCalls: []map[string]interface{}{
557 | {"apicall": "DescribeReservedCacheNodes", "input_obj": &elasticache.DescribeReservedCacheNodesInput{}},
558 | {"apicall": "DescribeReservedCacheNodesOfferings", "input_obj": &elasticache.DescribeReservedCacheNodesOfferingsInput{}},
559 | {"apicall": "DescribeCacheSubnetGroups", "input_obj": &elasticache.DescribeCacheSubnetGroupsInput{}},
560 | {"apicall": "DescribeCacheEngineVersions", "input_obj": &elasticache.DescribeCacheEngineVersionsInput{}},
561 | {"apicall": "ListAllowedNodeTypeModifications", "input_obj": &elasticache.ListAllowedNodeTypeModificationsInput{}},
562 | {"apicall": "DescribeCacheSecurityGroups", "input_obj": &elasticache.DescribeCacheSecurityGroupsInput{}},
563 | {"apicall": "DescribeCacheParameterGroups", "input_obj": &elasticache.DescribeCacheParameterGroupsInput{}},
564 | {"apicall": "DescribeReplicationGroups", "input_obj": &elasticache.DescribeReplicationGroupsInput{}},
565 | {"apicall": "DescribeSnapshots", "input_obj": &elasticache.DescribeSnapshotsInput{}},
566 | {"apicall": "DescribeCacheClusters", "input_obj": &elasticache.DescribeCacheClustersInput{}},
567 | }}
568 |
569 | elasticbeanstalk_svc := &servicemaster.ServiceMaster{
570 | Svc: elasticbeanstalk.NewFromConfig(cfg),
571 | SvcName: "elasticbeanstalk",
572 | ApiCalls: []map[string]interface{}{
573 | {"apicall": "DescribeEnvironmentManagedActionHistory", "input_obj": &elasticbeanstalk.DescribeEnvironmentManagedActionHistoryInput{}},
574 | {"apicall": "DescribePlatformVersion", "input_obj": &elasticbeanstalk.DescribePlatformVersionInput{}},
575 | {"apicall": "DescribeInstancesHealth", "input_obj": &elasticbeanstalk.DescribeInstancesHealthInput{}},
576 | {"apicall": "DescribeEnvironmentHealth", "input_obj": &elasticbeanstalk.DescribeEnvironmentHealthInput{}},
577 | {"apicall": "DescribeConfigurationOptions", "input_obj": &elasticbeanstalk.DescribeConfigurationOptionsInput{}},
578 | {"apicall": "DescribeEnvironmentManagedActions", "input_obj": &elasticbeanstalk.DescribeEnvironmentManagedActionsInput{}},
579 | {"apicall": "DescribeEnvironmentResources", "input_obj": &elasticbeanstalk.DescribeEnvironmentResourcesInput{}},
580 | {"apicall": "DescribeAccountAttributes", "input_obj": &elasticbeanstalk.DescribeAccountAttributesInput{}},
581 | }}
582 |
583 | elastictranscoder_svc := &servicemaster.ServiceMaster{
584 | Svc: elastictranscoder.NewFromConfig(cfg),
585 | SvcName: "elastictranscoder",
586 | ApiCalls: []map[string]interface{}{
587 | {"apicall": "ListPipelines", "input_obj": &elastictranscoder.ListPipelinesInput{}},
588 | {"apicall": "ListPresets", "input_obj": &elastictranscoder.ListPresetsInput{}},
589 | }}
590 |
591 | firehose_svc := &servicemaster.ServiceMaster{
592 | Svc: firehose.NewFromConfig(cfg),
593 | SvcName: "firehose",
594 | ApiCalls: []map[string]interface{}{
595 | {"apicall": "ListDeliveryStreams", "input_obj": &firehose.ListDeliveryStreamsInput{}},
596 | }}
597 |
598 | fms_svc := &servicemaster.ServiceMaster{
599 | Svc: fms.NewFromConfig(cfg),
600 | SvcName: "fms",
601 | ApiCalls: []map[string]interface{}{
602 | {"apicall": "GetNotificationChannel", "input_obj": &fms.GetNotificationChannelInput{}},
603 | {"apicall": "ListMemberAccounts", "input_obj": &fms.ListMemberAccountsInput{}},
604 | {"apicall": "ListPolicies", "input_obj": &fms.ListPoliciesInput{}},
605 | {"apicall": "GetAdminAccount", "input_obj": &fms.GetAdminAccountInput{}},
606 | }}
607 |
608 | fsx_svc := &servicemaster.ServiceMaster{
609 | Svc: fsx.NewFromConfig(cfg),
610 | SvcName: "fsx",
611 | ApiCalls: []map[string]interface{}{
612 | {"apicall": "DescribeFileSystems", "input_obj": &fsx.DescribeFileSystemsInput{}},
613 | {"apicall": "DescribeBackups", "input_obj": &fsx.DescribeBackupsInput{}},
614 | }}
615 |
616 | gamelift_svc := &servicemaster.ServiceMaster{
617 | Svc: gamelift.NewFromConfig(cfg),
618 | SvcName: "gamelift",
619 | ApiCalls: []map[string]interface{}{
620 | {"apicall": "DescribePlayerSessions", "input_obj": &gamelift.DescribePlayerSessionsInput{}},
621 | {"apicall": "DescribeGameSessionDetails", "input_obj": &gamelift.DescribeGameSessionDetailsInput{}},
622 | {"apicall": "DescribeMatchmakingRuleSets", "input_obj": &gamelift.DescribeMatchmakingRuleSetsInput{}},
623 | {"apicall": "DescribeFleetUtilization", "input_obj": &gamelift.DescribeFleetUtilizationInput{}},
624 | {"apicall": "DescribeGameSessions", "input_obj": &gamelift.DescribeGameSessionsInput{}},
625 | {"apicall": "DescribeVpcPeeringAuthorizations", "input_obj": &gamelift.DescribeVpcPeeringAuthorizationsInput{}},
626 | {"apicall": "ListAliases", "input_obj": &gamelift.ListAliasesInput{}},
627 | {"apicall": "DescribeVpcPeeringConnections", "input_obj": &gamelift.DescribeVpcPeeringConnectionsInput{}},
628 | {"apicall": "DescribeMatchmakingConfigurations", "input_obj": &gamelift.DescribeMatchmakingConfigurationsInput{}},
629 | {"apicall": "DescribeFleetAttributes", "input_obj": &gamelift.DescribeFleetAttributesInput{}},
630 | {"apicall": "ListFleets", "input_obj": &gamelift.ListFleetsInput{}},
631 | {"apicall": "ListBuilds", "input_obj": &gamelift.ListBuildsInput{}},
632 | {"apicall": "DescribeGameSessionQueues", "input_obj": &gamelift.DescribeGameSessionQueuesInput{}},
633 | {"apicall": "DescribeEC2InstanceLimits", "input_obj": &gamelift.DescribeEC2InstanceLimitsInput{}},
634 | {"apicall": "DescribeFleetCapacity", "input_obj": &gamelift.DescribeFleetCapacityInput{}},
635 | }}
636 |
637 | globalaccelerator_svc := &servicemaster.ServiceMaster{
638 | Svc: globalaccelerator.NewFromConfig(cfg),
639 | SvcName: "globalaccelerator",
640 | ApiCalls: []map[string]interface{}{
641 | {"apicall": "ListAccelerators", "input_obj": &globalaccelerator.ListAcceleratorsInput{}},
642 | {"apicall": "DescribeAcceleratorAttributes", "input_obj": &globalaccelerator.DescribeAcceleratorAttributesInput{}},
643 | }}
644 |
645 | glue_svc := &servicemaster.ServiceMaster{
646 | Svc: glue.NewFromConfig(cfg),
647 | SvcName: "glue",
648 | ApiCalls: []map[string]interface{}{
649 | {"apicall": "GetClassifiers", "input_obj": &glue.GetClassifiersInput{}},
650 | {"apicall": "GetDatabases", "input_obj": &glue.GetDatabasesInput{}},
651 | {"apicall": "GetCrawlers", "input_obj": &glue.GetCrawlersInput{}},
652 | {"apicall": "ListDevEndpoints", "input_obj": &glue.ListDevEndpointsInput{}},
653 | {"apicall": "ListTriggers", "input_obj": &glue.ListTriggersInput{}},
654 | {"apicall": "GetTriggers", "input_obj": &glue.GetTriggersInput{}},
655 | {"apicall": "ListCrawlers", "input_obj": &glue.ListCrawlersInput{}},
656 | {"apicall": "ListJobs", "input_obj": &glue.ListJobsInput{}},
657 | {"apicall": "GetDataCatalogEncryptionSettings", "input_obj": &glue.GetDataCatalogEncryptionSettingsInput{}},
658 | {"apicall": "GetConnections", "input_obj": &glue.GetConnectionsInput{}},
659 | {"apicall": "GetJobs", "input_obj": &glue.GetJobsInput{}},
660 | {"apicall": "GetCrawlerMetrics", "input_obj": &glue.GetCrawlerMetricsInput{}},
661 | {"apicall": "GetDataflowGraph", "input_obj": &glue.GetDataflowGraphInput{}},
662 | {"apicall": "GetResourcePolicy", "input_obj": &glue.GetResourcePolicyInput{}},
663 | {"apicall": "GetSecurityConfigurations", "input_obj": &glue.GetSecurityConfigurationsInput{}},
664 | {"apicall": "GetCatalogImportStatus", "input_obj": &glue.GetCatalogImportStatusInput{}},
665 | {"apicall": "GetDevEndpoints", "input_obj": &glue.GetDevEndpointsInput{}},
666 | }}
667 |
668 | greengrass_svc := &servicemaster.ServiceMaster{
669 | Svc: greengrass.NewFromConfig(cfg),
670 | SvcName: "greengrass",
671 | ApiCalls: []map[string]interface{}{
672 | {"apicall": "ListDeviceDefinitions", "input_obj": &greengrass.ListDeviceDefinitionsInput{}},
673 | {"apicall": "GetServiceRoleForAccount", "input_obj": &greengrass.GetServiceRoleForAccountInput{}},
674 | {"apicall": "ListCoreDefinitions", "input_obj": &greengrass.ListCoreDefinitionsInput{}},
675 | {"apicall": "ListLoggerDefinitions", "input_obj": &greengrass.ListLoggerDefinitionsInput{}},
676 | {"apicall": "ListBulkDeployments", "input_obj": &greengrass.ListBulkDeploymentsInput{}},
677 | {"apicall": "ListConnectorDefinitions", "input_obj": &greengrass.ListConnectorDefinitionsInput{}},
678 | {"apicall": "ListGroups", "input_obj": &greengrass.ListGroupsInput{}},
679 | {"apicall": "ListSubscriptionDefinitions", "input_obj": &greengrass.ListSubscriptionDefinitionsInput{}},
680 | {"apicall": "ListFunctionDefinitions", "input_obj": &greengrass.ListFunctionDefinitionsInput{}},
681 | {"apicall": "ListResourceDefinitions", "input_obj": &greengrass.ListResourceDefinitionsInput{}},
682 | }}
683 |
684 | guardduty_svc := &servicemaster.ServiceMaster{
685 | Svc: guardduty.NewFromConfig(cfg),
686 | SvcName: "guardduty",
687 | ApiCalls: []map[string]interface{}{
688 | {"apicall": "ListInvitations", "input_obj": &guardduty.ListInvitationsInput{}},
689 | {"apicall": "GetInvitationsCount", "input_obj": &guardduty.GetInvitationsCountInput{}},
690 | {"apicall": "ListDetectors", "input_obj": &guardduty.ListDetectorsInput{}},
691 | }}
692 |
693 | health_svc := &servicemaster.ServiceMaster{
694 | Svc: health.NewFromConfig(cfg),
695 | SvcName: "health",
696 | ApiCalls: []map[string]interface{}{
697 | {"apicall": "DescribeEntityAggregates", "input_obj": &health.DescribeEntityAggregatesInput{}},
698 | {"apicall": "DescribeEventTypes", "input_obj": &health.DescribeEventTypesInput{}},
699 | }}
700 |
701 | iam_svc := &servicemaster.ServiceMaster{
702 | Svc: iam.NewFromConfig(cfg),
703 | SvcName: "iam",
704 | ApiCalls: []map[string]interface{}{
705 | {"apicall": "ListRoles", "input_obj": &iam.ListRolesInput{}},
706 | {"apicall": "ListAccessKeys", "input_obj": &iam.ListAccessKeysInput{}},
707 | {"apicall": "ListGroups", "input_obj": &iam.ListGroupsInput{}},
708 | {"apicall": "ListOpenIDConnectProviders", "input_obj": &iam.ListOpenIDConnectProvidersInput{}},
709 | {"apicall": "GetUser", "input_obj": &iam.GetUserInput{}},
710 | {"apicall": "ListSAMLProviders", "input_obj": &iam.ListSAMLProvidersInput{}},
711 | {"apicall": "ListAccountAliases", "input_obj": &iam.ListAccountAliasesInput{}},
712 | {"apicall": "GetAccountSummary", "input_obj": &iam.GetAccountSummaryInput{}},
713 | {"apicall": "ListMFADevices", "input_obj": &iam.ListMFADevicesInput{}},
714 | {"apicall": "ListServerCertificates", "input_obj": &iam.ListServerCertificatesInput{}},
715 | {"apicall": "ListServiceSpecificCredentials", "input_obj": &iam.ListServiceSpecificCredentialsInput{}},
716 | {"apicall": "GetAccountAuthorizationDetails", "input_obj": &iam.GetAccountAuthorizationDetailsInput{}},
717 | {"apicall": "ListSSHPublicKeys", "input_obj": &iam.ListSSHPublicKeysInput{}},
718 | {"apicall": "ListSigningCertificates", "input_obj": &iam.ListSigningCertificatesInput{}},
719 | {"apicall": "ListPolicies", "input_obj": &iam.ListPoliciesInput{}},
720 | {"apicall": "ListVirtualMFADevices", "input_obj": &iam.ListVirtualMFADevicesInput{}},
721 | {"apicall": "ListInstanceProfiles", "input_obj": &iam.ListInstanceProfilesInput{}},
722 | {"apicall": "ListUsers", "input_obj": &iam.ListUsersInput{}},
723 | {"apicall": "GetCredentialReport", "input_obj": &iam.GetCredentialReportInput{}},
724 | {"apicall": "GetAccountPasswordPolicy", "input_obj": &iam.GetAccountPasswordPolicyInput{}},
725 | }}
726 |
727 | inspector_svc := &servicemaster.ServiceMaster{
728 | Svc: inspector.NewFromConfig(cfg),
729 | SvcName: "inspector",
730 | ApiCalls: []map[string]interface{}{
731 | {"apicall": "ListEventSubscriptions", "input_obj": &inspector.ListEventSubscriptionsInput{}},
732 | {"apicall": "DescribeCrossAccountAccessRole", "input_obj": &inspector.DescribeCrossAccountAccessRoleInput{}},
733 | {"apicall": "ListAssessmentTemplates", "input_obj": &inspector.ListAssessmentTemplatesInput{}},
734 | {"apicall": "ListRulesPackages", "input_obj": &inspector.ListRulesPackagesInput{}},
735 | {"apicall": "ListAssessmentRuns", "input_obj": &inspector.ListAssessmentRunsInput{}},
736 | {"apicall": "ListFindings", "input_obj": &inspector.ListFindingsInput{}},
737 | {"apicall": "ListAssessmentTargets", "input_obj": &inspector.ListAssessmentTargetsInput{}},
738 | }}
739 |
740 | iot_svc := &servicemaster.ServiceMaster{
741 | Svc: iot.NewFromConfig(cfg),
742 | SvcName: "iot",
743 | ApiCalls: []map[string]interface{}{
744 | {"apicall": "ListCertificates", "input_obj": &iot.ListCertificatesInput{}},
745 | {"apicall": "ListStreams", "input_obj": &iot.ListStreamsInput{}},
746 | {"apicall": "DescribeEventConfigurations", "input_obj": &iot.DescribeEventConfigurationsInput{}},
747 | {"apicall": "ListRoleAliases", "input_obj": &iot.ListRoleAliasesInput{}},
748 | {"apicall": "ListOutgoingCertificates", "input_obj": &iot.ListOutgoingCertificatesInput{}},
749 | {"apicall": "ListV2LoggingLevels", "input_obj": &iot.ListV2LoggingLevelsInput{}},
750 | {"apicall": "DescribeDefaultAuthorizer", "input_obj": &iot.DescribeDefaultAuthorizerInput{}},
751 | {"apicall": "ListThings", "input_obj": &iot.ListThingsInput{}},
752 | {"apicall": "GetLoggingOptions", "input_obj": &iot.GetLoggingOptionsInput{}},
753 | {"apicall": "DescribeEndpoint", "input_obj": &iot.DescribeEndpointInput{}},
754 | {"apicall": "ListCACertificates", "input_obj": &iot.ListCACertificatesInput{}},
755 | {"apicall": "GetIndexingConfiguration", "input_obj": &iot.GetIndexingConfigurationInput{}},
756 | {"apicall": "ListJobs", "input_obj": &iot.ListJobsInput{}},
757 | {"apicall": "ListActiveViolations", "input_obj": &iot.ListActiveViolationsInput{}},
758 | {"apicall": "ListAuditFindings", "input_obj": &iot.ListAuditFindingsInput{}},
759 | {"apicall": "ListIndices", "input_obj": &iot.ListIndicesInput{}},
760 | {"apicall": "ListThingTypes", "input_obj": &iot.ListThingTypesInput{}},
761 | {"apicall": "GetEffectivePolicies", "input_obj": &iot.GetEffectivePoliciesInput{}},
762 | {"apicall": "DescribeAccountAuditConfiguration", "input_obj": &iot.DescribeAccountAuditConfigurationInput{}},
763 | {"apicall": "ListOTAUpdates", "input_obj": &iot.ListOTAUpdatesInput{}},
764 | {"apicall": "ListBillingGroups", "input_obj": &iot.ListBillingGroupsInput{}},
765 | {"apicall": "ListAuthorizers", "input_obj": &iot.ListAuthorizersInput{}},
766 | {"apicall": "ListThingGroups", "input_obj": &iot.ListThingGroupsInput{}},
767 | {"apicall": "GetRegistrationCode", "input_obj": &iot.GetRegistrationCodeInput{}},
768 | {"apicall": "ListThingRegistrationTasks", "input_obj": &iot.ListThingRegistrationTasksInput{}},
769 | {"apicall": "ListScheduledAudits", "input_obj": &iot.ListScheduledAuditsInput{}},
770 | {"apicall": "GetV2LoggingOptions", "input_obj": &iot.GetV2LoggingOptionsInput{}},
771 | {"apicall": "ListPolicies", "input_obj": &iot.ListPoliciesInput{}},
772 | {"apicall": "ListTopicRules", "input_obj": &iot.ListTopicRulesInput{}},
773 | {"apicall": "ListSecurityProfiles", "input_obj": &iot.ListSecurityProfilesInput{}},
774 | }}
775 |
776 | iotanalytics_svc := &servicemaster.ServiceMaster{
777 | Svc: iotanalytics.NewFromConfig(cfg),
778 | SvcName: "iotanalytics",
779 | ApiCalls: []map[string]interface{}{
780 | {"apicall": "DescribeLoggingOptions", "input_obj": &iotanalytics.DescribeLoggingOptionsInput{}},
781 | {"apicall": "ListDatasets", "input_obj": &iotanalytics.ListDatasetsInput{}},
782 | {"apicall": "ListChannels", "input_obj": &iotanalytics.ListChannelsInput{}},
783 | {"apicall": "ListPipelines", "input_obj": &iotanalytics.ListPipelinesInput{}},
784 | {"apicall": "ListDatastores", "input_obj": &iotanalytics.ListDatastoresInput{}},
785 | }}
786 |
787 | kafka_svc := &servicemaster.ServiceMaster{
788 | Svc: kafka.NewFromConfig(cfg),
789 | SvcName: "kafka",
790 | ApiCalls: []map[string]interface{}{
791 | {"apicall": "ListClusters", "input_obj": &kafka.ListClustersInput{}},
792 | }}
793 |
794 | kinesis_svc := &servicemaster.ServiceMaster{
795 | Svc: kinesis.NewFromConfig(cfg),
796 | SvcName: "kinesis",
797 | ApiCalls: []map[string]interface{}{
798 | {"apicall": "DescribeStreamConsumer", "input_obj": &kinesis.DescribeStreamConsumerInput{}},
799 | {"apicall": "ListStreams", "input_obj": &kinesis.ListStreamsInput{}},
800 | {"apicall": "ListShards", "input_obj": &kinesis.ListShardsInput{}},
801 | {"apicall": "DescribeLimits", "input_obj": &kinesis.DescribeLimitsInput{}},
802 | }}
803 |
804 | kinesisanalytics_svc := &servicemaster.ServiceMaster{
805 | Svc: kinesisanalytics.NewFromConfig(cfg),
806 | SvcName: "kinesisanalytics",
807 | ApiCalls: []map[string]interface{}{
808 | {"apicall": "ListApplications", "input_obj": &kinesisanalytics.ListApplicationsInput{}},
809 | }}
810 |
811 | kinesisvideo_svc := &servicemaster.ServiceMaster{
812 | Svc: kinesisvideo.NewFromConfig(cfg),
813 | SvcName: "kinesisvideo",
814 | ApiCalls: []map[string]interface{}{
815 | {"apicall": "ListStreams", "input_obj": &kinesisvideo.ListStreamsInput{}},
816 | {"apicall": "ListTagsForStream", "input_obj": &kinesisvideo.ListTagsForStreamInput{}},
817 | {"apicall": "DescribeStream", "input_obj": &kinesisvideo.DescribeStreamInput{}},
818 | }}
819 |
820 | kms_svc := &servicemaster.ServiceMaster{
821 | Svc: kms.NewFromConfig(cfg),
822 | SvcName: "kms",
823 | ApiCalls: []map[string]interface{}{
824 | {"apicall": "ListKeys", "input_obj": &kms.ListKeysInput{}},
825 | {"apicall": "ListAliases", "input_obj": &kms.ListAliasesInput{}},
826 | {"apicall": "DescribeCustomKeyStores", "input_obj": &kms.DescribeCustomKeyStoresInput{}},
827 | }}
828 |
829 | lambda_svc := &servicemaster.ServiceMaster{
830 | Svc: lambda.NewFromConfig(cfg),
831 | SvcName: "lambda",
832 | ApiCalls: []map[string]interface{}{
833 | {"apicall": "ListLayers", "input_obj": &lambda.ListLayersInput{}},
834 | {"apicall": "ListEventSourceMappings", "input_obj": &lambda.ListEventSourceMappingsInput{}},
835 | {"apicall": "GetAccountSettings", "input_obj": &lambda.GetAccountSettingsInput{}},
836 | {"apicall": "ListFunctions", "input_obj": &lambda.ListFunctionsInput{}},
837 | }}
838 |
839 | lightsail_svc := &servicemaster.ServiceMaster{
840 | Svc: lightsail.NewFromConfig(cfg),
841 | SvcName: "lightsail",
842 | ApiCalls: []map[string]interface{}{
843 | {"apicall": "GetInstanceSnapshots", "input_obj": &lightsail.GetInstanceSnapshotsInput{}},
844 | {"apicall": "GetRelationalDatabaseSnapshots", "input_obj": &lightsail.GetRelationalDatabaseSnapshotsInput{}},
845 | {"apicall": "GetActiveNames", "input_obj": &lightsail.GetActiveNamesInput{}},
846 | {"apicall": "GetCloudFormationStackRecords", "input_obj": &lightsail.GetCloudFormationStackRecordsInput{}},
847 | {"apicall": "GetRelationalDatabases", "input_obj": &lightsail.GetRelationalDatabasesInput{}},
848 | {"apicall": "GetKeyPairs", "input_obj": &lightsail.GetKeyPairsInput{}},
849 | {"apicall": "GetLoadBalancers", "input_obj": &lightsail.GetLoadBalancersInput{}},
850 | {"apicall": "GetInstances", "input_obj": &lightsail.GetInstancesInput{}},
851 | {"apicall": "GetRegions", "input_obj": &lightsail.GetRegionsInput{}},
852 | {"apicall": "GetExportSnapshotRecords", "input_obj": &lightsail.GetExportSnapshotRecordsInput{}},
853 | {"apicall": "GetRelationalDatabaseBlueprints", "input_obj": &lightsail.GetRelationalDatabaseBlueprintsInput{}},
854 | {"apicall": "GetRelationalDatabaseBundles", "input_obj": &lightsail.GetRelationalDatabaseBundlesInput{}},
855 | {"apicall": "GetOperations", "input_obj": &lightsail.GetOperationsInput{}},
856 | {"apicall": "GetBundles", "input_obj": &lightsail.GetBundlesInput{}},
857 | {"apicall": "GetBlueprints", "input_obj": &lightsail.GetBlueprintsInput{}},
858 | {"apicall": "GetDisks", "input_obj": &lightsail.GetDisksInput{}},
859 | {"apicall": "GetDomains", "input_obj": &lightsail.GetDomainsInput{}},
860 | {"apicall": "GetStaticIps", "input_obj": &lightsail.GetStaticIpsInput{}},
861 | {"apicall": "GetDiskSnapshots", "input_obj": &lightsail.GetDiskSnapshotsInput{}},
862 | }}
863 |
864 | machinelearning_svc := &servicemaster.ServiceMaster{
865 | Svc: machinelearning.NewFromConfig(cfg),
866 | SvcName: "machinelearning",
867 | ApiCalls: []map[string]interface{}{
868 | {"apicall": "DescribeMLModels", "input_obj": &machinelearning.DescribeMLModelsInput{}},
869 | {"apicall": "DescribeDataSources", "input_obj": &machinelearning.DescribeDataSourcesInput{}},
870 | {"apicall": "DescribeEvaluations", "input_obj": &machinelearning.DescribeEvaluationsInput{}},
871 | {"apicall": "DescribeBatchPredictions", "input_obj": &machinelearning.DescribeBatchPredictionsInput{}},
872 | }}
873 |
874 | macie_svc := &servicemaster.ServiceMaster{
875 | Svc: macie.NewFromConfig(cfg),
876 | SvcName: "macie",
877 | ApiCalls: []map[string]interface{}{
878 | {"apicall": "ListS3Resources", "input_obj": &macie.ListS3ResourcesInput{}},
879 | {"apicall": "ListMemberAccounts", "input_obj": &macie.ListMemberAccountsInput{}},
880 | }}
881 |
882 | mediaconnect_svc := &servicemaster.ServiceMaster{
883 | Svc: mediaconnect.NewFromConfig(cfg),
884 | SvcName: "mediaconnect",
885 | ApiCalls: []map[string]interface{}{
886 | {"apicall": "ListEntitlements", "input_obj": &mediaconnect.ListEntitlementsInput{}},
887 | {"apicall": "ListFlows", "input_obj": &mediaconnect.ListFlowsInput{}},
888 | }}
889 |
890 | mediaconvert_svc := &servicemaster.ServiceMaster{
891 | Svc: mediaconvert.NewFromConfig(cfg),
892 | SvcName: "mediaconvert",
893 | ApiCalls: []map[string]interface{}{
894 | {"apicall": "ListPresets", "input_obj": &mediaconvert.ListPresetsInput{}},
895 | {"apicall": "ListJobs", "input_obj": &mediaconvert.ListJobsInput{}},
896 | {"apicall": "ListJobTemplates", "input_obj": &mediaconvert.ListJobTemplatesInput{}},
897 | {"apicall": "ListQueues", "input_obj": &mediaconvert.ListQueuesInput{}},
898 | {"apicall": "DescribeEndpoints", "input_obj": &mediaconvert.DescribeEndpointsInput{}},
899 | }}
900 |
901 | medialive_svc := &servicemaster.ServiceMaster{
902 | Svc: medialive.NewFromConfig(cfg),
903 | SvcName: "medialive",
904 | ApiCalls: []map[string]interface{}{
905 | {"apicall": "ListInputs", "input_obj": &medialive.ListInputsInput{}},
906 | {"apicall": "ListChannels", "input_obj": &medialive.ListChannelsInput{}},
907 | {"apicall": "ListOfferings", "input_obj": &medialive.ListOfferingsInput{}},
908 | {"apicall": "ListReservations", "input_obj": &medialive.ListReservationsInput{}},
909 | {"apicall": "ListInputSecurityGroups", "input_obj": &medialive.ListInputSecurityGroupsInput{}},
910 | }}
911 |
912 | mediapackage_svc := &servicemaster.ServiceMaster{
913 | Svc: mediapackage.NewFromConfig(cfg),
914 | SvcName: "mediapackage",
915 | ApiCalls: []map[string]interface{}{
916 | {"apicall": "ListChannels", "input_obj": &mediapackage.ListChannelsInput{}},
917 | {"apicall": "ListOriginEndpoints", "input_obj": &mediapackage.ListOriginEndpointsInput{}},
918 | }}
919 |
920 | mediastore_svc := &servicemaster.ServiceMaster{
921 | Svc: mediastore.NewFromConfig(cfg),
922 | SvcName: "mediastore",
923 | ApiCalls: []map[string]interface{}{
924 | {"apicall": "DescribeContainer", "input_obj": &mediastore.DescribeContainerInput{}},
925 | {"apicall": "ListContainers", "input_obj": &mediastore.ListContainersInput{}},
926 | }}
927 |
928 | mediatailor_svc := &servicemaster.ServiceMaster{
929 | Svc: mediatailor.NewFromConfig(cfg),
930 | SvcName: "mediatailor",
931 | ApiCalls: []map[string]interface{}{
932 | {"apicall": "ListPlaybackConfigurations", "input_obj": &mediatailor.ListPlaybackConfigurationsInput{}},
933 | }}
934 |
935 | mobile_svc := &servicemaster.ServiceMaster{
936 | Svc: mobile.NewFromConfig(cfg),
937 | SvcName: "mobile",
938 | ApiCalls: []map[string]interface{}{
939 | {"apicall": "ListBundles", "input_obj": &mobile.ListBundlesInput{}},
940 | {"apicall": "ListProjects", "input_obj": &mobile.ListProjectsInput{}},
941 | }}
942 |
943 | mq_svc := &servicemaster.ServiceMaster{
944 | Svc: mq.NewFromConfig(cfg),
945 | SvcName: "mq",
946 | ApiCalls: []map[string]interface{}{
947 | {"apicall": "ListConfigurations", "input_obj": &mq.ListConfigurationsInput{}},
948 | {"apicall": "ListBrokers", "input_obj": &mq.ListBrokersInput{}},
949 | }}
950 |
951 | opsworks_svc := &servicemaster.ServiceMaster{
952 | Svc: opsworks.NewFromConfig(cfg),
953 | SvcName: "opsworks",
954 | ApiCalls: []map[string]interface{}{
955 | {"apicall": "DescribeMyUserProfile", "input_obj": &opsworks.DescribeMyUserProfileInput{}},
956 | {"apicall": "DescribeRaidArrays", "input_obj": &opsworks.DescribeRaidArraysInput{}},
957 | {"apicall": "DescribeUserProfiles", "input_obj": &opsworks.DescribeUserProfilesInput{}},
958 | {"apicall": "DescribeOperatingSystems", "input_obj": &opsworks.DescribeOperatingSystemsInput{}},
959 | {"apicall": "DescribeElasticLoadBalancers", "input_obj": &opsworks.DescribeElasticLoadBalancersInput{}},
960 | {"apicall": "DescribePermissions", "input_obj": &opsworks.DescribePermissionsInput{}},
961 | {"apicall": "DescribeVolumes", "input_obj": &opsworks.DescribeVolumesInput{}},
962 | {"apicall": "DescribeDeployments", "input_obj": &opsworks.DescribeDeploymentsInput{}},
963 | {"apicall": "DescribeEcsClusters", "input_obj": &opsworks.DescribeEcsClustersInput{}},
964 | {"apicall": "DescribeElasticIps", "input_obj": &opsworks.DescribeElasticIpsInput{}},
965 | {"apicall": "DescribeAgentVersions", "input_obj": &opsworks.DescribeAgentVersionsInput{}},
966 | {"apicall": "DescribeLayers", "input_obj": &opsworks.DescribeLayersInput{}},
967 | {"apicall": "DescribeApps", "input_obj": &opsworks.DescribeAppsInput{}},
968 | {"apicall": "DescribeCommands", "input_obj": &opsworks.DescribeCommandsInput{}},
969 | {"apicall": "DescribeInstances", "input_obj": &opsworks.DescribeInstancesInput{}},
970 | }}
971 |
972 | organizations_svc := &servicemaster.ServiceMaster{
973 | Svc: organizations.NewFromConfig(cfg),
974 | SvcName: "organizations",
975 | ApiCalls: []map[string]interface{}{
976 | {"apicall": "ListAWSServiceAccessForOrganization", "input_obj": &organizations.ListAWSServiceAccessForOrganizationInput{}},
977 | {"apicall": "ListRoots", "input_obj": &organizations.ListRootsInput{}},
978 | {"apicall": "ListAccounts", "input_obj": &organizations.ListAccountsInput{}},
979 | {"apicall": "ListCreateAccountStatus", "input_obj": &organizations.ListCreateAccountStatusInput{}},
980 | {"apicall": "DescribeOrganization", "input_obj": &organizations.DescribeOrganizationInput{}},
981 | {"apicall": "ListHandshakesForAccount", "input_obj": &organizations.ListHandshakesForAccountInput{}},
982 | {"apicall": "ListHandshakesForOrganization", "input_obj": &organizations.ListHandshakesForOrganizationInput{}},
983 | }}
984 |
985 | pinpoint_svc := &servicemaster.ServiceMaster{
986 | Svc: pinpoint.NewFromConfig(cfg),
987 | SvcName: "pinpoint",
988 | ApiCalls: []map[string]interface{}{
989 | {"apicall": "GetApps", "input_obj": &pinpoint.GetAppsInput{}},
990 | }}
991 |
992 | polly_svc := &servicemaster.ServiceMaster{
993 | Svc: polly.NewFromConfig(cfg),
994 | SvcName: "polly",
995 | ApiCalls: []map[string]interface{}{
996 | {"apicall": "ListSpeechSynthesisTasks", "input_obj": &polly.ListSpeechSynthesisTasksInput{}},
997 | {"apicall": "DescribeVoices", "input_obj": &polly.DescribeVoicesInput{}},
998 | {"apicall": "ListLexicons", "input_obj": &polly.ListLexiconsInput{}},
999 | }}
1000 |
1001 | pricing_svc := &servicemaster.ServiceMaster{
1002 | Svc: pricing.NewFromConfig(cfg),
1003 | SvcName: "pricing",
1004 | ApiCalls: []map[string]interface{}{
1005 | {"apicall": "DescribeServices", "input_obj": &pricing.DescribeServicesInput{}},
1006 | }}
1007 |
1008 | ram_svc := &servicemaster.ServiceMaster{
1009 | Svc: ram.NewFromConfig(cfg),
1010 | SvcName: "ram",
1011 | ApiCalls: []map[string]interface{}{
1012 | {"apicall": "GetResourceShareInvitations", "input_obj": &ram.GetResourceShareInvitationsInput{}},
1013 | }}
1014 |
1015 | rds_svc := &servicemaster.ServiceMaster{
1016 | Svc: rds.NewFromConfig(cfg),
1017 | SvcName: "rds",
1018 | ApiCalls: []map[string]interface{}{
1019 | {"apicall": "DescribeGlobalClusters", "input_obj": &rds.DescribeGlobalClustersInput{}},
1020 | {"apicall": "DescribeDBClusterEndpoints", "input_obj": &rds.DescribeDBClusterEndpointsInput{}},
1021 | {"apicall": "DescribeDBInstances", "input_obj": &rds.DescribeDBInstancesInput{}},
1022 | {"apicall": "DescribeDBSecurityGroups", "input_obj": &rds.DescribeDBSecurityGroupsInput{}},
1023 | {"apicall": "DescribePendingMaintenanceActions", "input_obj": &rds.DescribePendingMaintenanceActionsInput{}},
1024 | {"apicall": "DescribeSourceRegions", "input_obj": &rds.DescribeSourceRegionsInput{}},
1025 | {"apicall": "DescribeDBEngineVersions", "input_obj": &rds.DescribeDBEngineVersionsInput{}},
1026 | {"apicall": "DescribeDBClusterSnapshots", "input_obj": &rds.DescribeDBClusterSnapshotsInput{}},
1027 | {"apicall": "DescribeReservedDBInstances", "input_obj": &rds.DescribeReservedDBInstancesInput{}},
1028 | {"apicall": "DescribeDBClusterParameterGroups", "input_obj": &rds.DescribeDBClusterParameterGroupsInput{}},
1029 | {"apicall": "DescribeDBSubnetGroups", "input_obj": &rds.DescribeDBSubnetGroupsInput{}},
1030 | {"apicall": "DescribeCertificates", "input_obj": &rds.DescribeCertificatesInput{}},
1031 | {"apicall": "DescribeDBInstanceAutomatedBackups", "input_obj": &rds.DescribeDBInstanceAutomatedBackupsInput{}},
1032 | {"apicall": "DescribeDBParameterGroups", "input_obj": &rds.DescribeDBParameterGroupsInput{}},
1033 | {"apicall": "DescribeOptionGroups", "input_obj": &rds.DescribeOptionGroupsInput{}},
1034 | {"apicall": "DescribeDBClusters", "input_obj": &rds.DescribeDBClustersInput{}},
1035 | {"apicall": "DescribeReservedDBInstancesOfferings", "input_obj": &rds.DescribeReservedDBInstancesOfferingsInput{}},
1036 | {"apicall": "DescribeEventCategories", "input_obj": &rds.DescribeEventCategoriesInput{}},
1037 | {"apicall": "DescribeEventSubscriptions", "input_obj": &rds.DescribeEventSubscriptionsInput{}},
1038 | {"apicall": "DescribeDBSnapshots", "input_obj": &rds.DescribeDBSnapshotsInput{}},
1039 | {"apicall": "DescribeAccountAttributes", "input_obj": &rds.DescribeAccountAttributesInput{}},
1040 | }}
1041 |
1042 | redshift_svc := &servicemaster.ServiceMaster{
1043 | Svc: redshift.NewFromConfig(cfg),
1044 | SvcName: "redshift",
1045 | ApiCalls: []map[string]interface{}{
1046 | {"apicall": "DescribeHsmClientCertificates", "input_obj": &redshift.DescribeHsmClientCertificatesInput{}},
1047 | {"apicall": "DescribeClusterSubnetGroups", "input_obj": &redshift.DescribeClusterSubnetGroupsInput{}},
1048 | {"apicall": "DescribeTableRestoreStatus", "input_obj": &redshift.DescribeTableRestoreStatusInput{}},
1049 | {"apicall": "DescribeSnapshotSchedules", "input_obj": &redshift.DescribeSnapshotSchedulesInput{}},
1050 | {"apicall": "DescribeClusterTracks", "input_obj": &redshift.DescribeClusterTracksInput{}},
1051 | {"apicall": "DescribeClusterSecurityGroups", "input_obj": &redshift.DescribeClusterSecurityGroupsInput{}},
1052 | {"apicall": "DescribeClusters", "input_obj": &redshift.DescribeClustersInput{}},
1053 | {"apicall": "DescribeReservedNodeOfferings", "input_obj": &redshift.DescribeReservedNodeOfferingsInput{}},
1054 | {"apicall": "DescribeOrderableClusterOptions", "input_obj": &redshift.DescribeOrderableClusterOptionsInput{}},
1055 | {"apicall": "DescribeClusterDbRevisions", "input_obj": &redshift.DescribeClusterDbRevisionsInput{}},
1056 | {"apicall": "DescribeClusterParameterGroups", "input_obj": &redshift.DescribeClusterParameterGroupsInput{}},
1057 | {"apicall": "DescribeTags", "input_obj": &redshift.DescribeTagsInput{}},
1058 | {"apicall": "DescribeSnapshotCopyGrants", "input_obj": &redshift.DescribeSnapshotCopyGrantsInput{}},
1059 | {"apicall": "DescribeClusterVersions", "input_obj": &redshift.DescribeClusterVersionsInput{}},
1060 | {"apicall": "DescribeEventCategories", "input_obj": &redshift.DescribeEventCategoriesInput{}},
1061 | {"apicall": "DescribeHsmConfigurations", "input_obj": &redshift.DescribeHsmConfigurationsInput{}},
1062 | {"apicall": "DescribeReservedNodes", "input_obj": &redshift.DescribeReservedNodesInput{}},
1063 | {"apicall": "DescribeStorage", "input_obj": &redshift.DescribeStorageInput{}},
1064 | {"apicall": "DescribeEventSubscriptions", "input_obj": &redshift.DescribeEventSubscriptionsInput{}},
1065 | {"apicall": "DescribeAccountAttributes", "input_obj": &redshift.DescribeAccountAttributesInput{}},
1066 | }}
1067 |
1068 | rekognition_svc := &servicemaster.ServiceMaster{
1069 | Svc: rekognition.NewFromConfig(cfg),
1070 | SvcName: "rekognition",
1071 | ApiCalls: []map[string]interface{}{
1072 | {"apicall": "ListStreamProcessors", "input_obj": &rekognition.ListStreamProcessorsInput{}},
1073 | {"apicall": "ListCollections", "input_obj": &rekognition.ListCollectionsInput{}},
1074 | }}
1075 |
1076 | robomaker_svc := &servicemaster.ServiceMaster{
1077 | Svc: robomaker.NewFromConfig(cfg),
1078 | SvcName: "robomaker",
1079 | ApiCalls: []map[string]interface{}{
1080 | {"apicall": "ListSimulationApplications", "input_obj": &robomaker.ListSimulationApplicationsInput{}},
1081 | {"apicall": "ListSimulationJobs", "input_obj": &robomaker.ListSimulationJobsInput{}},
1082 | {"apicall": "ListRobotApplications", "input_obj": &robomaker.ListRobotApplicationsInput{}},
1083 | {"apicall": "ListRobots", "input_obj": &robomaker.ListRobotsInput{}},
1084 | {"apicall": "ListFleets", "input_obj": &robomaker.ListFleetsInput{}},
1085 | {"apicall": "ListDeploymentJobs", "input_obj": &robomaker.ListDeploymentJobsInput{}},
1086 | }}
1087 |
1088 | route53_svc := &servicemaster.ServiceMaster{
1089 | Svc: route53.NewFromConfig(cfg),
1090 | SvcName: "route53",
1091 | ApiCalls: []map[string]interface{}{
1092 | {"apicall": "GetHealthCheckCount", "input_obj": &route53.GetHealthCheckCountInput{}},
1093 | {"apicall": "GetTrafficPolicyInstanceCount", "input_obj": &route53.GetTrafficPolicyInstanceCountInput{}},
1094 | {"apicall": "ListHealthChecks", "input_obj": &route53.ListHealthChecksInput{}},
1095 | {"apicall": "ListHostedZonesByName", "input_obj": &route53.ListHostedZonesByNameInput{}},
1096 | {"apicall": "ListTrafficPolicyInstances", "input_obj": &route53.ListTrafficPolicyInstancesInput{}},
1097 | {"apicall": "ListHostedZones", "input_obj": &route53.ListHostedZonesInput{}},
1098 | {"apicall": "ListQueryLoggingConfigs", "input_obj": &route53.ListQueryLoggingConfigsInput{}},
1099 | {"apicall": "GetHostedZoneCount", "input_obj": &route53.GetHostedZoneCountInput{}},
1100 | {"apicall": "ListTrafficPolicies", "input_obj": &route53.ListTrafficPoliciesInput{}},
1101 | {"apicall": "ListReusableDelegationSets", "input_obj": &route53.ListReusableDelegationSetsInput{}},
1102 | }}
1103 |
1104 | route53domains_svc := &servicemaster.ServiceMaster{
1105 | Svc: route53domains.NewFromConfig(cfg),
1106 | SvcName: "route53domains",
1107 | ApiCalls: []map[string]interface{}{
1108 | {"apicall": "ListOperations", "input_obj": &route53domains.ListOperationsInput{}},
1109 | {"apicall": "GetContactReachabilityStatus", "input_obj": &route53domains.GetContactReachabilityStatusInput{}},
1110 | {"apicall": "ListDomains", "input_obj": &route53domains.ListDomainsInput{}},
1111 | }}
1112 |
1113 | route53resolver_svc := &servicemaster.ServiceMaster{
1114 | Svc: route53resolver.NewFromConfig(cfg),
1115 | SvcName: "route53resolver",
1116 | ApiCalls: []map[string]interface{}{
1117 | {"apicall": "ListResolverEndpoints", "input_obj": &route53resolver.ListResolverEndpointsInput{}},
1118 | {"apicall": "ListResolverRules", "input_obj": &route53resolver.ListResolverRulesInput{}},
1119 | {"apicall": "ListResolverRuleAssociations", "input_obj": &route53resolver.ListResolverRuleAssociationsInput{}},
1120 | }}
1121 |
1122 | s3_svc := &servicemaster.ServiceMaster{
1123 | Svc: s3.NewFromConfig(cfg),
1124 | SvcName: "s3",
1125 | ApiCalls: []map[string]interface{}{
1126 | {"apicall": "ListBuckets", "input_obj": &s3.ListBucketsInput{}},
1127 | }}
1128 |
1129 | sagemaker_svc := &servicemaster.ServiceMaster{
1130 | Svc: sagemaker.NewFromConfig(cfg),
1131 | SvcName: "sagemaker",
1132 | ApiCalls: []map[string]interface{}{
1133 | {"apicall": "ListWorkteams", "input_obj": &sagemaker.ListWorkteamsInput{}},
1134 | {"apicall": "ListAlgorithms", "input_obj": &sagemaker.ListAlgorithmsInput{}},
1135 | {"apicall": "ListNotebookInstanceLifecycleConfigs", "input_obj": &sagemaker.ListNotebookInstanceLifecycleConfigsInput{}},
1136 | {"apicall": "ListCodeRepositories", "input_obj": &sagemaker.ListCodeRepositoriesInput{}},
1137 | {"apicall": "ListLabelingJobs", "input_obj": &sagemaker.ListLabelingJobsInput{}},
1138 | {"apicall": "ListEndpoints", "input_obj": &sagemaker.ListEndpointsInput{}},
1139 | {"apicall": "ListEndpointConfigs", "input_obj": &sagemaker.ListEndpointConfigsInput{}},
1140 | {"apicall": "ListSubscribedWorkteams", "input_obj": &sagemaker.ListSubscribedWorkteamsInput{}},
1141 | {"apicall": "ListTransformJobs", "input_obj": &sagemaker.ListTransformJobsInput{}},
1142 | {"apicall": "ListTrainingJobs", "input_obj": &sagemaker.ListTrainingJobsInput{}},
1143 | {"apicall": "ListNotebookInstances", "input_obj": &sagemaker.ListNotebookInstancesInput{}},
1144 | {"apicall": "ListModelPackages", "input_obj": &sagemaker.ListModelPackagesInput{}},
1145 | {"apicall": "ListCompilationJobs", "input_obj": &sagemaker.ListCompilationJobsInput{}},
1146 | {"apicall": "ListModels", "input_obj": &sagemaker.ListModelsInput{}},
1147 | {"apicall": "ListHyperParameterTuningJobs", "input_obj": &sagemaker.ListHyperParameterTuningJobsInput{}},
1148 | }}
1149 |
1150 | secretsmanager_svc := &servicemaster.ServiceMaster{
1151 | Svc: secretsmanager.NewFromConfig(cfg),
1152 | SvcName: "secretsmanager",
1153 | ApiCalls: []map[string]interface{}{
1154 | {"apicall": "GetRandomPassword", "input_obj": &secretsmanager.GetRandomPasswordInput{}},
1155 | {"apicall": "ListSecrets", "input_obj": &secretsmanager.ListSecretsInput{}},
1156 | }}
1157 |
1158 | securityhub_svc := &servicemaster.ServiceMaster{
1159 | Svc: securityhub.NewFromConfig(cfg),
1160 | SvcName: "securityhub",
1161 | ApiCalls: []map[string]interface{}{
1162 | {"apicall": "ListInvitations", "input_obj": &securityhub.ListInvitationsInput{}},
1163 | {"apicall": "ListEnabledProductsForImport", "input_obj": &securityhub.ListEnabledProductsForImportInput{}},
1164 | {"apicall": "GetFindings", "input_obj": &securityhub.GetFindingsInput{}},
1165 | {"apicall": "GetInvitationsCount", "input_obj": &securityhub.GetInvitationsCountInput{}},
1166 | {"apicall": "GetEnabledStandards", "input_obj": &securityhub.GetEnabledStandardsInput{}},
1167 | {"apicall": "GetInsights", "input_obj": &securityhub.GetInsightsInput{}},
1168 | {"apicall": "GetMasterAccount", "input_obj": &securityhub.GetMasterAccountInput{}},
1169 | {"apicall": "ListMembers", "input_obj": &securityhub.ListMembersInput{}},
1170 | }}
1171 |
1172 | servicecatalog_svc := &servicemaster.ServiceMaster{
1173 | Svc: servicecatalog.NewFromConfig(cfg),
1174 | SvcName: "servicecatalog",
1175 | ApiCalls: []map[string]interface{}{
1176 | {"apicall": "ListTagOptions", "input_obj": &servicecatalog.ListTagOptionsInput{}},
1177 | {"apicall": "ListRecordHistory", "input_obj": &servicecatalog.ListRecordHistoryInput{}},
1178 | {"apicall": "ListProvisionedProductPlans", "input_obj": &servicecatalog.ListProvisionedProductPlansInput{}},
1179 | {"apicall": "ListServiceActions", "input_obj": &servicecatalog.ListServiceActionsInput{}},
1180 | {"apicall": "ListPortfolios", "input_obj": &servicecatalog.ListPortfoliosInput{}},
1181 | {"apicall": "ListAcceptedPortfolioShares", "input_obj": &servicecatalog.ListAcceptedPortfolioSharesInput{}},
1182 | {"apicall": "GetAWSOrganizationsAccessStatus", "input_obj": &servicecatalog.GetAWSOrganizationsAccessStatusInput{}},
1183 | }}
1184 |
1185 | shield_svc := &servicemaster.ServiceMaster{
1186 | Svc: shield.NewFromConfig(cfg),
1187 | SvcName: "shield",
1188 | ApiCalls: []map[string]interface{}{
1189 | {"apicall": "DescribeEmergencyContactSettings", "input_obj": &shield.DescribeEmergencyContactSettingsInput{}},
1190 | {"apicall": "DescribeDRTAccess", "input_obj": &shield.DescribeDRTAccessInput{}},
1191 | {"apicall": "ListAttacks", "input_obj": &shield.ListAttacksInput{}},
1192 | {"apicall": "ListProtections", "input_obj": &shield.ListProtectionsInput{}},
1193 | {"apicall": "GetSubscriptionState", "input_obj": &shield.GetSubscriptionStateInput{}},
1194 | {"apicall": "DescribeProtection", "input_obj": &shield.DescribeProtectionInput{}},
1195 | {"apicall": "DescribeSubscription", "input_obj": &shield.DescribeSubscriptionInput{}},
1196 | }}
1197 |
1198 | signer_svc := &servicemaster.ServiceMaster{
1199 | Svc: signer.NewFromConfig(cfg),
1200 | SvcName: "signer",
1201 | ApiCalls: []map[string]interface{}{
1202 | {"apicall": "ListSigningPlatforms", "input_obj": &signer.ListSigningPlatformsInput{}},
1203 | {"apicall": "ListSigningProfiles", "input_obj": &signer.ListSigningProfilesInput{}},
1204 | {"apicall": "ListSigningJobs", "input_obj": &signer.ListSigningJobsInput{}},
1205 | }}
1206 |
1207 | sms_svc := &servicemaster.ServiceMaster{
1208 | Svc: sms.NewFromConfig(cfg),
1209 | SvcName: "sms",
1210 | ApiCalls: []map[string]interface{}{
1211 | {"apicall": "GetAppReplicationConfiguration", "input_obj": &sms.GetAppReplicationConfigurationInput{}},
1212 | {"apicall": "GetAppLaunchConfiguration", "input_obj": &sms.GetAppLaunchConfigurationInput{}},
1213 | {"apicall": "ListApps", "input_obj": &sms.ListAppsInput{}},
1214 | {"apicall": "GetReplicationJobs", "input_obj": &sms.GetReplicationJobsInput{}},
1215 | {"apicall": "GetApp", "input_obj": &sms.GetAppInput{}},
1216 | {"apicall": "GetServers", "input_obj": &sms.GetServersInput{}},
1217 | {"apicall": "GetConnectors", "input_obj": &sms.GetConnectorsInput{}},
1218 | }}
1219 |
1220 | snowball_svc := &servicemaster.ServiceMaster{
1221 | Svc: snowball.NewFromConfig(cfg),
1222 | SvcName: "snowball",
1223 | ApiCalls: []map[string]interface{}{
1224 | {"apicall": "ListCompatibleImages", "input_obj": &snowball.ListCompatibleImagesInput{}},
1225 | {"apicall": "ListClusters", "input_obj": &snowball.ListClustersInput{}},
1226 | {"apicall": "ListJobs", "input_obj": &snowball.ListJobsInput{}},
1227 | {"apicall": "GetSnowballUsage", "input_obj": &snowball.GetSnowballUsageInput{}},
1228 | {"apicall": "DescribeAddresses", "input_obj": &snowball.DescribeAddressesInput{}},
1229 | }}
1230 |
1231 | sns_svc := &servicemaster.ServiceMaster{
1232 | Svc: sns.NewFromConfig(cfg),
1233 | SvcName: "sns",
1234 | ApiCalls: []map[string]interface{}{
1235 | {"apicall": "GetSMSAttributes", "input_obj": &sns.GetSMSAttributesInput{}},
1236 | {"apicall": "ListPhoneNumbersOptedOut", "input_obj": &sns.ListPhoneNumbersOptedOutInput{}},
1237 | {"apicall": "ListTopics", "input_obj": &sns.ListTopicsInput{}},
1238 | {"apicall": "ListPlatformApplications", "input_obj": &sns.ListPlatformApplicationsInput{}},
1239 | {"apicall": "ListSubscriptions", "input_obj": &sns.ListSubscriptionsInput{}},
1240 | }}
1241 |
1242 | sqs_svc := &servicemaster.ServiceMaster{
1243 | Svc: sqs.NewFromConfig(cfg),
1244 | SvcName: "sqs",
1245 | ApiCalls: []map[string]interface{}{
1246 | {"apicall": "ListQueues", "input_obj": &sqs.ListQueuesInput{}},
1247 | }}
1248 |
1249 | ssm_svc := &servicemaster.ServiceMaster{
1250 | Svc: ssm.NewFromConfig(cfg),
1251 | SvcName: "ssm",
1252 | ApiCalls: []map[string]interface{}{
1253 | {"apicall": "ListCommands", "input_obj": &ssm.ListCommandsInput{}},
1254 | {"apicall": "ListResourceComplianceSummaries", "input_obj": &ssm.ListResourceComplianceSummariesInput{}},
1255 | {"apicall": "DescribeAvailablePatches", "input_obj": &ssm.DescribeAvailablePatchesInput{}},
1256 | {"apicall": "GetInventorySchema", "input_obj": &ssm.GetInventorySchemaInput{}},
1257 | {"apicall": "ListComplianceSummaries", "input_obj": &ssm.ListComplianceSummariesInput{}},
1258 | {"apicall": "DescribeAssociation", "input_obj": &ssm.DescribeAssociationInput{}},
1259 | {"apicall": "DescribeActivations", "input_obj": &ssm.DescribeActivationsInput{}},
1260 | {"apicall": "ListResourceDataSync", "input_obj": &ssm.ListResourceDataSyncInput{}},
1261 | {"apicall": "DescribeMaintenanceWindows", "input_obj": &ssm.DescribeMaintenanceWindowsInput{}},
1262 | {"apicall": "DescribeMaintenanceWindowSchedule", "input_obj": &ssm.DescribeMaintenanceWindowScheduleInput{}},
1263 | {"apicall": "DescribePatchBaselines", "input_obj": &ssm.DescribePatchBaselinesInput{}},
1264 | {"apicall": "DescribePatchGroups", "input_obj": &ssm.DescribePatchGroupsInput{}},
1265 | {"apicall": "ListComplianceItems", "input_obj": &ssm.ListComplianceItemsInput{}},
1266 | {"apicall": "GetDefaultPatchBaseline", "input_obj": &ssm.GetDefaultPatchBaselineInput{}},
1267 | {"apicall": "DescribeInventoryDeletions", "input_obj": &ssm.DescribeInventoryDeletionsInput{}},
1268 | {"apicall": "ListCommandInvocations", "input_obj": &ssm.ListCommandInvocationsInput{}},
1269 | }}
1270 |
1271 | storagegateway_svc := &servicemaster.ServiceMaster{
1272 | Svc: storagegateway.NewFromConfig(cfg),
1273 | SvcName: "storagegateway",
1274 | ApiCalls: []map[string]interface{}{
1275 | {"apicall": "ListVolumes", "input_obj": &storagegateway.ListVolumesInput{}},
1276 | {"apicall": "ListGateways", "input_obj": &storagegateway.ListGatewaysInput{}},
1277 | {"apicall": "DescribeTapeArchives", "input_obj": &storagegateway.DescribeTapeArchivesInput{}},
1278 | {"apicall": "ListFileShares", "input_obj": &storagegateway.ListFileSharesInput{}},
1279 | {"apicall": "ListTapes", "input_obj": &storagegateway.ListTapesInput{}},
1280 | }}
1281 |
1282 | sts_svc := &servicemaster.ServiceMaster{
1283 | Svc: sts.NewFromConfig(cfg),
1284 | SvcName: "sts",
1285 | ApiCalls: []map[string]interface{}{
1286 | {"apicall": "GetSessionToken", "input_obj": &sts.GetSessionTokenInput{}},
1287 | {"apicall": "GetCallerIdentity", "input_obj": &sts.GetCallerIdentityInput{}},
1288 | }}
1289 |
1290 | support_svc := &servicemaster.ServiceMaster{
1291 | Svc: support.NewFromConfig(cfg),
1292 | SvcName: "support",
1293 | ApiCalls: []map[string]interface{}{
1294 | {"apicall": "DescribeServices", "input_obj": &support.DescribeServicesInput{}},
1295 | {"apicall": "DescribeSeverityLevels", "input_obj": &support.DescribeSeverityLevelsInput{}},
1296 | {"apicall": "DescribeCases", "input_obj": &support.DescribeCasesInput{}},
1297 | }}
1298 |
1299 | transcribe_svc := &servicemaster.ServiceMaster{
1300 | Svc: transcribe.NewFromConfig(cfg),
1301 | SvcName: "transcribe",
1302 | ApiCalls: []map[string]interface{}{
1303 | {"apicall": "ListTranscriptionJobs", "input_obj": &transcribe.ListTranscriptionJobsInput{}},
1304 | {"apicall": "ListVocabularies", "input_obj": &transcribe.ListVocabulariesInput{}},
1305 | }}
1306 |
1307 | transfer_svc := &servicemaster.ServiceMaster{
1308 | Svc: transfer.NewFromConfig(cfg),
1309 | SvcName: "transfer",
1310 | ApiCalls: []map[string]interface{}{
1311 | {"apicall": "ListServers", "input_obj": &transfer.ListServersInput{}},
1312 | }}
1313 |
1314 | translate_svc := &servicemaster.ServiceMaster{
1315 | Svc: translate.NewFromConfig(cfg),
1316 | SvcName: "translate",
1317 | ApiCalls: []map[string]interface{}{
1318 | {"apicall": "ListTerminologies", "input_obj": &translate.ListTerminologiesInput{}},
1319 | }}
1320 |
1321 | waf_svc := &servicemaster.ServiceMaster{
1322 | Svc: waf.NewFromConfig(cfg),
1323 | SvcName: "waf",
1324 | ApiCalls: []map[string]interface{}{
1325 | {"apicall": "ListIPSets", "input_obj": &waf.ListIPSetsInput{}},
1326 | {"apicall": "ListByteMatchSets", "input_obj": &waf.ListByteMatchSetsInput{}},
1327 | {"apicall": "ListRegexMatchSets", "input_obj": &waf.ListRegexMatchSetsInput{}},
1328 | {"apicall": "GetChangeToken", "input_obj": &waf.GetChangeTokenInput{}},
1329 | {"apicall": "ListXssMatchSets", "input_obj": &waf.ListXssMatchSetsInput{}},
1330 | {"apicall": "ListGeoMatchSets", "input_obj": &waf.ListGeoMatchSetsInput{}},
1331 | {"apicall": "ListRateBasedRules", "input_obj": &waf.ListRateBasedRulesInput{}},
1332 | {"apicall": "ListRuleGroups", "input_obj": &waf.ListRuleGroupsInput{}},
1333 | {"apicall": "ListRegexPatternSets", "input_obj": &waf.ListRegexPatternSetsInput{}},
1334 | {"apicall": "ListRules", "input_obj": &waf.ListRulesInput{}},
1335 | {"apicall": "ListSizeConstraintSets", "input_obj": &waf.ListSizeConstraintSetsInput{}},
1336 | {"apicall": "ListLoggingConfigurations", "input_obj": &waf.ListLoggingConfigurationsInput{}},
1337 | {"apicall": "ListActivatedRulesInRuleGroup", "input_obj": &waf.ListActivatedRulesInRuleGroupInput{}},
1338 | {"apicall": "ListSubscribedRuleGroups", "input_obj": &waf.ListSubscribedRuleGroupsInput{}},
1339 | {"apicall": "ListSqlInjectionMatchSets", "input_obj": &waf.ListSqlInjectionMatchSetsInput{}},
1340 | }}
1341 |
1342 | workdocs_svc := &servicemaster.ServiceMaster{
1343 | Svc: workdocs.NewFromConfig(cfg),
1344 | SvcName: "workdocs",
1345 | ApiCalls: []map[string]interface{}{
1346 | {"apicall": "DescribeActivities", "input_obj": &workdocs.DescribeActivitiesInput{}},
1347 | {"apicall": "DescribeUsers", "input_obj": &workdocs.DescribeUsersInput{}},
1348 | {"apicall": "GetResources", "input_obj": &workdocs.GetResourcesInput{}},
1349 | }}
1350 |
1351 | worklink_svc := &servicemaster.ServiceMaster{
1352 | Svc: worklink.NewFromConfig(cfg),
1353 | SvcName: "worklink",
1354 | ApiCalls: []map[string]interface{}{
1355 | {"apicall": "ListFleets", "input_obj": &worklink.ListFleetsInput{}},
1356 | }}
1357 |
1358 | workmail_svc := &servicemaster.ServiceMaster{
1359 | Svc: workmail.NewFromConfig(cfg),
1360 | SvcName: "workmail",
1361 | ApiCalls: []map[string]interface{}{
1362 | {"apicall": "ListOrganizations", "input_obj": &workmail.ListOrganizationsInput{}},
1363 | }}
1364 |
1365 | workspaces_svc := &servicemaster.ServiceMaster{
1366 | Svc: workspaces.NewFromConfig(cfg),
1367 | SvcName: "workspaces",
1368 | ApiCalls: []map[string]interface{}{
1369 | {"apicall": "DescribeWorkspacesConnectionStatus", "input_obj": &workspaces.DescribeWorkspacesConnectionStatusInput{}},
1370 | {"apicall": "DescribeWorkspaceDirectories", "input_obj": &workspaces.DescribeWorkspaceDirectoriesInput{}},
1371 | {"apicall": "DescribeWorkspaceBundles", "input_obj": &workspaces.DescribeWorkspaceBundlesInput{}},
1372 | {"apicall": "DescribeIpGroups", "input_obj": &workspaces.DescribeIpGroupsInput{}},
1373 | {"apicall": "DescribeAccountModifications", "input_obj": &workspaces.DescribeAccountModificationsInput{}},
1374 | {"apicall": "DescribeWorkspaces", "input_obj": &workspaces.DescribeWorkspacesInput{}},
1375 | {"apicall": "DescribeAccount", "input_obj": &workspaces.DescribeAccountInput{}},
1376 | {"apicall": "DescribeWorkspaceImages", "input_obj": &workspaces.DescribeWorkspaceImagesInput{}},
1377 | }}
1378 |
1379 | xray_svc := &servicemaster.ServiceMaster{
1380 | Svc: xray.NewFromConfig(cfg),
1381 | SvcName: "xray",
1382 | ApiCalls: []map[string]interface{}{
1383 | {"apicall": "GetSamplingRules", "input_obj": &xray.GetSamplingRulesInput{}},
1384 | {"apicall": "GetGroups", "input_obj": &xray.GetGroupsInput{}},
1385 | {"apicall": "GetSamplingStatisticSummaries", "input_obj": &xray.GetSamplingStatisticSummariesInput{}},
1386 | {"apicall": "GetEncryptionConfig", "input_obj": &xray.GetEncryptionConfigInput{}},
1387 | {"apicall": "GetGroup", "input_obj": &xray.GetGroupInput{}},
1388 | }}
1389 |
1390 | services := []servicemaster.ServiceMaster{*acm_svc, *amplify_svc, *apigateway_svc, *appmesh_svc, *appsync_svc, *athena_svc, *autoscaling_svc, *backup_svc, *batch_svc, *chime_svc, *cloud9_svc, *clouddirectory_svc, *cloudformation_svc, *cloudfront_svc, *cloudhsm_svc, *cloudhsmv2_svc, *cloudsearch_svc, *cloudtrail_svc, *codebuild_svc, *codecommit_svc, *codedeploy_svc, *codepipeline_svc, *codestar_svc, *comprehend_svc, *datapipeline_svc, *datasync_svc, *dax_svc, *devicefarm_svc, *directconnect_svc, *dlm_svc, *dynamodb_svc, *ec2_svc, *ecr_svc, *ecs_svc, *eks_svc, *elasticache_svc, *elasticbeanstalk_svc, *elastictranscoder_svc, *firehose_svc, *fms_svc, *fsx_svc, *gamelift_svc, *globalaccelerator_svc, *glue_svc, *greengrass_svc, *guardduty_svc, *health_svc, *iam_svc, *inspector_svc, *iot_svc, *iotanalytics_svc, *kafka_svc, *kinesis_svc, *kinesisanalytics_svc, *kinesisvideo_svc, *kms_svc, *lambda_svc, *lightsail_svc, *machinelearning_svc, *macie_svc, *mediaconnect_svc, *mediaconvert_svc, *medialive_svc, *mediapackage_svc, *mediastore_svc, *mediatailor_svc, *mobile_svc, *mq_svc, *opsworks_svc, *organizations_svc, *pinpoint_svc, *polly_svc, *pricing_svc, *ram_svc, *rds_svc, *redshift_svc, *rekognition_svc, *robomaker_svc, *route53_svc, *route53domains_svc, *route53resolver_svc, *s3_svc, *sagemaker_svc, *secretsmanager_svc, *securityhub_svc, *servicecatalog_svc, *shield_svc, *signer_svc, *sms_svc, *snowball_svc, *sns_svc, *sqs_svc, *ssm_svc, *storagegateway_svc, *sts_svc, *support_svc, *transcribe_svc, *transfer_svc, *translate_svc, *waf_svc, *workdocs_svc, *worklink_svc, *workmail_svc, *workspaces_svc, *xray_svc}
1391 |
1392 | return services
1393 | }
1394 |
--------------------------------------------------------------------------------
/utils/utils.go:
--------------------------------------------------------------------------------
1 | package utils
2 |
3 | import (
4 | "bytes"
5 | "encoding/json"
6 | "fmt"
7 | "io/ioutil"
8 | "os"
9 | "reflect"
10 | "strings"
11 |
12 | "github.com/fatih/color"
13 | "github.com/joho/godotenv"
14 | terminal "github.com/wayneashleyberry/terminal-dimensions"
15 | )
16 |
17 | const FILEPATH string = "./enum-results/"
18 | const ERROR_FILEPATH string = "./enum-results/errors/"
19 |
20 | // Colors
21 | var Yellow = color.New(color.FgYellow).SprintFunc()
22 | var Red = color.New(color.FgRed).SprintFunc()
23 | var White = color.New(color.FgWhite).SprintFunc()
24 | var Cyan = color.New(color.FgCyan).SprintFunc()
25 | var Green = color.New(color.FgGreen).SprintFunc()
26 | var Magenta = color.New(color.FgMagenta).SprintFunc()
27 |
28 | func countPartWidth(terminal_width, service int) (n int) {
29 | if terminal_width%2 == 0 {
30 | if service%2 == 0 {
31 | n = (int(terminal_width) - service - 2) / 2
32 | } else {
33 | n = (int(terminal_width) - service - 2 - 1) / 2
34 | }
35 | } else {
36 | if service%2 == 0 {
37 | n = (int(terminal_width) - service - 2 - 1) / 2
38 | } else {
39 | n = (int(terminal_width) - service - 2) / 2
40 | }
41 | }
42 | return n
43 | }
44 |
45 | func PrintDividedLine(service string) {
46 |
47 | terminal_width, _ := terminal.Width()
48 | n := countPartWidth(int(terminal_width), len(service))
49 |
50 | fmt.Println()
51 | if service == "" {
52 | fmt.Println(White(strings.Repeat("-", int(terminal_width))))
53 | } else {
54 | fmt.Println(White(strings.Repeat("-", n)), Magenta(strings.ToUpper(service)), White(strings.Repeat("-", n)))
55 | }
56 | }
57 |
58 | func ProcessServiceArgument(str string) []string {
59 |
60 | s := strings.Split(str, ",")
61 |
62 | if len(s) > 10 {
63 | fmt.Println(Red("Error:"), Yellow("Provide less than 10 services or specify `all` for total enumeration"))
64 | os.Exit(1)
65 | } else if len(s) <= 0 {
66 | fmt.Println(Red("Error:"), Yellow("Provide at least 1 service or specify `all` for total enumeration"))
67 | os.Exit(1)
68 | }
69 |
70 | s = ToLowerServices(s)
71 | s = RemoveDuplicateValues(s)
72 | return s
73 | }
74 |
75 | func ServiceNames() []string {
76 | service_names := []string{"acm", "amplify", "apigateway", "appmesh", "appsync", "athena", "autoscaling", "backup", "batch", "chime", "cloud9", "clouddirectory", "cloudformation", "cloudfront", "cloudhsm", "cloudhsmv2", "cloudsearch", "cloudtrail", "codebuild", "codecommit", "codedeploy", "codepipeline", "codestar", "comprehend", "datapipeline", "datasync", "dax", "devicefarm", "directconnect", "dlm", "dynamodb", "ec2", "ecr", "ecs", "eks", "elasticache", "elasticbeanstalk", "elastictranscoder", "firehose", "fms", "fsx", "gamelift", "globalaccelerator", "glue", "greengrass", "guardduty", "health", "iam", "inspector", "iot", "iotanalytics", "kafka", "kinesis", "kinesisanalytics", "kinesisvideo", "kms", "lambda", "lightsail", "machinelearning", "macie", "mediaconnect", "mediaconvert", "medialive", "mediapackage", "mediastore", "mediatailor", "mobile", "mq", "opsworks", "organizations", "pinpoint", "polly", "pricing", "ram", "rds", "redshift", "rekognition", "robomaker", "route53", "route53domains", "route53resolver", "s3", "sagemaker", "secretsmanager", "securityhub", "servicecatalog", "shield", "signer", "sms", "snowball", "sns", "sqs", "ssm", "storagegateway", "sts", "support", "transcribe", "transfer", "translate", "waf", "workdocs", "worklink", "workmail", "workspaces", "xray"}
77 | return service_names
78 | }
79 |
80 | func Find(a []string, x string) bool {
81 | for _, n := range a {
82 | if x == n {
83 | return true
84 | }
85 | }
86 | return false
87 | }
88 |
89 | func RemoveDuplicateValues(intSlice []string) []string {
90 | keys := make(map[string]bool)
91 | list := []string{}
92 |
93 | // If the key(values of the slice) is not equal
94 | // to the already present value in new slice (list)
95 | // then we append it. else we jump on another element.
96 | for _, entry := range intSlice {
97 | if _, value := keys[entry]; !value {
98 | keys[entry] = true
99 | list = append(list, entry)
100 | }
101 | }
102 | return list
103 | }
104 |
105 | func ToLowerServices(a []string) (services_lowercase []string) {
106 | for _, n := range a {
107 | services_lowercase = append(services_lowercase, strings.ToLower(n))
108 | }
109 | return services_lowercase
110 | }
111 |
112 | func CheckEnvFileExistance() bool {
113 | if _, err := os.Stat(".env"); err != nil {
114 | if os.IsNotExist(err) {
115 | fmt.Println(Red("Error:"), Yellow("File .env does not exist"))
116 | fmt.Println(Green("Fix:"), Yellow("use `./cloudrider cred -h` command"))
117 | //fmt.Println(Red("Trace:"), Yellow(err))
118 | os.Exit(1)
119 | return false
120 | }
121 | }
122 | return true
123 | }
124 |
125 | func CheckFileExistance(path string) bool {
126 | if _, err := os.Stat(path); err != nil {
127 | if os.IsNotExist(err) {
128 | fmt.Println(Red("Error:"), Yellow("File"), Yellow(path), Yellow("does not exist"))
129 | fmt.Println(Green("Fix:"), Yellow("DB does not exist, skip this service"))
130 | //fmt.Println(Red("Trace:"), Yellow(err))
131 | return false
132 | }
133 | }
134 | return true
135 | }
136 |
137 | func LoadEnv() {
138 | err := godotenv.Load(".env")
139 | if err != nil {
140 | fmt.Println(Red("Error:"), Yellow("loading `.env` file"))
141 | os.Exit(1)
142 | }
143 | }
144 |
145 | func PackResponse(response interface{}) string {
146 | obj, err := json.Marshal(response)
147 | if err != nil {
148 | fmt.Println(Red("Error:"), Yellow("Marshal error, can't create a map:"))
149 | fmt.Println(Green("Fix:"), Yellow("The problem should be on our side, contact support please"))
150 | fmt.Println(Red("Trace:"), Yellow(err))
151 | os.Exit(1)
152 | }
153 | return string(obj)
154 | }
155 |
156 | func PrintPrettifiedJson(to_prettify string) (string, error) {
157 | var prettified bytes.Buffer
158 | err := json.Indent(&prettified, []byte(to_prettify), "", "\t")
159 |
160 | if err != nil {
161 | return "", err
162 | }
163 |
164 | return prettified.String(), err
165 | }
166 |
167 | func GetJsonKey(m string) (key interface{}) {
168 | var l map[string]interface{}
169 | json.Unmarshal([]byte(m), &l)
170 |
171 | p := reflect.ValueOf(l).MapRange()
172 |
173 | for p.Next() {
174 |
175 | key = reflect.ValueOf(p.Key()).Interface()
176 |
177 | }
178 | return key
179 | }
180 |
181 | func GetJsonFromFile(filepath string) (result map[string]interface{}) {
182 | jsonFile, _ := os.Open(filepath)
183 | byteValue, _ := ioutil.ReadAll(jsonFile)
184 |
185 | err := json.Unmarshal(byteValue, &result)
186 | if err != nil {
187 | fmt.Println(Red("Error:"), Yellow("UnMarshal error, can't recreate an object"))
188 | fmt.Println(Green("Fix:"), Yellow("The problem should be on our side, contact support please"))
189 | fmt.Println(Red("Trace:"), Yellow(err))
190 | }
191 |
192 | return result
193 | }
194 |
195 | func AnalyseService(service string, print bool, filter string, errors_dump bool) {
196 |
197 | // Error or result analyse
198 | var filepath string
199 | if !errors_dump {
200 | filepath = FILEPATH + service + ".json"
201 | } else {
202 | filepath = ERROR_FILEPATH + service + "_errors.json"
203 | }
204 |
205 | // Display
206 | PrintDividedLine(strings.ToUpper(service))
207 | fmt.Println("")
208 |
209 | // Check the file existance
210 | if CheckFileExistance(filepath) {
211 |
212 | // dump service db_file
213 | result := GetJsonFromFile(filepath)
214 |
215 | // check whether any info was stored
216 | if len(result) == 0 {
217 | fmt.Println(Red("Error:"), Yellow("No entries in provided service"))
218 | } else {
219 | s := reflect.ValueOf(result[service])
220 |
221 | // go through apicalls
222 | for i := 0; i < s.Len(); i++ {
223 |
224 | m := s.Index(i).Interface().(string)
225 | key := fmt.Sprintf("%v", GetJsonKey(m))
226 | if strings.Contains(key, filter) {
227 |
228 | // Display key
229 | fmt.Println(Cyan(key))
230 |
231 | if print {
232 |
233 | json, err := PrintPrettifiedJson(m)
234 | if err != nil {
235 | fmt.Println(err)
236 | }
237 |
238 | // Display
239 | fmt.Println(White(json))
240 | PrintDividedLine("")
241 | fmt.Println("")
242 | }
243 | }
244 | }
245 | }
246 |
247 | }
248 | }
249 |
250 | func CreateAWScredentialsFile(aws_region, aws_access_key_id, aws_secret_access_key, aws_session_token *string) {
251 |
252 | awsCredentials := "AWS_REGION=" + *aws_region + "\n"
253 | awsCredentials += "AWS_ACCESS_KEY_ID=" + *aws_access_key_id + "\n"
254 | awsCredentials += "AWS_SECRET_ACCESS_KEY=" + *aws_secret_access_key + "\n"
255 | awsCredentials += "AWS_SESSION_TOKEN=" + *aws_session_token + "\n"
256 |
257 | ioutil.WriteFile(".env", []byte(awsCredentials), 0644)
258 | }
259 |
260 | // func LoadAWSCreds() {
261 | // ioutil.ReadFile()
262 | // }
263 |
--------------------------------------------------------------------------------