line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package AWS::CLIWrapper; |
2
|
|
|
|
|
|
|
|
3
|
7
|
|
|
7
|
|
405679
|
use 5.008001; |
|
7
|
|
|
|
|
71
|
|
4
|
7
|
|
|
7
|
|
44
|
use strict; |
|
7
|
|
|
|
|
13
|
|
|
7
|
|
|
|
|
162
|
|
5
|
7
|
|
|
7
|
|
34
|
use warnings; |
|
7
|
|
|
|
|
13
|
|
|
7
|
|
|
|
|
319
|
|
6
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
our $VERSION = '1.26'; |
8
|
|
|
|
|
|
|
|
9
|
7
|
|
|
7
|
|
3102
|
use version; |
|
7
|
|
|
|
|
13335
|
|
|
7
|
|
|
|
|
39
|
|
10
|
7
|
|
|
7
|
|
5647
|
use JSON 2; |
|
7
|
|
|
|
|
82257
|
|
|
7
|
|
|
|
|
39
|
|
11
|
7
|
|
|
7
|
|
5807
|
use IPC::Cmd; |
|
7
|
|
|
|
|
403477
|
|
|
7
|
|
|
|
|
374
|
|
12
|
7
|
|
|
7
|
|
3318
|
use String::ShellQuote; |
|
7
|
|
|
|
|
5618
|
|
|
7
|
|
|
|
|
423
|
|
13
|
7
|
|
|
7
|
|
55
|
use Carp; |
|
7
|
|
|
|
|
16
|
|
|
7
|
|
|
|
|
62858
|
|
14
|
|
|
|
|
|
|
|
15
|
|
|
|
|
|
|
our $Error = { Message => '', Code => '' }; |
16
|
|
|
|
|
|
|
|
17
|
|
|
|
|
|
|
our $true = do { bless \(my $dummy = 1), "AWS::CLIWrapper::Boolean" }; |
18
|
|
|
|
|
|
|
our $false = do { bless \(my $dummy = 0), "AWS::CLIWrapper::Boolean" }; |
19
|
|
|
|
|
|
|
|
20
|
|
|
|
|
|
|
my $AWSCLI_VERSION = undef; |
21
|
|
|
|
|
|
|
|
22
|
|
|
|
|
|
|
sub new { |
23
|
8
|
|
|
8
|
1
|
5807
|
my($class, %param) = @_; |
24
|
|
|
|
|
|
|
|
25
|
8
|
|
|
|
|
24
|
my $region = $param{region}; |
26
|
|
|
|
|
|
|
|
27
|
8
|
|
|
|
|
20
|
my @opt = (); |
28
|
8
|
|
|
|
|
27
|
for my $k (qw(region profile endpoint_url)) { |
29
|
24
|
100
|
|
|
|
169
|
if (my $v = delete $param{$k}) { |
30
|
1
|
|
|
|
|
5
|
push @opt, param2opt($k, $v); |
31
|
|
|
|
|
|
|
} |
32
|
|
|
|
|
|
|
} |
33
|
|
|
|
|
|
|
|
34
|
|
|
|
|
|
|
my $self = bless { |
35
|
|
|
|
|
|
|
region => $region, |
36
|
|
|
|
|
|
|
opt => \@opt, |
37
|
|
|
|
|
|
|
json => JSON->new, |
38
|
|
|
|
|
|
|
awscli_path => $param{awscli_path} || 'aws', |
39
|
|
|
|
|
|
|
croak_on_error => !!$param{croak_on_error}, |
40
|
8
|
100
|
100
|
|
|
213
|
timeout => (defined $ENV{AWS_CLIWRAPPER_TIMEOUT}) ? $ENV{AWS_CLIWRAPPER_TIMEOUT} : 30, |
41
|
|
|
|
|
|
|
}, $class; |
42
|
|
|
|
|
|
|
|
43
|
8
|
|
|
|
|
35
|
return $self; |
44
|
|
|
|
|
|
|
} |
45
|
|
|
|
|
|
|
|
46
|
1
|
|
|
1
|
0
|
13
|
sub region { shift->{region} } |
47
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
sub awscli_path { |
49
|
4
|
|
|
4
|
0
|
14
|
my ($self) = @_; |
50
|
4
|
|
|
|
|
23
|
return $self->{awscli_path}; |
51
|
|
|
|
|
|
|
} |
52
|
|
|
|
|
|
|
|
53
|
|
|
|
|
|
|
sub awscli_version { |
54
|
4
|
|
|
4
|
0
|
22
|
my ($self) = @_; |
55
|
4
|
100
|
|
|
|
17
|
unless (defined $AWSCLI_VERSION) { |
56
|
2
|
|
|
|
|
4
|
$AWSCLI_VERSION = do { |
57
|
2
|
|
|
|
|
7
|
my $awscli_path = $self->awscli_path; |
58
|
2
|
|
50
|
|
|
7036
|
my $vs = qx($awscli_path --version 2>&1) || ''; |
59
|
2
|
|
|
|
|
32
|
my $v; |
60
|
2
|
50
|
|
|
|
60
|
if ($vs =~ m{/([0-9.]+)\s}) { |
61
|
0
|
|
|
|
|
0
|
$v = $1; |
62
|
|
|
|
|
|
|
} else { |
63
|
2
|
|
|
|
|
42
|
$v = 0; |
64
|
|
|
|
|
|
|
} |
65
|
2
|
|
|
|
|
128
|
version->parse($v); |
66
|
|
|
|
|
|
|
}; |
67
|
|
|
|
|
|
|
} |
68
|
4
|
|
|
|
|
121
|
return $AWSCLI_VERSION; |
69
|
|
|
|
|
|
|
} |
70
|
|
|
|
|
|
|
|
71
|
|
|
|
|
|
|
sub param2opt { |
72
|
1
|
|
|
1
|
0
|
4
|
my($k, $v) = @_; |
73
|
|
|
|
|
|
|
|
74
|
1
|
|
|
|
|
1
|
my @v; |
75
|
|
|
|
|
|
|
|
76
|
1
|
|
|
|
|
4
|
$k =~ s/_/-/g; |
77
|
1
|
|
|
|
|
4
|
$k = '--'.$k; |
78
|
|
|
|
|
|
|
|
79
|
1
|
|
|
|
|
3
|
my $type = ref $v; |
80
|
1
|
50
|
|
|
|
4
|
if (! $type) { |
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
81
|
1
|
50
|
|
|
|
4
|
if ($k eq '--output-file') { |
82
|
|
|
|
|
|
|
# aws s3api get-object takes a single arg for output file path |
83
|
0
|
|
|
|
|
0
|
return $v; |
84
|
|
|
|
|
|
|
} else { |
85
|
1
|
|
|
|
|
2
|
push @v, $v; |
86
|
|
|
|
|
|
|
} |
87
|
|
|
|
|
|
|
} elsif ($type eq 'ARRAY') { |
88
|
0
|
0
|
|
|
|
0
|
push @v, map { ref($_) ? encode_json(_compat_kv($_)) : $_ } @$v; |
|
0
|
|
|
|
|
0
|
|
89
|
|
|
|
|
|
|
} elsif ($type eq 'HASH') { |
90
|
0
|
|
|
|
|
0
|
push @v, encode_json(_compat_kv($v)); |
91
|
|
|
|
|
|
|
} elsif ($type eq 'AWS::CLIWrapper::Boolean') { |
92
|
0
|
0
|
|
|
|
0
|
if ($$v == 1) { |
93
|
0
|
|
|
|
|
0
|
return ($k); |
94
|
|
|
|
|
|
|
} else { |
95
|
0
|
|
|
|
|
0
|
return (); |
96
|
|
|
|
|
|
|
} |
97
|
|
|
|
|
|
|
} else { |
98
|
0
|
|
|
|
|
0
|
push @v, $v; |
99
|
|
|
|
|
|
|
} |
100
|
|
|
|
|
|
|
|
101
|
1
|
|
|
|
|
4
|
return ($k, @v); |
102
|
|
|
|
|
|
|
} |
103
|
|
|
|
|
|
|
|
104
|
|
|
|
|
|
|
# >= 0.14.0 : Key, Values, Value, Name |
105
|
|
|
|
|
|
|
# < 0.14.0 : key, values, value, name |
106
|
|
|
|
|
|
|
sub _compat_kv_uc { |
107
|
0
|
|
|
0
|
|
|
my $v = shift; |
108
|
0
|
|
|
|
|
|
my $type = ref $v; |
109
|
|
|
|
|
|
|
|
110
|
0
|
0
|
0
|
|
|
|
if ($type && $type eq 'HASH') { |
111
|
0
|
|
|
|
|
|
for my $hk (keys %$v) { |
112
|
0
|
0
|
|
|
|
|
if ($hk =~ /^(?:key|name|values|value)$/) { |
113
|
0
|
|
|
|
|
|
$v->{ucfirst($hk)} = delete $v->{$hk}; |
114
|
|
|
|
|
|
|
} |
115
|
|
|
|
|
|
|
} |
116
|
|
|
|
|
|
|
} |
117
|
|
|
|
|
|
|
|
118
|
0
|
|
|
|
|
|
return $v; |
119
|
|
|
|
|
|
|
} |
120
|
|
|
|
|
|
|
# sub _compat_kv_lc { |
121
|
|
|
|
|
|
|
# my $v = shift; |
122
|
|
|
|
|
|
|
# my $type = ref $v; |
123
|
|
|
|
|
|
|
|
124
|
|
|
|
|
|
|
# if ($type && $type eq 'HASH') { |
125
|
|
|
|
|
|
|
# for my $hk (keys %$v) { |
126
|
|
|
|
|
|
|
# if ($hk =~ /^(?:Key|Name|Values|Values)$/) { |
127
|
|
|
|
|
|
|
# $v->{lc($hk)} = delete $v->{$hk}; |
128
|
|
|
|
|
|
|
# } |
129
|
|
|
|
|
|
|
# } |
130
|
|
|
|
|
|
|
# } |
131
|
|
|
|
|
|
|
|
132
|
|
|
|
|
|
|
# return $v; |
133
|
|
|
|
|
|
|
# } |
134
|
|
|
|
|
|
|
# Drop support < 0.14.0 for preventing execute aws command in loading this module |
135
|
|
|
|
|
|
|
*_compat_kv = *_compat_kv_uc; |
136
|
|
|
|
|
|
|
|
137
|
0
|
|
|
0
|
0
|
|
sub json { $_[0]->{json} } |
138
|
|
|
|
|
|
|
|
139
|
|
|
|
|
|
|
sub _execute { |
140
|
0
|
|
|
0
|
|
|
my $self = shift; |
141
|
0
|
|
|
|
|
|
my $service = shift; |
142
|
0
|
|
|
|
|
|
my $operation = shift; |
143
|
0
|
|
|
|
|
|
my @cmd = ($self->awscli_path, @{$self->{opt}}, $service, $operation); |
|
0
|
|
|
|
|
|
|
144
|
0
|
0
|
0
|
|
|
|
if ($service eq 'ec2' && $operation eq 'wait') { |
145
|
0
|
|
|
|
|
|
push(@cmd, shift @_); |
146
|
|
|
|
|
|
|
} |
147
|
0
|
0
|
|
|
|
|
if (ref($_[0]) eq 'ARRAY') { |
148
|
|
|
|
|
|
|
# for s3 sync FROM TO |
149
|
0
|
|
|
|
|
|
push @cmd, @{ shift @_ }; |
|
0
|
|
|
|
|
|
|
150
|
|
|
|
|
|
|
} |
151
|
0
|
|
|
|
|
|
my($param, %opt) = @_; |
152
|
|
|
|
|
|
|
|
153
|
0
|
0
|
0
|
|
|
|
if ($service eq 'ec2' && $operation eq 'run-instances') { |
|
|
0
|
0
|
|
|
|
|
|
|
0
|
0
|
|
|
|
|
154
|
|
|
|
|
|
|
# compat: ec2 run-instances |
155
|
|
|
|
|
|
|
# >= 0.14.0 : --count N or --count MIN:MAX |
156
|
|
|
|
|
|
|
# < 0.14.0 : --min-count N and --max-count N |
157
|
0
|
0
|
|
|
|
|
if ($self->awscli_version >= 0.14.0) { |
158
|
0
|
|
|
|
|
|
my($min,$max) = (1,1); |
159
|
0
|
|
|
|
|
|
for my $hk (keys %$param) { |
160
|
0
|
0
|
|
|
|
|
if ($hk eq 'min_count') { |
|
|
0
|
|
|
|
|
|
161
|
0
|
|
|
|
|
|
$min = delete $param->{min_count}; |
162
|
|
|
|
|
|
|
} elsif ($hk eq 'max_count') { |
163
|
0
|
|
|
|
|
|
$max = delete $param->{max_count}; |
164
|
|
|
|
|
|
|
} |
165
|
|
|
|
|
|
|
} |
166
|
|
|
|
|
|
|
$param->{count} = "${min}:${max}" unless $param->{count} |
167
|
0
|
0
|
|
|
|
|
} else { |
168
|
0
|
|
|
|
|
|
my($min,$max); |
169
|
0
|
|
|
|
|
|
for my $hk (keys %$param) { |
170
|
0
|
0
|
|
|
|
|
if ($hk eq 'count') { |
171
|
0
|
|
|
|
|
|
($min,$max) = split /:/, delete($param->{count}); |
172
|
0
|
|
0
|
|
|
|
$max ||= $min; |
173
|
0
|
|
|
|
|
|
last; |
174
|
|
|
|
|
|
|
} |
175
|
|
|
|
|
|
|
} |
176
|
0
|
0
|
|
|
|
|
$param->{min_count} = $min unless $param->{min_count}; |
177
|
0
|
0
|
|
|
|
|
$param->{max_count} = $max unless $param->{max_count}; |
178
|
|
|
|
|
|
|
} |
179
|
|
|
|
|
|
|
} elsif ($service eq 's3' && $self->awscli_version >= 0.15.0) { |
180
|
0
|
0
|
|
|
|
|
if ($operation !~ /^(?:cp|ls|mb|mv|rb|rm|sync|website)$/) { |
181
|
0
|
|
|
|
|
|
return $self->s3api($operation, @_); |
182
|
|
|
|
|
|
|
} |
183
|
|
|
|
|
|
|
} elsif ($service eq 's3api' && $self->awscli_version < 0.15.0) { |
184
|
0
|
|
|
|
|
|
return $self->s3($operation, @_); |
185
|
|
|
|
|
|
|
} |
186
|
|
|
|
|
|
|
|
187
|
0
|
|
|
|
|
|
while (my($k, $v) = each %$param) { |
188
|
0
|
|
|
|
|
|
my @o = param2opt($k, $v); |
189
|
0
|
0
|
0
|
|
|
|
if ($service eq 's3' && $k =~ /^(?:include|exclude)$/) { |
190
|
0
|
|
|
|
|
|
my $optk = shift @o; |
191
|
0
|
|
|
|
|
|
@o = map { $optk => $_ } @o; |
|
0
|
|
|
|
|
|
|
192
|
|
|
|
|
|
|
} |
193
|
0
|
|
|
|
|
|
push @cmd, @o; |
194
|
|
|
|
|
|
|
} |
195
|
0
|
|
|
|
|
|
@cmd = map { shell_quote($_) } @cmd; |
|
0
|
|
|
|
|
|
|
196
|
0
|
0
|
|
|
|
|
warn "cmd: ".join(' ', @cmd) if $ENV{AWSCLI_DEBUG}; |
197
|
|
|
|
|
|
|
|
198
|
0
|
|
|
|
|
|
my $ret; |
199
|
0
|
0
|
0
|
|
|
|
if (exists $opt{'nofork'} && $opt{'nofork'}) { |
200
|
|
|
|
|
|
|
# better for perl debugger |
201
|
|
|
|
|
|
|
my($ok, $err, $buf, $stdout_buf, $stderr_buf) = IPC::Cmd::run( |
202
|
|
|
|
|
|
|
command => join(' ', @cmd), |
203
|
|
|
|
|
|
|
timeout => $opt{timeout} || $self->{timeout}, |
204
|
0
|
|
0
|
|
|
|
); |
205
|
0
|
|
|
|
|
|
$ret->{stdout} = join "", @$stdout_buf; |
206
|
0
|
0
|
|
|
|
|
$ret->{err_msg} = (defined $err ? "$err\n" : "") . join "", @$stderr_buf; |
207
|
0
|
0
|
|
|
|
|
if ($ok) { |
208
|
0
|
|
|
|
|
|
$ret->{exit_code} = 0; |
209
|
0
|
|
|
|
|
|
$ret->{timeout} = 0; |
210
|
|
|
|
|
|
|
} else { |
211
|
0
|
|
|
|
|
|
$ret->{exit_code} = 2; |
212
|
0
|
0
|
0
|
|
|
|
$ret->{timeout} = 1 if defined $err && $err =~ /^IPC::Cmd::TimeOut:/; |
213
|
|
|
|
|
|
|
} |
214
|
0
|
|
|
|
|
|
print ""; |
215
|
|
|
|
|
|
|
} else { |
216
|
|
|
|
|
|
|
$ret = IPC::Cmd::run_forked(join(' ', @cmd), { |
217
|
|
|
|
|
|
|
timeout => $opt{timeout} || $self->{timeout}, |
218
|
0
|
|
0
|
|
|
|
}); |
219
|
|
|
|
|
|
|
} |
220
|
|
|
|
|
|
|
|
221
|
0
|
0
|
0
|
|
|
|
if ($ret->{exit_code} == 0 && $ret->{timeout} == 0) { |
222
|
0
|
|
|
|
|
|
my $json = $ret->{stdout}; |
223
|
|
|
|
|
|
|
warn sprintf("%s.%s[%s]: %s\n", |
224
|
|
|
|
|
|
|
$service, $operation, 'OK', $json, |
225
|
0
|
0
|
|
|
|
|
) if $ENV{AWSCLI_DEBUG}; |
226
|
0
|
|
|
|
|
|
local $@; |
227
|
0
|
|
|
|
|
|
my($ret) = eval { |
228
|
|
|
|
|
|
|
# aws s3 returns null HTTP body, so failed to parse as JSON |
229
|
|
|
|
|
|
|
|
230
|
|
|
|
|
|
|
# Temporary disable __DIE__ handler to prevent the |
231
|
|
|
|
|
|
|
# exception from decode() from catching by outer |
232
|
|
|
|
|
|
|
# __DIE__ handler. |
233
|
0
|
|
|
0
|
|
|
local $SIG{__DIE__} = sub {}; |
234
|
|
|
|
|
|
|
|
235
|
0
|
|
|
|
|
|
$self->json->decode($json); |
236
|
|
|
|
|
|
|
}; |
237
|
0
|
0
|
|
|
|
|
if ($@) { |
238
|
0
|
0
|
|
|
|
|
if ($ENV{AWSCLI_DEBUG}) { |
239
|
0
|
|
|
|
|
|
warn $@; |
240
|
0
|
|
|
|
|
|
warn qq|stdout: "$ret->{stdout}"|; |
241
|
0
|
|
|
|
|
|
warn qq|err_msg: "$ret->{err_msg}"|; |
242
|
|
|
|
|
|
|
} |
243
|
0
|
|
0
|
|
|
|
return $json || 'success'; |
244
|
|
|
|
|
|
|
} |
245
|
0
|
|
|
|
|
|
return $ret; |
246
|
|
|
|
|
|
|
} else { |
247
|
0
|
|
|
|
|
|
my $stdout_str = $ret->{stdout}; |
248
|
0
|
0
|
0
|
|
|
|
if ($stdout_str && $stdout_str =~ /^{/) { |
249
|
0
|
|
|
|
|
|
my $json = $stdout_str; |
250
|
|
|
|
|
|
|
warn sprintf("%s.%s[%s]: %s\n", |
251
|
|
|
|
|
|
|
$service, $operation, 'NG', $json, |
252
|
0
|
0
|
|
|
|
|
) if $ENV{AWSCLI_DEBUG}; |
253
|
0
|
|
|
|
|
|
my($ret) = $self->json->decode_prefix($json); |
254
|
0
|
0
|
0
|
|
|
|
if (exists $ret->{Errors} && ref($ret->{Errors}) eq 'ARRAY') { |
|
|
0
|
|
|
|
|
|
255
|
0
|
|
|
|
|
|
$Error = $ret->{Errors}[0]; |
256
|
|
|
|
|
|
|
} elsif (exists $ret->{Response}{Errors}{Error}) { |
257
|
|
|
|
|
|
|
# old structure (maybe botocore < 0.7.0) |
258
|
0
|
|
|
|
|
|
$Error = $ret->{Response}{Errors}{Error}; |
259
|
|
|
|
|
|
|
} else { |
260
|
0
|
|
|
|
|
|
$Error = { Message => 'Unknown', Code => 'Unknown' }; |
261
|
|
|
|
|
|
|
} |
262
|
|
|
|
|
|
|
} else { |
263
|
0
|
|
|
|
|
|
my $msg = $ret->{err_msg}; |
264
|
|
|
|
|
|
|
warn sprintf("%s.%s[%s]: %s\n", |
265
|
|
|
|
|
|
|
$service, $operation, 'NG', $msg, |
266
|
0
|
0
|
|
|
|
|
) if $ENV{AWSCLI_DEBUG}; |
267
|
0
|
|
|
|
|
|
$Error = { Message => $msg, Code => 'Unknown' }; |
268
|
|
|
|
|
|
|
} |
269
|
|
|
|
|
|
|
|
270
|
0
|
0
|
|
|
|
|
croak $Error->{Message} if $self->{croak_on_error}; |
271
|
|
|
|
|
|
|
|
272
|
0
|
|
|
|
|
|
return; |
273
|
|
|
|
|
|
|
} |
274
|
|
|
|
|
|
|
} |
275
|
|
|
|
|
|
|
|
276
|
|
|
|
|
|
|
# aws help | col -b | perl -ne 'if (/^AVAILABLE/.../^[A-Z]/) { s/^\s+o\s+// or next; chomp; next if $_ eq 'help'; my $sn = $_; $sn =~ s/-/_/g; printf "sub %-18s { shift->_execute('"'"'%s'"'"', \@_) }\n", $sn, $_ }' |
277
|
|
|
|
|
|
|
# aws help | col -b | perl -ne 'if (/^AVAILABLE/.../^[A-Z]/) { s/^\s+o\s+// or next; chomp; next if $_ eq 'help'; my $sn = $_; $sn =~ s/-/_/g; printf "=item B<%s>(\$operation:Str, \$param:HashRef, %%opt:Hash)\n\n", $sn}' |
278
|
|
|
|
|
|
|
# =item B($operation:Str, $path:ArrayRef, $param:HashRef, %opt:Hash) |
279
|
0
|
|
|
0
|
1
|
|
sub accessanalyzer { shift->_execute('accessanalyzer', @_) } |
280
|
0
|
|
|
0
|
1
|
|
sub account { shift->_execute('account', @_) } |
281
|
0
|
|
|
0
|
1
|
|
sub acm { shift->_execute('acm', @_) } |
282
|
0
|
|
|
0
|
1
|
|
sub acm_pca { shift->_execute('acm-pca', @_) } |
283
|
0
|
|
|
0
|
1
|
|
sub alexaforbusiness { shift->_execute('alexaforbusiness', @_) } |
284
|
0
|
|
|
0
|
1
|
|
sub amp { shift->_execute('amp', @_) } |
285
|
0
|
|
|
0
|
1
|
|
sub amplify { shift->_execute('amplify', @_) } |
286
|
0
|
|
|
0
|
1
|
|
sub amplifybackend { shift->_execute('amplifybackend', @_) } |
287
|
0
|
|
|
0
|
1
|
|
sub amplifyuibuilder { shift->_execute('amplifyuibuilder', @_) } |
288
|
0
|
|
|
0
|
1
|
|
sub apigateway { shift->_execute('apigateway', @_) } |
289
|
0
|
|
|
0
|
1
|
|
sub apigatewaymanagementapi { shift->_execute('apigatewaymanagementapi', @_) } |
290
|
0
|
|
|
0
|
1
|
|
sub apigatewayv2 { shift->_execute('apigatewayv2', @_) } |
291
|
0
|
|
|
0
|
1
|
|
sub appconfig { shift->_execute('appconfig', @_) } |
292
|
0
|
|
|
0
|
1
|
|
sub appconfigdata { shift->_execute('appconfigdata', @_) } |
293
|
0
|
|
|
0
|
1
|
|
sub appflow { shift->_execute('appflow', @_) } |
294
|
0
|
|
|
0
|
1
|
|
sub appintegrations { shift->_execute('appintegrations', @_) } |
295
|
0
|
|
|
0
|
1
|
|
sub application_autoscaling { shift->_execute('application-autoscaling', @_) } |
296
|
0
|
|
|
0
|
1
|
|
sub application_insights { shift->_execute('application-insights', @_) } |
297
|
0
|
|
|
0
|
1
|
|
sub applicationcostprofiler { shift->_execute('applicationcostprofiler', @_) } |
298
|
0
|
|
|
0
|
1
|
|
sub appmesh { shift->_execute('appmesh', @_) } |
299
|
0
|
|
|
0
|
1
|
|
sub apprunner { shift->_execute('apprunner', @_) } |
300
|
0
|
|
|
0
|
1
|
|
sub appstream { shift->_execute('appstream', @_) } |
301
|
0
|
|
|
0
|
1
|
|
sub appsync { shift->_execute('appsync', @_) } |
302
|
0
|
|
|
0
|
1
|
|
sub arc_zonal_shift { shift->_execute('arc-zonal-shift', @_) } |
303
|
0
|
|
|
0
|
1
|
|
sub athena { shift->_execute('athena', @_) } |
304
|
0
|
|
|
0
|
1
|
|
sub auditmanager { shift->_execute('auditmanager', @_) } |
305
|
0
|
|
|
0
|
1
|
|
sub autoscaling { shift->_execute('autoscaling', @_) } |
306
|
0
|
|
|
0
|
1
|
|
sub autoscaling_plans { shift->_execute('autoscaling-plans', @_) } |
307
|
0
|
|
|
0
|
1
|
|
sub backup { shift->_execute('backup', @_) } |
308
|
0
|
|
|
0
|
1
|
|
sub backup_gateway { shift->_execute('backup-gateway', @_) } |
309
|
0
|
|
|
0
|
1
|
|
sub backupstorage { shift->_execute('backupstorage', @_) } |
310
|
0
|
|
|
0
|
1
|
|
sub batch { shift->_execute('batch', @_) } |
311
|
0
|
|
|
0
|
1
|
|
sub billingconductor { shift->_execute('billingconductor', @_) } |
312
|
0
|
|
|
0
|
1
|
|
sub braket { shift->_execute('braket', @_) } |
313
|
0
|
|
|
0
|
1
|
|
sub budgets { shift->_execute('budgets', @_) } |
314
|
0
|
|
|
0
|
1
|
|
sub ce { shift->_execute('ce', @_) } |
315
|
0
|
|
|
0
|
1
|
|
sub chime { shift->_execute('chime', @_) } |
316
|
0
|
|
|
0
|
1
|
|
sub chime_sdk_identity { shift->_execute('chime-sdk-identity', @_) } |
317
|
0
|
|
|
0
|
1
|
|
sub chime_sdk_media_pipelines { shift->_execute('chime-sdk-media-pipelines', @_) } |
318
|
0
|
|
|
0
|
1
|
|
sub chime_sdk_meetings { shift->_execute('chime-sdk-meetings', @_) } |
319
|
0
|
|
|
0
|
1
|
|
sub chime_sdk_messaging { shift->_execute('chime-sdk-messaging', @_) } |
320
|
0
|
|
|
0
|
1
|
|
sub chime_sdk_voice { shift->_execute('chime-sdk-voice', @_) } |
321
|
0
|
|
|
0
|
1
|
|
sub cleanrooms { shift->_execute('cleanrooms', @_) } |
322
|
0
|
|
|
0
|
1
|
|
sub cloud9 { shift->_execute('cloud9', @_) } |
323
|
0
|
|
|
0
|
1
|
|
sub cloudcontrol { shift->_execute('cloudcontrol', @_) } |
324
|
0
|
|
|
0
|
1
|
|
sub clouddirectory { shift->_execute('clouddirectory', @_) } |
325
|
0
|
|
|
0
|
1
|
|
sub cloudformation { shift->_execute('cloudformation', @_) } |
326
|
0
|
|
|
0
|
1
|
|
sub cloudfront { shift->_execute('cloudfront', @_) } |
327
|
0
|
|
|
0
|
1
|
|
sub cloudhsm { shift->_execute('cloudhsm', @_) } |
328
|
0
|
|
|
0
|
1
|
|
sub cloudhsmv2 { shift->_execute('cloudhsmv2', @_) } |
329
|
0
|
|
|
0
|
1
|
|
sub cloudsearch { shift->_execute('cloudsearch', @_) } |
330
|
0
|
|
|
0
|
1
|
|
sub cloudsearchdomain { shift->_execute('cloudsearchdomain', @_) } |
331
|
0
|
|
|
0
|
1
|
|
sub cloudtrail { shift->_execute('cloudtrail', @_) } |
332
|
0
|
|
|
0
|
1
|
|
sub cloudtrail_data { shift->_execute('cloudtrail-data', @_) } |
333
|
0
|
|
|
0
|
1
|
|
sub cloudwatch { shift->_execute('cloudwatch', @_) } |
334
|
0
|
|
|
0
|
1
|
|
sub codeartifact { shift->_execute('codeartifact', @_) } |
335
|
0
|
|
|
0
|
1
|
|
sub codebuild { shift->_execute('codebuild', @_) } |
336
|
0
|
|
|
0
|
1
|
|
sub codecatalyst { shift->_execute('codecatalyst', @_) } |
337
|
0
|
|
|
0
|
1
|
|
sub codecommit { shift->_execute('codecommit', @_) } |
338
|
0
|
|
|
0
|
1
|
|
sub codeguru_reviewer { shift->_execute('codeguru-reviewer', @_) } |
339
|
0
|
|
|
0
|
1
|
|
sub codeguruprofiler { shift->_execute('codeguruprofiler', @_) } |
340
|
0
|
|
|
0
|
1
|
|
sub codepipeline { shift->_execute('codepipeline', @_) } |
341
|
0
|
|
|
0
|
1
|
|
sub codestar { shift->_execute('codestar', @_) } |
342
|
0
|
|
|
0
|
1
|
|
sub codestar_connections { shift->_execute('codestar-connections', @_) } |
343
|
0
|
|
|
0
|
1
|
|
sub codestar_notifications { shift->_execute('codestar-notifications', @_) } |
344
|
0
|
|
|
0
|
1
|
|
sub cognito_identity { shift->_execute('cognito-identity', @_) } |
345
|
0
|
|
|
0
|
1
|
|
sub cognito_idp { shift->_execute('cognito-idp', @_) } |
346
|
0
|
|
|
0
|
1
|
|
sub cognito_sync { shift->_execute('cognito-sync', @_) } |
347
|
0
|
|
|
0
|
1
|
|
sub comprehend { shift->_execute('comprehend', @_) } |
348
|
0
|
|
|
0
|
1
|
|
sub comprehendmedical { shift->_execute('comprehendmedical', @_) } |
349
|
0
|
|
|
0
|
1
|
|
sub compute_optimizer { shift->_execute('compute-optimizer', @_) } |
350
|
0
|
|
|
0
|
1
|
|
sub configservice { shift->_execute('configservice', @_) } |
351
|
0
|
|
|
0
|
1
|
|
sub configure { shift->_execute('configure', @_) } |
352
|
0
|
|
|
0
|
1
|
|
sub connect { shift->_execute('connect', @_) } |
353
|
0
|
|
|
0
|
1
|
|
sub connect_contact_lens { shift->_execute('connect-contact-lens', @_) } |
354
|
0
|
|
|
0
|
1
|
|
sub connectcampaigns { shift->_execute('connectcampaigns', @_) } |
355
|
0
|
|
|
0
|
1
|
|
sub connectcases { shift->_execute('connectcases', @_) } |
356
|
0
|
|
|
0
|
1
|
|
sub connectparticipant { shift->_execute('connectparticipant', @_) } |
357
|
0
|
|
|
0
|
1
|
|
sub controltower { shift->_execute('controltower', @_) } |
358
|
0
|
|
|
0
|
1
|
|
sub cur { shift->_execute('cur', @_) } |
359
|
0
|
|
|
0
|
1
|
|
sub customer_profiles { shift->_execute('customer-profiles', @_) } |
360
|
0
|
|
|
0
|
1
|
|
sub databrew { shift->_execute('databrew', @_) } |
361
|
0
|
|
|
0
|
1
|
|
sub dataexchange { shift->_execute('dataexchange', @_) } |
362
|
0
|
|
|
0
|
1
|
|
sub datapipeline { shift->_execute('datapipeline', @_) } |
363
|
0
|
|
|
0
|
1
|
|
sub datasync { shift->_execute('datasync', @_) } |
364
|
0
|
|
|
0
|
1
|
|
sub dax { shift->_execute('dax', @_) } |
365
|
0
|
|
|
0
|
1
|
|
sub deploy { shift->_execute('deploy', @_) } |
366
|
0
|
|
|
0
|
1
|
|
sub detective { shift->_execute('detective', @_) } |
367
|
0
|
|
|
0
|
1
|
|
sub devicefarm { shift->_execute('devicefarm', @_) } |
368
|
0
|
|
|
0
|
1
|
|
sub devops_guru { shift->_execute('devops-guru', @_) } |
369
|
0
|
|
|
0
|
1
|
|
sub directconnect { shift->_execute('directconnect', @_) } |
370
|
0
|
|
|
0
|
1
|
|
sub discovery { shift->_execute('discovery', @_) } |
371
|
0
|
|
|
0
|
1
|
|
sub dlm { shift->_execute('dlm', @_) } |
372
|
0
|
|
|
0
|
1
|
|
sub dms { shift->_execute('dms', @_) } |
373
|
0
|
|
|
0
|
1
|
|
sub docdb { shift->_execute('docdb', @_) } |
374
|
0
|
|
|
0
|
1
|
|
sub docdb_elastic { shift->_execute('docdb-elastic', @_) } |
375
|
0
|
|
|
0
|
1
|
|
sub drs { shift->_execute('drs', @_) } |
376
|
0
|
|
|
0
|
1
|
|
sub ds { shift->_execute('ds', @_) } |
377
|
0
|
|
|
0
|
1
|
|
sub dynamodb { shift->_execute('dynamodb', @_) } |
378
|
0
|
|
|
0
|
1
|
|
sub dynamodbstreams { shift->_execute('dynamodbstreams', @_) } |
379
|
0
|
|
|
0
|
1
|
|
sub ebs { shift->_execute('ebs', @_) } |
380
|
0
|
|
|
0
|
1
|
|
sub ec2 { shift->_execute('ec2', @_) } |
381
|
0
|
|
|
0
|
1
|
|
sub ec2_instance_connect { shift->_execute('ec2-instance-connect', @_) } |
382
|
0
|
|
|
0
|
1
|
|
sub ecr { shift->_execute('ecr', @_) } |
383
|
0
|
|
|
0
|
1
|
|
sub ecr_public { shift->_execute('ecr-public', @_) } |
384
|
0
|
|
|
0
|
1
|
|
sub ecs { shift->_execute('ecs', @_) } |
385
|
0
|
|
|
0
|
1
|
|
sub efs { shift->_execute('efs', @_) } |
386
|
0
|
|
|
0
|
1
|
|
sub eks { shift->_execute('eks', @_) } |
387
|
0
|
|
|
0
|
1
|
|
sub elastic_inference { shift->_execute('elastic-inference', @_) } |
388
|
0
|
|
|
0
|
1
|
|
sub elasticache { shift->_execute('elasticache', @_) } |
389
|
0
|
|
|
0
|
1
|
|
sub elasticbeanstalk { shift->_execute('elasticbeanstalk', @_) } |
390
|
0
|
|
|
0
|
1
|
|
sub elastictranscoder { shift->_execute('elastictranscoder', @_) } |
391
|
0
|
|
|
0
|
1
|
|
sub elb { shift->_execute('elb', @_) } |
392
|
0
|
|
|
0
|
1
|
|
sub elbv2 { shift->_execute('elbv2', @_) } |
393
|
0
|
|
|
0
|
1
|
|
sub emr { shift->_execute('emr', @_) } |
394
|
0
|
|
|
0
|
1
|
|
sub emr_containers { shift->_execute('emr-containers', @_) } |
395
|
0
|
|
|
0
|
1
|
|
sub emr_serverless { shift->_execute('emr-serverless', @_) } |
396
|
0
|
|
|
0
|
1
|
|
sub es { shift->_execute('es', @_) } |
397
|
0
|
|
|
0
|
1
|
|
sub events { shift->_execute('events', @_) } |
398
|
0
|
|
|
0
|
1
|
|
sub evidently { shift->_execute('evidently', @_) } |
399
|
0
|
|
|
0
|
1
|
|
sub finspace { shift->_execute('finspace', @_) } |
400
|
0
|
|
|
0
|
1
|
|
sub finspace_data { shift->_execute('finspace-data', @_) } |
401
|
0
|
|
|
0
|
1
|
|
sub firehose { shift->_execute('firehose', @_) } |
402
|
0
|
|
|
0
|
1
|
|
sub fis { shift->_execute('fis', @_) } |
403
|
0
|
|
|
0
|
1
|
|
sub fms { shift->_execute('fms', @_) } |
404
|
0
|
|
|
0
|
1
|
|
sub forecast { shift->_execute('forecast', @_) } |
405
|
0
|
|
|
0
|
1
|
|
sub forecastquery { shift->_execute('forecastquery', @_) } |
406
|
0
|
|
|
0
|
1
|
|
sub frauddetector { shift->_execute('frauddetector', @_) } |
407
|
0
|
|
|
0
|
1
|
|
sub fsx { shift->_execute('fsx', @_) } |
408
|
0
|
|
|
0
|
1
|
|
sub gamelift { shift->_execute('gamelift', @_) } |
409
|
0
|
|
|
0
|
1
|
|
sub gamesparks { shift->_execute('gamesparks', @_) } |
410
|
0
|
|
|
0
|
1
|
|
sub glacier { shift->_execute('glacier', @_) } |
411
|
0
|
|
|
0
|
1
|
|
sub globalaccelerator { shift->_execute('globalaccelerator', @_) } |
412
|
0
|
|
|
0
|
1
|
|
sub glue { shift->_execute('glue', @_) } |
413
|
0
|
|
|
0
|
1
|
|
sub grafana { shift->_execute('grafana', @_) } |
414
|
0
|
|
|
0
|
1
|
|
sub greengrass { shift->_execute('greengrass', @_) } |
415
|
0
|
|
|
0
|
1
|
|
sub greengrassv2 { shift->_execute('greengrassv2', @_) } |
416
|
0
|
|
|
0
|
1
|
|
sub groundstation { shift->_execute('groundstation', @_) } |
417
|
0
|
|
|
0
|
1
|
|
sub guardduty { shift->_execute('guardduty', @_) } |
418
|
0
|
|
|
0
|
1
|
|
sub health { shift->_execute('health', @_) } |
419
|
0
|
|
|
0
|
1
|
|
sub healthlake { shift->_execute('healthlake', @_) } |
420
|
0
|
|
|
0
|
1
|
|
sub history { shift->_execute('history', @_) } |
421
|
0
|
|
|
0
|
1
|
|
sub honeycode { shift->_execute('honeycode', @_) } |
422
|
0
|
|
|
0
|
1
|
|
sub iam { shift->_execute('iam', @_) } |
423
|
0
|
|
|
0
|
1
|
|
sub identitystore { shift->_execute('identitystore', @_) } |
424
|
0
|
|
|
0
|
1
|
|
sub imagebuilder { shift->_execute('imagebuilder', @_) } |
425
|
0
|
|
|
0
|
1
|
|
sub importexport { shift->_execute('importexport', @_) } |
426
|
0
|
|
|
0
|
1
|
|
sub inspector { shift->_execute('inspector', @_) } |
427
|
0
|
|
|
0
|
1
|
|
sub inspector2 { shift->_execute('inspector2', @_) } |
428
|
0
|
|
|
0
|
1
|
|
sub internetmonitor { shift->_execute('internetmonitor', @_) } |
429
|
0
|
|
|
0
|
1
|
|
sub iot { shift->_execute('iot', @_) } |
430
|
0
|
|
|
0
|
1
|
|
sub iot_data { shift->_execute('iot-data', @_) } |
431
|
0
|
|
|
0
|
1
|
|
sub iot_jobs_data { shift->_execute('iot-jobs-data', @_) } |
432
|
0
|
|
|
0
|
1
|
|
sub iot_roborunner { shift->_execute('iot-roborunner', @_) } |
433
|
0
|
|
|
0
|
1
|
|
sub iot1click_devices { shift->_execute('iot1click-devices', @_) } |
434
|
0
|
|
|
0
|
1
|
|
sub iot1click_projects { shift->_execute('iot1click-projects', @_) } |
435
|
0
|
|
|
0
|
1
|
|
sub iotanalytics { shift->_execute('iotanalytics', @_) } |
436
|
0
|
|
|
0
|
1
|
|
sub iotdeviceadvisor { shift->_execute('iotdeviceadvisor', @_) } |
437
|
0
|
|
|
0
|
1
|
|
sub iotevents { shift->_execute('iotevents', @_) } |
438
|
0
|
|
|
0
|
1
|
|
sub iotevents_data { shift->_execute('iotevents-data', @_) } |
439
|
0
|
|
|
0
|
1
|
|
sub iotfleethub { shift->_execute('iotfleethub', @_) } |
440
|
0
|
|
|
0
|
1
|
|
sub iotfleetwise { shift->_execute('iotfleetwise', @_) } |
441
|
0
|
|
|
0
|
1
|
|
sub iotsecuretunneling { shift->_execute('iotsecuretunneling', @_) } |
442
|
0
|
|
|
0
|
1
|
|
sub iotsitewise { shift->_execute('iotsitewise', @_) } |
443
|
0
|
|
|
0
|
1
|
|
sub iotthingsgraph { shift->_execute('iotthingsgraph', @_) } |
444
|
0
|
|
|
0
|
1
|
|
sub iottwinmaker { shift->_execute('iottwinmaker', @_) } |
445
|
0
|
|
|
0
|
1
|
|
sub iotwireless { shift->_execute('iotwireless', @_) } |
446
|
0
|
|
|
0
|
1
|
|
sub ivs { shift->_execute('ivs', @_) } |
447
|
0
|
|
|
0
|
1
|
|
sub ivschat { shift->_execute('ivschat', @_) } |
448
|
0
|
|
|
0
|
1
|
|
sub kafka { shift->_execute('kafka', @_) } |
449
|
0
|
|
|
0
|
1
|
|
sub kafkaconnect { shift->_execute('kafkaconnect', @_) } |
450
|
0
|
|
|
0
|
1
|
|
sub kendra { shift->_execute('kendra', @_) } |
451
|
0
|
|
|
0
|
1
|
|
sub kendra_ranking { shift->_execute('kendra-ranking', @_) } |
452
|
0
|
|
|
0
|
1
|
|
sub keyspaces { shift->_execute('keyspaces', @_) } |
453
|
0
|
|
|
0
|
1
|
|
sub kinesis { shift->_execute('kinesis', @_) } |
454
|
0
|
|
|
0
|
1
|
|
sub kinesis_video_archived_media { shift->_execute('kinesis-video-archived-media', @_) } |
455
|
0
|
|
|
0
|
1
|
|
sub kinesis_video_media { shift->_execute('kinesis-video-media', @_) } |
456
|
0
|
|
|
0
|
1
|
|
sub kinesis_video_signaling { shift->_execute('kinesis-video-signaling', @_) } |
457
|
0
|
|
|
0
|
1
|
|
sub kinesis_video_webrtc_storage { shift->_execute('kinesis-video-webrtc-storage', @_) } |
458
|
0
|
|
|
0
|
1
|
|
sub kinesisanalytics { shift->_execute('kinesisanalytics', @_) } |
459
|
0
|
|
|
0
|
1
|
|
sub kinesisanalyticsv2 { shift->_execute('kinesisanalyticsv2', @_) } |
460
|
0
|
|
|
0
|
1
|
|
sub kinesisvideo { shift->_execute('kinesisvideo', @_) } |
461
|
0
|
|
|
0
|
1
|
|
sub kms { shift->_execute('kms', @_) } |
462
|
0
|
|
|
0
|
1
|
|
sub lakeformation { shift->_execute('lakeformation', @_) } |
463
|
0
|
|
|
0
|
1
|
|
sub lambda { shift->_execute('lambda', @_) } |
464
|
0
|
|
|
0
|
1
|
|
sub lex_models { shift->_execute('lex-models', @_) } |
465
|
0
|
|
|
0
|
1
|
|
sub lex_runtime { shift->_execute('lex-runtime', @_) } |
466
|
0
|
|
|
0
|
1
|
|
sub lexv2_models { shift->_execute('lexv2-models', @_) } |
467
|
0
|
|
|
0
|
1
|
|
sub lexv2_runtime { shift->_execute('lexv2-runtime', @_) } |
468
|
0
|
|
|
0
|
1
|
|
sub license_manager { shift->_execute('license-manager', @_) } |
469
|
0
|
|
|
0
|
1
|
|
sub license_manager_linux_subscriptions { shift->_execute('license-manager-linux-subscriptions', @_) } |
470
|
0
|
|
|
0
|
1
|
|
sub license_manager_user_subscriptions { shift->_execute('license-manager-user-subscriptions', @_) } |
471
|
0
|
|
|
0
|
1
|
|
sub lightsail { shift->_execute('lightsail', @_) } |
472
|
0
|
|
|
0
|
1
|
|
sub location { shift->_execute('location', @_) } |
473
|
0
|
|
|
0
|
1
|
|
sub logs { shift->_execute('logs', @_) } |
474
|
0
|
|
|
0
|
1
|
|
sub lookoutequipment { shift->_execute('lookoutequipment', @_) } |
475
|
0
|
|
|
0
|
1
|
|
sub lookoutmetrics { shift->_execute('lookoutmetrics', @_) } |
476
|
0
|
|
|
0
|
1
|
|
sub lookoutvision { shift->_execute('lookoutvision', @_) } |
477
|
0
|
|
|
0
|
1
|
|
sub m2 { shift->_execute('m2', @_) } |
478
|
0
|
|
|
0
|
1
|
|
sub machinelearning { shift->_execute('machinelearning', @_) } |
479
|
0
|
|
|
0
|
1
|
|
sub macie { shift->_execute('macie', @_) } |
480
|
0
|
|
|
0
|
1
|
|
sub macie2 { shift->_execute('macie2', @_) } |
481
|
0
|
|
|
0
|
1
|
|
sub managedblockchain { shift->_execute('managedblockchain', @_) } |
482
|
0
|
|
|
0
|
1
|
|
sub marketplace_catalog { shift->_execute('marketplace-catalog', @_) } |
483
|
0
|
|
|
0
|
1
|
|
sub marketplace_entitlement { shift->_execute('marketplace-entitlement', @_) } |
484
|
0
|
|
|
0
|
1
|
|
sub marketplacecommerceanalytics { shift->_execute('marketplacecommerceanalytics', @_) } |
485
|
0
|
|
|
0
|
1
|
|
sub mediaconnect { shift->_execute('mediaconnect', @_) } |
486
|
0
|
|
|
0
|
1
|
|
sub mediaconvert { shift->_execute('mediaconvert', @_) } |
487
|
0
|
|
|
0
|
1
|
|
sub medialive { shift->_execute('medialive', @_) } |
488
|
0
|
|
|
0
|
1
|
|
sub mediapackage { shift->_execute('mediapackage', @_) } |
489
|
0
|
|
|
0
|
1
|
|
sub mediapackage_vod { shift->_execute('mediapackage-vod', @_) } |
490
|
0
|
|
|
0
|
1
|
|
sub mediastore { shift->_execute('mediastore', @_) } |
491
|
0
|
|
|
0
|
1
|
|
sub mediastore_data { shift->_execute('mediastore-data', @_) } |
492
|
0
|
|
|
0
|
1
|
|
sub mediatailor { shift->_execute('mediatailor', @_) } |
493
|
0
|
|
|
0
|
1
|
|
sub memorydb { shift->_execute('memorydb', @_) } |
494
|
0
|
|
|
0
|
1
|
|
sub meteringmarketplace { shift->_execute('meteringmarketplace', @_) } |
495
|
0
|
|
|
0
|
1
|
|
sub mgh { shift->_execute('mgh', @_) } |
496
|
0
|
|
|
0
|
1
|
|
sub mgn { shift->_execute('mgn', @_) } |
497
|
0
|
|
|
0
|
1
|
|
sub migration_hub_refactor_spaces { shift->_execute('migration-hub-refactor-spaces', @_) } |
498
|
0
|
|
|
0
|
1
|
|
sub migrationhub_config { shift->_execute('migrationhub-config', @_) } |
499
|
0
|
|
|
0
|
1
|
|
sub migrationhuborchestrator { shift->_execute('migrationhuborchestrator', @_) } |
500
|
0
|
|
|
0
|
1
|
|
sub migrationhubstrategy { shift->_execute('migrationhubstrategy', @_) } |
501
|
0
|
|
|
0
|
1
|
|
sub mobile { shift->_execute('mobile', @_) } |
502
|
0
|
|
|
0
|
1
|
|
sub mq { shift->_execute('mq', @_) } |
503
|
0
|
|
|
0
|
1
|
|
sub mturk { shift->_execute('mturk', @_) } |
504
|
0
|
|
|
0
|
1
|
|
sub mwaa { shift->_execute('mwaa', @_) } |
505
|
0
|
|
|
0
|
1
|
|
sub neptune { shift->_execute('neptune', @_) } |
506
|
0
|
|
|
0
|
1
|
|
sub network_firewall { shift->_execute('network-firewall', @_) } |
507
|
0
|
|
|
0
|
1
|
|
sub networkmanager { shift->_execute('networkmanager', @_) } |
508
|
0
|
|
|
0
|
1
|
|
sub nimble { shift->_execute('nimble', @_) } |
509
|
0
|
|
|
0
|
1
|
|
sub oam { shift->_execute('oam', @_) } |
510
|
0
|
|
|
0
|
1
|
|
sub omics { shift->_execute('omics', @_) } |
511
|
0
|
|
|
0
|
1
|
|
sub opensearch { shift->_execute('opensearch', @_) } |
512
|
0
|
|
|
0
|
1
|
|
sub opensearchserverless { shift->_execute('opensearchserverless', @_) } |
513
|
0
|
|
|
0
|
1
|
|
sub opsworks { shift->_execute('opsworks', @_) } |
514
|
0
|
|
|
0
|
1
|
|
sub opsworks_cm { shift->_execute('opsworks-cm', @_) } |
515
|
0
|
|
|
0
|
1
|
|
sub organizations { shift->_execute('organizations', @_) } |
516
|
0
|
|
|
0
|
1
|
|
sub outposts { shift->_execute('outposts', @_) } |
517
|
0
|
|
|
0
|
1
|
|
sub panorama { shift->_execute('panorama', @_) } |
518
|
0
|
|
|
0
|
1
|
|
sub personalize { shift->_execute('personalize', @_) } |
519
|
0
|
|
|
0
|
1
|
|
sub personalize_events { shift->_execute('personalize-events', @_) } |
520
|
0
|
|
|
0
|
1
|
|
sub personalize_runtime { shift->_execute('personalize-runtime', @_) } |
521
|
0
|
|
|
0
|
1
|
|
sub pi { shift->_execute('pi', @_) } |
522
|
0
|
|
|
0
|
1
|
|
sub pinpoint { shift->_execute('pinpoint', @_) } |
523
|
0
|
|
|
0
|
1
|
|
sub pinpoint_email { shift->_execute('pinpoint-email', @_) } |
524
|
0
|
|
|
0
|
1
|
|
sub pinpoint_sms_voice { shift->_execute('pinpoint-sms-voice', @_) } |
525
|
0
|
|
|
0
|
1
|
|
sub pinpoint_sms_voice_v2 { shift->_execute('pinpoint-sms-voice-v2', @_) } |
526
|
0
|
|
|
0
|
1
|
|
sub pipes { shift->_execute('pipes', @_) } |
527
|
0
|
|
|
0
|
1
|
|
sub polly { shift->_execute('polly', @_) } |
528
|
0
|
|
|
0
|
1
|
|
sub pricing { shift->_execute('pricing', @_) } |
529
|
0
|
|
|
0
|
1
|
|
sub privatenetworks { shift->_execute('privatenetworks', @_) } |
530
|
0
|
|
|
0
|
1
|
|
sub proton { shift->_execute('proton', @_) } |
531
|
0
|
|
|
0
|
1
|
|
sub qldb { shift->_execute('qldb', @_) } |
532
|
0
|
|
|
0
|
1
|
|
sub qldb_session { shift->_execute('qldb-session', @_) } |
533
|
0
|
|
|
0
|
1
|
|
sub quicksight { shift->_execute('quicksight', @_) } |
534
|
0
|
|
|
0
|
1
|
|
sub ram { shift->_execute('ram', @_) } |
535
|
0
|
|
|
0
|
1
|
|
sub rbin { shift->_execute('rbin', @_) } |
536
|
0
|
|
|
0
|
1
|
|
sub rds { shift->_execute('rds', @_) } |
537
|
0
|
|
|
0
|
1
|
|
sub rds_data { shift->_execute('rds-data', @_) } |
538
|
0
|
|
|
0
|
1
|
|
sub redshift { shift->_execute('redshift', @_) } |
539
|
0
|
|
|
0
|
1
|
|
sub redshift_data { shift->_execute('redshift-data', @_) } |
540
|
0
|
|
|
0
|
1
|
|
sub redshift_serverless { shift->_execute('redshift-serverless', @_) } |
541
|
0
|
|
|
0
|
1
|
|
sub rekognition { shift->_execute('rekognition', @_) } |
542
|
0
|
|
|
0
|
1
|
|
sub resiliencehub { shift->_execute('resiliencehub', @_) } |
543
|
0
|
|
|
0
|
1
|
|
sub resource_explorer_2 { shift->_execute('resource-explorer-2', @_) } |
544
|
0
|
|
|
0
|
1
|
|
sub resource_groups { shift->_execute('resource-groups', @_) } |
545
|
0
|
|
|
0
|
1
|
|
sub resourcegroupstaggingapi { shift->_execute('resourcegroupstaggingapi', @_) } |
546
|
0
|
|
|
0
|
1
|
|
sub robomaker { shift->_execute('robomaker', @_) } |
547
|
0
|
|
|
0
|
1
|
|
sub rolesanywhere { shift->_execute('rolesanywhere', @_) } |
548
|
0
|
|
|
0
|
1
|
|
sub route53 { shift->_execute('route53', @_) } |
549
|
0
|
|
|
0
|
1
|
|
sub route53_recovery_cluster { shift->_execute('route53-recovery-cluster', @_) } |
550
|
0
|
|
|
0
|
1
|
|
sub route53_recovery_control_config { shift->_execute('route53-recovery-control-config', @_) } |
551
|
0
|
|
|
0
|
1
|
|
sub route53_recovery_readiness { shift->_execute('route53-recovery-readiness', @_) } |
552
|
0
|
|
|
0
|
1
|
|
sub route53domains { shift->_execute('route53domains', @_) } |
553
|
0
|
|
|
0
|
1
|
|
sub route53resolver { shift->_execute('route53resolver', @_) } |
554
|
0
|
|
|
0
|
1
|
|
sub rum { shift->_execute('rum', @_) } |
555
|
0
|
|
|
0
|
1
|
|
sub s3 { shift->_execute('s3', @_) } |
556
|
0
|
|
|
0
|
1
|
|
sub s3api { shift->_execute('s3api', @_) } |
557
|
0
|
|
|
0
|
1
|
|
sub s3control { shift->_execute('s3control', @_) } |
558
|
0
|
|
|
0
|
1
|
|
sub s3outposts { shift->_execute('s3outposts', @_) } |
559
|
0
|
|
|
0
|
1
|
|
sub sagemaker { shift->_execute('sagemaker', @_) } |
560
|
0
|
|
|
0
|
1
|
|
sub sagemaker_a2i_runtime { shift->_execute('sagemaker-a2i-runtime', @_) } |
561
|
0
|
|
|
0
|
1
|
|
sub sagemaker_edge { shift->_execute('sagemaker-edge', @_) } |
562
|
0
|
|
|
0
|
1
|
|
sub sagemaker_featurestore_runtime { shift->_execute('sagemaker-featurestore-runtime', @_) } |
563
|
0
|
|
|
0
|
1
|
|
sub sagemaker_geospatial { shift->_execute('sagemaker-geospatial', @_) } |
564
|
0
|
|
|
0
|
1
|
|
sub sagemaker_metrics { shift->_execute('sagemaker-metrics', @_) } |
565
|
0
|
|
|
0
|
1
|
|
sub sagemaker_runtime { shift->_execute('sagemaker-runtime', @_) } |
566
|
0
|
|
|
0
|
1
|
|
sub savingsplans { shift->_execute('savingsplans', @_) } |
567
|
0
|
|
|
0
|
1
|
|
sub scheduler { shift->_execute('scheduler', @_) } |
568
|
0
|
|
|
0
|
1
|
|
sub schemas { shift->_execute('schemas', @_) } |
569
|
0
|
|
|
0
|
1
|
|
sub sdb { shift->_execute('sdb', @_) } |
570
|
0
|
|
|
0
|
1
|
|
sub secretsmanager { shift->_execute('secretsmanager', @_) } |
571
|
0
|
|
|
0
|
1
|
|
sub securityhub { shift->_execute('securityhub', @_) } |
572
|
0
|
|
|
0
|
1
|
|
sub securitylake { shift->_execute('securitylake', @_) } |
573
|
0
|
|
|
0
|
1
|
|
sub serverlessrepo { shift->_execute('serverlessrepo', @_) } |
574
|
0
|
|
|
0
|
1
|
|
sub service_quotas { shift->_execute('service-quotas', @_) } |
575
|
0
|
|
|
0
|
1
|
|
sub servicecatalog { shift->_execute('servicecatalog', @_) } |
576
|
0
|
|
|
0
|
1
|
|
sub servicecatalog_appregistry { shift->_execute('servicecatalog-appregistry', @_) } |
577
|
0
|
|
|
0
|
1
|
|
sub servicediscovery { shift->_execute('servicediscovery', @_) } |
578
|
0
|
|
|
0
|
1
|
|
sub ses { shift->_execute('ses', @_) } |
579
|
0
|
|
|
0
|
1
|
|
sub sesv2 { shift->_execute('sesv2', @_) } |
580
|
0
|
|
|
0
|
1
|
|
sub shield { shift->_execute('shield', @_) } |
581
|
0
|
|
|
0
|
1
|
|
sub signer { shift->_execute('signer', @_) } |
582
|
0
|
|
|
0
|
1
|
|
sub simspaceweaver { shift->_execute('simspaceweaver', @_) } |
583
|
0
|
|
|
0
|
1
|
|
sub sms { shift->_execute('sms', @_) } |
584
|
0
|
|
|
0
|
1
|
|
sub snow_device_management { shift->_execute('snow-device-management', @_) } |
585
|
0
|
|
|
0
|
1
|
|
sub snowball { shift->_execute('snowball', @_) } |
586
|
0
|
|
|
0
|
1
|
|
sub sns { shift->_execute('sns', @_) } |
587
|
0
|
|
|
0
|
1
|
|
sub sqs { shift->_execute('sqs', @_) } |
588
|
0
|
|
|
0
|
1
|
|
sub ssm { shift->_execute('ssm', @_) } |
589
|
0
|
|
|
0
|
1
|
|
sub ssm_contacts { shift->_execute('ssm-contacts', @_) } |
590
|
0
|
|
|
0
|
1
|
|
sub ssm_incidents { shift->_execute('ssm-incidents', @_) } |
591
|
0
|
|
|
0
|
1
|
|
sub ssm_sap { shift->_execute('ssm-sap', @_) } |
592
|
0
|
|
|
0
|
1
|
|
sub sso { shift->_execute('sso', @_) } |
593
|
0
|
|
|
0
|
1
|
|
sub sso_admin { shift->_execute('sso-admin', @_) } |
594
|
0
|
|
|
0
|
1
|
|
sub sso_oidc { shift->_execute('sso-oidc', @_) } |
595
|
0
|
|
|
0
|
1
|
|
sub stepfunctions { shift->_execute('stepfunctions', @_) } |
596
|
0
|
|
|
0
|
1
|
|
sub storagegateway { shift->_execute('storagegateway', @_) } |
597
|
0
|
|
|
0
|
1
|
|
sub sts { shift->_execute('sts', @_) } |
598
|
0
|
|
|
0
|
1
|
|
sub support { shift->_execute('support', @_) } |
599
|
0
|
|
|
0
|
1
|
|
sub support_app { shift->_execute('support-app', @_) } |
600
|
0
|
|
|
0
|
1
|
|
sub swf { shift->_execute('swf', @_) } |
601
|
0
|
|
|
0
|
1
|
|
sub synthetics { shift->_execute('synthetics', @_) } |
602
|
0
|
|
|
0
|
1
|
|
sub textract { shift->_execute('textract', @_) } |
603
|
0
|
|
|
0
|
1
|
|
sub timestream_query { shift->_execute('timestream-query', @_) } |
604
|
0
|
|
|
0
|
1
|
|
sub timestream_write { shift->_execute('timestream-write', @_) } |
605
|
0
|
|
|
0
|
1
|
|
sub tnb { shift->_execute('tnb', @_) } |
606
|
0
|
|
|
0
|
1
|
|
sub transcribe { shift->_execute('transcribe', @_) } |
607
|
0
|
|
|
0
|
1
|
|
sub transfer { shift->_execute('transfer', @_) } |
608
|
0
|
|
|
0
|
1
|
|
sub translate { shift->_execute('translate', @_) } |
609
|
0
|
|
|
0
|
1
|
|
sub voice_id { shift->_execute('voice-id', @_) } |
610
|
0
|
|
|
0
|
1
|
|
sub waf { shift->_execute('waf', @_) } |
611
|
0
|
|
|
0
|
1
|
|
sub waf_regional { shift->_execute('waf-regional', @_) } |
612
|
0
|
|
|
0
|
1
|
|
sub wafv2 { shift->_execute('wafv2', @_) } |
613
|
0
|
|
|
0
|
1
|
|
sub wellarchitected { shift->_execute('wellarchitected', @_) } |
614
|
0
|
|
|
0
|
1
|
|
sub wisdom { shift->_execute('wisdom', @_) } |
615
|
0
|
|
|
0
|
1
|
|
sub workdocs { shift->_execute('workdocs', @_) } |
616
|
0
|
|
|
0
|
1
|
|
sub worklink { shift->_execute('worklink', @_) } |
617
|
0
|
|
|
0
|
1
|
|
sub workmail { shift->_execute('workmail', @_) } |
618
|
0
|
|
|
0
|
1
|
|
sub workmailmessageflow { shift->_execute('workmailmessageflow', @_) } |
619
|
0
|
|
|
0
|
1
|
|
sub workspaces { shift->_execute('workspaces', @_) } |
620
|
0
|
|
|
0
|
1
|
|
sub workspaces_web { shift->_execute('workspaces-web', @_) } |
621
|
0
|
|
|
0
|
1
|
|
sub xray { shift->_execute('xray', @_) } |
622
|
|
|
|
|
|
|
|
623
|
|
|
|
|
|
|
1; |
624
|
|
|
|
|
|
|
|
625
|
|
|
|
|
|
|
__END__ |