步驟 1:在「堆疊」中建立堆 AWS OpsWorks 疊、圖層和實體 - AWS OpsWorks

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

步驟 1:在「堆疊」中建立堆 AWS OpsWorks 疊、圖層和實體

重要

該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post 或透過進AWS 階 Support 與 AWS Support 團隊聯絡。

若要使用 AWS OpsWorks Stacks 做為管線的部署提供者,您必須先在該層中具有堆疊、層和至少一個執行個體。雖然您可以按照 Linux 堆 AWS OpsWorks 疊入門或 Windows 堆疊入門中的指示在堆疊中建立堆疊,但為了節省您的時間,本範例會使用範 AWS CloudFormation 本來建立以 Linux 為基礎的 Chef 12 堆疊、層和執行個體。此範本建立的執行個體會執行 Amazon Linux 2016.03,且執行個體類型為 c3.large。雖然範本不會設定您的堆疊使用自訂技術指南,但您稍後仍會在演練中執行此作業。

重要

AWS CloudFormation 範本必須與稍後將應用程式上傳到的 Amazon S3 儲存貯體以及稍後建立管道所在的相同區域中存放和執行 CodePipeline。目前,僅 CodePipeline 支援美國東部 (維吉尼亞北部) 區域 (us-east-1) 的 AWS OpsWorks 堆疊提供者。本逐步解說中的所有資源應建立於美國東部 (維吉尼亞北部) 區域。

如果堆疊建立失敗,您可能即將達到您帳戶的 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 並開啟 AWS CloudFormation 主控台,網址為 https://console.aws.amazon.com/cloudformation

  3. 在 AWS CloudFormation 首頁上,選擇 [建立堆疊]。

  4. Select Template (選取範本) 頁面上的 Choose a template (選擇範本) 區域中,選擇 Upload a template to Amazon S3 (將範本上傳至 Amazon S3),然後選擇 Browse (瀏覽)

  5. 瀏覽至您在步驟 1 中儲存的 AWS CloudFormation 範本,然後選擇「開啟」。在 Select Template (選取範本) 頁面上,請選擇 Next (下一步)。

    選取 AWS CloudFormation 建立堆疊精靈的範本頁面。
  6. 在 [指定詳細資料] 頁面上 CodePipelineDemo,命名堆疊或帳戶專屬的任何堆疊名稱。如果您選擇不同的堆疊名稱,請變更整個本演練中該堆疊的名稱。

  7. 在 [參數] 區域中,提供建立 Stacks 執行個體後要用來存取 AWS OpsWorks Stacks 執行個體的 EC2 key pair 名稱。選擇下一步

  8. 選項頁面上,選擇下一步。(本演練不需要執行此頁面上的設定。)

  9. 您在本逐步解說中使用的 AWS CloudFormation 範本會建立 IAM 角色、執行個體設定檔和執行個體。

    重要

    選擇 [建立] 之前,請選擇 [成本] 以預估使用此範本建立 AWS 資源時可能產生的費用。

    如果可以接受建立 IAM 資源,請選取 [我確認此範本可能會造成 AWS CloudFormation 建立 IAM 資源] 核取方塊,然後選擇 [建立]。如果不接受建立 IAM 資源,則無法繼續執行此程序。

  10. 在 AWS CloudFormation 儀表板上,您可以檢視堆疊的建立進度。請先等候 Status (狀態) 欄位顯示 CREATE_COMPLETE 後,再繼續進行下一步。

    AWS CloudFormation 顯示堆疊建立的儀表板。
確認堆 AWS OpsWorks 疊中的堆疊建立
  1. 請在以下位置開啟 AWS OpsWorks 主控台。 https://console.aws.amazon.com/opsworks/

  2. 在「 AWS OpsWorks 堆疊」儀表板上,檢視您建立的堆疊。

    AWS OpsWorks 顯示堆疊建立的儀表板。
  3. 開啟堆疊並檢視 layer 和執行個體。請注意,圖層和實體是使用範 AWS CloudFormation 本中提供的名稱和其他中繼資料建立的。您已準備好設定您的堆疊和 layer 使用自訂的 Chef 技術指南和配方。