기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
빠른 시작: 애플리케이션 게시
이 안내서는 AWS SAM CLI를 사용하여 예제 서버리스 애플리케이션을 다운로드, 빌드, 테스트하고 AWS Serverless Application Repository에 게시하는 단계를 안내합니다. 이 예제 애플리케이션을 기초로 삼아 자체 서버리스 애플리케이션을 개발하고 게시할 수 있습니다.
개요
다음 단계에서는 샘플 서버리스 애플리케이션을 다운로드, 빌드 및 게시하는 방법을 간략하게 설명합니다.
-
초기화.
sam init
을 사용하여 템플릿에서 샘플 애플리케이션을 다운로드합니다. -
로컬에서 테스트.
sam local invoke
및/또는sam local start-api
를 사용하여 로컬에서 애플리케이션을 테스트합니다. 이러한 명령을 사용하면 Lambda 함수가 로컬에서 호출되더라도AWS 클라우드의 리소스에서 읽고AWS 리소스에 쓸 수 있습니다. -
패키지. Lambda 함수에 만족하면 를 사용하여 Lambda 함수,AWS SAM 템플릿 및 모든 종속성을AWS CloudFormation 배포 패키지로
sam package
번들링하십시오. 이 단계에서는 AWS Serverless Application Repository에 업로드할 애플리케이션에 대한 정보도 포함시킵니다. -
게시.
sam publish
를 사용하여 AWS Serverless Application Repository에 애플리케이션을 게시합니다. 이 단계가 끝나면 에서AWS Serverless Application Repository 애플리케이션을 보고 를 사용하여AWS 클라우드에 배포할 수AWS Serverless Application Repository 있습니다.
다음 단원의 Hello World 애플리케이션 예제에서는 서버리스 애플리케이션을 빌드하고 게시하는 이러한 단계를 안내합니다.
Hello World 애플리케이션
이 연습에서는 간단한 API 백엔드를 나타내는 Hello World 서버리스 애플리케이션을 다운로드하고 테스트합니다. 이 구성에는 GET 작업과 Lambda 함수를 사용할 수 있습니다. GET Gateway가 Lambda 함수를 호출합니다. 그런 다음 AWS Lambda가 이 함수를 실행하여 hello world
메시지를 반환합니다.
이 애플리케이션은 다음과 같은 구성 요소로 이루어집니다.
-
Hello World 애플리케이션을 위한 두 가지AWS 리소스, 즉 GET 작업이 포함된 API Gateway 서비스와 Lambda 함수를 정의하는AWS SAM 템플릿입니다. 또한 템플릿은 API Gateway GET 작업과 Lambda 함수 간의 매핑을 정의합니다.
-
Python으로 작성된 애플리케이션 코드
시작하기 전
이 연습에 필요한 설정을 완료했는지 확인합니다.
-
관리자 권한을 가진 사용자로 권한을 가진 사용자로AWS 권한을 가진 사용자로 권한을 가진 사용자로 권한을 가진 사용자로 권한을 가진 사용자로 권한을 가진 사용자로 권한을 가진 AWS계정 설정을 참조하십시오.
-
AWS SAM CLI(명령줄 인터페이스)가 설치되어 있어야 합니다. AWS SAM CLI 설치를 참조하십시오.
-
AWS CLI 버전 1.16.77 이상이 설치되어 있어야 합니다. AWS Command Line Interface 설치를 참조하십시오.
1단계: 애플리케이션 초기화
이 단원에서는 AWS SAM 템플릿과 애플리케이션 코드로 구성된 샘플 애플리케이션을 다운로드합니다.
애플리케이션을 초기화하려면
-
AWS SAM CLI 명령 프롬프트에서 다음 명령을 실행합니다.
sam init --runtime python3.6
-
명령을 통해 생성된 디렉터리(
sam-app/
)의 내용을 검토합니다.-
template.yaml
— Hello World 애플리케이션에 필요한 두 가지AWS 리소스, 즉 GET 작업을 지원하는 Lambda 함수와 API Gateway 엔드포인트를 정의합니다. 또한 템플릿은 두 리소스 간의 매핑을 정의합니다. -
Hello World 애플리케이션 코드와 관련된 내용:
-
hello_world/
디렉토리 — 실행hello world
시 반환되는 애플리케이션 코드를 포함합니다.
-
참고
이 연습에서는 애플리케이션 코드가 Python으로 작성되었으며
init
명령으로 런타임을 지정합니다. AWS Lambda에서는 이 밖의 언어로도 애플리케이션 코드를 작성할 수 있습니다. 지원되는 다른 런타임을 지정할 경우init
명령이 지정된 언어로 작성된 Hello World 코드와 해당 언어에 따라 참조할 수 있는README.md
파일을 제공합니다. 지원되는 런타임에 대한 자세한 내용은 Lambda 실행 환경 및 사용 가능한 라이브러리를 참조하십시오. -
2단계: 로컬로 애플리케이션 테스트
이제 AWS SAM 애플리케이션을 로컬 시스템에 다운로드했으므로 아래 단계에 따라 로컬로 테스트합니다.
로컬로 애플리케이션을 테스트하려면
-
API Gateway 엔드포인트를 로컬로 시작합니다.
template.yaml
파일이 들어 있는 디렉터리에서 다음 명령을 실행해야 합니다.sam-app> sam local start-api --region us-east-1
이 명령은 로컬 테스트를 위해 요청을 보낼 수 있는 API Gateway 엔드포인트를 반환합니다.
-
애플리케이션을 테스트합니다. API Gateway 엔드포인트 URL을 복사하여 브라우저에 붙여넣고 Enter를 선택합니다. API Gateway 엔드포인트 URL의 예는 다음과 같습니다
http://127.0.0.1:3000/hello
.API Gateway 엔드포인트가 매핑되는 Lambda 함수를 로컬로 호출합니다. Lambda 함수는 로컬 Docker 컨테이너에서 실행되고
hello world
반환됩니다. API Gateway는 텍스트가 포함된 브라우저에 응답을 반환합니다.
연습: 메시지 문자열 변경
샘플 애플리케이션을 성공적으로 테스트한 후에는 반환되는 메시지 문자열을 변경하는 간단한 수정 작업을 해볼 수 있습니다.
-
/hello_world/app.py
파일을 편집하여 메시지 문자열을'hello world'
에서'Hello World!'
로 변경합니다. -
브라우저에서 테스트 URL을 다시 로드하여 새 문자열을 확인합니다.
sam local
프로세스를 다시 시작하지 않고도 새 코드가 동적으로 로드되는 것을 볼 수 있습니다.
3단계: 애플리케이션 패키징
애플리케이션을 로컬로 테스트한 후에는 AWS SAM CLI를 사용하여 배포 패키지와 패키징된 AWS SAM 템플릿을 생성합니다.
참고
다음 단계에서는 애플리케이션 코드가 포함된 hello_world/
디렉터리 내용을 .zip 파일로 만듭니다. 이 .zip 파일은 서버리스 애플리케이션의 배포 패키지입니다. 자세한 내용은 AWS Lambda개발자 안내서의 배포 Package 만들기 (Python) 를 참조하십시오.
Lambda 배포 패키지 만들려면
-
AWS SAM 템플릿 파일에 필요한 애플리케이션 정보를 제공하는
Metadata
섹션을 추가합니다. AWS SAM템플릿Metadata
섹션에 대한 자세한 내용은 AWS Serverless Application Model개발자 안내서의AWS SAM 템플릿 메타데이터 섹션 속성을 참조하십시오.다음은 예제
Metadata
섹션입니다.Metadata: AWS::ServerlessRepo::Application: Name:
my-app
Description:hello world
Author:user1
SpdxLicenseId: Apache-2.0 LicenseUrl:LICENSE.txt
ReadmeUrl:README.md
Labels:['tests']
HomePageUrl:https://github.com/user1/my-app-project
SemanticVersion:0.0.1
SourceCodeUrl:https://github.com/user1/my-app-project
LicenseUrl
및ReadmeUrl
속성은 로컬 파일에 대한 참조 (위 예제 참조) 이거나 이미 이러한 아티팩트를 호스팅하는 Amazon S3 버킷에 대한 링크일 수 있습니다. -
패키징된 코드를 저장할 위치에 S3 버킷을 생성합니다. 기존 S3 버킷을 사용하려면 이 단계를 건너뜁니다.
sam-app> aws s3 mb s3://
bucketname
-
다음
package
AWS SAM CLI 명령을 실행하여 Lambda 함수 배포 패키지를 생성합니다.sam-app> sam package \ --template-file template.yaml \ --output-template-file packaged.yaml \ --s3-bucket
bucketname
명령은 다음 작업을 수행합니다.
-
aws-sam/hello_world/
디렉터리의 콘텐츠를 압축하여 Amazon S3에 업로드합니다. -
배포 패키지, README 파일 및 라이선스 파일을
--s3-bucket
옵션에서 지정한 Amazon S3 버킷에 업로드합니다. -
새로운 템플릿 파일
packaged.yaml
을 출력합니다. 이 파일은 다음 단계에서 애플리케이션을 AWS Serverless Application Repository에 게시하는 데 사용됩니다.packaged.yaml
템플릿 파일은 원본 템플릿 파일 (template.yaml
) 과 유사하지만 주요 차이점이 있습니다. 즉CodeUri
LicenseUrl
, 및ReadmeUrl
속성은 Amazon S3 버킷 및 해당 아티팩트가 포함된 객체를 가리킵니다. 예제packaged.yaml
템플릿 파일의 다음 코드 조각은CodeUri
속성을 보여 줍니다.HelloWorldFunction: Type: AWS::Serverless::Function # For more information about function resources, see https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: CodeUri: s3://
bucketname
/fbd77a3647a4f47a352fcObjectGUID
...
-
4단계: 애플리케이션 게시
이제 배포 패키지를 생성했으므로 이 패키지를 사용하여 AWS Serverless Application Repository에 애플리케이션을 게시합니다.
서버리스 애플리케이션을 AWS Serverless Application Repository에 게시하려면
-
다음 명령을 실행하여 0.0.1이라는 최초 버전으로 새 애플리케이션을 AWS Serverless Application Repository에 게시합니다.
sam-app> sam publish \ --template packaged.yaml \ --region us-east-1
참고
애플리케이션은 기본적으로 비공개로 생성됩니다. 애플리케이션을 공유해야 다른AWS 계정에서 애플리케이션을 보고 배포할 수 있습니다. 애플리케이션 공유에 대한 자세한 내용은 아래에 나온 다음 단계를 참조하십시오.
다음 단계
이제 샘플 애플리케이션을 게시했으므로 애플리케이션에 대한 다음과 같은 작업을 수행할 수 있습니다.
-
애플리케이션 보기AWS Serverless Application Repository —
sam publish
명령 출력에는 애플리케이션의 세부 정보 페이지로AWS Serverless Application Repository 바로 연결되는 링크가 포함됩니다. 또는 AWS Serverless Application Repository 시작 페이지로 이동하여 애플리케이션을 검색할 수도 있습니다. -
애플리케이션 공유 — 애플리케이션이 기본적으로 비공개로 설정되어 있기 때문에 다른AWS 계정에는 표시되지 않습니다. 애플리케이션을 다른 사람과 공유하려면 해당 애플리케이션을 공개하거나 특정AWS 계정 목록에 대한 권한을 부여해야 합니다. AWS CLI를 사용한 애플리케이션 공유에 대한 자세한 내용은 AWS Serverless Application Repository애플리케이션 정책 예제 단원을 참조하십시오. 콘솔을 사용한 애플리케이션 공유에 대한 자세한 내용은 애플리케이션 공유 단원을 참조하십시오.
추가 정보
AWS SAMCLI의AWS SAM 템플릿Metadata
섹션sam package
및sam publish
명령에 대한 자세한 내용은 AWS Serverless Application Model개발자 안내서의AWS SAM CLI를 사용한 애플리케이션 게시를 참조하십시오.