목차
이전에 AWS CDK를 초기화 하는 방법에 대해 알아보았다면 CDK를 Deploy하여 AWS Lambda를 배포해보도록 하겠습니다.
AWS Lambda란 무엇입니까? - AWS Lambda
AWS Lambda란 무엇입니까? Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. Lambda는 고가용성 컴퓨팅 인프라에서 코드를 실행하고 서버와 운
docs.aws.amazon.com
AWS Lambda는 AWS에서 제공하는 서버리스 서비스 입니다. 예를 들면 어떤 함수를 띄우는데 일일이 서버를 띄울 필요없이 단일 함수를 사용할때 필요한 서비스라 단순 서비스를 사용하기 위해 유용한 서비스 입니다.
람다 함수 만들기
AWS Lambda를 AWS CDK에서 사용하기 위해서는 따로 Lambda 함수를 가진 폴더 혹은 리소스가 필요합니다. 이전에 초기화로 만든 프로젝트를 이용해 Lambda 폴더를 만들어 보겠습니다.
여기서 조금 의심 될만한 부분이 보입니다.
lambda 폴더 밑에 hello.py 파일이 보이시나요?? 분명 CDK는 Typescript로 생성되어있는데 말이죠.
답을 말씀드리자면 CDK는 Stack을 Deploy이 하는 존재일뿐 Lambda의 언어는 중요하지 않습니다. 단 Stack에서 Deploy할 때 어떤 언어의 Lambda인지 명시만 하면 되는 것입니다.
람다 함수는 단순 "Hello World!"를 리턴 하도록 했습니다.
def handler(event, context):
return "Hello World!"
Lambda 함수 불러낸 코드 보기
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as lambda from 'aws-cdk-lib/aws-lambda'
export class CdkTestStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const hello = new lambda.Function(this, 'hello',{
functionName:'hello_lambda',
runtime: lambda.Runtime.PYTHON_3_7,
handler: 'hello.handler',
code: lambda.Code.fromAsset('lambda'),
})
}
}
코드를 보시면 Stack에 Lambda를 불러 냈습니다. 처음이기에 함수를 전체적으로 설명드리자면
lambda.Function의 생성자(Constructor)의 매개변수를 보면
첫번째 매개변수는 스택의 생성자 (자기자신)
두번째 매개변수는 Lambda 함수의 고유 ID
세번째 매개변수는 Lambda 함수의 프로퍼티(Property)로 보시면 됩니다. (여기서는 Key, Value값으로 설정합니다)
프로퍼티(Property) 더 보기
세번째 매개변수 프로퍼티(Property)에 대해서 좀 더 보려고 합니다.
functionName - 함수 이름
runtime - 함수가 구성될 런타임 언어 (아까전에 말씀 드린것과 같이 Python_3_7을 구동합니다.)
handler - 함수의 이름 (여기서는 폴더안의 이름이 hello.py였기 때문에 hello.handler 라고 명시하게 됩니다.
code - 함수의 위치 (fromAsset이를 이용해 CDK Project안에 있는 Lambda 폴더를 불러옵니다.)
CDK 배포하기
이제 한번 만들어본 Lamda를 배포해보도록 하겠습니다.
그전에 CloudFormation에 제 CDK Project를 등록해야합니다.
CDK BOOTSTRAP
$cdk bootstrap
성공 되었는지 콘솔에서도 확인해 보겠습니다.
자 콘솔에서도 잘 등록된 것 같으니 스택에 대한 SYNTH를 해야합니다.
CDK SYNTH
CDK Synth는 일종에 본인이 가지고 있는 프로젝트에 대한 코드를 CloudFormation YAML파일로 변환하는 과정을 지닙니다.
$cdk synth
CDK Synth를 하면 이렇게 cdk.out이라는 폴더와 함께 asset,template같은 파일이 만들어집니다.
CDK DEPLOY
드디어 배포할 시간이 왔습니다!
$cdk deploy
콘솔에서도 CloudFormation에서 CdkTestStack이 생겼습니다. 그럼 Lambda도 Deploy되어 있는지 확인해보겠습니다.
Lambda도 잘 Deploy되었습니다. 이렇게 코드로 (Infrastructure as code)를 AWS에 쉽게 코드로 배포가능 할 수 있습니다.
'devOps' 카테고리의 다른 글
[devOps/AWS] AWS CDK (cloud development kit) 시작하기 (0) | 2023.02.05 |
---|