Amazon SQS:複数のジョブを連続実行する ( EC2インスタンスのスケールアップ )

現在、「ジョブワークフロー」という機能があり、簡単に複数のジョブを連続実行させることが可能になっております。詳しくはこちらをご覧ください
ジョブワークフローとは


「ジョブの SQS 後処理」と 「SQS トリガーのジョブ」を組み合わせて複数のジョブを数珠つなぎにすることで、例えば下記画像のように「EC2 インスタンスが停止」したことをきっかけに「EC2 インスタンスタイプの変更」をして、さらにその後に「EC2 インスタンスを起動」するという一連のアクションを自動化することができます。

以降、Amazon SQS のキューを SQS キュー と記載します。

 

_________.png

設定手順

「EC2: インスタンスを停止」アクション、「EC2: インスタンスタイプを変更」アクション、「EC2: インスタンスを起動」アクションを数珠つなぎで順番に実行する場合のジョブ設定手順です。

「EC2: インスタンスを停止」アクションのジョブを作成する

  1. 後処理の作成(SQS) を参考に、SQS 後処理を「SQS - インスタンスタイプを変更」と「SQS - インスタンスを起動」という名前で 2 つ作成します

    Note:
    SQS - インスタンスタイプを変更SQS - インスタンスを起動 の後処理を作成する際に指定する SQS キューは、それぞれ別のものを指定してください。


    【「SQS - インスタンスタイプを変更」後処理の設定例】

    sqs______1.png

    【「SQS - インスタンスタイプを起動」後処理の設定例】

    sqs______2.png
  2. Cloud Automator の運用ジョブ画面から「ジョブの追加」ボタンをクリックして、ジョブの追加画面へ遷移します
  3. ステップ 1 のトリガーの選択で、「HTTP トリガー」を選択します
  4. ステップ 2 のアクションの選択で「EC2: インスタンスを停止」アクションを選択します
  5. ステップ 3 の AWS アカウントの選択で任意の AWS アカウントを選択します
  6. ステップ 4 でアクションのパラメーターを設定します
    停止する対象の EC2 インスタンスを指定してください。

    Note:
    ここで「ジョブ実行後のリソースの状態までチェックする」オプションを有効にしなければ、EC2 インスタンスの停止が完了する前に後処理を実行してしまうため、必ず「ジョブ実行後のリソースの状態までチェックする」オプションを有効にしてください。
    sqs-20230905.png
  7. ステップ 5 でジョブの成功時に実行する後処理を設定します
    (1) の手順で作成した後処理の「SQS - インスタンスタイプを変更」を選択します

    sqs______3.png
  8. ステップ 6 でジョブ名を入力して「作成する」ボタンをクリックします

 

「EC2: インスタンスタイプを変更」アクションのジョブを作成する

続いて、「EC2: インスタンスを停止」アクションの実行が完了した後に実行する「EC2: インスタンスタイプを変更」アクションのジョブを作成します。

  1. Cloud Automator の運用ジョブ画面から「ジョブの追加」ボタンをクリックしてジョブの追加画面へ遷移します
  2. ステップ 1 のトリガーの選択で、「SQS トリガー」を選択します
  3. ステップ 2 でトリガーのパラメータを設定します
    Note:
    AWS アカウントリージョンキュー は「SQS - インスタンスタイプを変更」の後処理を作成した際に指定したものをそれぞれ選択してください。

    【ステップ 2 の設定例】

    sqs______4.png
  4. ステップ 3 のアクションの選択で「EC2: インスタンスタイプを変更」アクションを選択します
  5. ステップ 4 の AWS アカウントの選択で任意の AWS アカウントを選択します
  6. ステップ 5 でアクションのパラメーターを設定します
  7. ステップ 6 でジョブの成功時に実行する後処理を設定します
    (1) の手順で作成した後処理の「SQS - インスタンスを起動」を選択します

    sqs______5.png
  8. ステップ 6 でジョブ名を入力して「作成する」ボタンをクリックします

 

「EC2: インスタンスを起動」アクションのジョブを作成する

続いて、「EC2: インスタンスタイプを変更」アクションが実行完了した後に実行する「EC2: インスタンスを起動」アクションのジョブを作成します。

  1. Cloud Automator の運用ジョブ画面から「ジョブの追加」ボタンをクリックして、ジョブの追加画面へ遷移します
  2. ステップ 1 のトリガーの選択で、「SQS トリガー」を選択します
  3. ステップ 2 でトリガーのパラメータを設定します

    Note:
    AWS アカウントリージョンキュー は「SQS - インスタンスタイプを起動」の後処理を作成した際に指定したものをそれぞれ選択してください。

    【ステップ 2 の設定例】

    sqs______6.png
  4. ステップ 3 のアクションの選択で「EC2: インスタンスタイプを起動」アクションを選択します
  5. ステップ 4 の AWS アカウントの選択で任意の AWS アカウントを選択します
  6. ステップ 5 でアクションのパラメーターを設定します
  7. ステップ 6 で必要に応じて後処理を追加します
  8. ステップ 6 でジョブ名を入力して「作成する」ボタンをクリックします

 

ジョブを実行する

最後に動作確認として、数珠つなぎ設定をした最初のジョブである「EC2: インスタンスを停止」アクションのジョブを実行してみましょう。

  1. Cloud Automator の運用ジョブ一覧画面から、先ほど作成した「EC2: インスタンスを停止」アクションのジョブの詳細画面に遷移します
  2. ジョブ詳細画面の「実行サンプル」項目に記載されている curl コマンドを実行します

    sqs______7.png
  3. Cloud Automator の「実行ログ一覧」画面に移動します。
  4. すべてのジョブが完了するまでしばらく待つと、実行ログ一覧にログが表示されます
    「インスタンスを停止」、「インスタンスタイプを変更」、「インスタンスを起動」が順番通りに実行されていることが分かります。

    __________37.jpg

 

ジョブを数珠つなぎで連携するメリット

例えば、今回の例のように起動中のインスタンスのインスタンスタイプを手動で変更しようとすると、インスタンスを停止、インスタンスの停止を待つ、インスタンスタイプを変更、インスタンスを起動 という作業が発生しますが、Cloud Automator でジョブを数珠つなぎすることで上記一連の作業を最初のジョブを起動するだけで、その後の作業を自動化することができます。また、数珠つなぎする数に上限はないので、複雑なオペレーションも Cloud Automator を上手く使うことで実現することができます。

 

 

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください