자습서: Amazon S3를 배포 공급자로 사용하는 파이프라인 생성 - AWS CodePipeline

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

자습서: Amazon S3를 배포 공급자로 사용하는 파이프라인 생성

이 자습서에서는 배포 단계에서 배포 작업 공급자로 Amazon S3를 사용하여 파일을 지속적으로 제공하는 파이프라인을 구성합니다. 완성된 파이프 라인은 소스 리포지토리의 소스 파일을 변경할 때 변경 사항을 감지합니다. 그런 다음 파이프라인은 Amazon S3를 사용하여 파일을 버킷에 배포합니다. 소스 위치에서 웹 사이트 파일을 수정 또는 추가할 때마다 배포 작업에서 최신 파일을 사용하여 웹 사이트가 작성됩니다.

참고

소스 리포지토리에서 파일을 삭제하더라도 S3 배포 작업은 삭제된 파일에 해당하는 S3 객체를 삭제하지 않습니다.

이 자습서에서는 두 가지 옵션을 제공합니다.

  • 정적 웹 사이트를 S3 퍼블릭 버킷에 배포하는 파이프라인을 생성합니다. 이 예제는 AWS CodeCommit 소스 작업과 Amazon S3 배포 작업이 포함된 파이프라인을 생성합니다. 옵션 1: Amazon S3에 정적 웹 사이트 배포를 참조하세요.

  • 샘플 TypeScript 코드를 JavaScript 컴파일하고 CodeBuild 출력 아티팩트를 S3 버킷에 배포하여 보관하는 파이프라인을 생성하십시오. 이 예제에서는 Amazon S3 소스 작업, CodeBuild 빌드 작업, Amazon S3 배포 작업이 포함된 파이프라인을 생성합니다. 옵션 2: S3 소스 버킷에서 Amazon S3에 빌드된 아카이브 파일 배포를 참조하세요.

중요

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

파이프라인을 생성할 때 지역 간 작업을 추가할 수 있습니다. AWS 지역 간 작업을 위한 리소스는 작업을 실행하려는 AWS 지역과 동일한 지역에 있어야 합니다. 자세한 정보는 에 지역 간 액션 추가 CodePipeline을 참조하세요.

옵션 1: Amazon S3에 정적 웹 사이트 배포

이 예시에서는 샘플 정적 웹사이트 템플릿 파일을 다운로드하고, 파일을 AWS CodeCommit 저장소에 업로드하고, 버킷을 만들고, 호스팅용으로 구성합니다. 다음으로 AWS CodePipeline 콘솔을 사용하여 파이프라인을 생성하고 Amazon S3 배포 구성을 지정합니다.

필수 조건

다음 항목이 있어야 합니다.

  • CodeCommit 리포지토리. 에서 만든 AWS CodeCommit 리포지토리를 사용할 수 자습서: 간단한 파이프라인 (CodeCommit리포지토리) 만들기 있습니다.

  • 정적 웹 사이트의 소스 파일. 이 링크를 사용하여 샘플 정적 웹 사이트를 다운로드합니다. sample-website.zip 다운로드는 다음 파일을 생성합니다.

    • index.html 파일

    • main.css 파일

    • graphic.jpg 파일

  • 웹 사이트 호스팅용으로 구성된 S3 버킷. Amazon S3에서 정적 웹 사이트 호스팅을 참조하십시오. 버킷을 파이프라인과 같은 리전에 생성해야 합니다.

    참고

    웹 사이트를 호스팅하려면 버킷에 퍼블릭 읽기 액세스 권한이 있어야 합니다. 이를 통해 모든 사람에게 읽기 권한이 부여됩니다. 웹 사이트 호스팅을 제외하고 S3 버킷에 대한 퍼블릭 액세스를 차단하는 기본 액세스 설정을 유지해야 합니다.

1단계: 소스 파일을 CodeCommit 리포지토리로 푸시

이 단원에서는 파이프라인이 소스 단계에 대해 사용하는 리포지토리에 소스 파일을 푸시합니다.

파일을 CodeCommit 리포지토리로 푸시하려면
  1. 다운로드한 샘플 파일을 추출합니다. ZIP 파일을 리포지토리에 업로드하지 마십시오.

  2. 파일을 CodeCommit 저장소에 푸시하거나 업로드합니다. 이러한 파일은 파이프라인 생성 마법사가 배포 작업을 위해 만든 소스 아티팩트입니다. CodePipeline 파일은 로컬 디렉터리에 다음과 같이 나타납니다.

    index.html main.css graphic.jpg
  3. Git 또는 CodeCommit 콘솔을 사용하여 파일을 업로드할 수 있습니다.

    1. 로컬 컴퓨터의 복제된 리포지토리에서 Git 명령줄을 사용하려면 다음과 같이 합니다.

      1. 다음 명령을 실행하여 모든 파일을 한 번에 스테이징합니다.

        git add -A
      2. 다음 명령을 실행하여 커밋 메시지와 함께 파일을 커밋합니다.

        git commit -m "Added static website files"
      3. 다음 명령어를 실행하여 로컬 리포지토리의 파일을 리포지토리로 푸시하세요. CodeCommit

        git push
    2. CodeCommit 콘솔을 사용하여 파일을 업로드하려면:

      1. CodeCommit 콘솔을 열고 리포지토리 목록에서 리포지토리를 선택합니다.

      2. 파일 추가를 선택한 후 파일 업로드를 선택합니다.

      3. 파일 선택을 선택한 다음 파일을 찾습니다. 사용자 이름과 이메일 주소를 입력하여 변경 사항을 커밋합니다. 변경 사항 커밋을 선택합니다.

      4. 업로드하려는 각 파일에 대해 이 단계를 반복합니다.

2단계: 파이프라인 생성

이 단원에서는 다음 작업을 통해 파이프라인을 생성합니다.

  • 소스 아티팩트가 웹 사이트용 파일인 CodeCommit 액션이 포함된 소스 스테이지입니다.

  • Amazon S3 배포 작업이 적용된 배포 단계.

마법사를 사용하여 파이프라인을 생성하려면
  1. AWS Management Console 로그인하고 http://console.aws.amazon.com/codesuite/codepipeline/home 에서 CodePipeline 콘솔을 엽니다.

  2. Welcome(시작) 페이지, 시작하기 페이지 또는 Pipelines(파이프라인) 페이지에서 파이프라인 생성을 선택합니다.

  3. 1단계: 파이프라인 설정 선택파이프라인 이름MyS3DeployPipeline을 입력합니다.

  4. 파이프라인 유형에서 이 자습서의 목적에 맞는 V1을 선택합니다. V2를 선택할 수도 있지만 파이프라인 유형별 특성과 가격이 다르다는 점에 유의하십시오. 자세한 정보는 파이프라인 유형을 참조하세요.

  5. 서비스 역할에서 새 서비스 역할을 선택하면 IAM에서 서비스 역할을 생성할 수 CodePipeline 있습니다.

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

  7. 2단계: 소스 단계 추가소스 공급자에서 AWS CodeCommit를 선택합니다. 리포지토리 이름에서 1단계: CodeCommit 리포지토리 만들기 생성한 CodeCommit 리포지토리의 이름을 선택합니다. [Branch name]에서 가장 마지막 코드 업데이트가 포함된 브랜치의 이름을 선택합니다. 사용자가 자체적으로 다른 브랜치를 생성하지 않았다면 main만 선택할 수 있습니다.

    리포지토리 이름과 브랜치를 선택하면 이 파이프라인에 대해 생성할 Amazon CloudWatch Events 규칙이 표시됩니다.

    다음을 선택합니다.

  8. Step 3: Add build stage(3단계: 빌드 단계 추가)에서 Skip build stage(빌드 단계 건너뛰기)를 선택하고 Skip(건너뛰기)을 다시 선택하여 경고 메시지를 수락합니다.

    다음을 선택합니다.

  9. 4단계: 배포 단계 추가에서 다음과 같이 합니다.

    1. Deploy provider(배포 공급자)에서 Amazon S3를 선택합니다.

    2. 버킷에 퍼블릭 버킷 이름을 입력합니다.

    3. Extract file before deploy(배포 전 파일 추출)를 선택합니다.

      참고

      Extract file before deploy(배포 전 파일 추출)를 선택하지 않으면 배포가 실패합니다. 이는 파이프라인의 AWS CodeCommit 작업이 소스 아티팩트를 압축하고 파일이 ZIP 파일이기 때문입니다.

      Extract file before deploy(배포 전 파일 추출)를 선택하면 Deployment path(배포 경로)가 표시됩니다. 사용할 경로의 이름을 입력합니다. 그러면 파일이 추출되는 Amazon S3에 폴더 구조가 생성됩니다. 이 자습서에서는 이 필드를 비워 둡니다.

      4단계: 소스가 포함된 S3 배포 작업을 위한 배포 페이지 AWS CodeCommit
    4. (선택 사항) 표준 ACL에서 표준 ACL이라고 하는 미리 정의된 일련의 권한 부여를 업로드된 아티팩트에 적용할 수 있습니다.

    5. (선택 사항) 캐시 제어에 캐싱 파라미터를 입력합니다. 요청/응답에 대한 캐싱 동작을 제어하도록 이를 설정할 수 있습니다. 유효한 값의 경우 HTTP 작업에 대한 Cache-Control 헤더 필드를 확인합니다.

    6. 다음을 선택합니다.

  10. 5단계: 검토에서 정보를 검토한 다음, 파이프라인 생성을 선택합니다.

  11. 파이프라인이 성공적으로 실행된 후 Amazon S3 콘솔을 열고 파일이 다음과 같이 퍼블릭 버킷에 나타나는지 확인합니다.

    index.html main.css graphic.jpg
  12. 엔드포인트에 액세스하여 웹 사이트를 테스트합니다. 엔드포인트의 형식은 다음과 같습니다. http://bucket-name.s3-website-region.amazonaws.com/

    엔드포인트 예제: http://my-bucket.s3-website-us-west-2.amazonaws.com/.

    샘플 웹페이지가 표시됩니다.

3단계: 모든 소스 파일을 변경하고 배포 확인

소스 파일을 변경한 후 변경 사항을 리포지토리에 푸시합니다. 이렇게 하면 파이프라인이 실행됩니다. 웹 사이트가 업데이트되었는지 확인합니다.

옵션 2: S3 소스 버킷에서 Amazon S3에 빌드된 아카이브 파일 배포

이 옵션에서 빌드 스테이지의 빌드 명령은 TypeScript JavaScript 코드를 코드로 컴파일하고 출력을 별도의 타임스탬프가 지정된 폴더 아래 S3 대상 버킷에 배포합니다. 먼저 TypeScript 코드와 buildspec.yml 파일을 생성합니다. 소스 파일을 ZIP 파일로 결합한 후 소스 ZIP 파일을 S3 소스 버킷에 업로드하고 CodeBuild 스테이지를 사용하여 빌드된 애플리케이션 ZIP 파일을 S3 대상 버킷에 배포합니다. 컴파일된 코드는 대상 버킷에 아카이브로 보관됩니다.

필수 조건

다음 항목이 있어야 합니다.

  • S3 소스 버킷. 자습서: 간단한 파이프라인 생성(S3 버킷)에서 생성한 버킷을 사용할 수 있습니다.

  • S3 대상 버킷. Amazon S3에서 정적 웹 사이트 호스팅을 참조하십시오. 생성하려는 AWS 리전 파이프라인과 동일한 위치에 버킷을 생성해야 합니다.

    참고

    이 예제는 파일을 프라이빗 버킷에 배포하는 방법을 보여 줍니다. 웹 사이트 호스팅용 대상 버킷을 활성화하거나 버킷을 공개하는 정책을 연결하지 마십시오.

1단계: 소스 파일을 생성하고 S3 소스 버킷에 업로드

이 단원에서는 파이프라인이 소스 단계에 대해 사용하는 버킷에 소스 파일을 생성하고 업로드합니다. 이 단원에서는 다음 소스 파일을 생성하는 방법에 대해 설명합니다.

  • CodeBuild 빌드 프로젝트에 사용되는 buildspec.yml 파일입니다.

  • index.ts 파일.

buildspec.yml 파일을 만들려면
  • 다음 콘텐츠를 가진 buildspec.yml이라는 파일을 생성합니다: 이러한 빌드 명령은 TypeScript 컴파일러를 TypeScript 설치하고 사용하여 코드를 index.ts 코드에 JavaScript 다시 작성합니다.

    version: 0.2 phases: install: commands: - npm install -g typescript build: commands: - tsc index.ts artifacts: files: - index.js
index.ts 파일을 만들려면
  • 다음 콘텐츠를 가진 index.ts이라는 파일을 생성합니다:

    interface Greeting { message: string; } class HelloGreeting implements Greeting { message = "Hello!"; } function greet(greeting: Greeting) { console.log(greeting.message); } let greeting = new HelloGreeting(); greet(greeting);
S3 소스 버킷에 파일을 업로드하려면
  1. 파일은 로컬 디렉터리에 다음과 같이 나타납니다.

    buildspec.yml index.ts

    파일을 압축하고 해당 파일의 이름을 source.zip으로 지정합니다.

  2. Amazon S3 콘솔에서 소스 버킷에 대해 업로드를 선택합니다. 파일 추가를 선택한 다음 생성한 ZIP 파일을 찾습니다.

  3. 업로드를 선택합니다. 이러한 파일은 파이프라인 생성 마법사가 배포 작업에 사용할 수 있도록 만든 소스 아티팩트입니다. CodePipeline 파일은 버킷에 다음과 같이 나타납니다.

    source.zip

2단계: 파이프라인 생성

이 단원에서는 다음 작업을 통해 파이프라인을 생성합니다.

  • 소스 아티팩트가 다운로드 가능한 애플리케이션용 파일인 Amazon S3 작업이 있는 소스 단계.

  • Amazon S3 배포 작업이 적용된 배포 단계.

마법사를 사용하여 파이프라인을 생성하려면
  1. 에 AWS Management Console 로그인하고 http://console.aws.amazon.com/codesuite/codepipeline/home 에서 CodePipeline 콘솔을 엽니다.

  2. Welcome(시작) 페이지, 시작하기 페이지 또는 Pipelines(파이프라인) 페이지에서 파이프라인 생성을 선택합니다.

  3. 1단계: 파이프라인 설정 선택파이프라인 이름MyS3DeployPipeline을 입력합니다.

  4. 서비스 역할에서 새 서비스 역할을 선택하면 IAM에서 서비스 역할을 생성할 수 CodePipeline 있습니다.

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

  6. 2단계: 소스 단계 추가소스 공급자에서 Amazon S3를 선택합니다. Bucket(버킷)에서 소스 버킷의 이름을 선택합니다. S3 object key(S3 객체 키)에 소스 ZIP 파일의 이름을 입력합니다. .zip 파일 확장명을 포함해야 합니다.

    다음을 선택합니다.

  7. 3단계: 빌드 단계 추가:

    1. 빌드 공급자에서 CodeBuild를 선택합니다.

    2. 빌드 프로젝트 생성을 선택합니다. Create project(프로젝트 생성) 페이지:

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

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

    5. 실행 시간에서 표준을 선택합니다. 실행 시간 버전에서 aws/codebuild/standard:1.0을 선택합니다.

    6. Image version(이미지 버전)에서 Always use the latest image for this runtime version(이 실행 시간 버전에 항상 최신 이미지 사용)을 선택합니다.

    7. 서비스 역할에서 CodeBuild 서비스 역할을 선택하거나 새로 만드십시오.

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

    9. [계속] 을 선택합니다 CodePipeline. 프로젝트가 성공적으로 생성되면 메시지가 표시됩니다.

    10. 다음을 선택합니다.

  8. 4단계: 배포 단계 추가에서 다음과 같이 합니다.

    1. Deploy provider(배포 공급자)에서 Amazon S3를 선택합니다.

    2. Bucket(버킷)에 S3 대상 버킷 이름을 입력합니다.

    3. Extract file before deploy(배포 전 파일 추출)를 선택 해제해야 합니다.

      Extract file before deploy(배포 전 파일 추출)를 선택 해제하면 S3 object key(S3 객체 키)가 표시됩니다. 사용할 경로의 이름 js-application/{datetime}.zip을 입력합니다.

      그러면 파일이 추출되는 Amazon S3에 js-application 폴더가 생성됩니다. 이 폴더에서 파이프라인이 실행될 때 {datetime} 변수는 각 출력 파일에 타임스탬프를 생성합니다.

      Amazon S3 소스가 포함된 Amazon S3 배포 작업의 4단계: 배포 페이지
    4. (선택 사항) 표준 ACL에서 표준 ACL이라고 하는 미리 정의된 일련의 권한 부여를 업로드된 아티팩트에 적용할 수 있습니다.

    5. (선택 사항) 캐시 제어에 캐싱 파라미터를 입력합니다. 요청/응답에 대한 캐싱 동작을 제어하도록 이를 설정할 수 있습니다. 유효한 값의 경우 HTTP 작업에 대한 Cache-Control 헤더 필드를 확인합니다.

    6. 다음을 선택합니다.

  9. 5단계: 검토에서 정보를 검토한 다음, 파이프라인 생성을 선택합니다.

  10. 파이프라인이 성공적으로 실행되면 Amazon S3 콘솔에서 버킷을 봅니다. 배포된 ZIP 파일이 js-application 폴더 아래의 대상 버킷에 표시되는지 확인합니다. ZIP JavaScript 파일에 포함된 파일은 다음과 같아야 index.js 합니다. index.js 파일에는 다음 출력이 포함되어 있습니다.

    var HelloGreeting = /** @class */ (function () { function HelloGreeting() { this.message = "Hello!"; } return HelloGreeting; }()); function greet(greeting) { console.log(greeting.message); } var greeting = new HelloGreeting(); greet(greeting);

3단계: 모든 소스 파일을 변경하고 배포 확인

소스 파일을 변경한 후 소스 버킷에 업로드합니다. 이렇게 하면 파이프라인이 실행됩니다. 대상 버킷을 보고 다음과 같이 배포된 출력 파일을 js-application 폴더에서 사용할 수 있는지 확인합니다.

샘플 ZIP 다운로드