1단계: AWS OpsWorks Stacks에서 스택, 계층 및 인스턴스를 생성합니다. - AWS OpsWorks

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

1단계: AWS OpsWorks Stacks에서 스택, 계층 및 인스턴스를 생성합니다.

중요

이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 고객과 기존 고객 모두 사용할 수 없습니다. 고객은 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션할 것을 강력히 권장합니다. 마이그레이션에 대해 궁금한 점이 있으면 AWS re:Post 또는 Premium AWS Support를 통해 AWS Support 팀에 문의하세요.

AWS OpsWorks Stacks를 파이프라인의 배포 공급자로 사용하려면 먼저 스택, 계층, 해당 계층에 하나 이상의 인스턴스가 있어야 합니다. Linux 스택 시작하기 또는 Windows 스택 시작하기의 지침에 따라 AWS OpsWorks 스택에서 스택을 생성할 수 있지만 시간을 절약하기 위해 이 예제에서는 AWS CloudFormation 템플릿을 사용하여 Linux 기반 Chef 11.10 스택, 계층 및 인스턴스를 생성합니다. 이 템플릿에 의해 생성된 인스턴스는 Amazon Linux 2016.03을 실행하며 인스턴스 유형은 c3.large입니다.

중요

AWS CloudFormation 템플릿은 나중에 앱을 업로드할 Amazon S3 버킷과 동일한 리전, 그리고 나중에 파이프라인을 생성할 리전과 동일한 리전에서 저장하고 실행해야 CodePipeline 합니다. 현재는 미국 동부 (버지니아 북부) 지역 (us-east-1) 의 AWS OpsWorks 스택 공급자만 CodePipeline 지원합니다. 이 연습에서는 모든 리소스를 미국 동부(버지니아 북부) 리전에서 생성해야 합니다.

스택 생성이 실패할 경우 계정에 허용되는 최대 수의 IAM 역할에 접근한 것일 수 있습니다. 계정에서 c3.large 인스턴스 유형의 인스턴스를 시작할 수 없는 경우에도 스택 생성이 실패할 수 있습니다. 예를 들어 AWS 프리 티어를 사용 중이라면 Root device type: must be included in EBS 같은 오류가 반환될 수 있습니다. 계정에 생성할 수 있는 인스턴스 유형에 제한이 있는 경우 (예: AWS 프리 티어로 인한 제한) 가 있는 경우 템플릿의 인스턴스 블록에 있는 InstanceType 파라미터 값을 계정에서 사용할 수 있는 인스턴스 유형으로 변경해 보십시오.

를 사용하여 스택, 계층, 인스턴스를 만들려면 AWS CloudFormation
  1. 다음 AWS CloudFormation 템플릿을 새 일반 텍스트 문서에 복사합니다. 파일을 로컬 컴퓨터의 편리한 위치에 저장하고 NewOpsWorksStack파일을.template 또는 사용자가 원하는 다른 이름으로 지정합니다.

    { "AWSTemplateFormatVersion": "2010-09-09", "Mappings": { "Region2Principal": { "us-east-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "us-west-2": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "us-west-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "eu-west-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "ap-southeast-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "ap-northeast-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "ap-northeast-2": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "ap-southeast-2": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "sa-east-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "cn-north-1": { "EC2Principal": "ec2.amazonaws.com.cn", "OpsWorksPrincipal": "opsworks.amazonaws.com.cn" }, "eu-central-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" } } }, "Parameters": { "EC2KeyPairName": { "Type": "String", "Description": "The name of an existing EC2 key pair that allows you to use SSH to connect to the OpsWorks instance." } }, "Resources": { "CPOpsDeploySecGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription" : "Lets you manage OpsWorks instances deployed to by CodePipeline" } }, "CPOpsDeploySecGroupIngressHTTP": { "Type": "AWS::EC2::SecurityGroupIngress", "Properties" : { "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0", "GroupId": { "Fn::GetAtt": [ "CPOpsDeploySecGroup", "GroupId" ] } } }, "CPOpsDeploySecGroupIngressSSH": { "Type": "AWS::EC2::SecurityGroupIngress", "Properties" : { "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "0.0.0.0/0", "GroupId": { "Fn::GetAtt": [ "CPOpsDeploySecGroup", "GroupId" ] } } }, "MyStack": { "Type": "AWS::OpsWorks::Stack", "Properties": { "Name": { "Ref": "AWS::StackName" }, "ServiceRoleArn": { "Fn::GetAtt": [ "OpsWorksServiceRole", "Arn" ] }, "ConfigurationManager" : { "Name": "Chef","Version": "11.10" }, "DefaultOs": "Amazon Linux 2016.03", "DefaultInstanceProfileArn": { "Fn::GetAtt": [ "OpsWorksInstanceProfile", "Arn" ] } } }, "MyLayer": { "Type": "AWS::OpsWorks::Layer", "Properties": { "StackId": { "Ref": "MyStack" }, "Name": "MyLayer", "Type": "php-app", "Shortname": "mylayer", "EnableAutoHealing": "true", "AutoAssignElasticIps": "false", "AutoAssignPublicIps": "true", "CustomSecurityGroupIds": [ { "Fn::GetAtt": [ "CPOpsDeploySecGroup", "GroupId" ] } ] }, "DependsOn": [ "MyStack", "CPOpsDeploySecGroup" ] }, "OpsWorksServiceRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ { "Fn::FindInMap": [ "Region2Principal", { "Ref": "AWS::Region" }, "OpsWorksPrincipal" ] } ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "opsworks-service", "PolicyDocument": { "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*", "iam:PassRole", "cloudwatch:GetMetricStatistics", "elasticloadbalancing:*" ], "Resource": "*" } ] } } ] } }, "OpsWorksInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "OpsWorksInstanceRole" } ] } }, "OpsWorksInstanceRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ { "Fn::FindInMap": [ "Region2Principal", { "Ref": "AWS::Region" }, "EC2Principal" ] } ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "s3-get", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "*" } ] } } ] } }, "myinstance": { "Type": "AWS::OpsWorks::Instance", "Properties": { "LayerIds": [ { "Ref": "MyLayer" } ], "StackId": { "Ref": "MyStack" }, "InstanceType": "c3.large", "SshKeyName": { "Ref": "EC2KeyPairName" } } } }, "Outputs": { "StackId": { "Description": "Stack ID for the newly created AWS OpsWorks stack", "Value": { "Ref": "MyStack" } } } }
  2. 에 AWS Management Console 로그인하고 https://console.aws.amazon.com/cloudformation 에서 AWS CloudFormation 콘솔을 엽니다.

  3. AWS CloudFormation 홈페이지에서 스택 생성을 선택합니다.

  4. [템플릿 선택] 페이지의 [템플릿 선택] 영역에서 [Amazon S3에 템플릿 업로드]를 선택한 다음 [찾아보기]를 선택합니다.

  5. 1단계에서 저장한 AWS CloudFormation 템플릿을 찾은 다음 [Open] 을 선택합니다. 템플릿 선택 페이지에서 다음을 선택합니다.

    AWS 스택 CloudFormation 생성 마법사의 템플릿 페이지를 선택합니다.
  6. 세부 정보 지정 페이지에서 스택 MyStack이름을 지정하거나 계정에 고유한 스택 이름을 지정하십시오. 스택에 다른 이름을 선택하면 이 연습 전체에서 해당 스택 이름을 변경해야 합니다.

  7. Parameters 영역에서 AWS OpsWorks Stacks 인스턴스를 생성한 후 인스턴스에 액세스하는 데 사용할 EC2 키 쌍의 이름을 입력합니다. 다음을 선택합니다.

  8. 옵션 페이지에서 다음을 선택합니다. 이 페이지의 설정은 이번 연습에는 필요하지 않습니다.

  9. 이 안내에서 사용하는 AWS CloudFormation 템플릿은 IAM 역할, 인스턴스 프로필 및 인스턴스를 생성합니다.

    중요

    [Create] 를 선택하기 전에 [Cost] 를 선택하여 AWS 이 템플릿으로 리소스를 생성할 때 발생할 수 있는 비용을 추정하십시오.

    IAM 리소스 생성이 허용되는 경우 이 템플릿으로 인해 CloudFormation AWS에서 IAM 리소스를 생성할 수 있음을 인정함 확인란을 선택한 다음 [Create] 를 선택합니다. IAM 리소스를 생성할 수 없는 경우 이 절차를 계속 진행할 수 없습니다.

  10. AWS CloudFormation 대시보드에서 스택 생성 진행 상황을 확인할 수 있습니다. 다음 단계를 계속하기 전에 상태 열에 CREATE_COMPLETE가 표시될 때까지 기다리세요.

    스택 생성을 보여주는 AWS CloudFormation 대시보드
스택에서 AWS OpsWorks 스택 생성을 확인하려면
  1. https://console.aws.amazon.com/opsworks/ 에서 AWS OpsWorks 콘솔을 엽니다.

  2. AWS OpsWorks 스택 대시보드에서 생성한 스택을 확인합니다.

    스택 생성을 보여주는 AWS OpsWorks 대시보드
  3. 스택을 열고 계층 및 인스턴스를 확인합니다. AWS CloudFormation 템플릿에 제공된 이름 및 기타 메타데이터를 사용하여 레이어와 인스턴스가 생성되었는지 확인하십시오. Amazon S3 버킷으로 앱을 업로드할 준비가 되었습니다.