AWS 리소스를 정의하고 배포하는 서비스 중에 비슷하면서 헷갈리는게 있다.
그건 바로 다음과 같은 리소스
- CloudFormation
- CDK (Cloud Development Kit)
- SAM (Serverless Application Model)
AWS CloudFormation
AWS 리소스를 코드(YAML 또는 JSON 형식 템플릿)로 정의하고 배포하는 인프라 코드(IaC) 서비스이다.
자세한 내용: https://jibinary.tistory.com/442
[AWS] CloudFormation이란? 쉽게 정리 (IaC, Template, Stack, StackSets, Service Role, Service Catalog)
◇ 공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 ◇ Infrastructure as Code, IaCCloudFormationCloudFormation은 AWS에서 인프라를 코드로 관리(IaC)할 수 있게 해주는 서비스이다.이
jibinary.tistory.com
AWS SAM (Serverless Application Model)
서버리스(Serverless) 애플리케이션 개발에 특화된 서비스 (CloudFormation과 100% 호환된다)
CloudFormation을 확장하여 서버리스 리소스(예: Lambda, API Gateway, S3 등의)를 간소화한 템플릿으로 정의한다.
자세한 내용: https://jibinary.tistory.com/480
[AWS] SAM (Serverless Application Model)이란? 쉽게 정리 (SAM CLI, Template)
◇ 공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 ◇ SAM (Serverless Application Model)SAM은 Serverless 애플리케이션을 배포하는 데 사용하는 오픈 소스 프레임워크이다.SAM은
jibinary.tistory.com
AWS CDK (Cloud Development Kit)
프로그래밍 언어(예: TypeScript, Python, Java, C#, Go 등)를 사용해 인프라를 정의한다. CloudFormation을 생성하는 고급 레벨의 추상화 도구.
자세한 내용: https://jibinary.tistory.com/494
[AWS] Cloud Development Kit (CDK) 이란? 쉽게 핵심 정리
◇ 공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 ◇ Define your cloud application resources using familiar programming languagesAWS Cloud Development Kit (CDK)Cloud Development Kit(CDK)는
jibinary.tistory.com
언제 어떤 도구를 선택해야 할까?
서버리스 애플리케이션 개발 | SAM | Lambda, API Gateway 등에 최적화된 간단한 템플릿. 로컬 테스트 지원. |
모든 AWS 리소스를 선언적으로 관리해야 하는 경우 | CloudFormation | 선언적 템플릿으로 안정적이고 표준화된 방식으로 모든 AWS 리소스를 지원. |
프로그래밍 로직과 동적 리소스 정의가 필요한 경우 | CDK | 프로그래밍 언어를 사용해 동적으로 복잡한 인프라를 생성 및 관리. |
기존 애플리케이션과 인프라를 하나의 언어로 통합 | CDK | 애플리케이션 로직과 인프라 코드를 동일한 언어로 정의 가능. |
단순히 리소스 템플릿을 생성하고 배포하려는 경우 | CloudFormation | YAML/JSON 기반의 선언적 템플릿으로 빠르고 직관적인 설정 가능. |
서버리스 애플리케이션을 개발하면서 CI/CD를 통합 | SAM | 서버리스 리소스에 최적화된 배포 및 테스트 도구 제공. |
결론
SAM(Serverless Application Model): 서버리스 애플리케이션 개발 및 로컬 테스트에 적합.
CloudFormation: 모든 AWS 리소스의 선언적 관리 및 배포에 적합.
CDK(Cloud Development Kit): 동적인 프로그래밍 언어를 활용한 리소스 정의와 코드 재사용이 필요한 경우 적합.
🤔 문제
AWS Cloud Development Kit(AWS CDK)를 사용해 서버리스 애플리케이션을 구현 중인 한 개발자가 있습니다. 이 개발자는 AWS Lambda 함수와 Amazon API Gateway API를 여러 개 프로비저닝하며, AWS CloudFormation 스택 생성 과정에서 이를 설정할 예정입니다.
개발자의 워크스테이션에는 AWS Serverless Application Model(AWS SAM)과 AWS CDK가 로컬에 설치되어 있습니다.
개발자가 특정 Lambda 함수를 로컬에서 테스트하려면 어떻게 해야 하나요?
- sam package와 sam deploy 명령을 실행합니다. AWS Management Console에서 Lambda 테스트 이벤트를 생성한 뒤, Lambda 함수를 테스트합니다.
- cdk synth와 cdk deploy 명령을 실행합니다. AWS Management Console에서 Lambda 테스트 이벤트를 생성한 뒤, Lambda 함수를 테스트합니다.
- cdk synth와 sam local invoke 명령을 실행하며, 함수 구성 식별자와 생성된 CloudFormation 템플릿 경로를 사용합니다.
- cdk synth와 sam local start-lambda 명령을 실행하며, 함수 구성 식별자와 생성된 CloudFormation 템플릿 경로를 사용합니다.
정답
정답. 3번
cdk synth
AWS CDK 애플리케이션에서 작성한 코드를 CloudFormation 템플릿(YAML 형식)으로 변환한다.
cdk deploy
cdk synth
로 생성된 CloudFormation 템플릿을 AWS에 직접 배포한다.
sam package
로컬에서 작성된 AWS SAM 템플릿을 AWS에 배포할 수 있도록 패키징한다.
sam deploy
sam package
명령으로 생성된 패키지 템플릿을 사용해 리소스를 AWS에 배포한다.
sam local invoke
로컬에서 특정 Lambda 함수를 테스트한다.
예시: sam local invoke MyFunction --event event.json
1번, 2번. (오답) 로컬이 아니기 때문에 오답
'클라우드(AWS) > DVA-C02' 카테고리의 다른 글
[AWS] ALB의 Multi Value Headers란? (feat. Lambda) (0) | 2024.11.27 |
---|---|
[AWS] Cognito Identity Pool로 Guest/Unauthenticated Users(게스트, 비인증 사용자) 접근 권한 부여하기 (0) | 2024.11.27 |
[AWS] Lambda와 API Gateway로 새로운 개발 환경에서 테스트하는 법 (Alias와 Stage 기능 활용) (0) | 2024.11.21 |
[AWS] X-Forwarded-For (XFF) Headers란?? 진짜 아주 쉽게 정리 (0) | 2024.11.18 |
[AWS] KMS GenerateDataKey API와 KMS Encrypt API란? 쉽게 정리 (0) | 2024.11.17 |