1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
5pub enum IamOperation {
6 CreateUser,
8 GetUser,
10 DeleteUser,
12 ListUsers,
14 UpdateUser,
16 CreateRole,
18 GetRole,
20 DeleteRole,
22 ListRoles,
24 UpdateRole,
26 CreatePolicy,
28 GetPolicy,
30 DeletePolicy,
32 ListPolicies,
34 AttachUserPolicy,
36 DetachUserPolicy,
38 ListAttachedUserPolicies,
40 AttachRolePolicy,
42 DetachRolePolicy,
44 ListAttachedRolePolicies,
46 CreateAccessKey,
48 DeleteAccessKey,
50 ListAccessKeys,
52 UpdateAccessKey,
54 GetAccessKeyLastUsed,
56 CreateGroup,
58 GetGroup,
60 DeleteGroup,
62 ListGroups,
64 UpdateGroup,
66 AddUserToGroup,
68 RemoveUserFromGroup,
70 ListGroupsForUser,
72 AttachGroupPolicy,
74 DetachGroupPolicy,
76 ListAttachedGroupPolicies,
78 CreateInstanceProfile,
80 GetInstanceProfile,
82 DeleteInstanceProfile,
84 ListInstanceProfiles,
86 ListInstanceProfilesForRole,
88 AddRoleToInstanceProfile,
90 RemoveRoleFromInstanceProfile,
92 CreatePolicyVersion,
94 GetPolicyVersion,
96 DeletePolicyVersion,
98 ListPolicyVersions,
100 SetDefaultPolicyVersion,
102 PutUserPolicy,
104 GetUserPolicy,
106 DeleteUserPolicy,
108 ListUserPolicies,
110 PutRolePolicy,
112 GetRolePolicy,
114 DeleteRolePolicy,
116 ListRolePolicies,
118 PutGroupPolicy,
120 GetGroupPolicy,
122 DeleteGroupPolicy,
124 ListGroupPolicies,
126 TagUser,
128 UntagUser,
130 ListUserTags,
132 TagRole,
134 UntagRole,
136 ListRoleTags,
138 CreateServiceLinkedRole,
140 DeleteServiceLinkedRole,
142 GetServiceLinkedRoleDeletionStatus,
144 UpdateAssumeRolePolicy,
146 SimulatePrincipalPolicy,
148 SimulateCustomPolicy,
150 ListEntitiesForPolicy,
152 GetAccountAuthorizationDetails,
154 CreateOpenIDConnectProvider,
156 GetOpenIDConnectProvider,
158 DeleteOpenIDConnectProvider,
160 ListOpenIDConnectProviders,
162 TagPolicy,
164 UntagPolicy,
166 ListPolicyTags,
168 TagInstanceProfile,
170 UntagInstanceProfile,
172 ListInstanceProfileTags,
174}
175
176impl IamOperation {
177 #[must_use]
179 pub fn as_str(&self) -> &'static str {
180 match self {
181 Self::CreateUser => "CreateUser",
182 Self::GetUser => "GetUser",
183 Self::DeleteUser => "DeleteUser",
184 Self::ListUsers => "ListUsers",
185 Self::UpdateUser => "UpdateUser",
186 Self::CreateRole => "CreateRole",
187 Self::GetRole => "GetRole",
188 Self::DeleteRole => "DeleteRole",
189 Self::ListRoles => "ListRoles",
190 Self::UpdateRole => "UpdateRole",
191 Self::CreatePolicy => "CreatePolicy",
192 Self::GetPolicy => "GetPolicy",
193 Self::DeletePolicy => "DeletePolicy",
194 Self::ListPolicies => "ListPolicies",
195 Self::AttachUserPolicy => "AttachUserPolicy",
196 Self::DetachUserPolicy => "DetachUserPolicy",
197 Self::ListAttachedUserPolicies => "ListAttachedUserPolicies",
198 Self::AttachRolePolicy => "AttachRolePolicy",
199 Self::DetachRolePolicy => "DetachRolePolicy",
200 Self::ListAttachedRolePolicies => "ListAttachedRolePolicies",
201 Self::CreateAccessKey => "CreateAccessKey",
202 Self::DeleteAccessKey => "DeleteAccessKey",
203 Self::ListAccessKeys => "ListAccessKeys",
204 Self::UpdateAccessKey => "UpdateAccessKey",
205 Self::GetAccessKeyLastUsed => "GetAccessKeyLastUsed",
206 Self::CreateGroup => "CreateGroup",
207 Self::GetGroup => "GetGroup",
208 Self::DeleteGroup => "DeleteGroup",
209 Self::ListGroups => "ListGroups",
210 Self::UpdateGroup => "UpdateGroup",
211 Self::AddUserToGroup => "AddUserToGroup",
212 Self::RemoveUserFromGroup => "RemoveUserFromGroup",
213 Self::ListGroupsForUser => "ListGroupsForUser",
214 Self::AttachGroupPolicy => "AttachGroupPolicy",
215 Self::DetachGroupPolicy => "DetachGroupPolicy",
216 Self::ListAttachedGroupPolicies => "ListAttachedGroupPolicies",
217 Self::CreateInstanceProfile => "CreateInstanceProfile",
218 Self::GetInstanceProfile => "GetInstanceProfile",
219 Self::DeleteInstanceProfile => "DeleteInstanceProfile",
220 Self::ListInstanceProfiles => "ListInstanceProfiles",
221 Self::ListInstanceProfilesForRole => "ListInstanceProfilesForRole",
222 Self::AddRoleToInstanceProfile => "AddRoleToInstanceProfile",
223 Self::RemoveRoleFromInstanceProfile => "RemoveRoleFromInstanceProfile",
224 Self::CreatePolicyVersion => "CreatePolicyVersion",
225 Self::GetPolicyVersion => "GetPolicyVersion",
226 Self::DeletePolicyVersion => "DeletePolicyVersion",
227 Self::ListPolicyVersions => "ListPolicyVersions",
228 Self::SetDefaultPolicyVersion => "SetDefaultPolicyVersion",
229 Self::PutUserPolicy => "PutUserPolicy",
230 Self::GetUserPolicy => "GetUserPolicy",
231 Self::DeleteUserPolicy => "DeleteUserPolicy",
232 Self::ListUserPolicies => "ListUserPolicies",
233 Self::PutRolePolicy => "PutRolePolicy",
234 Self::GetRolePolicy => "GetRolePolicy",
235 Self::DeleteRolePolicy => "DeleteRolePolicy",
236 Self::ListRolePolicies => "ListRolePolicies",
237 Self::PutGroupPolicy => "PutGroupPolicy",
238 Self::GetGroupPolicy => "GetGroupPolicy",
239 Self::DeleteGroupPolicy => "DeleteGroupPolicy",
240 Self::ListGroupPolicies => "ListGroupPolicies",
241 Self::TagUser => "TagUser",
242 Self::UntagUser => "UntagUser",
243 Self::ListUserTags => "ListUserTags",
244 Self::TagRole => "TagRole",
245 Self::UntagRole => "UntagRole",
246 Self::ListRoleTags => "ListRoleTags",
247 Self::CreateServiceLinkedRole => "CreateServiceLinkedRole",
248 Self::DeleteServiceLinkedRole => "DeleteServiceLinkedRole",
249 Self::GetServiceLinkedRoleDeletionStatus => "GetServiceLinkedRoleDeletionStatus",
250 Self::UpdateAssumeRolePolicy => "UpdateAssumeRolePolicy",
251 Self::SimulatePrincipalPolicy => "SimulatePrincipalPolicy",
252 Self::SimulateCustomPolicy => "SimulateCustomPolicy",
253 Self::ListEntitiesForPolicy => "ListEntitiesForPolicy",
254 Self::GetAccountAuthorizationDetails => "GetAccountAuthorizationDetails",
255 Self::CreateOpenIDConnectProvider => "CreateOpenIDConnectProvider",
256 Self::GetOpenIDConnectProvider => "GetOpenIDConnectProvider",
257 Self::DeleteOpenIDConnectProvider => "DeleteOpenIDConnectProvider",
258 Self::ListOpenIDConnectProviders => "ListOpenIDConnectProviders",
259 Self::TagPolicy => "TagPolicy",
260 Self::UntagPolicy => "UntagPolicy",
261 Self::ListPolicyTags => "ListPolicyTags",
262 Self::TagInstanceProfile => "TagInstanceProfile",
263 Self::UntagInstanceProfile => "UntagInstanceProfile",
264 Self::ListInstanceProfileTags => "ListInstanceProfileTags",
265 }
266 }
267
268 #[must_use]
270 pub fn from_name(name: &str) -> Option<Self> {
271 match name {
272 "CreateUser" => Some(Self::CreateUser),
273 "GetUser" => Some(Self::GetUser),
274 "DeleteUser" => Some(Self::DeleteUser),
275 "ListUsers" => Some(Self::ListUsers),
276 "UpdateUser" => Some(Self::UpdateUser),
277 "CreateRole" => Some(Self::CreateRole),
278 "GetRole" => Some(Self::GetRole),
279 "DeleteRole" => Some(Self::DeleteRole),
280 "ListRoles" => Some(Self::ListRoles),
281 "UpdateRole" => Some(Self::UpdateRole),
282 "CreatePolicy" => Some(Self::CreatePolicy),
283 "GetPolicy" => Some(Self::GetPolicy),
284 "DeletePolicy" => Some(Self::DeletePolicy),
285 "ListPolicies" => Some(Self::ListPolicies),
286 "AttachUserPolicy" => Some(Self::AttachUserPolicy),
287 "DetachUserPolicy" => Some(Self::DetachUserPolicy),
288 "ListAttachedUserPolicies" => Some(Self::ListAttachedUserPolicies),
289 "AttachRolePolicy" => Some(Self::AttachRolePolicy),
290 "DetachRolePolicy" => Some(Self::DetachRolePolicy),
291 "ListAttachedRolePolicies" => Some(Self::ListAttachedRolePolicies),
292 "CreateAccessKey" => Some(Self::CreateAccessKey),
293 "DeleteAccessKey" => Some(Self::DeleteAccessKey),
294 "ListAccessKeys" => Some(Self::ListAccessKeys),
295 "UpdateAccessKey" => Some(Self::UpdateAccessKey),
296 "GetAccessKeyLastUsed" => Some(Self::GetAccessKeyLastUsed),
297 "CreateGroup" => Some(Self::CreateGroup),
298 "GetGroup" => Some(Self::GetGroup),
299 "DeleteGroup" => Some(Self::DeleteGroup),
300 "ListGroups" => Some(Self::ListGroups),
301 "UpdateGroup" => Some(Self::UpdateGroup),
302 "AddUserToGroup" => Some(Self::AddUserToGroup),
303 "RemoveUserFromGroup" => Some(Self::RemoveUserFromGroup),
304 "ListGroupsForUser" => Some(Self::ListGroupsForUser),
305 "AttachGroupPolicy" => Some(Self::AttachGroupPolicy),
306 "DetachGroupPolicy" => Some(Self::DetachGroupPolicy),
307 "ListAttachedGroupPolicies" => Some(Self::ListAttachedGroupPolicies),
308 "CreateInstanceProfile" => Some(Self::CreateInstanceProfile),
309 "GetInstanceProfile" => Some(Self::GetInstanceProfile),
310 "DeleteInstanceProfile" => Some(Self::DeleteInstanceProfile),
311 "ListInstanceProfiles" => Some(Self::ListInstanceProfiles),
312 "ListInstanceProfilesForRole" => Some(Self::ListInstanceProfilesForRole),
313 "AddRoleToInstanceProfile" => Some(Self::AddRoleToInstanceProfile),
314 "RemoveRoleFromInstanceProfile" => Some(Self::RemoveRoleFromInstanceProfile),
315 "CreatePolicyVersion" => Some(Self::CreatePolicyVersion),
316 "GetPolicyVersion" => Some(Self::GetPolicyVersion),
317 "DeletePolicyVersion" => Some(Self::DeletePolicyVersion),
318 "ListPolicyVersions" => Some(Self::ListPolicyVersions),
319 "SetDefaultPolicyVersion" => Some(Self::SetDefaultPolicyVersion),
320 "PutUserPolicy" => Some(Self::PutUserPolicy),
321 "GetUserPolicy" => Some(Self::GetUserPolicy),
322 "DeleteUserPolicy" => Some(Self::DeleteUserPolicy),
323 "ListUserPolicies" => Some(Self::ListUserPolicies),
324 "PutRolePolicy" => Some(Self::PutRolePolicy),
325 "GetRolePolicy" => Some(Self::GetRolePolicy),
326 "DeleteRolePolicy" => Some(Self::DeleteRolePolicy),
327 "ListRolePolicies" => Some(Self::ListRolePolicies),
328 "PutGroupPolicy" => Some(Self::PutGroupPolicy),
329 "GetGroupPolicy" => Some(Self::GetGroupPolicy),
330 "DeleteGroupPolicy" => Some(Self::DeleteGroupPolicy),
331 "ListGroupPolicies" => Some(Self::ListGroupPolicies),
332 "TagUser" => Some(Self::TagUser),
333 "UntagUser" => Some(Self::UntagUser),
334 "ListUserTags" => Some(Self::ListUserTags),
335 "TagRole" => Some(Self::TagRole),
336 "UntagRole" => Some(Self::UntagRole),
337 "ListRoleTags" => Some(Self::ListRoleTags),
338 "CreateServiceLinkedRole" => Some(Self::CreateServiceLinkedRole),
339 "DeleteServiceLinkedRole" => Some(Self::DeleteServiceLinkedRole),
340 "GetServiceLinkedRoleDeletionStatus" => Some(Self::GetServiceLinkedRoleDeletionStatus),
341 "UpdateAssumeRolePolicy" => Some(Self::UpdateAssumeRolePolicy),
342 "SimulatePrincipalPolicy" => Some(Self::SimulatePrincipalPolicy),
343 "SimulateCustomPolicy" => Some(Self::SimulateCustomPolicy),
344 "ListEntitiesForPolicy" => Some(Self::ListEntitiesForPolicy),
345 "GetAccountAuthorizationDetails" => Some(Self::GetAccountAuthorizationDetails),
346 "CreateOpenIDConnectProvider" => Some(Self::CreateOpenIDConnectProvider),
347 "GetOpenIDConnectProvider" => Some(Self::GetOpenIDConnectProvider),
348 "DeleteOpenIDConnectProvider" => Some(Self::DeleteOpenIDConnectProvider),
349 "ListOpenIDConnectProviders" => Some(Self::ListOpenIDConnectProviders),
350 "TagPolicy" => Some(Self::TagPolicy),
351 "UntagPolicy" => Some(Self::UntagPolicy),
352 "ListPolicyTags" => Some(Self::ListPolicyTags),
353 "TagInstanceProfile" => Some(Self::TagInstanceProfile),
354 "UntagInstanceProfile" => Some(Self::UntagInstanceProfile),
355 "ListInstanceProfileTags" => Some(Self::ListInstanceProfileTags),
356 _ => None,
357 }
358 }
359}
360
361impl std::fmt::Display for IamOperation {
362 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
363 f.write_str(self.as_str())
364 }
365}