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