티스토리 뷰
IaC를 통해 람다를 배포하는 여러가지 방법이 있다.
CDK를 통해 cdk-cli를 통하여 배포하는 방법, SAM(Serverless Application Model)을 통하여 sam-cli를 통해 배포하는 방법. 또는 CloudFormation을 통해 직접 배포 코드를 작성 하는 방법.
지금까지 내가 알고 있던 세 방법의 공통점은, Lambda Handler를 S3 Bucket에 올린 후, Ref: 를 통해 가져오는 방식이라는 점이었다. 이런 방식에서는 CD(Continous Delivery)를 통해서는 어찌 배포 해야 하는가... 고민에 빠진 시점이 있었다.
최근 AWS CodeBuild의 IaC를 작성하다가.. BuildSpec의 내용을 CloudFormation의 yaml에 직접 작성하는 것을 보고 삘이 왔다. 아 분명히 Lambda Handler도 CloudFormation의 yaml으로 작성하는 방법이 있을 것이다.
찾아도 찾아도 안나왔었는데.. 드디어 방법을 찾아냈다.
https://docs.aws.amazon.com/lambda/latest/dg/services-cloudformation.html
위 링크를 토대로 아래의 코드를 만들었다.
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
FnHelloServiceRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Statement:
- Action: sts:AssumeRole
Effect: Allow
Principal:
Service: lambda.amazonaws.com
Version: "2012-10-17"
ManagedPolicyArns:
- Fn::Join:
- ""
- - "arn:"
- Ref: AWS::Partition
- :iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
FnHello:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
InlineCode: |
exports.handler = async (event) => {
console.log("request:", JSON.stringify(event, undefined, 2));
return {
statusCode: 200,
headers: { "Content-Type": "text/plain" },
body: `Hello, Lambda`
};
};
Role:
Fn::GetAtt:
- FnHelloServiceRole
- Arn
Runtime: nodejs12.x
Description: HelloLambda
MemorySize: 128
Timeout: 8
DependsOn:
- FnHelloServiceRole
위 yaml을 AWS CloudFormation의 콘솔에 가서 업로드 후 배포하면..
놀랍게도 CloudFormation을 통한 람다 배포가 가능해 진다.
'Cloud > AWS' 카테고리의 다른 글
CDK Deploy를 위한 최소한의 Policy (0) | 2020.07.28 |
---|---|
AWS Pinpoint → Kinesis Firehose → Elasticsearch Event stream 활성화 (0) | 2020.07.10 |
Amazon Pinpoint 이벤트 트리거 (0) | 2020.05.31 |
AWS Java SDK v2 코드로 AWS Elasticsearch에 쿼리하기 (0) | 2020.05.31 |
AWS Code Build에서 Code Commit 코드 가져오기 (0) | 2020.03.29 |
node에서 aws-sdk 사용할때 promise 쓰기 (0) | 2020.03.26 |
AWS Step Functions 예제 / 람다에서 람다 호출하기 (0) | 2020.03.24 |
[AWS] EC2 EBS Root Volume으로 마운트 하기 (0) | 2020.03.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- source
- Troubleshooting
- C++
- jni강좌
- algorithm
- kering
- 음악
- db
- linux
- API
- Cloud
- AWS
- gcc
- it
- Quiz
- C
- driver
- NDK
- java
- 안드로이드
- winapi
- Python
- MFC
- 리눅스
- Visual C++
- 드라이버
- database
- android
- jni
- 프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함