CodeDeploy를 위한 Amazon EC2 인스턴스 생성(AWS CloudFormation 템플릿) - AWS CodeDeploy

CodeDeploy를 위한 Amazon EC2 인스턴스 생성(AWS CloudFormation 템플릿)

AWS CloudFormation 템플릿을 사용하여 Amazon Linux 또는 Windows Server를 실행하는 Amazon EC2 인스턴스를 빠르게 시작할 수 있습니다. AWS CLI, CodeDeploy 콘솔 또는 AWS API를 사용하여 템플릿으로 인스턴스를 시작할 수 있습니다. 템플릿은 인스턴스를 시작하는 것 외에도 다음을 수행합니다.

  • CodeDeploy 배포에 참여할 수 있는 권한을 인스턴스에 부여하도록 AWS CloudFormation에 지시합니다.

  • 배포 중에 CodeDeploy가 인스턴스를 찾을 수 있도록 인스턴스에 태그를 지정합니다.

  • 인스턴스에 CodeDeploy 에이전트를 설치하고 실행합니다.

Amazon EC2 인스턴스를 설정하는 데 AWS CloudFormation을 반드시 사용해야 하는 것은 아닙니다. CodeDeploy용 인스턴스 작업에서 다른 방법을 확인해 보세요.

Ubuntu Server 또는 Red Hat Enterprise Linux(RHEL)를 실행하는 Amazon EC2 인스턴스에 대해서는 AWS CloudFormation 템플릿을 제공하지 않습니다.

시작하기 전에

AWS CloudFormation 템플릿을 사용하여 Amazon EC2 인스턴스를 시작하려면 다음 단계를 완료해야 합니다.

  1. 3단계: IAM 사용자 프로비저닝의 단계를 완료했는지 확인합니다. IAM 사용자에게 배정된 정책에 다음과 같은 최소 권한이 포함되어 있는지 다시 확인하고 누락된 권한을 추가합니다.

    • cloudformation:*

    • codedeploy:*

    • ec2:*

    • iam:AddRoleToInstanceProfile

    • iam:CreateInstanceProfile

    • iam:CreateRole

    • iam:DeleteInstanceProfile

    • iam:DeleteRole

    • iam:DeleteRolePolicy

    • iam:GetRole

    • iam:DeleteRolePolicy

    • iam:PutRolePolicy

    • iam:RemoveRoleFromInstanceProfile

  2. Amazon Linux를 실행하는 Amazon EC2 인스턴스에 대한 SSH 액세스 또는 Windows 서버를 실행하는 인스턴스에 대한 RDP 액세스를 활성화하려면 인스턴스 키 페어가 있는지 확인합니다.

    키 페어 이름을 확인하려면 https://console.aws.amazon.com/ec2에서 Amazon EC2 콘솔을 엽니다. 탐색 창의 네트워크 및 보안에서 키 페어를 선택하고 목록에 표시되는 키 페어의 이름을 기록해 둡니다.

    새 키 페어를 생성하려면 Amazon EC2를 사용하여 키 페어 생성을 참조하세요. AWS 일반 참조리전 및 엔드포인트에 나열된 리전 중 하나에 키 페어가 생성되어야 합니다. 그렇지 않으면 CodeDeploy에서 인스턴스 키 페어를 사용할 수 없습니다.

AWS CloudFormation 템플릿을 사용하여 Amazon EC2 인스턴스 시작(콘솔)

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

    중요

    CodeDeploy 시작하기에서 사용한 것과 동일한 계정으로 AWS Management Console에 로그인합니다. 탐색 모음의 리전 선택기에서 AWS 일반 참조리전 및 엔드포인트에 나열된 리전 중 하나를 선택합니다. CodeDeploy는 이러한 리전만 지원합니다.

  2. 스택 생성을 선택합니다.

  3. 템플릿 선택(Choose a template)에서 Amazon S3 템플릿 URL 지정(Specify an Amazon S3 template URL)을 선택합니다. 이 상자에 사용자 리전의 AWS CloudFormation 템플릿 위치를 입력한 후 다음(Next)을 선택합니다.

    리전 AWS CloudFormation 템플릿 위치
    미국 동부(오하이오) 리전 http://s3-us-east-2.amazonaws.com/aws-codedeploy-us-east-2/templates/latest/CodeDeploy_SampleCF_Template.json
    리전 - 미국 동부(버지니아 북부) http://s3.amazonaws.com/aws-codedeploy-us-east-1/templates/latest/CodeDeploy_SampleCF_Template.json
    미국 서부(캘리포니아 북부) 리전 http://s3-us-west-1.amazonaws.com/aws-codedeploy-us-west-1/templates/latest/CodeDeploy_SampleCF_Template.json
    미국 서부(오레곤) 리전 http://s3-us-west-2.amazonaws.com/aws-codedeploy-us-west-2/templates/latest/CodeDeploy_SampleCF_Template.json
    캐나다(중부) 리전 http://s3-ca-central-1.amazonaws.com/aws-codedeploy-ca-central-1/templates/latest/CodeDeploy_SampleCF_Template.json
    Europe (Ireland) Region http://s3-eu-west-1.amazonaws.com/aws-codedeploy-eu-west-1/templates/latest/CodeDeploy_SampleCF_Template.json
    유럽(런던) 리전 http://s3-eu-west-2.amazonaws.com/aws-codedeploy-eu-west-2/templates/latest/CodeDeploy_SampleCF_Template.json
    유럽(파리) 리전 http://s3-eu-west-3.amazonaws.com/aws-codedeploy-eu-west-3/templates/latest/CodeDeploy_SampleCF_Template.json
    유럽(프랑크푸르트) 리전 http://s3-eu-central-1.amazonaws.com/aws-codedeploy-eu-central-1/templates/latest/CodeDeploy_SampleCF_Template.json
    아시아 태평양(홍콩) 리전 http://s3-ap-east-1.amazonaws.com/aws-codedeploy-ap-east-1/templates/latest/CodeDeploy_SampleCF_Template.json
    Asia Pacific (Tokyo) Region http://s3-ap-northeast-1.amazonaws.com/aws-codedeploy-ap-northeast-1/templates/latest/CodeDeploy_SampleCF_Template.json
    아시아 태평양(서울) 리전 http://s3-ap-northeast-2.amazonaws.com/aws-codedeploy-ap-northeast-2/templates/latest/CodeDeploy_SampleCF_Template.json
    Asia Pacific (Singapore) Region http://s3-ap-southeast-1.amazonaws.com/aws-codedeploy-ap-southeast-1/templates/latest/CodeDeploy_SampleCF_Template.json
    Asia Pacific (Sydney) Region http://s3-ap-southeast-2.amazonaws.com/aws-codedeploy-ap-southeast-2/templates/latest/CodeDeploy_SampleCF_Template.json
    아시아 태평양(뭄바이) 리전 http://s3-ap-south-1.amazonaws.com/aws-codedeploy-ap-south-1/templates/latest/CodeDeploy_SampleCF_Template.json
    남아메리카(상파울루) 리전 aws-codedeploy-ap-northeast-1.s3.ap-east-1.amazonaws.com/templates/latest/CodeDeploy_SampleCF_Template.json
  4. 스택 이름(Stack name) 상자에 스택 이름(예: CodeDeployDemoStack)을 입력합니다.

  5. 파라미터(Parameters)에 다음을 입력한 후 다음(Next)을 선택합니다.

    • InstanceCount에 시작하려는 인스턴스의 수를 입력합니다. (기본값 1을 그대로 두는 것을 권장합니다.)

    • InstanceType에 시작할 인스턴스 유형을 입력합니다(또는 기본값 t1.micro를 그대로 유지).

    • KeyPairName에 인스턴스 키 페어 이름을 입력합니다. 키 페어 파일 확장명은 제외하고 키 페어 이름만 입력합니다.

    • OperatingSystem 상자에 Windows를 입력하여 Windows 서버를 실행하는 인스턴스를 시작합니다(또는 기본값 Linux를 그대로 유지).

    • SSHLocation에서, SSH 또는 RDP를 사용하여 인스턴스에 연결하는 데 사용할 IP 주소 범위를 입력합니다(또는 기본값 0.0.0.0/0을 그대로 유지).

      중요

      기본값 0.0.0.0/0은 데모용으로만 제공됩니다. CodeDeploy에서는 Amazon EC2 인스턴스에 포트에 대한 무제한 액세스를 요구하지 않습니다. SSH(및 HTTP) 포트에 대한 액세스를 제한할 것을 모범 사례로 권장합니다. 자세한 내용은 Amazon EC2 인스턴스의 보안 유지를 위한 팁을 참조하세요.

    • TagKey에 CodeDeploy가 배포 중에 인스턴스를 식별하는 데 사용할 인스턴스 태그 키를 입력합니다(또는 기본값 이름(Name)을 그대로 둠).

    • TagValue에 CodeDeploy가 배포 중에 인스턴스를 식별하는 데 사용할 인스턴스 태그 값을 입력합니다(또는 기본값 CodeDeployDemo를 그대로 유지).

  6. 옵션(Options) 페이지에서 옵션 상자를 비워 두고 다음(Next)을 선택합니다.

    중요

    AWS CloudFormation 태그는 CodeDeploy 태그와 다릅니다. AWS CloudFormation은 태그를 사용하여 인프라 관리를 간소화합니다. CodeDeploy에서는 태그를 사용하여 Amazon EC2 인스턴스를 식별합니다. 파라미터 지정(Specify Parameters) 페이지에서 CodeDeploy 태그를 지정했습니다.

  7. 검토(Review) 페이지의 기능(Capabilities)에서 AWS CloudFormation이 IAM 리소스를 생성할 수 있음을 인정합니다(I acknowledge that might create IAM resources) 상자를 선택한 후 생성(Create)을 선택합니다.

    AWS CloudFormation이 스택을 생성하고 Amazon EC2 인스턴스를 시작하면 AWS CloudFormation 콘솔의 상태(Status) 열에 CREATE_COMPLETE이 표시됩니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다.

Amazon EC2 인스턴스에서 CodeDeploy 에이전트가 실행 중인지 확인하려면 CodeDeploy 에이전트 작업 관리를 확인한 다음 CodeDeploy를 사용하여 애플리케이션 생성로 진행합니다.

AWS CloudFormation 템플릿을 사용하여 Amazon EC2 인스턴스 시작(AWS CLI)

  1. AWS CloudFormation 템플릿을 사용하여 create-stack 명령을 호출합니다. 이 스택으로 CodeDeploy 에이전트가 설치된 새 Amazon EC2 인스턴스를 시작합니다.

    Amazon Linux를 실행하는 Amazon EC2 인스턴스 시작하기:

    aws cloudformation create-stack \ --stack-name CodeDeployDemoStack \ --template-url templateURL \ --parameters ParameterKey=InstanceCount,ParameterValue=1 ParameterKey=InstanceType,ParameterValue=t1.micro \ ParameterKey=KeyPairName,ParameterValue=keyName ParameterKey=OperatingSystem,ParameterValue=Linux \ ParameterKey=SSHLocation,ParameterValue=0.0.0.0/0 ParameterKey=TagKey,ParameterValue=Name \ ParameterKey=TagValue,ParameterValue=CodeDeployDemo \ --capabilities CAPABILITY_IAM

    Windows Server를 실행하는 Amazon EC2 인스턴스 시작:

    aws cloudformation create-stack --stack-name CodeDeployDemoStack --template-url template-url --parameters ParameterKey=InstanceCount,ParameterValue=1 ParameterKey=InstanceType,ParameterValue=t1.micro ParameterKey=KeyPairName,ParameterValue=keyName ParameterKey=OperatingSystem,ParameterValue=Windows ParameterKey=SSHLocation,ParameterValue=0.0.0.0/0 ParameterKey=TagKey,ParameterValue=Name ParameterKey=TagValue,ParameterValue=CodeDeployDemo --capabilities CAPABILITY_IAM

    keyName은 인스턴스 키 페어의 이름입니다. 키 페어 파일 확장명은 제외하고 키 페어 이름만 입력합니다.

    template-url은 해당 리전에서 AWS CloudFormation 템플릿의 위치입니다.

    리전 AWS CloudFormation 템플릿 위치
    미국 동부(오하이오) 리전 http://s3-us-east-2.amazonaws.com/aws-codedeploy-us-east-2/templates/latest/CodeDeploy_SampleCF_Template.json
    리전 - 미국 동부(버지니아 북부) http://s3.amazonaws.com/aws-codedeploy-us-east-1/templates/latest/CodeDeploy_SampleCF_Template.json
    미국 서부(캘리포니아 북부) 리전 http://s3-us-west-1.amazonaws.com/aws-codedeploy-us-west-1/templates/latest/CodeDeploy_SampleCF_Template.json
    미국 서부(오레곤) 리전 http://s3-us-west-2.amazonaws.com/aws-codedeploy-us-west-2/templates/latest/CodeDeploy_SampleCF_Template.json
    캐나다(중부) 리전 http://s3-ca-central-1.amazonaws.com/aws-codedeploy-ca-central-1/templates/latest/CodeDeploy_SampleCF_Template.json
    Europe (Ireland) Region http://s3-eu-west-1.amazonaws.com/aws-codedeploy-eu-west-1/templates/latest/CodeDeploy_SampleCF_Template.json
    유럽(런던) 리전 http://s3-eu-west-2.amazonaws.com/aws-codedeploy-eu-west-2/templates/latest/CodeDeploy_SampleCF_Template.json
    유럽(파리) 리전 http://s3-eu-west-3.amazonaws.com/aws-codedeploy-eu-west-3/templates/latest/CodeDeploy_SampleCF_Template.json
    유럽(프랑크푸르트) 리전 http://s3-eu-central-1.amazonaws.com/aws-codedeploy-eu-central-1/templates/latest/CodeDeploy_SampleCF_Template.json
    아시아 태평양(홍콩) 리전 http://s3-ap-east-1.amazonaws.com/aws-codedeploy-ap-east-1/templates/latest/CodeDeploy_SampleCF_Template.json
    Asia Pacific (Tokyo) Region http://s3-ap-northeast-1.amazonaws.com/aws-codedeploy-ap-northeast-1/templates/latest/CodeDeploy_SampleCF_Template.json
    아시아 태평양(서울) 리전 http://s3-ap-northeast-2.amazonaws.com/aws-codedeploy-ap-northeast-2/templates/latest/CodeDeploy_SampleCF_Template.json
    Asia Pacific (Singapore) Region http://s3-ap-southeast-1.amazonaws.com/aws-codedeploy-ap-southeast-1/templates/latest/CodeDeploy_SampleCF_Template.json
    Asia Pacific (Sydney) Region http://s3-ap-southeast-2.amazonaws.com/aws-codedeploy-ap-southeast-2/templates/latest/CodeDeploy_SampleCF_Template.json
    아시아 태평양(뭄바이) 리전 http://s3-ap-south-1.amazonaws.com/aws-codedeploy-ap-south-1/templates/latest/CodeDeploy_SampleCF_Template.json
    남아메리카(상파울루) 리전 aws-codedeploy-ap-northeast-1.s3.ap-east-1.amazonaws.com/templates/latest/CodeDeploy_SampleCF_Template.json

    이 명령은 지정한 Amazon S3 버킷에서 AWS CloudFormation 템플릿을 사용하여 CodeDeployDemoStack이라는 이름의 AWS CloudFormation 스택을 생성합니다. Amazon EC2 인스턴스는 t1.micro 인스턴스 유형을 따르지만 모든 유형을 사용할 수 있습니다. CodeDeployDemo 값으로 태그 지정되어 있지만 모든 값을 태그 지정할 수 있습니다. 키 페어가 적용된 지정된 인스턴스가 있습니다.

  2. describe-stacks 명령을 호출하여 CodeDeployDemoStack이라는 이름의 AWS CloudFormation 스택이 성공적으로 생성되었는지 확인할 수 있습니다.

    aws cloudformation describe-stacks --stack-name CodeDeployDemoStack --query "Stacks[0].StackStatus" --output text

    CREATE_COMPLETE 값이 반환될 때까지 진행하지 마세요.

Amazon EC2 인스턴스에서 CodeDeploy 에이전트가 실행 중인지 확인하려면 CodeDeploy 에이전트 작업 관리 섹션을 확인한 다음 CodeDeploy를 사용하여 애플리케이션 생성로 진행합니다.