rusty_cdk_core/lambda/
dto.rs1use crate::{dto_methods, ref_struct, ref_struct_with_id_methods};
2use crate::shared::Id;
3use crate::stack::Asset;
4use serde::Serialize;
5use serde_json::Value;
6use std::collections::HashMap;
7
8ref_struct_with_id_methods!(FunctionRef);
9
10#[derive(Debug, Serialize)]
11pub struct Function {
12 #[serde(skip)]
13 pub(super) id: Id,
14 #[serde(skip)]
15 pub(super) resource_id: String,
16 #[serde(skip)]
17 pub(crate) asset: Option<Asset>,
18 #[serde(rename = "Type")]
19 pub(super) r#type: String,
20 #[serde(rename = "Properties")]
21 pub(super) properties: LambdaFunctionProperties,
22}
23
24impl Function {
25 pub fn get_id(&self) -> &Id {
26 &self.id
27 }
28
29 pub fn get_resource_id(&self) -> &str {
30 self.resource_id.as_str()
31 }
32}
33
34#[derive(Debug, Serialize)]
35pub struct LambdaFunctionProperties {
36 #[serde(rename = "Code")]
37 pub(super) code: LambdaCode,
38 #[serde(rename = "MemorySize")]
39 pub(super) memory_size: u16,
40 #[serde(rename = "Timeout")]
41 pub(super) timeout: u16,
42 #[serde(rename = "Architectures")]
43 pub(super) architectures: Vec<String>,
44 #[serde(rename = "Role")]
45 pub(super) role: Value,
46 #[serde(rename = "Runtime", skip_serializing_if = "Option::is_none")]
47 pub(super) runtime: Option<String>,
48 #[serde(rename = "Handler", skip_serializing_if = "Option::is_none")]
49 pub(super) handler: Option<String>,
50 #[serde(rename = "FunctionName", skip_serializing_if = "Option::is_none")]
51 pub(super) function_name: Option<String>,
52 #[serde(rename = "Environment", skip_serializing_if = "Option::is_none")]
53 pub(super) environment: Option<Environment>,
54 #[serde(rename = "ReservedConcurrentExecutions", skip_serializing_if = "Option::is_none")]
55 pub(super) reserved_concurrent_executions: Option<u32>,
56 #[serde(rename = "LoggingConfig")]
57 pub(super) logging_info: LoggingInfo,
58 }
61
62#[derive(Debug, Serialize)]
63pub struct LambdaCode {
64 #[serde(rename = "S3Bucket", skip_serializing_if = "Option::is_none")]
65 pub(super) s3_bucket: Option<String>,
66 #[serde(rename = "S3Key", skip_serializing_if = "Option::is_none")]
67 pub(super) s3_key: Option<String>,
68 #[serde(rename = "ZipFile", skip_serializing_if = "Option::is_none")]
69 pub(super) zipfile: Option<String>,
70 }
74
75#[derive(Debug, Serialize)]
76pub struct Environment {
77 #[serde(rename = "Variables")]
78 pub(super) variables: HashMap<String, Value>,
79}
80
81#[derive(Debug, Serialize)]
82pub struct LoggingInfo {
83 #[serde(rename = "LogGroup")]
84 pub(super) log_group: Option<Value>,
85 }
89
90ref_struct!(EventSourceMappingRef);
91
92#[derive(Debug, Serialize)]
93pub struct EventSourceMapping {
94 #[serde(skip)]
95 pub(super) id: Id,
96 #[serde(skip)]
97 pub(super) resource_id: String,
98 #[serde(rename = "Type")]
99 pub(super) r#type: String,
100 #[serde(rename = "Properties")]
101 pub(super) properties: EventSourceProperties,
102}
103dto_methods!(EventSourceMapping);
104
105#[derive(Debug, Serialize)]
106pub struct EventSourceProperties {
107 #[serde(rename = "EventSourceArn", skip_serializing_if = "Option::is_none")]
108 pub(super) event_source_arn: Option<Value>,
109 #[serde(rename = "FunctionName", skip_serializing_if = "Option::is_none")]
110 pub(super) function_name: Option<Value>,
111 #[serde(rename = "ScalingConfig", skip_serializing_if = "Option::is_none")]
112 pub(super) scaling_config: Option<ScalingConfig>,
113}
114
115#[derive(Debug, Serialize)]
116pub struct ScalingConfig {
117 #[serde(rename = "MaximumConcurrency")]
118 pub(super) max_concurrency: u16,
119}
120
121ref_struct_with_id_methods!(PermissionRef);
122
123#[derive(Debug, Serialize)]
124pub struct Permission {
125 #[serde(skip)]
126 pub(super) id: Id,
127 #[serde(skip)]
128 pub(super) resource_id: String,
129 #[serde(rename = "Type")]
130 pub(super) r#type: String,
131 #[serde(rename = "Properties")]
132 pub(super) properties: LambdaPermissionProperties,
133}
134dto_methods!(Permission);
135
136#[derive(Debug, Serialize)]
137pub struct LambdaPermissionProperties {
138 #[serde(rename = "Action")]
139 pub(super) action: String,
140 #[serde(rename = "FunctionName")]
141 pub(super) function_name: Value,
142 #[serde(rename = "Principal")]
143 pub(super) principal: String,
144 #[serde(rename = "SourceArn", skip_serializing_if = "Option::is_none")]
145 pub(super) source_arn: Option<Value>,
146 #[serde(rename = "SourceAccount", skip_serializing_if = "Option::is_none")]
147 pub(super) source_account: Option<Value>,
148}