자습서: 서버리스 애플리케이션을 에 게시하는 파이프라인 생성 AWS Serverless Application Repository - AWS CodePipeline

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

자습서: 서버리스 애플리케이션을 에 게시하는 파이프라인 생성 AWS Serverless Application Repository

AWS CodePipeline 를 사용하여 AWS SAM 서버리스 애플리케이션을 에 지속적으로 전달할 수 있습니다 AWS Serverless Application Repository.

중요

파이프라인 생성의 일환으로 고객이 제공하는 S3 아티팩트 버킷이 아티팩트 CodePipeline 에 사용됩니다. (이는 S3 소스 작업에 사용되는 버킷과 다릅니다.) S3 아티팩트 버킷이 파이프라인의 계정과 다른 계정에 있는 경우 S3 아티팩트 버킷을 안전하고 신뢰할 수 AWS 계정 있는 에서 소유해야 합니다.

이 자습서에서는 에서 호스팅되는 서버리스 애플리케이션을 빌드하고 에 AWS Serverless Application Repository 자동으로 GitHub 게시하도록 파이프라인을 생성하고 구성하는 방법을 보여줍니다. 파이프라인은 를 소스 공급자 GitHub 로, 를 빌드 공급자 CodeBuild 로 사용합니다. 서버리스 애플리케이션을 에 게시하려면 애플리케이션(에서 AWS Serverless Application Repository)을 AWS Serverless Application Repository배포하고 해당 애플리케이션에서 생성한 Lambda 함수를 파이프라인의 호출 작업 공급자로 연결합니다. 그런 다음 코드를 작성하지 AWS Serverless Application Repository않고도 에 애플리케이션 업데이트를 지속적으로 전달할 수 있습니다.

중요

이 절차에서 파이프라인에 추가하는 많은 작업에는 파이프라인을 생성하기 전에 생성해야 하는 AWS 리소스가 포함됩니다.소스 작업에 대한 AWS 리소스는 항상 파이프라인을 생성하는 동일한 AWS 리전에서 생성해야 합니다. 예를 들어 미국 동부(오하이오) 리전에서 파이프라인을 생성하는 경우 CodeCommit 리포지토리는 미국 동부(오하이오) 리전에 있어야 합니다.

파이프라인을 생성할 때 리전 간 작업을 추가할 수 있습니다. 리전 간 작업에 대한 AWS 리소스는 작업을 실행하려는 동일한 AWS 리전에 있어야 합니다. 자세한 내용은 에 지역 간 액션 추가 CodePipeline 단원을 참조하십시오.

시작하기 전 준비 사항

이 자습서에서는 다음을 가정합니다.

1단계: buildspec.yml 파일 생성

다음 내용이 포함된 buildspec.yml 파일을 생성하고 서버리스 애플리케이션의 GitHub 리포지토리에 추가합니다. Replace 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-bucket bucketname --output-template-file packaged-template.yml artifacts: files: - packaged-template.yml

2단계: 파이프라인 생성 및 구성

다음 단계에 따라 서버리스 애플리케이션을 게시 AWS 리전 하려는 에서 파이프라인을 생성합니다.

  1. 에 로그인 AWS Management Console 하고 에서 CodePipeline 콘솔을 엽니다https://console.aws.amazon.com/codepipeline/.

  2. 필요한 경우 서버리스 애플리케이션을 게시 AWS 리전 할 로 전환합니다.

  3. [파이프라인 생성]을 선택합니다. Choose pipeline settings(파이프라인 설정 선택) 페이지의 파이프라인 이름에 파이프라인 이름을 입력합니다.

  4. 파이프라인 유형 에서 V2를 선택합니다. 자세한 내용은 파이프라인 유형 단원을 참조하십시오. Next(다음)를 선택합니다.

  5. 서비스 역할 에서 새 서비스 역할을 선택하여 가 에서 서비스 역할을 CodePipeline 생성하도록 허용합니다IAM.

  6. [Advanced settings]의 설정은 기본값 그대로 두고, [Next]를 선택합니다.

  7. 소스 단계 추가 페이지의 소스 공급자 에서 를 선택합니다GitHub.

  8. 연결에서 기존 연결을 선택하거나 새로 생성합니다. GitHub 소스 작업에 대한 연결을 생성하거나 관리하려면 섹션을 참조하세요GitHub 연결.

  9. 리포지토리 에서 GitHub 소스 리포지토리를 선택합니다.

  10. 브랜치 에서 GitHub 브랜치를 선택합니다.

  11. 소스 작업의 나머지 기본값은 그대로 둡니다. Next(다음)를 선택합니다.

  12. Add build stage(빌드 스테이지 추가) 페이지에서 빌드 스테이지를 추가합니다.

    1. 빌드 공급자에서 AWS CodeBuild를 선택합니다. 리전에서 파이프라인 리전을 사용합니다.

    2. 프로젝트 만들기를 선택합니다.

    3. 프로젝트 이름에 이 빌드 프로젝트의 이름을 입력합니다.

    4. 환경 이미지에서 이미지 관리를 선택합니다. [Operating system]에서 [Ubuntu]를 선택합니다.

    5. 실행 시간실행 시간 버전에서 서버리스 애플리케이션에 필요한 런타임 및 버전을 선택합니다.

    6. 서비스 역할에서 New service role(새 서비스 역할)을 선택합니다.

    7. Build specifications(빌드 사양)에서 Use a buildspec file(빌드 사양 파일 사용)을 선택합니다.

    8. 로 계속 CodePipeline을 선택합니다. 그러면 CodePipeline 콘솔이 열리고 리포지토리buildspec.yml에서 구성을 위해 를 사용하는 CodeBuild 프로젝트가 생성됩니다. 빌드 프로젝트가 서비스 역할을 사용하여 AWS 서비스 권한을 관리합니다. 이 단계는 몇 분이 걸릴 수 있습니다.

    9. Next(다음)를 선택합니다.

  13. Add deploy stage(배포 단계 추가) 페이지에서 Skip deploy stage(배포 단계 건너뛰기)를 선택한 다음 Skip(건너뛰기)를 다시 선택하여 경고 메시지를 적용합니다. Next(다음)를 선택합니다.

  14. [파이프라인 생성]을 선택합니다. 소스 및 빌드 단계를 보여주는 다이어그램을 확인해야 합니다.

  15. 패키지 애플리케이션이 저장된 S3 버킷에 액세스할 수 있는 CodeBuild 서비스 역할 권한을 부여합니다.

    1. 새 파이프라인의 빌드 단계에서 를 선택합니다CodeBuild.

    2. Build details(빌드 세부 정보) 탭을 선택합니다.

    3. 환경 에서 CodeBuild 서비스 역할을 선택하여 IAM 콘솔을 엽니다.

    4. CodeBuildBasePolicy에 대한 선택을 확장하고 Edit policy(정책 편집)을 선택합니다.

    5. 를 선택합니다JSON.

    6. 다음 내용으로 새 정책문을 추가합니다. 문을 사용하면 가 패키지 애플리케이션이 저장된 S3 버킷에 객체를 CodeBuild 넣을 수 있습니다. Replace bucketname S3 버킷의 이름을 사용합니다.

      { "Effect": "Allow", "Resource": [ "arn:aws:s3:::bucketname/*" ], "Action": [ "s3:PutObject" ] }
    7. 정책 검토를 선택합니다.

    8. Save changes(변경 사항 저장)를 선택합니다.

3단계: 게시 애플리케이션 배포

AWS Serverless Application Repository에 게시를 수행하는 Lambda 함수가 포함된 애플리케이션을 배포하려면 다음 단계를 수행하세요. 이 애플리케이션은 aws-serverless-codepipeline-serverlessrepo를 게시합니다.

참고

AWS 리전 파이프라인과 동일한 에 애플리케이션을 배포해야 합니다.

  1. 애플리케이션 페이지로 이동하고 배포를 선택합니다.

  2. 이 앱이 사용자 지정 IAM 역할 을 생성한다는 것을 인정함을 선택합니다.

  3. 배포(Deploy)를 선택합니다.

  4. AWS CloudFormation 스택 보기를 선택하여 AWS CloudFormation 콘솔을 엽니다.

  5. 리소스 섹션을 확장합니다. 유형 AWS::Lambda::FunctionServerlessRepoPublish가 표시됩니다. 다음 단계에서 이 리소스의 물리적 ID를 적어 둡니다. 에서 새 게시 작업을 생성할 때 이 물리적 ID를 사용합니다 CodePipeline.

4단계: 게시 작업 생성

다음 단계에 따라 파이프라인에 게시 작업을 생성합니다.

  1. 에서 CodePipeline 콘솔을 엽니다https://console.aws.amazon.com/codepipeline/.

  2. 왼쪽 탐색 섹션에서 편집하려는 파이프라인을 선택합니다.

  3. 편집을 선택합니다.

  4. 현재 파이프라인의 마지막 스테이지 후 + Add stage(+ 스테이지 추가)를 선택합니다. Stage name(스테이지 이름)에서 이름(예: Publish)을 입력하고 Add stage(스테이지 추가)를 선택합니다.

  5. 새 단계에서 + Add action group(작업 그룹 추가)을 선택합니다.

  6. 작업 이름을 입력합니다. Action provider(작업 공급자)호출에서 AWS Lambda을 선택합니다.

  7. 입력 아티팩트 에서 를 선택합니다BuildArtifact.

  8. 함수 이름에서 이전 단계에서 기록한 Lambda 함수의 물리적 ID를 선택합니다.

  9. 작업에 대해 저장을 선택합니다.

  10. 스테이지에 대해 완료를 선택합니다.

  11. 오른쪽 상단에서 저장을 선택합니다.

  12. 파이프라인을 확인하려면 에서 애플리케이션을 변경합니다 GitHub. 예를 들어 AWS SAM 템플릿 파일의 Metadata 섹션에서 애플리케이션 설명을 변경합니다. 변경 사항을 커밋하고 GitHub 브랜치로 푸시합니다. 이렇게 하면 파이프라인이 실행됩니다. 파이프라인이 완료되면 애플리케이션이 AWS Serverless Application Repository에서 변경 사항으로 업데이트 되었는지 확인합니다.