Skip to content

Commit fc376f9

Browse files
docs(homepage): Change installation to CDK v2 (#4351)
* changed to AWS CDK v2 * modified to python312 * moved cdk to examples * moved code to examples * Moving files + small fix --------- Signed-off-by: Keith Rozario <795867+keithrozario@users.noreply.github.com> Co-authored-by: Leandro Damascena <lcdama@amazon.pt>
1 parent dd77ae1 commit fc376f9

19 files changed

+489
-416
lines changed

.pre-commit-config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ repos:
3434
entry: poetry run cfn-lint
3535
language: system
3636
types: [yaml]
37+
exclude: examples/homepage/install/.*?/serverless\.yml$
3738
files: examples/.*
3839
- repo: https://github.com/rhysd/actionlint
3940
rev: "fd7ba3c382e13dcc0248e425b4cbc3f1185fa3ee" # v1.6.24

docs/index.md

Lines changed: 31 additions & 416 deletions
Large diffs are not rendered by default.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Create a new one with the layer
2+
❯ amplify add function
3+
? Select which capability you want to add: Lambda function (serverless function)
4+
? Provide an AWS Lambda function name: <NAME-OF-FUNCTION>
5+
? Choose the runtime that you want to use: Python
6+
? Do you want to configure advanced settings? Yes
7+
...
8+
? Do you want to enable Lambda layers for this function? Yes
9+
? Enter up to 5 existing Lambda layer ARNs (comma-separated): arn:aws:lambda:eu-central-1:017000801446:layer:AWSLambdaPowertoolsPythonV2-Arm64:69
10+
❯ amplify push -y
11+
12+
13+
# Updating an existing function and add the layer
14+
❯ amplify update function
15+
? Select the Lambda function you want to update test2
16+
General information
17+
- Name: <NAME-OF-FUNCTION>
18+
? Which setting do you want to update? Lambda layers configuration
19+
? Do you want to enable Lambda layers for this function? Yes
20+
? Enter up to 5 existing Lambda layer ARNs (comma-separated): arn:aws:lambda:eu-central-1:017000801446:layer:AWSLambdaPowertoolsPythonV2-Arm64:69
21+
? Do you want to edit the local lambda function now? No
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from aws_cdk import Aws, Stack, aws_lambda
2+
from constructs import Construct
3+
4+
5+
class SampleApp(Stack):
6+
7+
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
8+
super().__init__(scope, construct_id, **kwargs)
9+
10+
powertools_layer = aws_lambda.LayerVersion.from_layer_version_arn(
11+
self,
12+
id="lambda-powertools",
13+
layer_version_arn=f"arn:aws:lambda:{Aws.REGION}:017000801446:layer:AWSLambdaPowertoolsPythonV2-Arm64:69",
14+
)
15+
aws_lambda.Function(
16+
self,
17+
"sample-app-lambda",
18+
runtime=aws_lambda.Runtime.PYTHON_3_12,
19+
layers=[powertools_layer],
20+
architecture=aws_lambda.Architecture.ARM_64,
21+
code=aws_lambda.Code.from_asset("lambda"),
22+
handler="hello.handler",
23+
)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import json
2+
3+
import pulumi
4+
import pulumi_aws as aws
5+
6+
role = aws.iam.Role(
7+
"role",
8+
assume_role_policy=json.dumps(
9+
{
10+
"Version": "2012-10-17",
11+
"Statement": [
12+
{"Action": "sts:AssumeRole", "Principal": {"Service": "lambda.amazonaws.com"}, "Effect": "Allow"},
13+
],
14+
},
15+
),
16+
managed_policy_arns=[aws.iam.ManagedPolicy.AWS_LAMBDA_BASIC_EXECUTION_ROLE],
17+
)
18+
19+
lambda_function = aws.lambda_.Function(
20+
"function",
21+
layers=[
22+
pulumi.Output.concat(
23+
"arn:aws:lambda:",
24+
aws.get_region_output().name,
25+
":017000801446:layer:AWSLambdaPowertoolsPythonV2-Arm64:69",
26+
),
27+
],
28+
tracing_config={"mode": "Active"},
29+
runtime=aws.lambda_.Runtime.PYTHON3D9,
30+
handler="index.handler",
31+
role=role.arn,
32+
architectures=["arm64"],
33+
code=pulumi.FileArchive("lambda_function_payload.zip"),
34+
)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
AWSTemplateFormatVersion: '2010-09-09'
2+
Transform: AWS::Serverless-2016-10-31
3+
4+
Resources:
5+
MyLambdaFunction:
6+
Type: AWS::Serverless::Function
7+
Properties:
8+
Architectures: [arm64]
9+
Runtime: python3.12
10+
Handler: app.lambda_handler
11+
Layers:
12+
- !Sub arn:aws:lambda:${AWS::Region}:017000801446:layer:AWSLambdaPowertoolsPythonV2-Arm64:69
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
service: powertools-lambda
2+
3+
provider:
4+
name: aws
5+
runtime: python3.12
6+
region: us-east-1
7+
8+
functions:
9+
powertools:
10+
handler: lambda_function.lambda_handler
11+
architecture: arm64
12+
layers:
13+
- arn:aws:lambda:${aws:region}:017000801446:layer:AWSLambdaPowertoolsPythonV2-Arm64:69
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
terraform {
2+
required_version = "~> 1.0.5"
3+
required_providers {
4+
aws = "~> 3.50.0"
5+
}
6+
}
7+
8+
provider "aws" {
9+
region = "{region}"
10+
}
11+
12+
resource "aws_iam_role" "iam_for_lambda" {
13+
name = "iam_for_lambda"
14+
15+
assume_role_policy = <<EOF
16+
{
17+
"Version": "2012-10-17",
18+
"Statement": [
19+
{
20+
"Action": "sts:AssumeRole",
21+
"Principal": {
22+
"Service": "lambda.amazonaws.com"
23+
},
24+
"Effect": "Allow"
25+
}
26+
]
27+
}
28+
EOF
29+
}
30+
31+
resource "aws_lambda_function" "test_lambda" {
32+
filename = "lambda_function_payload.zip"
33+
function_name = "lambda_function_name"
34+
role = aws_iam_role.iam_for_lambda.arn
35+
handler = "index.test"
36+
runtime = "python3.9"
37+
layers = ["arn:aws:lambda:{region}:017000801446:layer:AWSLambdaPowertoolsPythonV2-Arm64:69"]
38+
architectures = ["arm64"]
39+
40+
source_code_hash = filebase64sha256("lambda_function_payload.zip")
41+
}

examples/homepage/install/sar/cdk.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
from aws_cdk import Stack, aws_lambda, aws_sam
2+
from constructs import Construct
3+
4+
POWERTOOLS_BASE_NAME = "AWSLambdaPowertools"
5+
# Find latest from github.com/aws-powertools/powertools-lambda-python/releases
6+
POWERTOOLS_VER = "2.37.0"
7+
POWERTOOLS_ARN = "arn:aws:serverlessrepo:eu-west-1:057560766410:applications/aws-lambda-powertools-python-layer"
8+
9+
10+
class SampleApp(Stack):
11+
12+
def __init__(self, scope: Construct, id_: str) -> None:
13+
super().__init__(scope, id_)
14+
15+
# Launches SAR App as CloudFormation nested stack and return Lambda Layer
16+
powertools_app = aws_sam.CfnApplication(
17+
self,
18+
f"{POWERTOOLS_BASE_NAME}Application",
19+
location={"applicationId": POWERTOOLS_ARN, "semanticVersion": POWERTOOLS_VER},
20+
)
21+
22+
powertools_layer_arn = powertools_app.get_att("Outputs.LayerVersionArn").to_string()
23+
powertools_layer_version = aws_lambda.LayerVersion.from_layer_version_arn(
24+
self,
25+
f"{POWERTOOLS_BASE_NAME}",
26+
powertools_layer_arn,
27+
)
28+
29+
aws_lambda.Function(
30+
self,
31+
"sample-app-lambda",
32+
runtime=aws_lambda.Runtime.PYTHON_3_12,
33+
function_name="sample-lambda",
34+
code=aws_lambda.Code.from_asset("lambda"),
35+
handler="hello.handler",
36+
layers=[powertools_layer_version],
37+
)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
AWSTemplateFormatVersion: '2010-09-09'
2+
Transform: AWS::Serverless-2016-10-31
3+
4+
Resources:
5+
AwsLambdaPowertoolsPythonLayer:
6+
Type: AWS::Serverless::Application
7+
Properties:
8+
Location:
9+
ApplicationId: arn:aws:serverlessrepo:eu-west-1:057560766410:applications/aws-lambda-powertools-python-layer
10+
SemanticVersion: 2.0.0 # change to latest semantic version available in SAR
11+
12+
MyLambdaFunction:
13+
Type: AWS::Serverless::Function
14+
Properties:
15+
Runtime: python3.12
16+
Handler: app.lambda_handler
17+
Layers:
18+
# fetch Layer ARN from SAR App stack output
19+
- !GetAtt AwsLambdaPowertoolsPythonLayer.Outputs.LayerVersionArn

0 commit comments

Comments
 (0)