ステップ 1: スタックに AWS OpsWorks スタック、レイヤー、インスタンスを作成する - AWS OpsWorks

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ステップ 1: スタックに AWS OpsWorks スタック、レイヤー、インスタンスを作成する

重要

この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、 AWS re:Post または AWS Premium Support を通じて AWS Support チームにお問い合わせください。

AWS OpsWorks スタックをパイプラインのデプロイプロバイダーとして使用するには、まずスタック、レイヤー、およびレイヤーに少なくとも 1 つのインスタンスが必要です。「Linux AWS OpsWorks スタックの開始方法」または「Windows スタックの開始方法」の手順に従って スタックを作成できますが、時間を節約するために、この例では AWS CloudFormation テンプレートを使用して Linux ベースの Chef 12 スタック、レイヤー、インスタンスを作成します。 https://docs.aws.amazon.com/opsworks/latest/userguide/gettingstarted-linux.htmlこのテンプレートで作成されたインスタンスは、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 lets you use SSH to connect to the OpsWorks instance." } }, "Resources": { "CPOpsDeploySecGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription" : "Lets you manage OpsWorks instances to which you deploy apps with 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": "12" }, "DefaultOs": "Amazon Linux 2016.03", "DefaultInstanceProfileArn": { "Fn::GetAtt": [ "OpsWorksInstanceProfile", "Arn" ] }, "UseCustomCookbooks": "false" } }, "MyLayer": { "Type": "AWS::OpsWorks::Layer", "Properties": { "StackId": { "Ref": "MyStack" }, "Name": "Node.js App Server", "Type": "custom", "Shortname": "app1", "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. [Select Template] ページの [Choose a template] エリアで、[Upload a template to Amazon S3]、[Browse] の順に選択します。

  5. ステップ 1 で保存した AWS CloudFormation テンプレートを参照し、を開く」を選択します。[Select Template] ページで、[Next] を選択します。

    スタック AWS CloudFormation の作成ウィザードのテンプレートページを選択します。
  6. 詳細の指定 ページで、スタックに という名前を付けるかCodePipelineDemo、アカウントに固有のスタック名を指定します。スタックに別の名前を付ける場合は、このウォークスルー中のスタック名スループットを変更してください。

  7. パラメータ領域で、作成後に AWS OpsWorks スタックインスタンスへのアクセスに使用する EC2 キーペアの名前を指定します。[次へ] をクリックします。

  8. [Options(オプション)] ページで、[Next(次へ)] を選択します。(このページの設定はこのウォークスルーでは必要ありません)

  9. このチュートリアルで使用する AWS CloudFormation テンプレートは、IAM ロール、インスタンスプロファイル、およびインスタンスを作成します。

    重要

    の作成 を選択する前に、コスト を選択して、このテンプレートでリソースを作成するために発生する可能性のある料金を見積もり AWS ます。

    IAM リソースの作成が許容できる場合は、このテンプレートによって IAM リソースの作成が発生する可能性があることを了承 AWS CloudFormation するチェックボックスを選択し、 の作成を選択します。IAM リソースの作成が受入不可能な場合は、この手順を続行することはできません。

  10. AWS CloudFormation ダッシュボードでは、スタックの作成の進行状況を表示できます。次のステップに進む前に、[Status] 列に [CREATE_COMPLETE] が表示されるまで待機します。

    AWS CloudFormation スタックの作成を示す ダッシュボード。
スタックでの AWS OpsWorks スタックの作成を確認するには
  1. https://console.aws.amazon.com/opsworks/ で AWS OpsWorks コンソールを開きます。

  2. AWS OpsWorks スタックダッシュボードで、作成したスタックを表示します。

    AWS OpsWorks スタックの作成を示す ダッシュボード。
  3. スタックを開き、レイヤーとインスタンスを表示します。レイヤーとインスタンスが、 AWS CloudFormation テンプレートで指定された名前やその他のメタデータで作成されたことを確認します。カスタム Chef クックブックとレシピを使用するようにスタックとレイヤーを設定する準備ができました。