자습서: 서버리스 애플리케이션을 AWS Serverless Application Repository에 게시하는 파이프라인 생성
AWS CodePipeline을 사용하여 AWS SAM 서버리스 애플리케이션을 AWS Serverless Application Repository에 계속 전달할 수 있습니다.
중요
파이프라인 생성의 일환으로 CodePipeline은 고객이 제공하는 S3 아티팩트 버킷을 아티팩트에 사용합니다. (이는 S3 소스 작업에 사용되는 버킷과 다릅니다.) S3 아티팩트 버킷이 파이프라인의 계정과 다른 계정에 있는 경우 안전하고 신뢰할 수 있는 AWS 계정에서 S3 아티팩트 버킷을 소유해야 합니다.
이 자습서에서는 GitHub에서 호스트되는 서버리스 애플리케이션을 빌드하고 파이프라인을 생성하여 AWS Serverless Application Repository에 자동 게시하는 방법을 보여줍니다. 파이프라인은 GitHub를 소스 공급자로 사용하고 CodeBuild를 빌드 공급자로 사용합니다. 서버리스 애플리케이션을 AWS Serverless Application Repository에 게시하려면 애플리케이션
중요
이 절차에서 파이프라인에 추가하는 대부분의 작업에는 파이프라인을 생성하기 전에 생성해야 하는 AWS 리소스가 포함됩니다. 소스 작업의 AWS 리소스는 항상 파이프라인을 생성한 AWS 리전과 동일한 리전에 생성해야 합니다. 예를 들어, 미국 동부(오하이오) 리전에서 파이프라인을 생성하는 경우, CodeCommit 리포지토리도 미국 동부(오하이오) 리전에 있어야 합니다.
파이프라인을 생성할 때 교차 리전 작업을 추가할 수 있습니다. 교차 리전 작업을 위한 AWS 리소스는 작업을 실행하려는 AWS 리전과 동일한 리전에 있어야 합니다. 자세한 내용은 CodePipeline에 교차 리전 작업 추가 단원을 참조하십시오.
시작하기 전 준비 사항
이 자습서에서는 다음을 가정합니다.
-
사용자는 AWS Serverless Application Model (AWS SAM) 및 AWS Serverless Application Repository에 익숙합니다.
-
사용자에게는 AWS SAM CLI를 사용하여 AWS Serverless Application Repository에 게시한 GitHub에서 호스트되는 서버리스 애플리케이션이 있습니다. 예제 애플리케이션을 AWS Serverless Application Repository에 게시하려면 AWS Serverless Application Repository 개발자 안내서의 빠른 시작: 애플리케이션 게시를 참조하세요. AWS Serverless Application Repository에 자체 애플리케이션을 게시하려면 AWS Serverless Application Model 개발자 안내서의 AWS SAM CLI를 사용하여 애플리케이션 게시를 참조하세요.
1단계: buildspec.yml 파일 생성
다음 내용으로 buildspec.yml
파일을 생성하고 서버리스 애플리케이션의 GitHub 리포지토리에 추가합니다. template.yml
을 애플리케이션의 AWS SAM 템플릿으로 바꾸고 bucketname
을 패키지 애플리케이션이 저장된 S3 버킷으로 바꿉니다.
version: 0.2 phases: install: runtime-versions: python: 3.8 build: commands: - sam package --template-file
template.yml
--s3-bucketbucketname
--output-template-file packaged-template.yml artifacts: files: - packaged-template.yml
2단계: 파이프라인 생성 및 구성
서버리스 애플리케이션을 게시하려는 AWS 리전에서 파이프라인을 생성하려면 이러한 단계를 수행하세요.
AWS Management Console에 로그인하여 https://console.aws.amazon.com/codepipeline/
에서 CodePipeline 콘솔을 여세요. -
필요한 경우 서버리스 애플리케이션을 게시하려는 AWS 리전으로 전환합니다.
-
[Welcome] 페이지, [Getting started] 페이지 또는 [Pipelines] 페이지에서 Create pipeline(파이프라인 생성)을 선택합니다.
-
1단계: 생성 옵션 선택 페이지의 생성 옵션에서 사용자 지정 파이프라인 빌드 옵션을 선택합니다. Next(다음)를 선택합니다.
-
[파이프라인 생성]을 선택합니다. 2단계: 파이프라인 설정 선택 페이지의 파이프라인 이름에 파이프라인 이름을 입력합니다.
-
파이프라인 유형에서 V2를 선택합니다. 자세한 내용은 파이프라인 유형 단원을 참조하십시오. Next(다음)를 선택합니다.
-
서비스 역할에서 새 서비스 역할을 선택하여CodePipeline이 IAM에 서비스 역할을 생성하도록 허용합니다.
-
[Advanced settings]의 설정은 기본값 그대로 두고, [Next]를 선택합니다.
-
소스 단계 추가 페이지의 소스 공급자에서 GitHub를 선택합니다.
-
연결에서 기존 연결을 선택하거나 새로 생성합니다. GitHub 소스 작업에 대한 연결을 만들거나 관리하려면 GitHub 연결을 참조하세요.
-
리포지토리에서 GitHub 소스 리포지토리를 선택합니다.
-
브랜치에서 GitHub 브랜치를 선택합니다.
-
소스 작업의 나머지 기본값은 그대로 둡니다. Next(다음)를 선택합니다.
-
Add build stage(빌드 스테이지 추가) 페이지에서 빌드 스테이지를 추가합니다.
-
빌드 공급자에서 AWS CodeBuild를 선택합니다. 리전에서 파이프라인 리전을 사용합니다.
-
프로젝트 만들기를 선택합니다.
-
프로젝트 이름에 이 빌드 프로젝트의 이름을 입력합니다.
-
환경 이미지에서 이미지 관리를 선택합니다. [Operating system]에서 [Ubuntu]를 선택합니다.
-
실행 시간 및 실행 시간 버전에서 서버리스 애플리케이션에 필요한 런타임 및 버전을 선택합니다.
-
서비스 역할에서 New service role(새 서비스 역할)을 선택합니다.
-
Build specifications(빌드 사양)에서 Use a buildspec file(빌드 사양 파일 사용)을 선택합니다.
-
Continue to CodePipeline(CodePipeline으로 계속)을 선택합니다. 이렇게 하면 CodePipeline 콘솔이 열리고 구성을 위해 리포지토리에서
buildspec.yml
을 사용하는 CodeBuild 프로젝트를 생성합니다. 빌드 프로젝트가 서비스 역할을 사용하여 AWS 서비스 권한을 관리합니다. 이 단계는 몇 분이 걸릴 수 있습니다. -
Next(다음)를 선택합니다.
-
-
Add deploy stage(배포 단계 추가) 페이지에서 Skip deploy stage(배포 단계 건너뛰기)를 선택한 다음 Skip(건너뛰기)를 다시 선택하여 경고 메시지를 적용합니다. Next(다음)를 선택합니다.
-
[파이프라인 생성]을 선택합니다. 소스 및 빌드 단계를 보여주는 다이어그램을 확인해야 합니다.
-
패키지 애플리케이션이 저장된 S3 버킷에 액세스하려면 CodeBuild 서비스 역할 권한을 부여합니다.
-
새 파이프라인의 빌드 단계에서 CodeBuild를 선택합니다.
-
Build details(빌드 세부 정보) 탭을 선택합니다.
-
환경에서 CodeBuild 서비스 역할을 선택하여 IAM 콘솔을 엽니다.
-
CodeBuildBasePolicy
에 대한 선택을 확장하고 Edit policy(정책 편집)을 선택합니다. -
JSON을 선택합니다.
-
다음 내용으로 새 정책문을 추가합니다. 이 정책문을 사용하여 CodeBuild가 패키징된 애플리케이션이 저장된 S3 버킷에 객체를 넣을 수 있습니다.
bucketname
을 S3 버킷 이름으로 바꿉니다.{ "Effect": "Allow", "Resource": [ "arn:aws:s3:::
bucketname
/*" ], "Action": [ "s3:PutObject" ] } -
정책 검토를 선택합니다.
-
Save changes(변경 사항 저장)를 선택합니다.
-
3단계: 게시 애플리케이션 배포
AWS Serverless Application Repository에 게시를 수행하는 Lambda 함수가 포함된 애플리케이션을 배포하려면 다음 단계를 수행하세요. 이 애플리케이션은 aws-serverless-codepipeline-serverlessrepo-publish입니다.
참고
애플리케이션을 파이프라인과 동일한 AWS 리전에 배포해야 합니다.
-
애플리케이션
페이지로 이동하고 배포를 선택합니다. -
I acknowledge that this app creates custom IAM roles(이 앱에서 사용자 지정 IAM 역할을 생성하는 것을 확인합니다)를 선택합니다.
-
배포를 선택합니다.
-
AWS CloudFormation 스택 보기를 선택하여 AWS CloudFormation 콘솔을 엽니다.
-
리소스 섹션을 확장합니다. AWS::Lambda::Function 유형의 ServerlessRepoPublish가 표시됩니다. 다음 단계에서 이 리소스의 물리적 ID를 적어 둡니다. CodePipeline에서 새 게시 작업을 생성할 때 이 물리적 ID를 사용합니다.
4단계: 게시 작업 생성
다음 단계에 따라 파이프라인에 게시 작업을 생성합니다.
-
https://console.aws.amazon.com/codepipeline/
에서 CodePipeline 콘솔을 엽니다. -
왼쪽 탐색 섹션에서 편집하려는 파이프라인을 선택합니다.
-
편집을 선택합니다.
-
현재 파이프라인의 마지막 스테이지 후 + Add stage(+ 스테이지 추가)를 선택합니다. Stage name(스테이지 이름)에서 이름(예:
Publish
)을 입력하고 Add stage(스테이지 추가)를 선택합니다. -
새 단계에서 + Add action group(작업 그룹 추가)을 선택합니다.
-
작업 이름을 입력합니다. Action provider(작업 공급자)의 호출에서 AWS Lambda을 선택합니다.
-
입력 아티팩트에서 BuildArtifact를 선택합니다.
-
함수 이름에서 이전 단계에서 기록한 Lambda 함수의 물리적 ID를 선택합니다.
-
작업에 대해 저장을 선택합니다.
-
스테이지에 대해 완료를 선택합니다.
-
오른쪽 상단에서 저장을 선택합니다.
-
파이프라인을 확인하려면 GitHub에서 애플리케이션을 변경합니다. 예를 들어 AWS SAM 템플릿 파일의
Metadata
섹션에서 애플리케이션에 대한 설명을 변경합니다. 변경 사항을 커밋하고 GitHub 브랜치로 푸시합니다. 이렇게 하면 파이프라인이 실행됩니다. 파이프라인이 완료되면 애플리케이션이 AWS Serverless Application Repository에서 변경 사항으로 업데이트 되었는지 확인합니다.