Basic Function
•
lambda_function.py
import json
def lambda_handler(event, context):
# TODO implement
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
Python
복사
zip -r lambda-function.zip .
# 버킷에 Zip 파일 업로드 진행
aws s3 mb s3://crs-lambda-function-bucket
Shell
복사
apiVersion: iam.aws.crossplane.io/v1beta1
kind: Role
metadata:
name: lambda-execution-role
spec:
forProvider:
assumeRolePolicyDocument: |
{
"Version": "2012-10-17",
"Statement": [{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
}
}]
}
providerConfigRef:
name: aws-provider
---
apiVersion: lambda.aws.crossplane.io/v1beta1
kind: Function
metadata:
name: demo-function
spec:
forProvider:
packageType: Zip
code:
s3Bucket: crs-lambda-function-bucket
s3Key: lambda-function.zip
handler: lambda_function.lambda_handler
runtime: python3.13
roleRef:
name: lambda-execution-role
region: ap-northeast-2
timeout: 60
memorySize: 128
tags:
Name: demo-function
providerConfigRef:
name: aws-provider
YAML
복사
kubectl apply -f lambda.yaml
Shell
복사
kubectl get function
Shell
복사
Container Image Function
aws ecr create-repository \
--repository-name nginx \
--region ap-northeast-2 \
--image-tag-mutability MUTABLE
Shell
복사
docker pull nginx # nginx Image 사용
ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text)
REGION_CODE=$(aws configure set region ap-northeast-2 && aws configure get region)
aws ecr get-login-password --region $REGION_CODE | docker login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.$REGION_CODE.amazonaws.com
docker build -t nginx .
docker tag nginx:latest $ACCOUNT_ID.dkr.ecr.$REGION_CODE.amazonaws.com/nginx:latest
docker push $ACCOUNT_ID.dkr.ecr.$REGION_CODE.amazonaws.com/nginx:latest
Shell
복사
apiVersion: iam.aws.crossplane.io/v1beta1
kind: Role
metadata:
name: lambda-execution-role
spec:
forProvider:
assumeRolePolicyDocument: |
{
"Version": "2012-10-17",
"Statement": [{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
}
}]
}
providerConfigRef:
name: aws-provider
---
apiVersion: lambda.aws.crossplane.io/v1beta1
kind: Function
metadata:
name: demo-function
spec:
forProvider:
packageType: Image
code:
imageURI: IMAGE
roleRef:
name: lambda-execution-role
region: ap-northeast-2
timeout: 60
memorySize: 128
tags:
Name: demo-function
providerConfigRef:
name: aws-provider
YAML
복사
IMAGE_URL=$(aws ecr describe-repositories --repository-name nginx --query "repositories[].repositoryUri" --output text)
IMAGE_TAG=$(aws ecr describe-images --repository-name nginx --query "imageDetails[].imageTags" --output text)
IMAGE="$IMAGE_URL:$IMAGE_TAG"
sed -i "s|IMAGE|$IMAGE|g" lambda.yaml
Shell
복사
kubectl apply -f lambda.yaml
Shell
복사
kubectl get function
Shell
복사