four/iam/property/
action.rs1use dyn_clone::DynClone;
2
3pub trait Action: erased_serde::Serialize + DynClone + std::fmt::Debug {}
4
5erased_serde::serialize_trait_object!(Action);
6dyn_clone::clone_trait_object!(Action);
7
8macro_rules! impl_action {
9 ( $service:ident, $action:ident, [$($t:ident),*] ) => {
10 pub mod $service {
11 use serde::Serialize;
12
13 pub trait $action: super::Action {}
14 erased_serde::serialize_trait_object!($action);
15 dyn_clone::clone_trait_object!($action);
16
17 $(
18 #[derive(Debug, Clone, Copy)]
19 pub struct $t;
20
21 impl super::Action for $t {}
22 impl $action for $t {}
23
24 impl Serialize for $t {
25 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
26 where
27 S: serde::Serializer,
28 {
29 let s = format!("{}:{}", stringify!($service), stringify!($t));
30 serializer.serialize_str(&s)
31 }
32 })*
33 }
34 };
35}
36
37impl_action!(sts, StsAction, [AssumeRole]);
38impl_action!(
39 lambda,
40 LambdaAction,
41 [
42 AddLayerVersionPermission,
43 AddPermission,
44 CreateAlias,
45 CreateCodeSigningConfig,
46 CreateEventSourceMapping,
47 CreateFunction,
48 CreateFunctionUrlConfig,
49 DeleteAlias,
50 DeleteCodeSigningConfig,
51 DeleteEventSourceMapping,
52 DeleteFunction,
53 DeleteFunctionCodeSigningConfig,
54 DeleteFunctionConcurrency,
55 DeleteFunctionEventInvokeConfig,
56 DeleteFunctionUrlConfig,
57 DeleteLayerVersion,
58 DeleteProvisionedConcurrencyConfig,
59 DisableReplication,
60 EnableReplication,
61 GetAccountSettings,
62 GetAlias,
63 GetCodeSigningConfig,
64 GetEventSourceMapping,
65 GetFunction,
66 GetFunctionCodeSigningConfig,
67 GetFunctionConcurrency,
68 GetFunctionConfiguration,
69 GetFunctionEventInvokeConfig,
70 GetFunctionUrlConfig,
71 GetLayerVersion,
72 GetLayerVersionPolicy,
73 GetPolicy,
74 GetProvisionedConcurrencyConfig,
75 GetRuntimeManagementConfig,
76 InvokeAsync,
77 InvokeFunction,
78 InvokeFunctionUrl,
79 ListAliases,
80 ListCodeSigningConfigs,
81 ListEventSourceMappings,
82 ListFuctionEventInvokeConfigs,
83 ListFunctionUrlConfigs,
84 ListFunctions,
85 ListFunctionsByCodeSigningConfig,
86 ListLayerVersions,
87 ListLayers,
88 ListProvisionedConcurrencyConfigs,
89 ListTags,
90 ListVersionsByFunction,
91 PublishLayerVersion,
92 PutFunctionCodeSigningConfig,
93 PutFunctionConcurrency,
94 PutFunctionEventInvokeConfig,
95 PutProvisionedConcurrencyConfig,
96 PutRuntimeManagementConfig,
97 RemoveLayerVersionPermission,
98 RemovePermission,
99 TagResource,
100 UntagResource,
101 UpdateAlias,
102 UpdateCodeSigningConfig,
103 UpdateEventSourceMapping,
104 UpdateFunctionCode,
105 UpdateFunctionCodeSigningConfig,
106 UpdateFunctionConfiguration,
107 UpdateFunctionEventInvokeConfig,
108 UpdateFunctionUrlConfig
109 ]
110);