728x90
AWS Serverless Application Model (SAM)은 서버리스 구조로 Lambda 함수, 이벤트 소스 및 기타 리소스의 조합이다. 서버리스 애플리케이션은 단순한 Lambda 함수 그 이상입니다. API, 데이터베이스, 이벤트 매핑 등 추가 리소스를 포함할 수 있습니다. 생성을 하게되면 CloudFormation Stack에 추가됩니다.
SAM 사용시 이점
- 단일 배포 구성.AWS SAM를 사용하면 관련 구성 요소 및 리소스를 쉽게 구성하고 단일 스택에서 작동할 수 있습니다. 다음을 수행할 수 있습니다.AWS SAM리소스 간에 구성 (예: 메모리 및 시간 초과) 을 공유하고 모든 관련 리소스를 버전이 지정된 단일 엔터티로 함께 배포합니다.
- 확장AWS CloudFormation. AWS CloudFormation다음과 같은 신뢰할 수 있는 배포 기능을 얻을 수 있습니다.AWS CloudFormation. 다음을 사용하여 리소스를 정의할 수 있습니다.AWS CloudFormation당신의AWS SAM템플릿. 또한 에서 사용할 수 있는 전체 리소스, 내장 함수 및 기타 템플릿 기능을 사용할 수 있습니다.AWS CloudFormation.
- 기본 제공 모범 사례. 다음을 수행할 수 있습니다.AWS SAM인프라를 구성으로 정의 및 배포할 수 있습니다. 이를 통해 코드 검토와 같은 모범 사례를 사용하고 적용할 수 있습니다. 또한 몇 줄의 구성을 통해 CodeDeploy를 통해 안전한 배포를 활성화하고 다음을 사용하여 추적을 활성화할 수 있습니다.AWS X-Ray.
- 로컬 디버깅 및 테스트. 이AWS SAMCLI를 사용하면 다음에 정의된 서버리스 애플리케이션을 로컬에서 빌드, 테스트 및 디버깅할 수 있습니다.AWS SAM템플릿. CLI는 Lambda와 유사한 실행 환경을 로컬로 제공합니다. 실제 Lambda 실행 환경과 패리티를 제공함으로써 문제를 미리 파악할 수 있습니다. 코드를 단계별로 진행하고 디버깅하여 코드가 수행하는 작업을 이해하려면 다음을 사용할 수 있습니다.AWS SAM와AWS다음과 같은 툴킷AWS Toolkit for JetBrains,AWSToolkit for PyCharm,AWSToolkit for IntelliJ, 및AWSToolkit for Visual Studio. 이렇게 하면 클라우드에서 발생할 수 있는 문제를 찾아 해결할 수 있으므로 피드백 루프가 좁아집니다.
- 개발 툴과의 심층적인 통합. 다음을 수행할 수 있습니다.AWS SAM스위트와 함께AWS서버리스 애플리케이션을 빌드하기 위한 도구 에서 새 응용 프로그램을 찾을 수 있습니다.AWS Serverless Application Repository. 제작, 테스트 및 디버깅용AWS SAM—기반 서버리스 애플리케이션, 당신은AWS Cloud9IDE. 서버리스 애플리케이션을 위한 배포 파이프라인을 구축하려면 다음을 사용할 수 있습니다.CodeBuild,CodeDeploy, 및CodePipeline. 를 사용할 수도 있습니다.AWS CodeStar프로젝트 구조, 코드 리포지토리 및 자동으로 구성되는 CI/CD 파이프라인을 시작합니다. 서버리스 애플리케이션을 배포하려면 다음을 사용할 수 있습니다.Jenkins 플러그인.
적용방법
API서비스를 생성하는 기본 예제로 수행해보겠다.
1.AWS SAM응용 프로그램 샘플 다운로드
※ 어플리케이션을 개발할때는 기본 파일구조를 받고 추가로 서비스를 업그레이드 진행한다.
$ sam init
해당 샘플 앱의 파일구조
sam-app/
├── README.md
├── events/
│ └── event.json
├── hello_world/
│ ├── __init__.py
│ ├── app.py #Contains your AWS Lambda handler logic.
│ └── requirements.txt #Contains any Python dependencies the application requires, used for sam build
├── template.yaml #Contains the AWS SAM template defining your application's AWS resources.
└── tests/
└── unit/
├── __init__.py
└── test_handler.py
2. 애플리케이션 빌드
$ cd sam-app
$ sam build
3. 애플리케이션에 배포AWS배포하기
$ sam deploy --guided
SAM과 CodeDeploy
SAM을 통해서 Serverless Deploy를 수행하면 안정적인 배포를 보장하기 위해서 Code Deploy에 BuiltIn되어 생성된다.
예시
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
CodeUri: hello_world/
Handler: app.lambda_handler
Runtime: python3.7
Events:
HelloWorld:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /hello
Method: get
AutoPublishAlias: live
DeploymentPreference:
Type: Canary10Percent10Minutes
위 YAML의 DeploymentPreference 섹션을 참조하여 아래의 CodeDeploy Job을 생성한다.
'IaaS > 퍼블릭클라우드' 카테고리의 다른 글
(AWS) API Gateway란? (0) | 2022.02.18 |
---|---|
(AWS) Step Function 이란? (0) | 2022.02.18 |
(AWS) Lambda Alias란? (0) | 2022.02.15 |
(AWS) Lambda 에 대해서 (0) | 2022.02.07 |
(AWS) Elastic Beanstalk의 CI/CD에 대해서 (0) | 2022.02.07 |