【AWS初心者が理解する】 ワークフローをまとめてみた

AWS SAP ワークフローアイキャッチAWS
この記事は約7分で読めます。

概要

システムの世界では、プログラムというものが存在します。プログラムは、様々な処理を実装する事に役立つものです。これは、AWSを利用するにあたっても必要であり、AWSを利用して、コンソールからポチポチ押して、リソースを構築するだけで処理が動くものもありますが、要件に合わせてより詳細に処理を動かそうとすると、プログラムの設計構築が必要になります。

例えば、毎日24時にS3保管のファイルを参照して、計算するバッチ処理を実現する場合、AWS利用者の方であれば、Lambdaで処理を実装する事を考えます。また、このような処理を実現するにあたっても「S3からファイル情報を取得する処理」「ファイルの情報を計算する処理」「S3からファイルが参照できなかった時のエラー処理」など、複数の処理を組み合わせて、バッチ処理を実現します。

このような複数の処理を組み合わせたバッチ処理のような処理は、大規模のシステムだと複数の処理がある為、どのフェーズで処理が失敗したか、この処理はどのような処理で構築したかなど、管理する事が大変になります。

AWSでは、そのような複数処理を管理する為にワークフローサービスを提供しています。本記事では、AWS初心者用にわかりやすくまとめてみました。

AWSが提供するワークフローサービスについて

AWSワークフローの学習

AWSのワークフローサービスとは

初めに、AWSのワークフローサービスとは、どのようなサービスでしょうか。具体的には、一連の処理をプロセスのステップごとに実行していき、処理(仕事)を完了するサービスとなります。

例えば、銀行のATMからお金を引き出す処理の場合、「管理画面」から「引き出し」ボタンを押し、「金額」や「パスワード」を入力する必要があります。これらは、各フェーズの複数の処理を組み合わせ、お金を引き出していることになります。

また、銀行の各処理をそれぞれ一つのLambdaで実装する場合、ATMの引き出し処理だけで複数のLambdaを構築する事になります。これらのLambdaを管理する事は大変で、1つLambdaでエラーが発生し、処理が止まっていると、どのLambdaで処理が止まっているか探すのに苦労します。

ワークフローサービスとは、これらの一連のLambda処理を一つのワークフローとして管理することで、複数処理の複雑な管理を簡素化する事ができます。

AWSワークフローサービスの詳細

では、具体的にAWSのワークフローサービスはどのようなサービスがあるでしょうか。各AWSワークフローサービスを紹介していきましょう。

  AWS Step Functions

Step Functionsは、AWSが提供するマネージドサービスであり、分散アプリケーション、マイクロサービスのコンポーネントの疎結合化を可能にするAWSのマネージドサービスです。ステートマシンの機能により、ステップごとにタスクを実行、管理できるワークフローサービスです。

  AWS Step Functions のワークフロータイプについて

AWS Step Functionsのワークフロータイプは、標準ワークフローとExpressワークフローの2種類存在します。各ワークフロータイプの違いを紹介します。

標準ワークフロー

基本的なワークフロー機能を提供する。処理された状態遷移の数に応じて請求される。

Expressワークフロー

IoT データの取り込み、ストリーミングデータの処理と変換、大量のマイクロサービスオーケストレーションなどの大量のイベント処理ワークロードに適しています。

  Amazon Simple Workflow Service(SWF)

次に、Amazon SWFを紹介します。こちらのマネージドサービスは、開発者が並行したステップまたは連続したステップがあるバックグラウンドジョブを構築、実行、スケールするマネージドサービスです。

先ほどご紹介したAWS Step FunctionsとSWFの違いは、公式ドキュメントに記載されておりますが、基本的にプロセス内に外部信号からの介入をするような複雑な処理はSWFを利用し、LambdaやSNS、EC2など、AWSサービスの処理をワークフローで管理する際は、AWS Step Functionsの使用が推奨されてるようです。

  SWFの機能について

SWFは、シグナル、マーカー機能、様々な機能を利用する事で、ワークフローを管理します。それぞれの機能の役割について、ご紹介します。

シグナル

SWFがシグナルを受信すると、ワークフローの履歴に記録し、その履歴を元にタスクを実行する事ができます。

マーカー

SWFがシグナルを受信する事で記録した履歴に対し、マーカーを設定する事で、シグナルに対するイベント実行が可能となります。

タグ

SWFの実行リストをフィルタリングし、管理する事が可能です。

  AWS OpsWorks

Chef や Puppet などで、事前に定義した設定ファイルに基づき、自動的にサーバーのパッチ適応、アップデート、バックアップなどが可能となるAWSの構成管理サービスです。

  OpsWorksの機能について

OpsWorksの基本的な機能については、以下の通りです。

スタック

AWS リソースのコンテナを提供する。

レイヤー

スタックのコンポーネントを提供する。

レシピ

追加のパッケージのインストールを提供する。

自動ヒーリング

OpsWorksの実行に失敗した際、自動的にヒーリングする機能。EC2にヘルスチェックを行い、不合格の場合、EC2を再起動するが、EC2 ヘルスチェックに合格した場合でも、スタック内にある異常なインスタンスや失敗したインスタンスがある場合は、再起動する。スタックのレイヤー設定では、自動ヒーリングがデフォルトで有効化されている。自動ヒーリングが有効状態のとき、ポータルのダウンタイムを回避する為に、失敗したEC2インスタンスは自動的に置き換えられる。

ライフサイクルイベント

Setup→インスタンスの起動が終了した後で発生する。Shutdown→インスタンスをシャットダウンするよう指示。終了する前に発生する。

  補足

OpsWorksで実行できる機能について、以下にまとめております。

  • スタックレイヤーで実行するコードのデプロイツールにCodePipelineを使用できる 
  • インスタンスが依存するAWS OpsWorksの外部リソースが編集または削除された場合に以下のエラーが発生する

“Aws::CharlieInstanceService::Errors::UnrecognizedClientException -The security token included in the request is invalid. “

  • OpsWorksはインスタンスがオンライン状態になるか、オフラインになるたびに割り当てられたELBを再設定する

  AWS Systems Manager

AWS でインフラストラクチャを制御する為に使用できるAWSサービスです。

具体的には、手動及びスケジュールに基づき、パッチスキャン及びパッチ実行が可能。(パッチ適応は、AWSが提供するドキュメントに基づき実行できる)

また、EC2にSSHキーを使わずログイン可能な Session Manager の機能を提供する。

その他にも各AWSサービスのインフラストラクチャを管理する機能を提供する。

  AWS Systems Managerの機能について

Systems Managerの機能について、紹介します。

エージェントを利用したログ収集
  • インスタンスのメトリクスとログを収集及びオンプレからのメトリクスを収集するには、CloudWatch エージェント を使用する。
  • AWS Systems Manager エージェントから取得した情報をCloudWatchイベントを使用して自動化タスクとワークフローに関する通知を受け取ることができる
Systems Manager Patch Managerのパッチ適応順序
  1. OS環境に応じたタグ設定
  2. パッチグループ作成
  3. 適応
AWS Systems Manager Automation

AWS Systems Managerオートメーション機能により、Amazon EC2 インスタンスおよび他のAWSリソースの一般的なメンテナンスとデプロイのタスクを簡素化することができる。

例えば、EC2インスタンスに障害が発生した際、 Systems Managerオートメーション機能を利用する事で、自動修復を実行する事ができます。

AWS Systems Manager Run Command

AWS Systems Manager Run Commandを実行する事で、インスタンスに対して、要塞ホストやSSH接続することなくアクションを実行する事ができます。

例えば、CloudWatch、AWS Lambda、および障害のあるEC2インスタンスを自動的に監視および復旧する監視システムを設定できます。

コメント