-
Notifications
You must be signed in to change notification settings - Fork 421
/
Copy pathcdk_sar.py
39 lines (32 loc) · 1.37 KB
/
cdk_sar.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from aws_cdk import Stack, aws_lambda, aws_sam
from constructs import Construct
POWERTOOLS_BASE_NAME = "AWSLambdaPowertools"
# Find latest from github.com/aws-powertools/powertools-lambda-python/releases
POWERTOOLS_VER = "3.0.9"
POWERTOOLS_ARN = (
"arn:aws:serverlessrepo:eu-west-1:057560766410:applications/aws-lambda-powertools-python-layer-v3-python313-x86-64"
)
class SampleApp(Stack):
def __init__(self, scope: Construct, id_: str) -> None:
super().__init__(scope, id_)
# Launches SAR App as CloudFormation nested stack and return Lambda Layer
powertools_app = aws_sam.CfnApplication(
self,
f"{POWERTOOLS_BASE_NAME}Application",
location={"applicationId": POWERTOOLS_ARN, "semanticVersion": POWERTOOLS_VER},
)
powertools_layer_arn = powertools_app.get_att("Outputs.LayerVersionArn").to_string()
powertools_layer_version = aws_lambda.LayerVersion.from_layer_version_arn(
self,
f"{POWERTOOLS_BASE_NAME}",
powertools_layer_arn,
)
aws_lambda.Function(
self,
"sample-app-lambda",
runtime=aws_lambda.Runtime.PYTHON_3_13,
function_name="sample-lambda",
code=aws_lambda.Code.from_asset("lambda"),
handler="hello.handler",
layers=[powertools_layer_version],
)