CLI チュートリアル: 階層のデプロイと WordPress ウェブサイトの絞り込み - AMS Advanced Application デベロッパーガイド

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

CLI チュートリアル: 階層のデプロイと WordPress ウェブサイトの絞り込み

このセクションでは、AMS CLI を使用して高可用性 (HA) WordPress サイトを AMS 環境にデプロイする方法について説明します。この一連の手順には、必要な WordPress CodeDeploy 互換パッケージ (zip など) ファイルを作成する例が含まれています。

注記

このデプロイチュートリアルは、AMZN Linux 環境で使用するために設計されています。

必須変数パラメータは置き換え可能と表記されますが、状況に合わせて他のパラメータを変更することもできます。

タスクと必要な RFCs の概要:

  1. インフラストラクチャを作成します。

    1. RDS スタックを作成する (CLI)

    2. ロードバランサーの作成

    3. Auto Scaling グループを作成し、ロードバランサーに結び付ける

    4. CodeDeploy アプリケーション用の S3 バケットを作成する

  2. WordPress アプリケーションバンドルを作成する (RFC は必要ありません)

  3. CodeDeploy を使用して WordPress アプリケーションバンドルをデプロイします。

    1. CodeDeploy アプリケーションを作成する

    2. CodeDeploy デプロイグループを作成する

    3. WordPress アプリケーションバンドルを S3 バケットにアップロードする (RFC は必要ありません)

    4. CodeDeploy アプリケーションをデプロイする

  4. デプロイを検証する

  5. デプロイをティアダウンする

認証されたアカウントからコマンドラインにあるすべてのステップに従います。

CLI を使用した RFC の作成

RFC の作成の詳細については、RFCs」を参照してください。一般的な RFC パラメータの説明については、「RFC 共通パラメータ」を参照してください。

CodeDeploy 用の WordPress アプリケーションバンドルを作成する

このセクションでは、アプリケーションデプロイバンドルを作成する例を示します。

  1. WordPress をダウンロードし、ファイルを抽出して ./scripts ディレクトリを作成します。

    Linux コマンド:

    wget https://github.com/WordPress/WordPress/archive/master.zip

    Windows: ブラウザウィンドウhttps://github.com/WordPress/WordPress/archive/master.zipに貼り付け、zip ファイルをダウンロードします。

    パッケージをアセンブルする一時ディレクトリを作成します。

    Linux:

    mkdir /tmp/WordPress

    Windows: WordPress」ディレクトリを作成します。後でディレクトリパスを使用します。

  2. WordPress ソースをWordPress」ディレクトリに抽出し、./scripts ディレクトリを作成します。

    Linux:

    unzip master.zip -d /tmp/WordPress_Temp cp -paf /tmp/WordPress_Temp/WordPress-master/* /tmp/WordPress rm -rf /tmp/WordPress_Temp rm -f master cd /tmp/WordPress mkdir scripts

    Windows: 作成したWordPress」ディレクトリに移動し、そこに「scripts」ディレクトリを作成します。

    Windows 環境の場合は、スクリプトファイルのブレークタイプを Unix (LF) に設定してください。Notepad ++ では、これはウィンドウの右下にあるオプションです。

  3. WordPress ディレクトリに CodeDeploy appspec.yml ファイルを作成します (例をコピーする場合は、インデントを確認し、各スペース数を確認します)。重要: WordPress ファイル (この場合は WordPress ディレクトリ) を目的の宛先 (/var/www/html/WordPress) にコピーするには、 WordPress 「ソース」パスが正しいことを確認してください。この例では、appspec.yml ファイルは WordPress ファイルを含む ディレクトリにあるため、「/」のみが必要です。また、Auto Scaling グループに RHEL AMI を使用した場合でも、「os: linux」行はそのままにしておきます。appspec.yml ファイルの例:

    version: 0.0 os: linux files: - source: / destination: /var/www/html/WordPress hooks: BeforeInstall: - location: scripts/install_dependencies.sh timeout: 300 runas: root AfterInstall: - location: scripts/config_wordpress.sh timeout: 300 runas: root ApplicationStart: - location: scripts/start_server.sh timeout: 300 runas: root ApplicationStop: - location: scripts/stop_server.sh timeout: 300 runas: root
  4. WordPress ./scripts ディレクトリに bash ファイルスクリプトを作成します。

    まず、次の内容config_wordpress.shで を作成します (必要に応じて、wp-config.php ファイルを直接編集できます)。

    注記

    DBName を HA スタック RFC で指定された値 (例: ) に置き換えますwordpress

    DB_MasterUsername を HA スタック RFC で指定されたMasterUsername値 ( などadmin) に置き換えます。

    DB_MasterUserPassword を HA スタック RFC で指定されたMasterUserPassword値 ( など) に置き換えますp4ssw0rd

    DB_ENDPOINT を HA スタック RFC の実行出力のエンドポイント DNS 名 (例: ) に置き換えますsrt1cz23n45sfg.clgvd67uvydk.us-east-1.rds.amazonaws.com。これは、GetRfc オペレーション (CLI: get-rfc --rfc-id RFC_ID) または以前に送信した HA スタック RFC の AMS コンソール RFC の詳細ページで確認できます。

    #!/bin/bash chmod -R 755 /var/www/html/WordPress cp /var/www/html/WordPress/wp-config-sample.php /var/www/html/WordPress/wp-config.php cd /var/www/html/WordPress sed -i "s/database_name_here/DBName/g" wp-config.php sed -i "s/username_here/DB_MasterUsername/g" wp-config.php sed -i "s/password_here/DB_MasterUserPassword/g" wp-config.php sed -i "s/localhost/DB_ENDPOINT/g" wp-config.php
  5. 同じディレクトリに、次の内容install_dependencies.shで を作成します。

    #!/bin/bash yum install -y php yum install -y php-mysql yum install -y mysql service httpd restart
    注記

    HTTPS は、ヘルスチェックを最初から機能させるために、起動時にユーザーデータの一部としてインストールされます。

  6. 同じディレクトリに、次の内容start_server.shで を作成します。

    • Amazon Linux インスタンスの場合は、以下を使用します。

      #!/bin/bash service httpd start
    • RHEL インスタンスの場合は、以下を使用します (追加のコマンドは、SELINUX が WordPress を受け入れることを許可するポリシーです)。

      #!/bin/bash setsebool -P httpd_can_network_connect_db 1 setsebool -P httpd_can_network_connect 1 chcon -t httpd_sys_rw_content_t /var/www/html/WordPress/wp-content -R restorecon -Rv /var/www/html service httpd start
  7. 同じディレクトリに、次の内容stop_server.shで を作成します。

    #!/bin/bash service httpd stop
  8. zip バンドルを作成します。

    Linux:

    $ cd /tmp/WordPress $ zip -r wordpress.zip .

    Windows: WordPress」ディレクトリに移動し、すべてのファイルを選択して zip ファイルを作成します。必ず wordpress.zip という名前を付けます。

CodeDeploy を使用して WordPress アプリケーションバンドルをデプロイする

CodeDeploy は、Amazon EC2 インスタンスへのアプリケーションのデプロイを自動化する AWS デプロイサービスです。プロセスのこの部分では、CodeDeploy アプリケーションを作成し、CodeDeploy デプロイグループを作成し、CodeDeploy を使用してアプリケーションをデプロイします。

CodeDeploy アプリケーションを作成する

CodeDeploy アプリケーションは、AWS CodeDeploy が使用する名前またはコンテナであり、デプロイ中に正しいリビジョン、デプロイ設定、デプロイグループが参照されるようにします。この場合、デプロイ設定は、以前に作成した WordPress バンドルです。

必須データ:

  • VpcId: 使用している VPC。これは以前に使用した VPC と同じである必要があります。

  • CodeDeployApplicationName: アカウント内で一意である必要があります。CodeDeploy コンソールで、既存のアプリケーション名を確認します。

  • ChangeTypeId および ChangeTypeVersion: このチュートリアルの変更タイプ ID は です。最新バージョンct-0ah3gwb9seqk2を確認するには、次のコマンドを実行します。

    aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=ct-0ah3gwb9seqk2
  1. CodeDeploy アプリケーション CT の実行パラメータ JSON スキーマを現在のフォルダ内のファイルに出力します。例では CreateCDAppParams.json.

    aws amscm get-change-type-version --change-type-id "ct-0ah3gwb9seqk2" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateCDAppParams.json
  2. 次のように JSON ファイルを変更して保存します。コンテンツを削除して置き換えることができます。

    { "Description": "Create WordPress CodeDeploy App", "VpcId": "VPC_ID", "StackTemplateId": "stm-sft6rv00000000000", "Name": "WordPressCDApp", "TimeoutInMinutes": 60, "Parameters": { "CodeDeployApplicationName": "WordPressCDApp" } }
  3. CreateRfc の JSON テンプレートを現在のフォルダ内のファイルに出力します。例では CreateCDAppRfc.json.

    aws amscm create-rfc --generate-cli-skeleton > CreateCDAppRfc.json
  4. 次のように JSON ファイルを変更して保存します。コンテンツを削除して置き換えることができます。RequestedStartTimeRequestedEndTimeはオプションになりました。これらを除外すると、RFC は承認されるとすぐに実行されることに注意してください (通常は自動的に実行されます)。「スケジュールされた」 RFC を送信するには、これらの値を追加します。

    { "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-0ah3gwb9seqk2", "Title": "CD-App-For-WP-Stack-RFC" }
  5. CreateCDAppRfc ファイルと実行パラメータファイルを指定して、RFC を作成します。

    aws amscm create-rfc --cli-input-json file://CreateCDAppRfc.json --execution-parameters file://CreateCDAppParams.json

    レスポンスで新しい RFC の RFC ID を受け取ります。後続のステップの ID を保存します。

  6. RFC を送信します。

    aws amscm submit-rfc --rfc-id RFC_ID

    RFC が成功した場合、出力は受信されません。

  7. RFC を送信します。

    aws amscm get-rfc --rfc-id RFC_ID

CodeDeploy デプロイグループを作成する

CodeDeploy デプロイグループを作成します。

CodeDeploy デプロイグループは、デプロイの対象となる個々のインスタンスのセットを定義します。

必須データ:

  • VpcId: 使用している VPC。これは以前に使用した VPC と同じである必要があります。

  • CodeDeployApplicationName: 以前に作成した値を使用します。

  • CodeDeployAutoScalingGroups: 前に作成した Auto Scaling グループの名前を使用します。

  • CodeDeployDeploymentGroupName: デプロイグループの名前。この名前はデプロイグループに関連付けられる各アプリケーションで一意にする必要があります。

  • CodeDeployServiceRoleArn: 例に示す式を使用します。

  • ChangeTypeId および ChangeTypeVersion: このチュートリアルの変更タイプ ID は です。最新バージョンct-2gd0u847qd9d2を確認するには、次のコマンドを実行します。

    aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=ct-2gd0u847qd9d2
  1. 実行パラメータ JSON スキーマを現在のフォルダ内のファイルに出力します。例では CreateCDDepGroupParams.json.

    aws amscm get-change-type-version --change-type-id "ct-2gd0u847qd9d2" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateCDDepGroupParams.json
  2. 次のように JSON ファイルを変更して保存します。コンテンツを削除して置き換えることができます。

    { "Description": "CreateWPCDDeploymentGroup", "VpcId": "VPC_ID", "StackTemplateId": "stm-sp9lrk00000000000", "Name": "WordPressCDAppGroup", "TimeoutInMinutes": 60, "Parameters": { "CodeDeployApplicationName": "WordPressCDApp", "CodeDeployAutoScalingGroups": ["ASG_NAME"], "CodeDeployDeploymentConfigName": "CodeDeployDefault.HalfAtATime", "CodeDeployDeploymentGroupName": "UNIQUE_CDDepGroupNAME", "CodeDeployServiceRoleArn": "arn:aws:iam::ACCOUNT_ID:role/aws-codedeploy-role" } }
  3. CreateRfc の JSON テンプレートを現在のフォルダ内のファイルに出力します。例では CreateCDDepGroupRfc.json.

    aws amscm create-rfc --generate-cli-skeleton > CreateCDDepGroupRfc.json
  4. 次のように JSON ファイルを変更して保存します。コンテンツを削除して置き換えることができます。RequestedStartTimeRequestedEndTimeはオプションになりました。これらを除外すると、RFC は承認されるとすぐに実行されることに注意してください (通常は自動的に実行されます)。「スケジュールされた」 RFC を送信するには、これらの値を追加します。

    { "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-2gd0u847qd9d2", "Title": "CD-Dep-Group-For-WP-Stack-RFC" }
  5. CreateCDDepGroupRfc ファイルと実行パラメータファイルを指定して、RFC を作成します。

    aws amscm create-rfc --cli-input-json file://CreateCDDepGroupRfc.json --execution-parameters file://CreateCDDepGroupParams.json

    レスポンスで新しい RFC の RFC ID を受け取ります。後続のステップの ID を保存します。

  6. RFC を送信します。

    aws amscm submit-rfc --rfc-id RFC_ID

    RFC が成功した場合、出力は受信されません。

  7. RFC ステータスを確認します。

    aws amscm get-rfc --rfc-id RFC_ID

WordPress アプリケーションをアップロードする

作成した S3 バケットインスタンスに自動的にアクセスできます。踏み台 (「インスタンスへのアクセス」を参照) または S3 コンソールからアクセスし、CodeDeploy バンドルをアップロードできます。スタックのデプロイを続行するには、バンドルを設定する必要があります。この例では、以前に作成したバケット名を使用します。

aws s3 cp wordpress/wordpress.zip s3://ACCOUNT_ID-codedeploy-bundles/

CodeDeploy を使用して WordPress アプリケーションをデプロイする

CodeDeploy アプリケーションをデプロイします。

CodeDeploy アプリケーションバンドルとデプロイグループを取得したら、この RFC を使用してアプリケーションをデプロイします。

必須データ:

  • VPC-ID: 使用している VPC。これは以前に使用した VPC と同じである必要があります。

  • CodeDeployApplicationName: 以前に作成した CodeDeploy アプリケーションの名前を使用します。

  • CodeDeployDeploymentGroupName: 前に作成した CodeDeploy デプロイグループの名前を使用します。

  • S3Location (アプリケーションバンドルをアップロードした場所): S3Bucket: 以前に作成した BucketName、S3BundleTypeおよび S3Key: S3 ストアに配置したバンドルのタイプと名前。

  • ChangeTypeId および ChangeTypeVersion: このチュートリアルの変更タイプ ID は です。最新バージョンct-2edc3sd1sqmrbを確認するには、次のコマンドを実行します。

    aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=ct-2edc3sd1sqmrb
  1. CodeDeploy アプリケーションデプロイ CT の実行パラメータ JSON スキーマを現在のフォルダ内のファイルに出力します。例では DeployCDAppParams.json.

    aws amscm get-change-type-version --change-type-id "ct-2edc3sd1sqmrb" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > DeployCDAppParams.json
  2. 次のように JSON ファイルを変更します。コンテンツを削除して置き換えることができます。にはS3BucketBucketName以前に作成した を使用します。

    { "Description": "Deploy WordPress CodeDeploy Application", "VpcId": "VPC_ID", "Name": "WP CodeDeploy Deployment Group", "TimeoutInMinutes": 60, "Parameters": { "CodeDeployApplicationName": "WordPressCDApp", "CodeDeployDeploymentGroupName": "WordPressCDDepGroup", "CodeDeployIgnoreApplicationStopFailures": false, "CodeDeployRevision": { "RevisionType": "S3", "S3Location": { "S3Bucket": "ACCOUNT_ID.BUCKET_NAME", "S3BundleType": "zip", "S3Key": "wordpress.zip" } } } }
  3. CreateRfc の JSON テンプレートを現在のフォルダのファイルに出力します。例の名前は DeployCDAppRfc.json:

    aws amscm create-rfc --generate-cli-skeleton > DeployCDAppRfc.json
  4. DeployCDAppRfc.json ファイルを変更して保存します。コンテンツを削除して置き換えることができます。

    { "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-2edc3sd1sqmrb", "Title": "CD-Deploy-For-WP-Stack-RFC", "RequestedStartTime": "2017-04-28T22:45:00Z", "RequestedEndTime": "2017-04-28T22:45:00Z" }
  5. RFC を作成し、実行パラメータファイルと DeployCDAppRfc ファイルを指定します。

    aws amscm create-rfc --cli-input-json file://DeployCDAppRfc.json --execution-parameters file://DeployCDAppParams.json

    レスポンスで新しい RFC の RfcId を受け取ります。後続のステップの ID を保存します。

  6. RFC を送信します。

    aws amscm submit-rfc --rfc-id RFC_ID

    RFC が成功した場合、出力は受信されません。

アプリケーションのデプロイを検証する

WordPress デプロイパス: /WordPress を使用して、以前に作成したロードバランサーのエンドポイント (ELB CName) WordPress に移動します。例:

http://stack-ID-FOR-ELB.us-east-1.elb.amazonaws.com/WordPress

アプリケーションのデプロイをティアダウンする

デプロイを破棄するには、RDS データベーススタック、アプリケーションロードバランサー、Auto Scaling グループ、S3 バケット、および Code Deploy アプリケーションと group-six RFCs に対して Delete Stack CT を送信します。さらに、削除する RDS スナップショットのサービスリクエストを送信できます (10 日後に自動的に削除されますが、その間は少額のコストがかかります)。すべての のスタック IDsを収集し、以下の手順に従います。

このチュートリアルでは、AMS コンソールを使用して S3 スタックを削除する例を示します。この手順は、AMS コンソールを使用してスタックを削除する場合に適用されます。

注記

S3 バケットを削除する場合は、まずオブジェクトを空にする必要があります。

必須データ:

  • StackId: 使用するスタック。これは、左側のナビゲーションのリンクから入手できる AMS コンソールスタックページから確認できます。AMS SKMS API/CLI を使用して、AMS SKMS API リファレンスの を実行します。AWS Artifact Console のレポートタブを参照してください。 オペレーション (list-stack-summaries CLI の )。

  • このウォークスルーの変更タイプ ID は でct-0q0bic0ywqk6c、バージョンは「1.0」です。最新バージョンを確認するには、次のコマンドを実行します。

    aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=ct-0q0bic0ywqk6c

インライン作成

  • インラインで指定された実行パラメータ (インラインで実行パラメータを指定する場合は引用符をエスケープ) を使用して、create RFC コマンドを発行します。E

    aws amscm create-rfc --change-type-id "ct-0q0bic0ywqk6c" --change-type-version "1.0" --title "Delete My Stack" --execution-parameters "{\"StackId\":\"STACK_ID\"}"
  • RFC の作成オペレーションで返された RFC ID を使用して RFC を送信します。送信されるまで、RFC は Editing状態のままであり、 は動作しません。

    aws amscm submit-rfc --rfc-id RFC_ID
  • RFC ステータスをモニタリングし、実行出力を表示します。

    aws amscm get-rfc --rfc-id RFC_ID

テンプレートの作成

  1. RFC テンプレートを現在のフォルダ内のファイルに出力します。例名は DeleteStackRfc.json:

    aws amscm create-rfc --generate-cli-skeleton > DeleteStackRfc.json
  2. DeleteStackRfc.json ファイルを変更して保存します。スタックの削除には実行パラメータが 1 つしかないため、実行パラメータは DeleteStackRfc.json ファイル自体に含めることができます (実行パラメータを使用して別の JSON ファイルを作成する必要はありません)。

    ExecutionParameters JSON 拡張機能の内部引用符は、バックスラッシュ (\) でエスケープする必要があります。開始時刻と終了時刻のない例:

    { "ChangeTypeVersion": "1.0", "ChangeTypeId": "ct-0q0bic0ywqk6c", "Title": "Delete-My-Stack-RFC" "ExecutionParameters": "{ \"StackId\":\"STACK_ID\"}" }
  3. RFC を作成します。

    aws amscm create-rfc --cli-input-json file://DeleteStackRfc.json

    レスポンスで新しい RFC の RfcId を受け取ります。例:

    { "RfcId": "daaa1867-ffc5-1473-192a-842f6b326102" }

    後続のステップの ID を保存します。

  4. RFC を送信します。

    aws amscm submit-rfc --rfc-id RFC_ID

    RFC が成功した場合、コマンドラインに確認は送信されません。

  5. リクエストのステータスをモニタリングし、実行出力を表示するには:

    aws amscm get-rfc --rfc-id RFC_ID --query "Rfc.{Status:Status.Name,Exec:ExecutionOutput}" --output table