├── .gitignore
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── grammars
└── generated-policy.cson
├── lib
├── Gemfile
├── Gemfile.lock
├── generate-grammars.rb
├── policy.cson
└── snippets.cson
├── package.json
├── policy.gif
├── settings
└── language-policy.cson
├── snippets
└── generated-snippets.cson
└── spec
├── policy.json
├── reference.json
└── reference.policy.json
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | npm-debug.log
3 | node_modules
4 | lib/policies.js
5 | lib/service_map.json
6 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## 0.0.1 - First Release
2 | * It works!
3 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2016 Rob Witoff
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Atom IDE IAM Policy Syntax Highlighting
2 |
3 | Action aware syntax highlighting and snippets for AWS IAM Policies in the Atom IDE.
4 |
5 |
6 |
7 | **Features:**
8 | * **Strict Syntax Highlighting** - discover errors early with the [IAM EBNF](http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html#po)
9 | * **Block Snippets** Autogenerate `Id`, `Version` and `Statement`
10 | * **Action Snippets** Never miss an action again across all _86_ services e.g.:
11 | * `logs:` autocompletes to all cloudwatch logs actions
12 | * `xray:` autocompletes to all xray logs actions
13 | * **Condition Snippets** better scope your policies e.g.
14 | * `IpAddress`
15 | * `IpAddressIfExists`
16 | * **Autogenerated Grammars** This grammar autoscales with AWS!
17 |
18 | ## Development Notes
19 |
20 | **Generating Grammars**
21 |
22 | Because AWS Services and available actions change often, so too must our grammar. We autogenerate the grammar with the provided script
23 |
24 | ```bash
25 | cd ./lib
26 | bundle install
27 | bundle exec generate-grammars.rb
28 | ```
29 |
30 | **Extracting The Service map**
31 | * The service map is extracted from the [AWS Policy Generator](https://awspolicygen.s3.amazonaws.com/policygen.html) which stores a javascript object of all service information in the [policies.js file](https://awsiamconsole.s3.amazonaws.com/iam/assets/js/bundles/policies.js).
32 | * This object can also be accessed from within the developer console of the policy generated via: `app.PolicyEditorConfig.serviceMap`
33 |
34 | **Atom Grammar Development**
35 | * ⌘+⌥+p -- show current scope
36 | * ⌘+⇧+p -> Window: Reload -- needed to reprocess your changes
37 | * `apm link $SYNTAX_FOLDER` -- install a syntax repo into atom
38 |
39 | **Publishing Atom Package**
40 |
41 | ```shell
42 | apm publish patch|minor|major
43 | ```
44 |
45 | ## Resources
46 |
47 | Resources:
48 | * [IAM Policy Generator](https://awsiamconsole.s3.amazonaws.com/iam/assets/js/bundles/policies.js)
49 | * [IAM Grammar](http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_grammar.html#policies-grammar-bnf)
50 | * [TextMate Grammar Docs](http://manual.macromates.com/en/language_grammars)
51 | * [Writing a Syntax Highlighting Package](https://www.sitepoint.com/how-to-write-a-syntax-highlighting-package-for-atom/)
52 |
53 | Thanks:
54 | * The Atom Team and [Lee Dohm](https://github.com/lee-dohm) for building [great templates](https://github.com/atom/language-json)
55 |
--------------------------------------------------------------------------------
/grammars/generated-policy.cson:
--------------------------------------------------------------------------------
1 | 'scopeName': 'policy.json'
2 | 'fileTypes': [
3 | 'policy'
4 | 'policy.json'
5 | 'iam'
6 | 'iam.json'
7 | ]
8 | 'name': 'policy'
9 | 'patterns': [
10 | { 'include': '#policy' }
11 | ]
12 | 'repository':
13 | 'policy':
14 | 'begin': '\\{'
15 | 'beginCaptures':
16 | '0':
17 | 'name': 'punctuation.definition.dictionary.begin.json'
18 | 'end': '\\}'
19 | 'endCaptures':
20 | '0':
21 | 'name': 'punctuation.definition.dictionary.end.json'
22 | 'name': 'meta.structure.dictionary.json'
23 | 'patterns': [
24 | { 'include': '#id_block' }
25 | { 'include': '#version_block' }
26 | { 'include': '#statement_block' }
27 | {
28 | 'match': '[^\\s\\n]'
29 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
30 | }
31 | ]
32 | 'id_block':
33 | 'begin': '(?i:"id")'
34 | 'beginCaptures':
35 | '0':
36 | 'name': 'punctuation.definition.string.begin.json'
37 | 'end': '(,)|(?=\\})'
38 | 'endCaptures':
39 | '0':
40 | 'name': 'punctuation.definition.string.end.json'
41 | 'name': 'string.quoted.double.json'
42 | 'patterns': [
43 | {
44 | 'begin': ':'
45 | 'beginCaptures':
46 | '0':
47 | 'name': 'punctuation.separator.dictionary.key-value.json'
48 | 'end': '(?=,)|(?=\\})'
49 | 'endCaptures':
50 | '0':
51 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
52 | 'name': 'string.quoted.double.json'
53 | 'patterns': [
54 | {
55 | 'match': '"[a-zA-Z0-9\\-_]*"'
56 | 'name': 'entity.other.attribute-name'
57 | }
58 | {
59 | 'match': '[^\\s\\n]'
60 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
61 | }
62 | ]
63 | }
64 | ]
65 | 'version_block':
66 | 'begin': '(?i:"version")'
67 | 'beginCaptures':
68 | '0':
69 | 'name': 'punctuation.definition.string.begin.json'
70 | 'end': '(,)|(?=\\})'
71 | 'endCaptures':
72 | '0':
73 | 'name': 'punctuation.definition.string.end.json'
74 | 'name': 'string.quoted.double.json'
75 | 'patterns': [
76 | {
77 | 'begin': ':'
78 | 'beginCaptures':
79 | '0':
80 | 'name': 'punctuation.separator.dictionary.key-value.json'
81 | 'end': '(?=,)|(?=\\})'
82 | 'endCaptures':
83 | '0':
84 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
85 | 'name': 'string.quoted.double.json'
86 | 'patterns': [
87 | {
88 | 'match': '("2008-10-17"|"2012-10-17")'
89 | 'name': 'entity.other.attribute-name'
90 | }
91 | {
92 | 'match': '[^\\s\\n]'
93 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
94 | }
95 | ]
96 | }
97 | ]
98 | 'statement_block':
99 | 'begin': '(?i:"statement")'
100 | 'beginCaptures':
101 | '0':
102 | 'name': 'punctuation.definition.string.begin.json'
103 | 'end': '(,)|(?=\\})'
104 | 'endCaptures':
105 | '0':
106 | 'name': 'punctuation.definition.string.end.json'
107 | 'name': 'string.quoted.double.json'
108 | 'patterns': [
109 | {
110 | 'begin': ':'
111 | 'beginCaptures':
112 | '0':
113 | 'name': 'punctuation.separator.dictionary.key-value.json'
114 | 'end': '(?=,)|(?=\\})'
115 | 'endCaptures':
116 | '0':
117 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
118 | 'name': 'string.quoted.double.json'
119 | 'patterns': [
120 | { 'include': '#statement_array' }
121 | ]
122 | }
123 | ]
124 | 'statement_array':
125 | 'begin': '\\['
126 | 'beginCaptures':
127 | '0':
128 | 'name': 'punctuation.definition.array.begin.json'
129 | 'end': '(,?)[\\s\\n]*(\\])'
130 | 'endCaptures':
131 | '1':
132 | 'name': 'invalid.illegal.trailing-array-separator.json'
133 | '2':
134 | 'name': 'punctuation.definition.array.end.json'
135 | 'name': 'meta.structure.array.json'
136 | 'patterns': [
137 | { 'include': '#statement' }
138 | {
139 | 'match': ','
140 | 'name': 'punctuation.separator.array.json'
141 | }
142 | { 'include': '#error' }
143 | ]
144 | 'statement':
145 | 'begin': '\\{'
146 | 'beginCaptures':
147 | '0':
148 | 'name': 'punctuation.definition.dictionary.begin.json'
149 | 'end': '\\}'
150 | 'endCaptures':
151 | '0':
152 | 'name': 'punctuation.definition.dictionary.end.json'
153 | 'name': 'meta.structure.dictionary.json'
154 | 'patterns': [
155 | { 'include': '#sid_block' }
156 | { 'include': '#effect_block' }
157 | { 'include': '#principal_block' }
158 | { 'include': '#action_block' }
159 | { 'include': '#resource_block' }
160 | { 'include': '#condition_block' }
161 | {
162 | 'match': '[^\\s\\n]'
163 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
164 | }
165 | ]
166 | 'sid_block':
167 | 'begin': '(?i:"sid")'
168 | 'beginCaptures':
169 | '0':
170 | 'name': 'punctuation.definition.string.begin.json'
171 | 'end': '(,)|(?=\\})'
172 | 'endCaptures':
173 | '0':
174 | 'name': 'punctuation.definition.string.end.json'
175 | 'name': 'string.quoted.double.json'
176 | 'patterns': [
177 | {
178 | 'begin': ':'
179 | 'beginCaptures':
180 | '0':
181 | 'name': 'punctuation.separator.dictionary.key-value.json'
182 | 'end': '(?=,)|(?=\\})'
183 | 'endCaptures':
184 | '0':
185 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
186 | 'name': 'string.quoted.double.json'
187 | 'patterns': [
188 | {
189 | 'match': '"[a-zA-Z0-9]*"'
190 | 'name': 'entity.other.attribute-name'
191 | }
192 | {
193 | 'match': '[^\\s\\n]'
194 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
195 | }
196 | ]
197 | }
198 | ]
199 | 'effect_block':
200 | 'begin': '(?i:"effect")'
201 | 'beginCaptures':
202 | '0':
203 | 'name': 'punctuation.definition.string.begin.json'
204 | 'end': '(,)|(?=\\})'
205 | 'endCaptures':
206 | '0':
207 | 'name': 'punctuation.definition.string.end.json'
208 | 'name': 'string.quoted.double.json'
209 | 'patterns': [
210 | {
211 | 'begin': ':'
212 | 'beginCaptures':
213 | '0':
214 | 'name': 'punctuation.separator.dictionary.key-value.json'
215 | 'end': '(?=,)|(?=\\})'
216 | 'endCaptures':
217 | '0':
218 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
219 | 'name': 'string.quoted.double.json'
220 | 'patterns': [
221 | {
222 | 'match': '(?i:"allow"|"deny")'
223 | 'name': 'entity.other.attribute-name'
224 | }
225 | {
226 | 'match': '[^\\s\\n]'
227 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
228 | }
229 | ]
230 | }
231 | ]
232 | 'principal_block':
233 | 'begin': '(?i:"principal"|"notprincipal")'
234 | 'beginCaptures':
235 | '0':
236 | 'name': 'punctuation.definition.string.begin.json'
237 | 'end': '(,)|(?=\\})'
238 | 'endCaptures':
239 | '0':
240 | 'name': 'punctuation.definition.string.end.json'
241 | 'name': 'string.quoted.double.json'
242 | 'patterns': [
243 | {
244 | 'begin': ':'
245 | 'beginCaptures':
246 | '0':
247 | 'name': 'punctuation.separator.dictionary.key-value.json'
248 | 'end': '(?=,)|(?=\\})'
249 | 'endCaptures':
250 | '0':
251 | 'name': 'invalid.illegal.traili ng-dictionary-separator.json'
252 | 'name': 'string.quoted.double.json'
253 | 'patterns': [
254 | {
255 | 'match': '"\\*"'
256 | 'name': 'entity.other.attribute-name'
257 | }
258 | { 'include': '#principal_map' }
259 | {
260 | 'match': '[^\\s\\n]'
261 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
262 | }
263 | ]
264 | }
265 | ]
266 | 'principal_map':
267 | 'begin': '\\{'
268 | 'beginCaptures':
269 | '0':
270 | 'name': 'punctuation.definition.dictionary.begin.json'
271 | 'end': '\\}'
272 | 'endCaptures':
273 | '0':
274 | 'name': 'punctuation.definition.dictionary.end.json'
275 | 'name': 'meta.structure.dictionary.json'
276 | 'patterns': [
277 | { 'include': '#principal_map_entry' }
278 | {
279 | 'match': '[^\\s\\n]'
280 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
281 | }
282 | ]
283 | 'principal_map_entry':
284 | 'begin': '(?i:"aws"|"federated"|"service")'
285 | 'beginCaptures':
286 | '0':
287 | 'name': 'punctuation.definition.string.begin.json'
288 | 'end': '(,)|(?=\\})'
289 | 'endCaptures':
290 | '0':
291 | 'name': 'punctuation.definition.string.end.json'
292 | 'name': 'string.quoted.double.json'
293 | 'patterns': [
294 | {
295 | 'begin': ':'
296 | 'beginCaptures':
297 | '0':
298 | 'name': 'punctuation.separator.dictionary.key-value.json'
299 | 'end': '(?=,)|(?=\\})'
300 | 'endCaptures':
301 | '0':
302 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
303 | 'name': 'string.quoted.double.json'
304 | 'patterns': [
305 | { 'include': '#arn' }
306 | { 'include': '#principal_array' }
307 | ]
308 | }
309 | ]
310 | 'principal_array':
311 | 'begin': '\\['
312 | 'beginCaptures':
313 | '0':
314 | 'name': 'punctuation.definition.array.begin.json'
315 | 'end': '(,?)[\\s\\n]*(\\])'
316 | 'endCaptures':
317 | '1':
318 | 'name': 'invalid.illegal.trailing-array-separator.json'
319 | '2':
320 | 'name': 'punctuation.definition.array.end.json'
321 | 'name': 'meta.structure.array.json'
322 | 'patterns': [
323 | { 'include': '#arn' }
324 | {
325 | 'match': ','
326 | 'name': 'punctuation.separator.array.json'
327 | }
328 | { 'include': '#error' }
329 | ]
330 | 'action_block':
331 | 'begin': '(?i:"action"|"notaction")'
332 | 'beginCaptures':
333 | '0':
334 | 'name': 'punctuation.definition.string.begin.json'
335 | 'end': '(,)|(?=\\})'
336 | 'endCaptures':
337 | '0':
338 | 'name': 'punctuation.definition.string.end.json'
339 | 'name': 'string.quoted.double.json'
340 | 'patterns': [
341 | {
342 | 'begin': ':'
343 | 'beginCaptures':
344 | '0':
345 | 'name': 'punctuation.separator.dictionary.key-value.json'
346 | 'end': '(?=,)|(?=\\})'
347 | 'endCaptures':
348 | '0':
349 | 'name': 'invalid.illegal.traili ng-dictionary-separator.json'
350 | 'name': 'string.quoted.double.json'
351 | 'patterns': [
352 | { 'include': '#action' }
353 | { 'include': '#action_array' }
354 | {
355 | 'match': '[^\\s\\n]'
356 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
357 | }
358 | ]
359 | }
360 | ]
361 | 'action_array':
362 | 'begin': '\\['
363 | 'beginCaptures':
364 | '0':
365 | 'name': 'punctuation.definition.array.begin.json'
366 | 'end': '(,?)[\\s\\n]*(\\])'
367 | 'endCaptures':
368 | '1':
369 | 'name': 'invalid.illegal.trailing-array-separator.json'
370 | '2':
371 | 'name': 'punctuation.definition.array.end.json'
372 | 'name': 'meta.structure.array.json'
373 | 'patterns': [
374 | {
375 | 'include': '#action'
376 | }
377 | {
378 | 'match': ','
379 | 'name': 'punctuation.separator.array.json'
380 | }
381 | { 'include': '#error' }
382 | ]
383 | 'action':
384 | 'begin': '"'
385 | 'beginCaptures':
386 | '0':
387 | 'name': 'entity.other.attribute-name'
388 | 'end': '"'
389 | 'endCaptures':
390 | '0':
391 | 'name': 'entity.other.attribute-name'
392 | 'patterns': [
393 | {
394 | 'match': '(?<=")(?i:dms|mobiletargeting|acm|tag|ecr|execute-api|apigateway|discovery|appstream|batch|lex|polly|application-autoscaling|autoscaling|budgets|devicefarm|elasticloadbalancing|cloudhsm|elasticbeanstalk|route53|cloudformation|codepipeline|clouddirectory|cloudsearch|cloudtrail|config|codecommit|ec2|codedeploy|elasticfilesystem|elastictranscoder|cloudwatch|events|health|iam|importexport|snowball|kinesis|sdb|lambda|mobilehub|ssm|swf|storagegateway|sqs|ses|redshift|rds|elasticmapreduce|glue|greengrass|sns|s3|ec2|dynamodb|dax|glacier|cloudfront|sts|workdocs|ds|elasticache|logs|cognito-identity|cognito-sync|cognito-idp|mobileanalytics|route53domains|kms|aws-portal|codestar|directconnect|aws-marketplace|aws-marketplace|aws-marketplace-management|servicecatalog|shield|states|trustedadvisor|opsworks|opsworks-cm|workmail|ecs|lightsail|machinelearning|rekognition|workspaces|wam|datapipeline|codebuild|cur|organizations|es|waf|waf-regional|inspector|kinesisanalytics|firehose|iot|gamelift|mechanicalturk|xray|athena|pricing)'
395 | 'name': 'entity.name.tag'
396 | }
397 | {
398 | 'match': '(?<=:)(?i:addtagstoresource|createendpoint|createreplicationinstance|createreplicationsubnetgroup|createreplicationtask|deleteendpoint|deletereplicationinstance|deletereplicationsubnetgroup|deletereplicationtask|describeaccountattributes|describeconnections|describeendpointtypes|describeendpoints|describeorderablereplicationinstances|describerefreshschemasstatus|describereplicationinstances|describereplicationsubnetgroups|describereplicationtasks|describeschemas|describetablestatistics|listtagsforresource|modifyendpoint|modifyreplicationinstance|modifyreplicationsubnetgroup|refreshschemas|removetagsfromresource|startreplicationtask|stopreplicationtask|testconnection|createimportjob|createcampaign|createsegment|deleteadmchannel|deleteapnschannel|deleteapnssandboxchannel|deletecampaign|deletegcmchannel|deletesegment|getadmchannel|getapnschannel|getapnssandboxchannel|getapplicationsettings|getcampaign|getcampaignactivities|getcampaigns|getcampaignversion|getcampaignversions|getendpoint|getgcmchannel|getimportjob|getimportjobs|getreports|getsegment|getsegmentimportjobs|getsegments|getsegmentversion|getsegmentversions|updateadmchannel|updateapnschannel|updateapnssandboxchannel|updateapplicationsettings|updatecampaign|updateendpoint|updateendpointsbatch|updategcmchannel|updatesegment|addtagstocertificate|deletecertificate|describecertificate|getcertificate|importcertificate|listcertificates|listtagsforcertificate|removetagsfromcertificate|requestcertificate|resendvalidationemail|addresourcetags|getresources|gettagkeys|gettagvalues|removeresourcetags|tagresources|untagresources|batchchecklayeravailability|batchdeleteimage|batchgetimage|completelayerupload|createrepository|deleterepository|deleterepositorypolicy|describerepositories|getauthorizationtoken|getdownloadurlforlayer|getrepositorypolicy|initiatelayerupload|listimages|putimage|setrepositorypolicy|uploadlayerpart|invoke|invalidatecache|delete|get|head|options|patch|post|put|createtags|deletetags|describeagents|describeconfigurations|describeexportconfigurations|describetags|exportconfigurations|listconfigurations|startdatacollectionbyagentids|stopdatacollectionbyagentids|associatefleet|createfleet|createdirectoryconfig|createstack|createstreamingurl|deletedirectoryconfig|deletefleet|deletestack|describedirectoryconfigs|describefleets|describeimages|describesessions|describestacks|disassociatefleet|expiresession|listassociatedfleets|listassociatedstacks|startfleet|stopfleet|updatedirectoryconfig|updatefleet|updatestack|canceljob|createcomputeenvironment|createjobqueue|deletecomputeenvironment|deletejobqueue|deregisterjobdefinition|describecomputeenvironments|describejobdefinitions|describejobqueues|describejobs|listjobs|registerjobdefinition|submitjob|terminatejob|updatecomputeenvironment|updatejobqueue|createbotversion|createintentversion|createslottypeversion|deletebot|deletebotalias|deletebotchannelassociation|deletebotversion|deleteintent|deleteintentversion|deleteslottype|deleteslottypeversion|deleteutterances|getbot|getbotalias|getbotaliases|getbotchannelassociation|getbotchannelassociations|getbuiltinintent|getbuiltinintents|getbuiltinslottypes|getbots|getbotversions|getintent|getintents|getintentversions|getslottype|getslottypes|getslottypeversions|getutterancesview|postcontent|posttext|putbot|putbotalias|putintent|putslottype|deletelexicon|describevoices|getlexicon|listlexicons|putlexicon|synthesizespeech|deletescalingpolicy|deregisterscalabletarget|describescalabletargets|describescalingactivities|describescalingpolicies|putscalingpolicy|registerscalabletarget|attachinstances|attachloadbalancers|completelifecycleaction|createautoscalinggroup|createlaunchconfiguration|createorupdatetags|deleteautoscalinggroup|deletelaunchconfiguration|deletelifecyclehook|deletenotificationconfiguration|deletepolicy|deletescheduledaction|deletetags|describeaccountlimits|describeadjustmenttypes|describeautoscalinggroups|describeautoscalinginstances|describeautoscalingnotificationtypes|describelaunchconfigurations|describelifecyclehooktypes|describelifecyclehooks|describeloadbalancers|describemetriccollectiontypes|describenotificationconfigurations|describepolicies|describescalingactivities|describescalingprocesstypes|describescheduledactions|describetags|describeterminationpolicytypes|detachinstances|detachloadbalancers|disablemetricscollection|enablemetricscollection|enterstandby|executepolicy|exitstandby|putlifecyclehook|putnotificationconfiguration|putscalingpolicy|putscheduledupdategroupaction|recordlifecycleactionheartbeat|resumeprocesses|setdesiredcapacity|setinstancehealth|setinstanceprotection|suspendprocesses|terminateinstanceinautoscalinggroup|updateautoscalinggroup|viewbudget|modifybudget|createdevicepool|createnetworkprofile|createproject|createremoteaccesssession|createupload|deletedevicepool|deletenetworkprofile|deleteproject|deleteremoteaccesssession|deleterun|deleteupload|getaccountsettings|getdevice|getdevicepool|getdevicepoolcompatibility|getjob|getnetworkprofile|getofferingstatus|getproject|getremoteaccesssession|getrun|getsuite|gettest|getupload|installtoremoteaccesssession|listartifacts|listdevicepools|listdevices|listjobs|listnetworkprofiles|listofferingtransactions|listofferings|listprojects|listremoteaccesssessions|listruns|listsamples|listsuites|listtests|listuniqueproblems|listuploads|purchaseoffering|renewoffering|schedulerun|stopremoteaccesssession|stoprun|updatedevicepool|updatenetworkprofile|updateproject|addtags|applysecuritygroupstoloadbalancer|attachloadbalancertosubnets|configurehealthcheck|createappcookiestickinesspolicy|createlistener|createlbcookiestickinesspolicy|createloadbalancer|createloadbalancerlisteners|createloadbalancerpolicy|createrule|createtargetgroup|deletelistener|deleteloadbalancer|deleteloadbalancerlisteners|deleteloadbalancerpolicy|deleterule|deletetargetgroup|deregisterinstancesfromloadbalancer|deregistertargets|describeinstancehealth|describelisteners|describeloadbalancerattributes|describeloadbalancerpolicytypes|describeloadbalancerpolicies|describeloadbalancers|describerules|describesslpolicies|describetags|describetargetgroupattributes|describetargetgroups|describetargethealth|detachloadbalancerfromsubnets|disableavailabilityzonesforloadbalancer|enableavailabilityzonesforloadbalancer|modifylistener|modifyloadbalancerattributes|modifyrule|modifytargetgroup|modifytargetgroupattributes|registertargets|registerinstanceswithloadbalancer|removetags|setloadbalancerlistenersslcertificate|setloadbalancerpoliciesforbackendserver|setloadbalancerpoliciesoflistener|setrulepriorities|setsecuritygroups|setsubnets|addtagstoresource|createlunaclient|createhapg|createhsm|deletelunaclient|deletehapg|deletehsm|describelunaclient|describehapg|describehsm|getconfig|listavailablezones|listlunaclients|listhapgs|listhsms|listtagsforresource|modifylunaclient|modifyhapg|modifyhsm|removetagsfromresource|addtags|applyenvironmentmanagedaction|checkdnsavailability|createapplication|createapplicationversion|createconfigurationtemplate|createenvironment|createstoragelocation|deleteapplication|deleteapplicationversion|deleteconfigurationtemplate|deleteenvironmentconfiguration|describeapplicationversions|describeapplications|describeconfigurationoptions|describeconfigurationsettings|describeenvironmenthealth|describeenvironmentmanagedactions|describeenvironmentmanagedactionhistory|describeenvironmentresources|describeenvironments|describeevents|describeinstanceshealth|listavailablesolutionstacks|listtagsforresource|rebuildenvironment|removetags|requestenvironmentinfo|restartappserver|retrieveenvironmentinfo|swapenvironmentcnames|terminateenvironment|updateapplication|updateapplicationresourcelifecycle|updateapplicationversion|updateconfigurationtemplate|updateenvironment|validateconfigurationsettings|associatevpcwithhostedzone|changeresourcerecordsets|changetagsforresource|createhealthcheck|createhostedzone|createreusabledelegationset|createtrafficpolicy|createtrafficpolicyinstance|createtrafficpolicyversion|createvpcassociationauthorization|deletehealthcheck|deletehostedzone|deletereusabledelegationset|deletetrafficpolicy|deletetrafficpolicyinstance|deletevpcassociationauthorization|disabledomainautorenew|disassociatevpcfromhostedzone|enabledomainautorenew|getchange|getcheckeripranges|getgeolocation|gethealthcheck|gethealthcheckcount|gethealthchecklastfailurereason|gethealthcheckstatus|gethostedzone|gethostedzonecount|getreusabledelegationset|gettrafficpolicy|gettrafficpolicyinstance|gettrafficpolicyinstancecount|listgeolocations|listhealthchecks|listhostedzones|listhostedzonesbyname|listresourcerecordsets|listreusabledelegationsets|listtagsforresource|listtagsforresources|listtrafficpolicies|listtrafficpolicyinstances|listtrafficpolicyinstancesbyhostedzone|listtrafficpolicyinstancesbypolicy|listtrafficpolicyversions|listvpcassociationauthorizations|testdnsanswer|updatehealthcheck|updatehostedzonecomment|updatetrafficpolicycomment|updatetrafficpolicyinstance|cancelupdatestack|continueupdaterollback|createchangeset|createstack|createuploadbucket|deletestack|describeaccountlimits|describechangeset|describestackevents|describestackresource|describestackresources|describestacks|estimatetemplatecost|executechangeset|getstackpolicy|gettemplate|gettemplatesummary|listchangesets|liststackresources|liststacks|previewstackupdate|setstackpolicy|signalresource|updatestack|validatetemplate|acknowledgejob|acknowledgethirdpartyjob|createcustomactiontype|createpipeline|deletecustomactiontype|deletepipeline|disablestagetransition|enablestagetransition|getjobdetails|getpipeline|getpipelineexecution|getpipelinestate|getthirdpartyjobdetails|listactiontypes|listpipelines|listpipelineexecutions|pollforjobs|pollforthirdpartyjobs|putactionrevision|putapprovalresult|putjobfailureresult|putjobsuccessresult|putthirdpartyjobfailureresult|putthirdpartyjobsuccessresult|retrystageexecution|startpipelineexecution|updatepipeline|addfacettoobject|applyschema|attachobject|attachpolicy|attachtoindex|batchread|batchwrite|createdirectory|createfacet|createindex|createobject|createschema|deletedirectory|deletefacet|deleteobject|deleteschema|detachfromindex|detachobject|detachpolicy|disabledirectory|enabledirectory|getdirectory|getfacet|getobjectinformation|getschemaasjson|listappliedschemaarns|listattachedindices|listdevelopmentschemaarns|listdirectories|listfacetattributes|listfacetnames|listindex|listobjectattributes|listobjectchildren|listobjectparents|listobjectpolicies|listpolicyattachments|listpublishedschemaarns|listtagsforresource|lookuppolicy|publishschema|putschemafromjson|removefacetfromobject|tagresource|untagresource|updatefacet|updateobjectattributes|updateschema|buildsuggesters|createdomain|defineanalysisscheme|defineexpression|defineindexfield|defineindexfields|definesuggester|deleteanalysisscheme|deletedomain|deleteexpression|deleteindexfield|deletesuggester|describeanalysisschemes|describeavailabilityoptions|describedomains|describeexpressions|describeindexfields|describescalingparameters|describeserviceaccesspolicies|describesuggesters|document|indexdocuments|listdomainnames|search|suggest|updateavailabilityoptions|updatescalingparameters|updateserviceaccesspolicies|addtags|createtrail|deletetrail|describetrails|geteventselectors|gettrailstatus|listpublickeys|listtags|lookupevents|puteventselectors|removetags|startlogging|stoplogging|updatetrail|deleteconfigrule|deleteconfigurationrecorder|deletedeliverychannel|deleteevaluationresults|deliverconfigsnapshot|describecompliancebyconfigrule|describecompliancebyresource|describeconfigruleevaluationstatus|describeconfigrules|describeconfigurationrecorderstatus|describeconfigurationrecorders|describedeliverychannelstatus|describedeliverychannels|getcompliancedetailsbyconfigrule|getcompliancedetailsbyresource|getcompliancesummarybyconfigrule|getcompliancesummarybyresourcetype|getresourceconfighistory|getresources|gettagkeys|listdiscoveredresources|putconfigrule|putconfigurationrecorder|putdeliverychannel|putevaluations|startconfigrulesevaluation|startconfigurationrecorder|stopconfigurationrecorder|batchgetrepositories|createbranch|deletebranch|createrepository|deleterepository|getblob|getbranch|getcommit|getdifferences|getobjectidentifier|getreferences|getrepository|getrepositorytriggers|gettree|gitpull|gitpush|listbranches|listrepositories|putrepositorytriggers|testrepositorytriggers|updatedefaultbranch|updaterepositorydescription|updaterepositoryname|cancelspotfleetrequests|describespotfleetinstances|describespotfleetrequests|describespotfleetrequesthistory|modifyspotfleetrequest|requestspotfleet|addtagstoonpremisesinstances|batchgetapplicationrevisions|batchgetapplications|batchgetdeploymentgroups|batchgetdeploymentinstances|batchgetdeployments|batchgetonpremisesinstances|createapplication|createdeployment|createdeploymentconfig|createdeploymentgroup|deleteapplication|deletedeploymentconfig|deletedeploymentgroup|deregisteronpremisesinstance|getapplication|getapplicationrevision|getdeployment|getdeploymentconfig|getdeploymentgroup|getdeploymentinstance|getonpremisesinstance|listapplicationrevisions|listapplications|listdeploymentconfigs|listdeploymentgroups|listdeploymentinstances|listdeployments|listonpremisesinstances|registerapplicationrevision|registeronpremisesinstance|removetagsfromonpremisesinstances|stopdeployment|updateapplication|updatedeploymentgroup|createfilesystem|createtags|describetags|deletetags|createmounttarget|modifymounttargetsecuritygroups|describemounttargetsecuritygroups|describefilesystems|describemounttargets|deletemounttarget|deletefilesystem|canceljob|createjob|createpipeline|createpreset|deletepipeline|deletepreset|listjobsbypipeline|listjobsbystatus|listpipelines|listpresets|readjob|readpipeline|readpreset|testrole|updatepipeline|updatepipelinenotifications|updatepipelinestatus|deletealarms|describealarmhistory|describealarms|describealarmsformetric|disablealarmactions|enablealarmactions|getmetricdata|getmetricstatistics|listmetrics|putmetricalarm|putmetricdata|setalarmstate|deleterule|describerule|disablerule|enablerule|listrulenamesbytarget|listrules|listtargetsbyrule|putevents|putrule|puttargets|removetargets|testeventpattern|describeaffectedentities|describeentityaggregates|describeeventaggregates|describeevents|describeeventdetails|describeeventtypes|addroletoinstanceprofile|addusertogroup|addclientidtoopenidconnectprovider|attachgrouppolicy|attachrolepolicy|attachuserpolicy|changepassword|createaccesskey|createaccountalias|creategroup|createinstanceprofile|createloginprofile|createopenidconnectprovider|createpolicy|createpolicyversion|createrole|createsamlprovider|createservicelinkedrole|createservicespecificcredential|createuser|createvirtualmfadevice|deactivatemfadevice|deleteaccesskey|deleteaccountalias|deleteaccountpasswordpolicy|deletegroup|deletegrouppolicy|deleteinstanceprofile|deleteloginprofile|deleteopenidconnectprovider|deletepolicy|deletepolicyversion|deleterole|deleterolepolicy|deletesamlprovider|deletesshpublickey|deleteservercertificate|deleteservicelinkedrole|deleteservicespecificcredential|deletesigningcertificate|deleteuser|deleteuserpolicy|deletevirtualmfadevice|detachgrouppolicy|detachrolepolicy|detachuserpolicy|enablemfadevice|generatecredentialreport|generateservicelastaccesseddetails|getaccesskeylastused|getaccountauthorizationdetails|getaccountpasswordpolicy|getaccountsummary|getcontextkeysforcustompolicy|getcontextkeysforprincipalpolicy|getcredentialreport|getgroup|getgrouppolicy|getinstanceprofile|getloginprofile|getopenidconnectprovider|getpolicy|getpolicyversion|getrole|getrolepolicy|getsamlprovider|getsshpublickey|getservercertificate|getservicelastaccesseddetails|getservicelastaccesseddetailswithentities|getservicelinkedroledeletionstatus|getuser|getuserpolicy|listaccesskeys|listaccountaliases|listattachedgrouppolicies|listattachedrolepolicies|listattacheduserpolicies|listentitiesforpolicy|listgrouppolicies|listgroups|listgroupsforuser|listinstanceprofiles|listinstanceprofilesforrole|listmfadevices|listopenidconnectproviders|listpolicies|listpoliciesgrantingserviceaccess|listpolicyversions|listrolepolicies|listroles|listsamlproviders|listsshpublickeys|listservercertificates|listservicespecificcredentials|listsigningcertificates|listuserpolicies|listusers|listvirtualmfadevices|passrole|putgrouppolicy|putrolepolicy|putuserpolicy|removeclientidfromopenidconnectprovider|removerolefrominstanceprofile|removeuserfromgroup|resetservicespecificcredential|resyncmfadevice|setdefaultpolicyversion|simulatecustompolicy|simulateprincipalpolicy|updateaccesskey|updateaccountpasswordpolicy|updateassumerolepolicy|updategroup|updateloginprofile|updateopenidconnectproviderthumbprint|updateroledescription|updatesamlprovider|updatesshpublickey|updateservercertificate|updateservicespecificcredential|updatesigningcertificate|updateuser|uploadsshpublickey|uploadservercertificate|uploadsigningcertificate|createjob|updatejob|canceljob|listjobs|getstatus|getshippinglabel|cancelcluster|canceljob|createaddress|createcluster|createjob|describeaddress|describeaddresses|describecluster|describejob|getjobmanifest|getjobunlockcode|getsnowballusage|listclusterjobs|listclusters|listjobs|updatecluster|updatejob|addtagstostream|createstream|decreasestreamretentionperiod|deletestream|describelimits|describestream|disableenhancedmonitoring|enableenhancedmonitoring|getsharditerator|getrecords|increasestreamretentionperiod|liststreams|listtagsforstream|mergeshards|putrecord|putrecords|removetagsfromstream|splitshard|startstreamencryption|stopstreamencryption|updateshardcount|batchdeleteattributes|batchputattributes|createdomain|deleteattributes|deletedomain|domainmetadata|getattributes|listdomains|putattributes|select|addpermission|createalias|createeventsourcemapping|createfunction|deletealias|deleteeventsourcemapping|deletefunction|getaccountsettings|enablereplication|getalias|geteventsourcemapping|getfunction|getfunctionconfiguration|getpolicy|invokeasync|invokefunction|listaliases|listeventsourcemappings|listfunctions|listtags|listversionsbyfunction|publishversion|removepermission|tagresource|untagresource|updatealias|updateeventsourcemapping|updatefunctioncode|updatefunctionconfiguration|createproject|createservicerole|deleteproject|describebundle|generateprojectparameters|getproject|getprojectsnapshot|exportbundle|exportproject|listavailableconnectors|listavailablefeatures|listavailableregions|listbundles|listprojects|synchronizeproject|updateproject|validateproject|verifyservicerole|addtagstoresource|cancelcommand|createactivation|createassociation|createassociationbatch|createdocument|createmaintenancewindow|createpatchbaseline|deleteactivation|deleteassociation|deletedocument|deletemaintenancewindow|deleteparameter|deletepatchbaseline|deregistermanagedinstance|deregisterpatchbaselineforpatchgroup|deregistertargetfrommaintenancewindow|deregistertaskfrommaintenancewindow|describeactivations|describeassociation|describeautomationexecutions|describeavailablepatches|describedocument|describedocumentpermission|describeeffectiveinstanceassociations|describeeffectivepatchesforpatchbaseline|describeinstanceassociationsstatus|describeinstanceinformation|describeinstancepatches|describeinstancepatchstates|describeinstancepatchstatesforpatchgroup|describemaintenancewindowexecutions|describemaintenancewindowexecutiontaskinvocations|describemaintenancewindowexecutiontasks|describemaintenancewindows|describemaintenancewindowtargets|describemaintenancewindowtasks|describeparameters|describepatchbaselines|describepatchgroups|describepatchgroupstate|getautomationexecution|getcommandinvocation|getdefaultpatchbaseline|getdeployablepatchsnapshotforinstance|getinventory|getinventoryschema|getdocument|getmaintenancewindow|getmaintenancewindowexecution|getmaintenancewindowexecutiontask|getmanifest|getparameterhistory|getparameter|getparameters|getparametersbypath|getpatchbaseline|getpatchbaselineforpatchgroup|listassociationversions|listassociations|listcommandinvocations|listcommands|listdocuments|listdocumentversions|listinstanceassociations|listinventoryentries|listtagsforresource|modifydocumentpermission|putcomplianceitems|putinventory|putparameter|registerdefaultpatchbaseline|registerpatchbaselineforpatchgroup|registertargetwithmaintenancewindow|registertaskwithmaintenancewindow|removetagsfromresource|sendcommand|startassociationsonce|startautomationexecution|stopautomationexecution|updateassociation|updateassociationstatus|updatedocument|updatedocumentdefaultversion|updateinstanceassociationstatus|updatemaintenancewindow|updatemaintenancewindowtarget|updatemaintenancewindowtask|updatemanagedinstancerole|updatepatchbaseline|canceltimer|cancelworkflowexecution|completeworkflowexecution|continueasnewworkflowexecution|countclosedworkflowexecutions|countopenworkflowexecutions|countpendingactivitytasks|countpendingdecisiontasks|deprecateactivitytype|deprecatedomain|deprecateworkflowtype|describeactivitytype|describedomain|describeworkflowexecution|describeworkflowtype|failworkflowexecution|getworkflowexecutionhistory|listactivitytypes|listclosedworkflowexecutions|listdomains|listopenworkflowexecutions|listworkflowtypes|pollforactivitytask|pollfordecisiontask|recordactivitytaskheartbeat|recordmarker|registeractivitytype|registerdomain|registerworkflowtype|requestcancelactivitytask|requestcancelexternalworkflowexecution|requestcancelworkflowexecution|respondactivitytaskcanceled|respondactivitytaskcompleted|respondactivitytaskfailed|responddecisiontaskcompleted|scheduleactivitytask|signalexternalworkflowexecution|signalworkflowexecution|startchildworkflowexecution|starttimer|startworkflowexecution|terminateworkflowexecution|activategateway|addcache|adduploadbuffer|addworkingstorage|cancelarchival|cancelretrieval|createcachediscsivolume|createnfsfileshare|createsnapshot|createsnapshotfromvolumerecoverypoint|createstorediscsivolume|createtapes|createtapewithbarcode|deletebandwidthratelimit|deletechapcredentials|deletefileshare|deletegateway|deletesnapshotschedule|deletetape|deletetapearchive|deletevolume|describebandwidthratelimit|describecache|describecachediscsivolumes|describechapcredentials|describenfsfileshares|describegatewayinformation|describemaintenancestarttime|describesnapshotschedule|describestorediscsivolumes|describetapearchives|describetaperecoverypoints|describetapes|describeuploadbuffer|describevtldevices|describeworkingstorage|disablegateway|listgateways|listlocaldisks|listfileshares|listtagsforresource|listtapes|listvolumerecoverypoints|listvolumes|refreshcache|retrievetapearchive|retrievetaperecoverypoint|setlocalconsolepassword|shutdowngateway|startgateway|updatebandwidthratelimit|updatechapcredentials|updategatewayinformation|updategatewaysoftwarenow|updatemaintenancestarttime|updatenfsfileshare|updatesnapshotschedule|addpermission|changemessagevisibility|changemessagevisibilitybatch|createqueue|deletemessage|deletemessagebatch|deletequeue|getqueueattributes|getqueueurl|listdeadlettersourcequeues|listqueues|purgequeue|receivemessage|removepermission|sendmessage|sendmessagebatch|setqueueattributes|clonereceiptruleset|createreceiptfilter|createreceiptrule|createreceiptruleset|deleteidentity|deleteidentitypolicy|deletereceiptfilter|deletereceiptrule|deletereceiptruleset|deleteverifiedemailaddress|describeactivereceiptruleset|describereceiptrule|describereceiptruleset|getidentitydkimattributes|getidentitynotificationattributes|getidentitypolicies|getidentityverificationattributes|getsendquota|getsendstatistics|listidentities|listidentitypolicies|listreceiptfilters|listreceiptrulesets|listverifiedemailaddresses|putidentitypolicy|reorderreceiptruleset|sendbounce|sendemail|sendrawemail|setactivereceiptruleset|setidentitydkimenabled|setidentitynotificationtopic|setidentityfeedbackforwardingenabled|setreceiptruleposition|updatereceiptrule|verifydomaindkim|verifydomainidentity|verifyemailaddress|verifyemailidentity|authorizeclustersecuritygroupingress|authorizesnapshotaccess|cancelquerysession|copyclustersnapshot|createcluster|createclusteruser|createclusterparametergroup|createclustersecuritygroup|createclustersnapshot|createclustersubnetgroup|createeventsubscription|createhsmclientcertificate|createhsmconfiguration|createtags|deletecluster|deleteclusterparametergroup|deleteclustersecuritygroup|deleteclustersnapshot|deleteclustersubnetgroup|deleteeventsubscription|deletehsmclientcertificate|deletehsmconfiguration|deletetags|describeclusterparametergroups|describeclusterparameters|describeclustersecuritygroups|describeclustersnapshots|describeclustersubnetgroups|describeclusterversions|describeclusters|describedefaultclusterparameters|describeeventcategories|describeeventsubscriptions|describeevents|describehsmclientcertificates|describehsmconfigurations|describeloggingstatus|describeorderableclusteroptions|describereservednodeofferings|describereservednodes|describeresize|describetags|disablelogging|disablesnapshotcopy|enablelogging|enablesnapshotcopy|getclustercredentials|joingroup|modifycluster|modifyclusterparametergroup|modifyclustersubnetgroup|modifyeventsubscription|modifysnapshotcopyretentionperiod|purchasereservednodeoffering|rebootcluster|resetclusterparametergroup|restorefromclustersnapshot|revokeclustersecuritygroupingress|revokesnapshotaccess|rotateencryptionkey|viewqueriesinconsole|addtagstoresource|addsourceidentifiertosubscription|applypendingmaintenanceaction|authorizedbsecuritygroupingress|copydbclustersnapshot|copydbparametergroup|copydbsnapshot|copyoptiongroup|createdbclusterparametergroup|createdbclustersnapshot|createdbcluster|createdbinstance|createdbinstancereadreplica|createdbparametergroup|createdbsecuritygroup|createdbsnapshot|createdbsubnetgroup|createeventsubscription|createoptiongroup|deletedbclusterparametergroup|deletedbclustersnapshot|deletedbcluster|deletedbinstance|deletedbparametergroup|deletedbsecuritygroup|deletedbsnapshot|deletedbsubnetgroup|deleteeventsubscription|deleteoptiongroup|describeaccountattributes|describecertificates|describeenginedefaultclusterparameters|describeenginedefaultparameters|describedbclusterparametergroups|describedbclusterparameters|describedbclustersnapshots|describedbclusters|describedbinstances|describedblogfiles|describedbparametergroups|describedbparameters|describedbsecuritygroups|describedbsnapshotattributes|describedbsnapshots|describedbengineversions|describedbsubnetgroups|describeeventcategories|describeevents|describeeventsubscriptions|describeoptiongroups|describeoptiongroupoptions|describeorderabledbinstanceoptions|describependingmaintenanceactions|describereserveddbinstances|describereserveddbinstancesofferings|downloadcompletedblogfile|downloaddblogfileportion|failoverdbcluster|listtagsforresource|modifydbclusterparametergroup|modifydbcluster|modifydbinstance|modifydbparametergroup|modifydbsnapshotattribute|modifydbsubnetgroup|modifyeventsubscription|modifyoptiongroup|promotereadreplica|purchasereserveddbinstancesoffering|rebootdbinstance|removesourceidentifierfromsubscription|removetagsfromresource|restoredbclusterfromsnapshot|restoredbclustertopointintime|restoredbinstancefromdbsnapshot|restoredbinstancetopointintime|resetdbclusterparametergroup|resetdbparametergroup|revokedbsecuritygroupingress|addinstancegroups|addtags|addjobflowsteps|createsecurityconfiguration|deletesecurityconfiguration|describecluster|describejobflows|describesecurityconfiguration|describestep|listbootstrapactions|listclusters|listinstancegroups|listinstances|listsecurityconfigurations|liststeps|modifyinstancegroups|removetags|runjobflow|setterminationprotection|setvisibletoallusers|terminatejobflows|vieweventsfromallclustersinconsole|batchcreatepartition|batchdeleteconnection|batchdeletepartition|batchdeletetable|batchgetpartition|createclassifier|createconnection|createcrawler|createdatabase|createdevendpoint|createjob|createpartition|createscript|createtable|createtrigger|createuserdefinedfunction|deleteclassifier|deleteconnection|deletecrawler|deletedatabase|deletedevendpoint|deletejob|deletepartition|deletetable|deletetrigger|deleteuserdefinedfunction|getcatalogimportstatus|getclassifier|getclassifiers|getconnection|getconnections|getcrawler|getcrawlers|getcrawlermetrics|getdatabase|getdatabases|getdataflowgraph|getdevendpoint|getdevendpoints|getjob|getjobs|getjobrun|getjobruns|getmapping|getpartition|getpartitions|getplan|gettable|gettableversions|gettables|gettrigger|gettriggers|getuserdefinedfunction|getuserdefinedfunctions|importcatalogtoglue|resetjobbookmark|startcrawler|startcrawlerschedule|startjobrun|starttrigger|stopcrawler|stopcrawlerschedule|stoptrigger|updateclassifier|updateconnection|updatecrawler|updatedatabase|updatedevendpoint|updatejob|updatepartition|updatetable|updatetrigger|updateuserdefinedfunction|associateroletogroup|associateserviceroletoaccount|createcoredefinition|createcoredefinitionversion|createdeployment|createdevicedefinition|createdevicedefinitionversion|createfunctiondefinition|createfunctiondefinitionversion|creategroup|creategroupcertificateauthority|creategroupversion|createloggerdefinition|createloggerdefinitionversion|createsubscriptiondefinition|createsubscriptiondefinitionversion|deletecoredefinition|deletedevicedefinition|deletefunctiondefinition|deletegroup|deleteloggerdefinition|deletesubscriptiondefinition|disassociaterolefromgroup|disassociateservicerolefromaccount|getassociatedrole|getconnectivityinfo|getcoredefinition|getcoredefinitionversion|getdeploymentstatus|getdevicedefinition|getdevicedefinitionversion|getfunctiondefinition|getfunctiondefinitionversion|getgroup|getgroupcertificateauthority|getgroupcertificateconfiguration|getgroupversion|getloggerdefinition|getloggerdefinitionversion|getserviceroleforaccount|getsubscriptiondefinition|getsubscriptiondefinitionversion|listcoredefinitionversions|listcoredefinitions|listdeployments|listdevicedefinitionversions|listdevicedefinitions|listfunctiondefinitionversions|listfunctiondefinitions|listgroupcertificateauthorities|listgroupversions|listgroups|listloggerdefinitionversions|listloggerdefinitions|listsubscriptiondefinitionversions|listsubscriptiondefinitions|resetdeployments|updateconnectivityinfo|updatecoredefinition|updatedevicedefinition|updatefunctiondefinition|updategroup|updategroupcertificateconfiguration|updateloggerdefinition|updatesubscriptiondefinition|addpermission|checkifphonenumberisoptedout|confirmsubscription|createplatformapplication|createplatformendpoint|createtopic|deleteendpoint|deleteplatformapplication|deletetopic|getendpointattributes|getplatformapplicationattributes|getsmsattributes|getsubscriptionattributes|gettopicattributes|listendpointsbyplatformapplication|listphonenumbersoptedout|listplatformapplications|listsubscriptions|listsubscriptionsbytopic|listtopics|optinphonenumber|publish|removepermission|setendpointattributes|setplatformapplicationattributes|setsmsattributes|setsubscriptionattributes|settopicattributes|subscribe|unsubscribe|abortmultipartupload|createbucket|deletebucket|deletebucketpolicy|deletebucketwebsite|deleteobject|deleteobjectversion|getaccelerateconfiguration|getbucketacl|getbucketcors|getbucketlocation|getbucketlogging|getbucketnotification|getbucketpolicy|getbucketrequestpayment|getbuckettagging|getbucketversioning|getbucketwebsite|getlifecycleconfiguration|getobject|getobjectacl|getobjecttagging|getobjecttorrent|getobjectversion|getobjectversionacl|getobjectversiontagging|getobjectversiontorrent|getreplicationconfiguration|listallmybuckets|listbucket|listbucketmultipartuploads|listbucketversions|listmultipartuploadparts|putaccelerateconfiguration|putbucketacl|putbucketcors|putbucketlogging|putbucketnotification|putbucketpolicy|putbucketrequestpayment|putbuckettagging|putbucketversioning|putbucketwebsite|putlifecycleconfiguration|putreplicationconfiguration|putobject|putobjectacl|putobjecttagging|putobjectversionacl|putobjectversiontagging|replicatedelete|replicateobject|restoreobject|acceptreservedinstancesexchangequote|acceptvpcpeeringconnection|allocateaddress|allocatehosts|assignipv6addresses|assignprivateipaddresses|associateaddress|associatedhcpoptions|associateiaminstanceprofile|associateroutetable|associatesubnetcidrblock|associatevpccidrblock|attachclassiclinkvpc|attachinternetgateway|attachnetworkinterface|attachvolume|attachvpngateway|authorizesecuritygroupegress|authorizesecuritygroupingress|bundleinstance|cancelbundletask|cancelconversiontask|cancelexporttask|cancelimporttask|cancelreservedinstanceslisting|cancelspotfleetrequests|cancelspotinstancerequests|confirmproductinstance|copyimage|copysnapshot|createcustomergateway|createdhcpoptions|createegressonlyinternetgateway|createflowlogs|createfpgaimage|createimage|createinstanceexporttask|createinternetgateway|createkeypair|createnatgateway|createnetworkacl|createnetworkaclentry|createnetworkinterface|createnetworkinterfacepermission|createplacementgroup|createreservedinstanceslisting|createroute|createroutetable|createsecuritygroup|createsnapshot|createspotdatafeedsubscription|createsubnet|createtags|createvolume|createvpc|createvpcendpoint|createvpcpeeringconnection|createvpnconnection|createvpnconnectionroute|createvpngateway|deletecustomergateway|deletedhcpoptions|deleteegressonlyinternetgateway|deleteflowlogs|deleteinternetgateway|deletekeypair|deletenatgateway|deletenetworkacl|deletenetworkaclentry|deletenetworkinterface|deleteplacementgroup|deleteroute|deleteroutetable|deletesecuritygroup|deletesnapshot|deletespotdatafeedsubscription|deletesubnet|deletetags|deletevolume|deletevpc|deletevpcendpoints|deletevpcpeeringconnection|deletevpnconnection|deletevpnconnectionroute|deletevpngateway|deregisterimage|describeaccountattributes|describeaddresses|describeavailabilityzones|describebundletasks|describeclassiclinkinstances|describeconversiontasks|describecustomergateways|describedhcpoptions|describeegressonlyinternetgateways|describeexporttasks|describeflowlogs|describefpgaimages|describehosts|describehostreservations|describehostreservationofferings|describeiaminstanceprofileassociations|describeidentityidformat|describeidformat|describeimageattribute|describeimages|describeimportimagetasks|describeimportsnapshottasks|describeinstanceattribute|describeinstancestatus|describeinstances|describeinternetgateways|describekeypairs|describemovingaddresses|describenatgateways|describenetworkacls|describenetworkinterfaceattribute|describenetworkinterfaces|describeplacementgroups|describeprefixlists|describeregions|describereservedinstances|describereservedinstanceslistings|describereservedinstancesmodifications|describereservedinstancesofferings|describeroutetables|describesecuritygroups|describesnapshotattribute|describesnapshots|describespotdatafeedsubscription|describespotfleetinstances|describespotfleetrequesthistory|describespotfleetrequests|describespotinstancerequests|describespotpricehistory|describestalesecuritygroups|describesubnets|describetags|describevolumeattribute|describevolumesmodifications|describevolumestatus|describevolumes|describevpcattribute|describevpcclassiclink|describevpcendpointservices|describevpcendpoints|describevpcpeeringconnections|describevpcs|describevpnconnections|describevpngateways|detachclassiclinkvpc|detachinternetgateway|detachnetworkinterface|detachvolume|detachvpngateway|disablevgwroutepropagation|disablevpcclassiclink|disablevpcclassiclinkdnssupport|describevpcclassiclinkdnssupport|disassociateaddress|disassociateiaminstanceprofile|disassociateroutetable|disassociatesubnetcidrblock|disassociatevpccidrblock|enablevgwroutepropagation|enablevolumeio|enablevpcclassiclink|enablevpcclassiclinkdnssupport|getconsoleoutput|getconsolescreenshot|gethostreservationpurchasepreview|getpassworddata|getreservedinstancesexchangequote|importimage|importinstance|importkeypair|importsnapshot|importvolume|modifyhosts|modifyidentityidformat|modifyidformat|modifyimageattribute|modifyinstanceattribute|modifyinstanceplacement|modifynetworkinterfaceattribute|modifyreservedinstances|modifysnapshotattribute|modifyspotfleetrequest|modifysubnetattribute|modifyvolume|modifyvolumeattribute|modifyvpcattribute|modifyvpcendpoint|modifyvpcpeeringconnectionoptions|monitorinstances|moveaddresstovpc|purchasehostreservation|purchasereservedinstancesoffering|purchasescheduledinstances|rebootinstances|registerimage|rejectvpcpeeringconnection|releaseaddress|releasehosts|replaceiaminstanceprofileassociation|replacenetworkaclassociation|replacenetworkaclentry|replaceroute|replaceroutetableassociation|reportinstancestatus|requestspotfleet|requestspotinstances|resetimageattribute|resetinstanceattribute|resetnetworkinterfaceattribute|resetsnapshotattribute|restoreaddresstoclassic|revokesecuritygroupegress|revokesecuritygroupingress|runinstances|runscheduledinstances|startinstances|stopinstances|terminateinstances|unassignipv6addresses|unassignprivateipaddresses|unmonitorinstances|updatesecuritygroupruledescriptionsegress|updatesecuritygroupruledescriptionsingress|batchgetitem|batchwriteitem|createtable|deleteitem|deletetable|describelimits|describereservedcapacity|describereservedcapacityofferings|describestream|describetable|getitem|getrecords|getsharditerator|liststreams|listtables|listtagsofresource|purchasereservedcapacityofferings|putitem|query|scan|tagresource|updateitem|updatetable|untagresource|batchgetitem|batchwriteitem|createcluster|createparametergroup|createsubnetgroup|decreasereplicationfactor|defineattributelist|defineattributelistid|definekeyschema|deletecluster|deleteitem|deleteparametergroup|deletesubnetgroup|describeclusters|describedefaultparameters|describeevents|describeparametergroups|describeparameters|describesubnetgroups|endpoints|getitem|increasereplicationfactor|listtags|putitem|query|rebootnode|scan|tagresource|untagresource|updatecluster|updateitem|updateparametergroup|updatesubnetgroup|abortvaultlock|addtagstovault|abortmultipartupload|completemultipartupload|completevaultlock|createvault|deletearchive|deletevault|deletevaultaccesspolicy|deletevaultnotifications|describejob|describevault|getdataretrievalpolicy|getjoboutput|getvaultaccesspolicy|getvaultlock|getvaultnotifications|initiatejob|initiatemultipartupload|initiatevaultlock|listjobs|listmultipartuploads|listparts|listtagsforvault|listvaults|removetagsfromvault|setdataretrievalpolicy|setvaultaccesspolicy|setvaultnotifications|uploadarchive|uploadmultipartpart|createcloudfrontoriginaccessidentity|createdistribution|createinvalidation|createstreamingdistribution|deletecloudfrontoriginaccessidentity|deletedistribution|deletestreamingdistribution|getcloudfrontoriginaccessidentity|getcloudfrontoriginaccessidentityconfig|getdistribution|getdistributionconfig|getinvalidation|getstreamingdistribution|getstreamingdistributionconfig|listcloudfrontoriginaccessidentities|listdistributions|listdistributionsbywebaclid|listinvalidations|liststreamingdistributions|updatecloudfrontoriginaccessidentity|updatedistribution|updatestreamingdistribution|assumerole|assumerolewithsaml|assumerolewithwebidentity|decodeauthorizationmessage|getfederationtoken|getsessiontoken|activateuser|addusertogroup|checkalias|createinstance|deactivateuser|deleteinstance|deregisterdirectory|describeavailabledirectories|describeinstances|registerdirectory|removeuserfromgroup|updateinstancealias|addiproutes|addtagstoresource|cancelschemaextension|connectdirectory|createalias|createcomputer|createconditionalforwarder|createdirectory|createmicrosoftad|createsnapshot|createtrust|deleteconditionalforwarder|deletedirectory|deletesnapshot|deletetrust|deregistereventtopic|describeconditionalforwarders|describedirectories|describeeventtopics|describesnapshots|describetrusts|disableradius|disablesso|enableradius|enablesso|getdirectorylimits|getsnapshotlimits|listiproutes|listtagsforresource|listschemaextensions|registereventtopic|removeiproutes|removetagsfromresource|restorefromsnapshot|startschemaextension|updateconditionalforwarder|updateradius|verifytrust|addtagstoresource|authorizecachesecuritygroupingress|copysnapshot|createcachecluster|createcacheparametergroup|createcachesecuritygroup|createcachesubnetgroup|createreplicationgroup|createsnapshot|deletecachecluster|deletecacheparametergroup|deletecachesecuritygroup|deletecachesubnetgroup|deletereplicationgroup|deletesnapshot|describecacheclusters|describecacheengineversions|describecacheparametergroups|describecacheparameters|describecachesecuritygroups|describecachesubnetgroups|describeenginedefaultparameters|describeevents|describereplicationgroups|describereservedcachenodes|describereservedcachenodesofferings|describesnapshots|listallowednodetypemodifications|listtagsforresource|modifycachecluster|modifycacheparametergroup|modifycachesubnetgroup|modifyreplicationgroup|purchasereservedcachenodesoffering|rebootcachecluster|removetagsfromresource|resetcacheparametergroup|revokecachesecuritygroupingress|cancelexporttask|createexporttask|createloggroup|createlogstream|deletedestination|deleteloggroup|deletelogstream|deletemetricfilter|deleteretentionpolicy|deletesubscriptionfilter|describedestinations|describeexporttasks|describeloggroups|describelogstreams|describemetricfilters|describesubscriptionfilters|filterlogevents|getlogevents|putdestination|putdestinationpolicy|putlogevents|putmetricfilter|putretentionpolicy|putsubscriptionfilter|testmetricfilter|createidentitypool|deleteidentitypool|deleteidentities|describeidentity|describeidentitypool|getidentitypoolroles|getopenidtokenfordeveloperidentity|listidentities|listidentitypools|lookupdeveloperidentity|mergedeveloperidentities|setidentitypoolroles|unlinkdeveloperidentity|updateidentitypool|bulkpublish|deletedataset|describedataset|describeidentityusage|describeidentitypoolusage|getbulkpublishdetails|getcognitoevents|getidentitypoolconfiguration|listdatasets|listidentitypoolusage|listrecords|registerdevice|setcognitoevents|setidentitypoolconfiguration|subscribetodataset|updaterecords|unsubscribefromdataset|addcustomattributes|adminaddusertogroup|adminconfirmsignup|admincreateuser|admindeleteuser|admindeleteuserattributes|admindisableuser|adminenableuser|adminforgetdevice|admingetdevice|admingetuser|admininitiateauth|adminlistdevices|adminlistgroupsforuser|adminremoveuserfromgroup|adminresetuserpassword|adminrespondtoauthchallenge|adminsetusersettings|adminupdatedevicestatus|adminupdateuserattributes|adminuserglobalsignout|creategroup|createuserimportjob|createuserpool|createuserpoolclient|deletegroup|deleteuserpool|deleteuserpoolclient|describeuserimportjob|describeuserpool|describeuserpoolclient|getcsvheader|getgroup|listgroups|listuserimportjobs|listuserpoolclients|listuserpools|listusers|listusersingroup|startuserimportjob|stopuserimportjob|updategroup|updateuserpool|updateuserpoolclient|putevents|getreports|getfinancialreports|checkdomainavailability|deletedomain|deletetagsfordomain|disabledomainautorenew|disabledomaintransferlock|enabledomainautorenew|enabledomaintransferlock|getcontactreachabilitystatus|getdomaindetail|getdomainsuggestions|getoperationdetail|listdomains|listoperations|listtagsfordomain|registerdomain|renewdomain|resendcontactreachabilityemail|retrievedomainauthcode|transferdomain|updatedomaincontact|updatedomaincontactprivacy|updatedomainnameservers|updatetagsfordomain|viewbilling|cancelkeydeletion|createalias|creategrant|createkey|decrypt|deletealias|deleteimportedkeymaterial|describekey|disablekey|disablekeyrotation|enablekey|enablekeyrotation|encrypt|generatedatakey|generatedatakeywithoutplaintext|generaterandom|getkeypolicy|getkeyrotationstatus|getparametersforimport|importkeymaterial|listaliases|listgrants|listkeypolicies|listkeys|listresourcetags|listretirablegrants|putkeypolicy|reencryptfrom|reencryptto|reencrypt*|revokegrant|schedulekeydeletion|tagresource|untagresource|updatealias|updatekeydescription|modifyaccount|modifybilling|modifypaymentmethods|viewaccount|viewbilling|viewpaymentmethods|viewusage|associateteammember|createproject|createuserprofile|deleteextendedaccess|deleteproject|deleteuserprofile|describeproject|describeuserprofile|disassociateteammember|getextendedaccess|listprojects|listresources|listteammembers|listuserprofiles|putextendedaccess|updateproject|updateteammember|updateuserprofile|verifyservicerole|allocateconnectiononinterconnect|allocateprivatevirtualinterface|allocatepublicvirtualinterface|confirmconnection|confirmprivatevirtualinterface|confirmpublicvirtualinterface|createconnection|createinterconnect|createprivatevirtualinterface|createpublicvirtualinterface|deleteconnection|deleteinterconnect|deletevirtualinterface|describeconnections|describeconnectionsoninterconnect|describeinterconnects|describelocations|describevirtualgateways|describevirtualinterfaces|subscribe|unsubscribe|viewsubscriptions|meterusage|batchmeterusage|resolvecustomer|uploadfiles|viewmarketing|viewreports|viewsupport|acceptportfolioshare|associateprincipalwithportfolio|associateproductwithportfolio|createconstraint|createportfolio|createportfolioshare|createproduct|createprovisioningartifact|deleteconstraint|deleteportfolio|deleteportfolioshare|deleteproduct|deleteprovisioningartifact|describeconstraint|describeportfolio|describeproduct|describeproductasadmin|describeproductview|describeprovisioningartifact|describeprovisioningparameters|describerecord|disassociateprincipalfromportfolio|disassociateproductfromportfolio|listacceptedportfolioshares|listconstraintsforportfolio|listlaunchpaths|listportfolioaccess|listportfolios|listportfoliosforproduct|listprincipalsforportfolio|listprovisioningartifacts|listrecordhistory|provisionproduct|rejectportfolioshare|scanprovisionedproducts|searchproducts|searchproductsasadmin|terminateprovisionedproduct|updateconstraint|updateportfolio|updateproduct|updateprovisionedproduct|updateprovisioningartifact|createprotection|createsubscription|deleteprotection|deletesubscription|describeattack|describeprotection|describesubscription|listattacks|listprotections|createactivity|createstatemachine|deleteactivity|deletestatemachine|describeactivity|describeexecution|describestatemachine|getactivitytask|getexecutionhistory|listactivities|listexecutions|liststatemachines|sendtaskfailure|sendtaskheartbeat|sendtasksuccess|startexecution|stopexecution|describecheckitems|describecheckrefreshstatuses|describechecksummaries|describenotificationpreferences|excludecheckitems|includecheckitems|refreshcheck|updatenotificationpreferences|assigninstance|assignvolume|associateelasticip|attachelasticloadbalancer|clonestack|createapp|createdeployment|createinstance|createlayer|createstack|createuserprofile|deleteapp|deleteinstance|deletelayer|deletestack|deleteuserprofile|deregisterecscluster|deregisterelasticip|deregisterinstance|deregistervolume|describeapps|describecommands|describedeployments|describeecsclusters|describeelasticips|describeelasticloadbalancers|describeinstances|describelayers|describeloadbasedautoscaling|describepermissions|describeraidarrays|describerdsdbinstances|describeserviceerrors|describestackprovisioningparameters|describestacksummary|describestacks|describetimebasedautoscaling|describeuserprofiles|describevolumes|detachelasticloadbalancer|disassociateelasticip|gethostnamesuggestion|grantaccess|rebootinstance|registerecscluster|registerelasticip|registerinstance|registerrdsdbinstance|registervolume|setloadbasedautoscaling|setpermission|settimebasedautoscaling|startinstance|startstack|stopinstance|stopstack|unassigninstance|unassignvolume|updateapp|updateelasticip|updateinstance|updatelayer|updatemyuserprofile|updaterdsdbinstance|updatestack|updateuserprofile|updatevolume|associatenode|createbackup|createserver|deletebackup|deleteserver|describeaccountattributes|describebackups|describeevents|describenodeassociationstatus|describeservers|disassociatenode|restoreserver|startmaintenance|updateserver|updateserverengineattributes|addmemberstogroup|creategroup|createmaildomain|createmailuser|createorganization|deleteorganization|deletemaildomain|deletemobiledevice|describedirectories|describekmskeys|describeorganizations|describemaildomains|describemailgroups|describemailusers|disablemailgroups|disablemailusers|enablemaildomain|enablemailusers|enablemailgroups|getmaildomaindetails|getmailgroupdetails|getmailuserdetails|getmobiledevicedetails|getmobiledevicesforuser|getmobilepolicydetails|listmembersinmailgroup|removemembersfromgroup|resetuserpassword|searchmembers|setadmin|setdefaultmaildomain|setmailgroupdetails|setmailuserdetails|setmobilepolicydetails|wipemobiledevice|createcluster|createservice|deletecluster|deleteservice|deregistercontainerinstance|deregistertaskdefinition|describeclusters|describecontainerinstances|describeservices|describetaskdefinition|describetasks|discoverpollendpoint|listclusters|listcontainerinstances|listservices|listtaskdefinitionfamilies|listtaskdefinitions|listtasks|poll|registercontainerinstance|registertaskdefinition|runtask|starttask|stoptask|starttelemetrysession|submitcontainerstatechange|submittaskstatechange|updatecontaineragent|updateservice|allocatestaticip|attachstaticip|closeinstancepublicports|createdomain|createdomainentry|createinstancesnapshot|createinstances|createinstancesfromsnapshot|createkeypair|deletedomain|deletedomainentry|deleteinstance|deleteinstancesnapshot|deletekeypair|detachstaticip|downloaddefaultkeypair|getactivenames|getblueprints|getbundles|getdomain|getdomains|getinstance|getinstanceaccessdetails|getinstancemetricdata|getinstanceportstates|getinstancesnapshot|getinstancesnapshots|getinstancestate|getinstances|getkeypair|getkeypairs|getoperation|getoperations|getoperationsforresource|getregions|getstaticip|getstaticips|importkeypair|isvpcpeered|openinstancepublicports|peervpc|rebootinstance|releasestaticip|startinstance|stopinstance|unpeervpc|updatedomainentry|addtags|createbatchprediction|createdatasourcefromrds|createdatasourcefromredshift|createdatasourcefroms3|createevaluation|createmlmodel|createrealtimeendpoint|deletebatchprediction|deletedatasource|deleteevaluation|deletemlmodel|deleterealtimeendpoint|deletetags|describebatchpredictions|describedatasources|describeevaluations|describemlmodels|describetags|getbatchprediction|getdatasource|getevaluation|getmlmodel|predict|updatebatchprediction|updatedatasource|updateevaluation|updatemlmodel|comparefaces|createcollection|deletecollection|deletefaces|detectfaces|detectlabels|detectmoderationlabels|indexfaces|listcollections|listfaces|searchfaces|searchfacesbyimage|createtags|createworkspaces|deletetags|describetags|describeworkspacebundles|describeworkspacesconnectionstatus|describeworkspacedirectories|describeworkspaces|modifyworkspaceproperties|startworkspaces|stopworkspaces|rebootworkspaces|rebuildworkspaces|terminateworkspaces|authenticatepackager|activatepipeline|addtags|createpipeline|deactivatepipeline|deletepipeline|describeobjects|describepipelines|evaluateexpression|getaccountlimits|getpipelinedefinition|listpipelines|pollfortask|putaccountlimits|putpipelinedefinition|queryobjects|removetags|reporttaskprogress|reporttaskrunnerheartbeat|setstatus|settaskstatus|validatepipelinedefinition|batchgetbuilds|batchgetprojects|createproject|deleteproject|listbuilds|listbuildsforproject|listconnectedoauthaccounts|listprojects|listrepositories|persistoauthtoken|startbuild|stopbuild|updateproject|deletereportdefinition|describereportdefinitions|putreportdefinition|accepthandshake|attachpolicy|cancelhandshake|createaccount|createorganization|createorganizationalunit|createpolicy|declinehandshake|deleteorganization|deleteorganizationalunit|deletepolicy|describeaccount|describecreateaccountstatus|describehandshake|describeorganization|describeorganizationalunit|describepolicy|detachpolicy|disablepolicytype|enableallfeatures|enablepolicytype|inviteaccounttoorganization|leaveorganization|listaccounts|listaccountsforparent|listchildren|listcreateaccountstatus|listhandshakesforaccount|listhandshakesfororganization|listorganizationalunitsforparent|listparents|listpolicies|listpoliciesfortarget|listroots|listtargetsforpolicy|moveaccount|removeaccountfromorganization|updateorganizationalunit|updatepolicy|addtags|createelasticsearchdomain|deleteelasticsearchdomain|describeelasticsearchdomain|describeelasticsearchdomains|describeelasticsearchdomainconfig|listdomainnames|listtags|removetags|updateelasticsearchdomainconfig|createbytematchset|createipset|createrule|createratebasedrule|createsizeconstraintset|createsqlinjectionmatchset|createwebacl|createxssmatchset|deletebytematchset|deleteipset|deleterule|deleteratebasedrule|deletesizeconstraintset|deletesqlinjectionmatchset|deletewebacl|deletexssmatchset|getbytematchset|getchangetoken|getchangetokenstatus|getipset|getrule|getratebasedrule|getratebasedrulemanagedkeys|getsampledrequests|getsizeconstraintset|getsqlinjectionmatchset|getwebacl|getxssmatchset|listbytematchsets|listipsets|listrules|listratebasedules|listsizeconstraintsets|listsqlinjectionmatchsets|listwebacls|listxssmatchsets|updatebytematchset|updateipset|updaterule|updateratebasedrule|updatesizeconstraintset|updatesqlinjectionmatchset|updatewebacl|updatexssmatchset|associatewebacl|createbytematchset|createipset|createrule|createratebasedrule|createsizeconstraintset|createsqlinjectionmatchset|createwebacl|createxssmatchset|deletebytematchset|deleteipset|deleterule|deleteratebasedrule|deletesizeconstraintset|deletesqlinjectionmatchset|deletewebacl|deletexssmatchset|disassociatewebacl|getbytematchset|getchangetoken|getchangetokenstatus|getipset|getrule|getratebasedrule|getratebasedrulemanagedkeys|getsampledrequests|getsizeconstraintset|getsqlinjectionmatchset|getwebacl|getwebaclforresource|getxssmatchset|listbytematchsets|listipsets|listresourcesforwebacl|listrules|listratebasedules|listsizeconstraintsets|listsqlinjectionmatchsets|listwebacls|listxssmatchsets|updatebytematchset|updateipset|updaterule|updateratebasedrule|updatesizeconstraintset|updatesqlinjectionmatchset|updatewebacl|updatexssmatchset|addattributestofindings|createassessmenttarget|createassessmenttemplate|createresourcegroup|deleteassessmentrun|deleteassessmenttarget|deleteassessmenttemplate|describeassessmentruns|describeassessmenttargets|describeassessmenttemplates|describecrossaccountaccessrole|describefindings|describeresourcegroups|describerulespackages|gettelemetrymetadata|listassessmentrunagents|listassessmentruns|listassessmenttargets|listassessmenttemplates|listeventsubscriptions|listfindings|listrulespackages|listtagsforresource|previewagents|registercrossaccountaccessrole|removeattributesfromfindings|settagsforresource|startassessmentrun|stopassessmentrun|subscribetoevent|unsubscribefromevent|updateassessmenttarget|addapplicationinput|addapplicationoutput|addapplicationreferencedatasource|createapplication|deleteapplication|deleteapplicationoutput|deleteapplicationreferencedatasource|describeapplication|discoverinputschema|getapplicationstate|listapplications|startapplication|stopapplication|updateapplication|createdeliverystream|deletedeliverystream|describedeliverystream|listdeliverystreams|putrecord|putrecordbatch|updatedestination|acceptcertificatetransfer|attachprincipalpolicy|attachthingprincipal|cancelcertificatetransfer|connect|createcertificatefromcsr|createkeysandcertificate|createpolicy|createpolicyversion|creatething|createthingtype|createtopicrule|deletecacertificate|deletecertificate|deletepolicy|deletepolicyversion|deleteregistrationcode|deletething|deletethingshadow|deletethingtype|deletetopicrule|deprecatethingtype|describecacertificate|describecertificate|describeendpoint|describething|describethingtype|detachprincipalpolicy|detachthingprincipal|disabletopicrule|enabletopicrule|getloggingoptions|getpolicy|getpolicyversion|getregistrationcode|getthingshadow|gettopicrule|listcacertificates|listcertificates|listcertificatesbyca|listoutgoingcertificates|listpolicies|listpolicyprincipals|listpolicyversions|listprincipalpolicies|listprincipalthings|listthingprincipals|listthings|listthingtypes|listtopicrules|publish|receive|registercacertificate|registercertificate|rejectcertificatetransfer|replacetopicrule|setdefaultpolicyversion|setloggingoptions|subscribe|transfercertificate|updatecacertificate|updatecertificate|updatething|updatethingshadow|createalias|createbuild|createfleet|creategamesession|createplayersession|createplayersessions|deletealias|deletebuild|deletefleet|deletescalingpolicy|describealias|describebuild|describeec2instancelimits|describefleetattributes|describefleetcapacity|describefleetevents|describefleetportsettings|describefleetutilization|describegamesessions|describegamesessiondetails|describeinstances|describeplayersessions|describeruntimeconfiguration|describescalingpolicies|getgamesessionlogurl|getinstanceaccess|listaliases|listbuilds|listfleets|putscalingpolicy|searchgamesessions|requestuploadcredentials|resolvealias|updatealias|updatebuild|updatefleetattributes|updatefleetcapacity|updatefleetportsettings|updategamesession|updateruntimeconfiguration|acceptqualificationrequest|approveassignment|approverejectedassignment|assignqualification|associatequalificationwithworker|blockworker|createhittype|changehittypeofhit|createhit|createhitwithhittype|createqualificationtype|createworkerblock|deletehit|deletequalificationtype|deleteworkerblock|disablehit|disassociatequalificationfromworker|disposehit|disposequalificationtype|extendhit|forceexpirehit|getaccountbalance|getassignment|getassignmentsforhit|getblockedworkers|getbonuspayments|getfileuploadurl|gethit|gethitsforqualificationtype|getqualificationrequests|getqualificationscore|getqualificationtype|getqualificationsforqualificationtype|getrequesterstatistic|getrequesterworkerstatistic|getreviewresultsforhit|getreviewablehits|grantbonus|grantqualification|listassignmentsforhit|listbonuspayments|listhits|listhitsforqualificationtype|listqualificationrequests|listqualificationtypes|listreviewablehits|listreviewpolicyresultsforhit|listworkerblocks|listworkerswithqualificationtype|notifyworkers|registerhittype|rejectassignment|rejectqualificationrequest|revokequalification|searchhits|searchqualificationtypes|sendbonus|sendtesteventnotification|sethitasreviewing|sethittypenotification|unblockworker|updateexpirationforhit|updatehitreviewstatus|updatehittypeofhit|updatenotificationsettings|updatequalificationscore|updatequalificationtype|batchgettraces|getservicegraph|gettracegraph|gettracesummaries|puttelemetryrecords|puttracesegments|batchgetnamedquery|batchgetqueryexecution|cancelqueryexecution|createnamedquery|deletenamedquery|getcatalogs|getexecutionengine|getexecutionengines|getnamedquery|getnamespace|getnamespaces|getqueryexecution|getqueryexecutions|getqueryresults|gettable|gettables|listnamedqueries|listqueryexecutions|runquery|startqueryexecution|stopqueryexecution|describeservices|getattributevalues|getproducts)(?=")'
399 | 'name': 'entity.name.tag'
400 | }
401 | {
402 | 'match': ':'
403 | 'name': 'entity.other.attribute-name'
404 | }
405 | {
406 | 'match': '[a-zA-Z0-9\\*]*'
407 | 'name': 'entity.other.attribute-name'
408 | }
409 | { 'include': '#error' }
410 | ]
411 | 'resource_block':
412 | 'begin': '(?i:"resource"|"notresource")'
413 | 'beginCaptures':
414 | '0':
415 | 'name': 'punctuation.definition.string.begin.json'
416 | 'end': '(,)|(?=\\})'
417 | 'endCaptures':
418 | '0':
419 | 'name': 'punctuation.definition.string.end.json'
420 | 'name': 'string.quoted.double.json'
421 | 'patterns': [
422 | {
423 | 'begin': ':'
424 | 'beginCaptures':
425 | '0':
426 | 'name': 'punctuation.separator.dictionary.key-value.json'
427 | 'end': '(?=,)|(?=\\})'
428 | 'endCaptures':
429 | '0':
430 | 'name': 'invalid.illegal.traili ng-dictionary-separator.json'
431 | 'name': 'string.quoted.double.json'
432 | 'patterns': [
433 | { 'include': '#arn' }
434 | { 'include': '#resource_array' }
435 | {
436 | 'match': '[^\\s\\n]'
437 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
438 | }
439 | ]
440 | }
441 | ]
442 | 'resource_array':
443 | 'begin': '\\['
444 | 'beginCaptures':
445 | '0':
446 | 'name': 'punctuation.definition.array.begin.json'
447 | 'end': '(,?)[\\s\\n]*(\\])'
448 | 'endCaptures':
449 | '1':
450 | 'name': 'invalid.illegal.trailing-array-separator.json'
451 | '2':
452 | 'name': 'punctuation.definition.array.end.json'
453 | 'name': 'meta.structure.array.json'
454 | 'patterns': [
455 | { 'include': '#arn' }
456 | {
457 | 'match': ','
458 | 'name': 'punctuation.separator.array.json'
459 | }
460 | { 'include': '#error' }
461 | ]
462 | 'condition_block':
463 | 'begin': '(?i:"condition")'
464 | 'beginCaptures':
465 | '0':
466 | 'name': 'punctuation.definition.string.begin.json'
467 | 'end': '(,)|(?=\\})'
468 | 'endCaptures':
469 | '0':
470 | 'name': 'punctuation.definition.string.end.json'
471 | 'name': 'string.quoted.double.json'
472 | 'patterns': [
473 | {
474 | 'begin': ':'
475 | 'beginCaptures':
476 | '0':
477 | 'name': 'punctuation.separator.dictionary.key-value.json'
478 | 'end': '(?=,)|(?=\\})'
479 | 'endCaptures':
480 | '0':
481 | 'name': 'invalid.illegal.traili ng-dictionary-separator.json'
482 | 'name': 'string.quoted.double.json'
483 | 'patterns': [
484 | {
485 | 'include': '#condition_map'
486 | }
487 | {
488 | 'match': '[^\\s\\n]'
489 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
490 | }
491 | ]
492 | }
493 | ]
494 | 'condition_map':
495 | 'begin': '\\{'
496 | 'beginCaptures':
497 | '0':
498 | 'name': 'punctuation.definition.dictionary.begin.json'
499 | 'end': '\\}'
500 | 'endCaptures':
501 | '0':
502 | 'name': 'punctuation.definition.dictionary.end.json'
503 | 'name': 'meta.structure.dictionary.json'
504 | 'patterns': [
505 | { 'include': '#condition_type_entry' }
506 | {
507 | 'match': '[^\\s\\n]'
508 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
509 | }
510 | ]
511 | 'condition_type_entry':
512 | 'begin': '(?i:"[a-zA-Z0-9]*")'
513 | 'beginCaptures':
514 | '0':
515 | 'name': 'punctuation.definition.string.begin.json'
516 | 'end': '(,)|(?=\\})'
517 | 'endCaptures':
518 | '0':
519 | 'name': 'punctuation.definition.string.end.json'
520 | 'name': 'string.quoted.double.json'
521 | 'patterns': [
522 | {
523 | 'begin': ':'
524 | 'beginCaptures':
525 | '0':
526 | 'name': 'punctuation.separator.dictionary.key-value.json'
527 | 'end': '(?=,)|(?=\\})'
528 | 'endCaptures':
529 | '0':
530 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
531 | 'name': 'string.quoted.double.json'
532 | 'patterns': [
533 | {
534 | 'include': '#condition_key_map'
535 | }
536 | ]
537 | }
538 | ]
539 | 'condition_key_map':
540 | 'begin': '\\{'
541 | 'beginCaptures':
542 | '0':
543 | 'name': 'punctuation.definition.dictionary.begin.json'
544 | 'end': '\\}'
545 | 'endCaptures':
546 | '0':
547 | 'name': 'punctuation.definition.dictionary.end.json'
548 | 'name': 'meta.structure.dictionary.json'
549 | 'patterns': [
550 | {
551 | 'include': '#condition_key_entry'
552 | }
553 | {
554 | 'match': '[^\\s\\n]'
555 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
556 | }
557 | ]
558 | 'condition_key_entry':
559 | 'begin': '(?i:"[a-zA-Z0-9:]*")'
560 | 'beginCaptures':
561 | '0':
562 | 'name': 'punctuation.definition.string.begin.json'
563 | 'end': '(,)|(?=\\})'
564 | 'endCaptures':
565 | '0':
566 | 'name': 'punctuation.definition.string.end.json'
567 |
568 | 'patterns': [
569 | {
570 | 'begin': ':'
571 | 'beginCaptures':
572 | '0':
573 | 'name': 'punctuation.separator.dictionary.key-value.json'
574 | 'end': '(?=,)|(?=\\})'
575 | 'endCaptures':
576 | '0':
577 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
578 | 'name': 'string.quoted.double.json'
579 | 'patterns': [
580 | {
581 | 'include': '#condition'
582 | }
583 | {
584 | 'include': '#condition_array'
585 | }
586 | ]
587 | }
588 | ]
589 | 'condition_array':
590 | 'begin': '\\['
591 | 'beginCaptures':
592 | '0':
593 | 'name': 'punctuation.definition.array.begin.json'
594 | 'end': '(,?)[\\s\\n]*(\\])'
595 | 'endCaptures':
596 | '1':
597 | 'name': 'invalid.illegal.trailing-array-separator.json'
598 | '2':
599 | 'name': 'punctuation.definition.array.end.json'
600 | 'name': 'meta.structure.array.json'
601 | 'patterns': [
602 | {
603 | 'include': '#condition'
604 | }
605 | {
606 | 'match': ','
607 | 'name': 'punctuation.separator.array.json'
608 | }
609 | { 'include': '#error' }
610 | ]
611 | 'condition':
612 | 'match': '"[^"]*"'
613 | 'name': 'entity.other.attribute-name'
614 | 'arn':
615 | 'match': '"[^"]*"'
616 | 'name': 'entity.other.attribute-name'
617 | 'error':
618 | 'match': '[^\\s\\]]'
619 | 'name': 'invalid.illegal.expected-array-separator.json'
620 |
--------------------------------------------------------------------------------
/lib/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | gem 'faraday', '~> 0.9.2'
4 | gem 'pry', '~> 0.10.4'
5 |
--------------------------------------------------------------------------------
/lib/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | coderay (1.1.2)
5 | faraday (0.9.2)
6 | multipart-post (>= 1.2, < 3)
7 | method_source (0.8.2)
8 | multipart-post (2.0.0)
9 | pry (0.10.4)
10 | coderay (~> 1.1.0)
11 | method_source (~> 0.8.1)
12 | slop (~> 3.4)
13 | slop (3.6.0)
14 |
15 | PLATFORMS
16 | ruby
17 |
18 | DEPENDENCIES
19 | faraday (~> 0.9.2)
20 | pry (~> 0.10.4)
21 |
22 | BUNDLED WITH
23 | 1.16.0
24 |
--------------------------------------------------------------------------------
/lib/generate-grammars.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | require 'json'
4 | require 'faraday'
5 |
6 | def get_service_map
7 | download = Faraday.get 'https://awsiamconsole.s3.amazonaws.com/iam/assets/js/bundles/policies.js'
8 | File.write './policies.js', download.body
9 | end
10 |
11 | def parse_service_map
12 | policies = File.read('./policies.js')
13 | # Extract the ServiceMap
14 | index = policies.index 'serviceMap'
15 | chars = policies[index..-1].split ''
16 | # Pull the following object
17 | obj = []
18 | lb=rb=0
19 | chars.each do |c|
20 | lb += 1 if c== '{'
21 | rb += 1 if c== '}'
22 | obj.push c
23 | break if lb>0 and lb==rb
24 | end
25 | # Turn Javascript Object into JSON (FML -- can't aws just give us the JSON?)
26 | service_map = obj.join.gsub(/\s/, '')
27 | # Cleanup Exceptions
28 | service_map.gsub!(/HasResource:\!([0-9]+)/, 'HasResource:"!\1"')
29 | service_map.gsub!(/ARNRegex:("[^"]*")/, 'ARNRegex:"REMOVED"')
30 | # turn objects into strings e.g. test:[] => "test":[]
31 | service_map.gsub!(/([a-zA-Z0-9_]+):([\[{0-9"])/, '"\1":\2')
32 | service_map = '{' + service_map + '}'
33 | File.write('service_map.json', service_map)
34 | JSON.load(service_map)
35 | end
36 |
37 | def generate_grammar service_map
38 | # extract fields
39 | cson = File.read './policy.cson'
40 | service_count = service_map['serviceMap'].keys.length
41 |
42 | # Get Services
43 | prefixes = service_map['serviceMap'].values.collect { |v| v['StringPrefix'] }
44 | service_list = prefixes.join('|').downcase
45 | cson.gsub! '{{SERVICE_LIST}}', service_list
46 | puts service_list
47 |
48 | # Get Actions
49 | actions = service_map['serviceMap'].values.collect {|v|v['Actions']}.flatten
50 | action_list = actions.join('|').downcase
51 | cson.gsub! '{{ACTION_LIST}}', action_list
52 | puts action_list
53 |
54 | File.write '../grammars/generated-policy.cson', cson
55 | end
56 |
57 | def get_service_snippet service, actions
58 |
59 | snippet = []
60 | snippet.push " 'All #{service} Actions':"
61 | snippet.push " 'prefix': '#{service}:'"
62 | snippet.push " 'body': \"\"\""
63 | actions.each do |a|
64 | snippet.push " \"#{service}:#{a}\","
65 | end
66 | snippet.push " \"\"\"\n\n"
67 | snippet.join "\n"
68 | end
69 |
70 | def generate_snippets service_map
71 |
72 | cson = File.read './snippets.cson'
73 |
74 | service_map['serviceMap'].keys.each do |k|
75 | service = service_map['serviceMap'][k]['StringPrefix']
76 | actions = service_map['serviceMap'][k]['Actions']
77 | snippet = get_service_snippet service, actions
78 | cson += snippet
79 | end
80 |
81 | File.write '../snippets/generated-snippets.cson', cson
82 | end
83 |
84 | get_service_map
85 | service_map = parse_service_map
86 | # Grammar
87 | generate_grammar service_map
88 | # Snippets
89 | generate_snippets service_map
90 |
--------------------------------------------------------------------------------
/lib/policy.cson:
--------------------------------------------------------------------------------
1 | 'scopeName': 'policy.json'
2 | 'fileTypes': [
3 | 'policy'
4 | 'policy.json'
5 | 'iam'
6 | 'iam.json'
7 | ]
8 | 'name': 'policy'
9 | 'patterns': [
10 | { 'include': '#policy' }
11 | ]
12 | 'repository':
13 | 'policy':
14 | 'begin': '\\{'
15 | 'beginCaptures':
16 | '0':
17 | 'name': 'punctuation.definition.dictionary.begin.json'
18 | 'end': '\\}'
19 | 'endCaptures':
20 | '0':
21 | 'name': 'punctuation.definition.dictionary.end.json'
22 | 'name': 'meta.structure.dictionary.json'
23 | 'patterns': [
24 | { 'include': '#id_block' }
25 | { 'include': '#version_block' }
26 | { 'include': '#statement_block' }
27 | {
28 | 'match': '[^\\s\\n]'
29 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
30 | }
31 | ]
32 | 'id_block':
33 | 'begin': '(?i:"id")'
34 | 'beginCaptures':
35 | '0':
36 | 'name': 'punctuation.definition.string.begin.json'
37 | 'end': '(,)|(?=\\})'
38 | 'endCaptures':
39 | '0':
40 | 'name': 'punctuation.definition.string.end.json'
41 | 'name': 'string.quoted.double.json'
42 | 'patterns': [
43 | {
44 | 'begin': ':'
45 | 'beginCaptures':
46 | '0':
47 | 'name': 'punctuation.separator.dictionary.key-value.json'
48 | 'end': '(?=,)|(?=\\})'
49 | 'endCaptures':
50 | '0':
51 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
52 | 'name': 'string.quoted.double.json'
53 | 'patterns': [
54 | {
55 | 'match': '"[a-zA-Z0-9\\-_]*"'
56 | 'name': 'entity.other.attribute-name'
57 | }
58 | {
59 | 'match': '[^\\s\\n]'
60 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
61 | }
62 | ]
63 | }
64 | ]
65 | 'version_block':
66 | 'begin': '(?i:"version")'
67 | 'beginCaptures':
68 | '0':
69 | 'name': 'punctuation.definition.string.begin.json'
70 | 'end': '(,)|(?=\\})'
71 | 'endCaptures':
72 | '0':
73 | 'name': 'punctuation.definition.string.end.json'
74 | 'name': 'string.quoted.double.json'
75 | 'patterns': [
76 | {
77 | 'begin': ':'
78 | 'beginCaptures':
79 | '0':
80 | 'name': 'punctuation.separator.dictionary.key-value.json'
81 | 'end': '(?=,)|(?=\\})'
82 | 'endCaptures':
83 | '0':
84 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
85 | 'name': 'string.quoted.double.json'
86 | 'patterns': [
87 | {
88 | 'match': '("2008-10-17"|"2012-10-17")'
89 | 'name': 'entity.other.attribute-name'
90 | }
91 | {
92 | 'match': '[^\\s\\n]'
93 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
94 | }
95 | ]
96 | }
97 | ]
98 | 'statement_block':
99 | 'begin': '(?i:"statement")'
100 | 'beginCaptures':
101 | '0':
102 | 'name': 'punctuation.definition.string.begin.json'
103 | 'end': '(,)|(?=\\})'
104 | 'endCaptures':
105 | '0':
106 | 'name': 'punctuation.definition.string.end.json'
107 | 'name': 'string.quoted.double.json'
108 | 'patterns': [
109 | {
110 | 'begin': ':'
111 | 'beginCaptures':
112 | '0':
113 | 'name': 'punctuation.separator.dictionary.key-value.json'
114 | 'end': '(?=,)|(?=\\})'
115 | 'endCaptures':
116 | '0':
117 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
118 | 'name': 'string.quoted.double.json'
119 | 'patterns': [
120 | { 'include': '#statement_array' }
121 | ]
122 | }
123 | ]
124 | 'statement_array':
125 | 'begin': '\\['
126 | 'beginCaptures':
127 | '0':
128 | 'name': 'punctuation.definition.array.begin.json'
129 | 'end': '(,?)[\\s\\n]*(\\])'
130 | 'endCaptures':
131 | '1':
132 | 'name': 'invalid.illegal.trailing-array-separator.json'
133 | '2':
134 | 'name': 'punctuation.definition.array.end.json'
135 | 'name': 'meta.structure.array.json'
136 | 'patterns': [
137 | { 'include': '#statement' }
138 | {
139 | 'match': ','
140 | 'name': 'punctuation.separator.array.json'
141 | }
142 | { 'include': '#error' }
143 | ]
144 | 'statement':
145 | 'begin': '\\{'
146 | 'beginCaptures':
147 | '0':
148 | 'name': 'punctuation.definition.dictionary.begin.json'
149 | 'end': '\\}'
150 | 'endCaptures':
151 | '0':
152 | 'name': 'punctuation.definition.dictionary.end.json'
153 | 'name': 'meta.structure.dictionary.json'
154 | 'patterns': [
155 | { 'include': '#sid_block' }
156 | { 'include': '#effect_block' }
157 | { 'include': '#principal_block' }
158 | { 'include': '#action_block' }
159 | { 'include': '#resource_block' }
160 | { 'include': '#condition_block' }
161 | {
162 | 'match': '[^\\s\\n]'
163 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
164 | }
165 | ]
166 | 'sid_block':
167 | 'begin': '(?i:"sid")'
168 | 'beginCaptures':
169 | '0':
170 | 'name': 'punctuation.definition.string.begin.json'
171 | 'end': '(,)|(?=\\})'
172 | 'endCaptures':
173 | '0':
174 | 'name': 'punctuation.definition.string.end.json'
175 | 'name': 'string.quoted.double.json'
176 | 'patterns': [
177 | {
178 | 'begin': ':'
179 | 'beginCaptures':
180 | '0':
181 | 'name': 'punctuation.separator.dictionary.key-value.json'
182 | 'end': '(?=,)|(?=\\})'
183 | 'endCaptures':
184 | '0':
185 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
186 | 'name': 'string.quoted.double.json'
187 | 'patterns': [
188 | {
189 | 'match': '"[a-zA-Z0-9]*"'
190 | 'name': 'entity.other.attribute-name'
191 | }
192 | {
193 | 'match': '[^\\s\\n]'
194 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
195 | }
196 | ]
197 | }
198 | ]
199 | 'effect_block':
200 | 'begin': '(?i:"effect")'
201 | 'beginCaptures':
202 | '0':
203 | 'name': 'punctuation.definition.string.begin.json'
204 | 'end': '(,)|(?=\\})'
205 | 'endCaptures':
206 | '0':
207 | 'name': 'punctuation.definition.string.end.json'
208 | 'name': 'string.quoted.double.json'
209 | 'patterns': [
210 | {
211 | 'begin': ':'
212 | 'beginCaptures':
213 | '0':
214 | 'name': 'punctuation.separator.dictionary.key-value.json'
215 | 'end': '(?=,)|(?=\\})'
216 | 'endCaptures':
217 | '0':
218 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
219 | 'name': 'string.quoted.double.json'
220 | 'patterns': [
221 | {
222 | 'match': '(?i:"allow"|"deny")'
223 | 'name': 'entity.other.attribute-name'
224 | }
225 | {
226 | 'match': '[^\\s\\n]'
227 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
228 | }
229 | ]
230 | }
231 | ]
232 | 'principal_block':
233 | 'begin': '(?i:"principal"|"notprincipal")'
234 | 'beginCaptures':
235 | '0':
236 | 'name': 'punctuation.definition.string.begin.json'
237 | 'end': '(,)|(?=\\})'
238 | 'endCaptures':
239 | '0':
240 | 'name': 'punctuation.definition.string.end.json'
241 | 'name': 'string.quoted.double.json'
242 | 'patterns': [
243 | {
244 | 'begin': ':'
245 | 'beginCaptures':
246 | '0':
247 | 'name': 'punctuation.separator.dictionary.key-value.json'
248 | 'end': '(?=,)|(?=\\})'
249 | 'endCaptures':
250 | '0':
251 | 'name': 'invalid.illegal.traili ng-dictionary-separator.json'
252 | 'name': 'string.quoted.double.json'
253 | 'patterns': [
254 | {
255 | 'match': '"\\*"'
256 | 'name': 'entity.other.attribute-name'
257 | }
258 | { 'include': '#principal_map' }
259 | {
260 | 'match': '[^\\s\\n]'
261 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
262 | }
263 | ]
264 | }
265 | ]
266 | 'principal_map':
267 | 'begin': '\\{'
268 | 'beginCaptures':
269 | '0':
270 | 'name': 'punctuation.definition.dictionary.begin.json'
271 | 'end': '\\}'
272 | 'endCaptures':
273 | '0':
274 | 'name': 'punctuation.definition.dictionary.end.json'
275 | 'name': 'meta.structure.dictionary.json'
276 | 'patterns': [
277 | { 'include': '#principal_map_entry' }
278 | {
279 | 'match': '[^\\s\\n]'
280 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
281 | }
282 | ]
283 | 'principal_map_entry':
284 | 'begin': '(?i:"aws"|"federated"|"service")'
285 | 'beginCaptures':
286 | '0':
287 | 'name': 'punctuation.definition.string.begin.json'
288 | 'end': '(,)|(?=\\})'
289 | 'endCaptures':
290 | '0':
291 | 'name': 'punctuation.definition.string.end.json'
292 | 'name': 'string.quoted.double.json'
293 | 'patterns': [
294 | {
295 | 'begin': ':'
296 | 'beginCaptures':
297 | '0':
298 | 'name': 'punctuation.separator.dictionary.key-value.json'
299 | 'end': '(?=,)|(?=\\})'
300 | 'endCaptures':
301 | '0':
302 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
303 | 'name': 'string.quoted.double.json'
304 | 'patterns': [
305 | { 'include': '#arn' }
306 | { 'include': '#principal_array' }
307 | ]
308 | }
309 | ]
310 | 'principal_array':
311 | 'begin': '\\['
312 | 'beginCaptures':
313 | '0':
314 | 'name': 'punctuation.definition.array.begin.json'
315 | 'end': '(,?)[\\s\\n]*(\\])'
316 | 'endCaptures':
317 | '1':
318 | 'name': 'invalid.illegal.trailing-array-separator.json'
319 | '2':
320 | 'name': 'punctuation.definition.array.end.json'
321 | 'name': 'meta.structure.array.json'
322 | 'patterns': [
323 | { 'include': '#arn' }
324 | {
325 | 'match': ','
326 | 'name': 'punctuation.separator.array.json'
327 | }
328 | { 'include': '#error' }
329 | ]
330 | 'action_block':
331 | 'begin': '(?i:"action"|"notaction")'
332 | 'beginCaptures':
333 | '0':
334 | 'name': 'punctuation.definition.string.begin.json'
335 | 'end': '(,)|(?=\\})'
336 | 'endCaptures':
337 | '0':
338 | 'name': 'punctuation.definition.string.end.json'
339 | 'name': 'string.quoted.double.json'
340 | 'patterns': [
341 | {
342 | 'begin': ':'
343 | 'beginCaptures':
344 | '0':
345 | 'name': 'punctuation.separator.dictionary.key-value.json'
346 | 'end': '(?=,)|(?=\\})'
347 | 'endCaptures':
348 | '0':
349 | 'name': 'invalid.illegal.traili ng-dictionary-separator.json'
350 | 'name': 'string.quoted.double.json'
351 | 'patterns': [
352 | { 'include': '#action' }
353 | { 'include': '#action_array' }
354 | {
355 | 'match': '[^\\s\\n]'
356 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
357 | }
358 | ]
359 | }
360 | ]
361 | 'action_array':
362 | 'begin': '\\['
363 | 'beginCaptures':
364 | '0':
365 | 'name': 'punctuation.definition.array.begin.json'
366 | 'end': '(,?)[\\s\\n]*(\\])'
367 | 'endCaptures':
368 | '1':
369 | 'name': 'invalid.illegal.trailing-array-separator.json'
370 | '2':
371 | 'name': 'punctuation.definition.array.end.json'
372 | 'name': 'meta.structure.array.json'
373 | 'patterns': [
374 | {
375 | 'include': '#action'
376 | }
377 | {
378 | 'match': ','
379 | 'name': 'punctuation.separator.array.json'
380 | }
381 | { 'include': '#error' }
382 | ]
383 | 'action':
384 | 'begin': '"'
385 | 'beginCaptures':
386 | '0':
387 | 'name': 'entity.other.attribute-name'
388 | 'end': '"'
389 | 'endCaptures':
390 | '0':
391 | 'name': 'entity.other.attribute-name'
392 | 'patterns': [
393 | {
394 | 'match': '(?<=")(?i:{{SERVICE_LIST}})'
395 | 'name': 'entity.name.tag'
396 | }
397 | {
398 | 'match': '(?<=:)(?i:{{ACTION_LIST}})(?=")'
399 | 'name': 'entity.name.tag'
400 | }
401 | {
402 | 'match': ':'
403 | 'name': 'entity.other.attribute-name'
404 | }
405 | {
406 | 'match': '[a-zA-Z0-9\\*]*'
407 | 'name': 'entity.other.attribute-name'
408 | }
409 | { 'include': '#error' }
410 | ]
411 | 'resource_block':
412 | 'begin': '(?i:"resource"|"notresource")'
413 | 'beginCaptures':
414 | '0':
415 | 'name': 'punctuation.definition.string.begin.json'
416 | 'end': '(,)|(?=\\})'
417 | 'endCaptures':
418 | '0':
419 | 'name': 'punctuation.definition.string.end.json'
420 | 'name': 'string.quoted.double.json'
421 | 'patterns': [
422 | {
423 | 'begin': ':'
424 | 'beginCaptures':
425 | '0':
426 | 'name': 'punctuation.separator.dictionary.key-value.json'
427 | 'end': '(?=,)|(?=\\})'
428 | 'endCaptures':
429 | '0':
430 | 'name': 'invalid.illegal.traili ng-dictionary-separator.json'
431 | 'name': 'string.quoted.double.json'
432 | 'patterns': [
433 | { 'include': '#arn' }
434 | { 'include': '#resource_array' }
435 | {
436 | 'match': '[^\\s\\n]'
437 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
438 | }
439 | ]
440 | }
441 | ]
442 | 'resource_array':
443 | 'begin': '\\['
444 | 'beginCaptures':
445 | '0':
446 | 'name': 'punctuation.definition.array.begin.json'
447 | 'end': '(,?)[\\s\\n]*(\\])'
448 | 'endCaptures':
449 | '1':
450 | 'name': 'invalid.illegal.trailing-array-separator.json'
451 | '2':
452 | 'name': 'punctuation.definition.array.end.json'
453 | 'name': 'meta.structure.array.json'
454 | 'patterns': [
455 | { 'include': '#arn' }
456 | {
457 | 'match': ','
458 | 'name': 'punctuation.separator.array.json'
459 | }
460 | { 'include': '#error' }
461 | ]
462 | 'condition_block':
463 | 'begin': '(?i:"condition")'
464 | 'beginCaptures':
465 | '0':
466 | 'name': 'punctuation.definition.string.begin.json'
467 | 'end': '(,)|(?=\\})'
468 | 'endCaptures':
469 | '0':
470 | 'name': 'punctuation.definition.string.end.json'
471 | 'name': 'string.quoted.double.json'
472 | 'patterns': [
473 | {
474 | 'begin': ':'
475 | 'beginCaptures':
476 | '0':
477 | 'name': 'punctuation.separator.dictionary.key-value.json'
478 | 'end': '(?=,)|(?=\\})'
479 | 'endCaptures':
480 | '0':
481 | 'name': 'invalid.illegal.traili ng-dictionary-separator.json'
482 | 'name': 'string.quoted.double.json'
483 | 'patterns': [
484 | {
485 | 'include': '#condition_map'
486 | }
487 | {
488 | 'match': '[^\\s\\n]'
489 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
490 | }
491 | ]
492 | }
493 | ]
494 | 'condition_map':
495 | 'begin': '\\{'
496 | 'beginCaptures':
497 | '0':
498 | 'name': 'punctuation.definition.dictionary.begin.json'
499 | 'end': '\\}'
500 | 'endCaptures':
501 | '0':
502 | 'name': 'punctuation.definition.dictionary.end.json'
503 | 'name': 'meta.structure.dictionary.json'
504 | 'patterns': [
505 | { 'include': '#condition_type_entry' }
506 | {
507 | 'match': '[^\\s\\n]'
508 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
509 | }
510 | ]
511 | 'condition_type_entry':
512 | 'begin': '(?i:"[a-zA-Z0-9]*")'
513 | 'beginCaptures':
514 | '0':
515 | 'name': 'punctuation.definition.string.begin.json'
516 | 'end': '(,)|(?=\\})'
517 | 'endCaptures':
518 | '0':
519 | 'name': 'punctuation.definition.string.end.json'
520 | 'name': 'string.quoted.double.json'
521 | 'patterns': [
522 | {
523 | 'begin': ':'
524 | 'beginCaptures':
525 | '0':
526 | 'name': 'punctuation.separator.dictionary.key-value.json'
527 | 'end': '(?=,)|(?=\\})'
528 | 'endCaptures':
529 | '0':
530 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
531 | 'name': 'string.quoted.double.json'
532 | 'patterns': [
533 | {
534 | 'include': '#condition_key_map'
535 | }
536 | ]
537 | }
538 | ]
539 | 'condition_key_map':
540 | 'begin': '\\{'
541 | 'beginCaptures':
542 | '0':
543 | 'name': 'punctuation.definition.dictionary.begin.json'
544 | 'end': '\\}'
545 | 'endCaptures':
546 | '0':
547 | 'name': 'punctuation.definition.dictionary.end.json'
548 | 'name': 'meta.structure.dictionary.json'
549 | 'patterns': [
550 | {
551 | 'include': '#condition_key_entry'
552 | }
553 | {
554 | 'match': '[^\\s\\n]'
555 | 'name': 'invalid.illegal.unrecognized-string-escape.json'
556 | }
557 | ]
558 | 'condition_key_entry':
559 | 'begin': '(?i:"[a-zA-Z0-9:]*")'
560 | 'beginCaptures':
561 | '0':
562 | 'name': 'punctuation.definition.string.begin.json'
563 | 'end': '(,)|(?=\\})'
564 | 'endCaptures':
565 | '0':
566 | 'name': 'punctuation.definition.string.end.json'
567 |
568 | 'patterns': [
569 | {
570 | 'begin': ':'
571 | 'beginCaptures':
572 | '0':
573 | 'name': 'punctuation.separator.dictionary.key-value.json'
574 | 'end': '(?=,)|(?=\\})'
575 | 'endCaptures':
576 | '0':
577 | 'name': 'invalid.illegal.trailing-dictionary-separator.json'
578 | 'name': 'string.quoted.double.json'
579 | 'patterns': [
580 | {
581 | 'include': '#condition'
582 | }
583 | {
584 | 'include': '#condition_array'
585 | }
586 | ]
587 | }
588 | ]
589 | 'condition_array':
590 | 'begin': '\\['
591 | 'beginCaptures':
592 | '0':
593 | 'name': 'punctuation.definition.array.begin.json'
594 | 'end': '(,?)[\\s\\n]*(\\])'
595 | 'endCaptures':
596 | '1':
597 | 'name': 'invalid.illegal.trailing-array-separator.json'
598 | '2':
599 | 'name': 'punctuation.definition.array.end.json'
600 | 'name': 'meta.structure.array.json'
601 | 'patterns': [
602 | {
603 | 'include': '#condition'
604 | }
605 | {
606 | 'match': ','
607 | 'name': 'punctuation.separator.array.json'
608 | }
609 | { 'include': '#error' }
610 | ]
611 | 'condition':
612 | 'match': '"[^"]*"'
613 | 'name': 'entity.other.attribute-name'
614 | 'arn':
615 | 'match': '"[^"]*"'
616 | 'name': 'entity.other.attribute-name'
617 | 'error':
618 | 'match': '[^\\s\\]]'
619 | 'name': 'invalid.illegal.expected-array-separator.json'
620 |
--------------------------------------------------------------------------------
/lib/snippets.cson:
--------------------------------------------------------------------------------
1 | '.policy.json':
2 |
3 | 'Id':
4 | 'prefix': 'Id'
5 | 'body': '"Id" : "StatementId"'
6 |
7 | 'Version':
8 | 'prefix': 'Version'
9 | 'body': '"Version" : "2012-10-17"'
10 |
11 | 'Statement':
12 | 'prefix': 'Statement'
13 | 'body': """
14 | "Statement" : [
15 | {
16 | "Effect": "Allow",
17 | "Action": [
18 | "${1:ec2:...}"
19 | ],
20 | "Resource": "${2:arn:...}",
21 | "Condition": {$3}
22 | }
23 | ]
24 | """
25 |
26 | 'IP Condition':
27 | 'prefix': 'IpAddress'
28 | 'body': """
29 | "IpAddress": {
30 | "aws:SourceIp": [
31 | "${1:1.2.3.4/25}"
32 | ]
33 | }
34 | """
35 |
36 | 'IP Condition If Exists':
37 | 'prefix': 'IpAddressIfExists'
38 | 'body': """
39 | "IpAddressIfExists": {
40 | "aws:SourceIp": [
41 | "${1:1.2.3.4/25}"
42 | ]
43 | }
44 | """
45 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "iam-syntax",
3 | "author": "Rob Witoff ",
4 | "version": "0.1.5",
5 | "description": "Syntax Highlighting for IAM Policies",
6 | "repository": "git@github.com:witoff/atom-iam-syntax.git",
7 | "keywords": [
8 | "aws",
9 | "iam",
10 | "policy",
11 | "grammar",
12 | "syntax"
13 | ],
14 | "license": "TBD",
15 | "engines": {
16 | "atom": ">=1.0.0 <2.0.0"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/policy.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/witoff/atom-iam-syntax/e042b7a4bfb5bda699f5607492c7c9fcbdd16505/policy.gif
--------------------------------------------------------------------------------
/settings/language-policy.cson:
--------------------------------------------------------------------------------
1 | '.policy.json'
2 |
--------------------------------------------------------------------------------
/spec/policy.json:
--------------------------------------------------------------------------------
1 | {
2 | "Id" : "StatementId",
3 | "Version" : "2012-10-17",
4 | "Statement" : [
5 | {
6 | "Effect": "Allow",
7 | "Action": [
8 | "ec2:RunInstances",
9 | "xray:BatchGetTraces",
10 | "xray:GetServiceGraph",
11 | "xray:GetTraceGraph",
12 | "xray:GetTraceSummaries",
13 | "xray:PutTelemetryRecords",
14 | "xray:PutTraceSegments",
15 | ],
16 | "Resource": "*",
17 | "Condition": {
18 | "IpAddress": {
19 | "aws:SourceIp": [
20 | "1.2.3.4/25"
21 | ]
22 | }
23 | }
24 | }
25 | ]
26 | }
27 |
--------------------------------------------------------------------------------
/spec/reference.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version": "2012-10-17",
3 | "Statement": [
4 | {
5 | "Effect": "Allow",
6 | "Action": [
7 | "test:test",
8 | "*",
9 | "s3:*"
10 | "s3:ListBucket",
11 | "s3:ListBucketMultipartUploads",
12 | "s3:PutObject",
13 | "s3:PutObjectAcl",
14 | "s3:PutObjectAclVersion",
15 | ],
16 | "Resource": "arn:aws:s3:::app-my-bucket/*",
17 | "Principal": {
18 | "aws" : "1234567890"
19 | },
20 | "Condition": {
21 | "StringEqualsifExists": {
22 | "aws:sourceVpce": [
23 | "vpce-12345678"
24 | ]
25 | },
26 | "IpAddressIfExists": {
27 | "aws:SourceIp": [
28 | "1.2.3.4/25"
29 | ]
30 | }
31 | }
32 | }
33 | ]
34 | }
35 |
--------------------------------------------------------------------------------
/spec/reference.policy.json:
--------------------------------------------------------------------------------
1 | {
2 | "Version": "2012-10-17",
3 | "Statement": [
4 | {
5 | "Effect": "Allow",
6 | "Action": [
7 | "test:test",
8 | "*",
9 | "s3:*"
10 | "s3:ListBucket",
11 | "s3:ListBucketMultipartUploads",
12 | "s3:PutObject",
13 | "s3:PutObjectAcl",
14 | "s3:PutObjectAclVersion",
15 | ],
16 | "Resource": "arn:aws:s3:::app-my-bucket/*",
17 | "Principal": {
18 | "aws" : "1234567890"
19 | },
20 | "Condition": {
21 | "StringEqualsifExists": {
22 | "aws:sourceVpce": [
23 | "vpce-12345678"
24 | ]
25 | },
26 | "IpAddressIfExists": {
27 | "aws:SourceIp": [
28 | "1.2.3.4/25"
29 | ]
30 | }
31 | }
32 | }
33 | ]
34 | }
35 |
--------------------------------------------------------------------------------