概要
AWSを利用する際に何かしらの処理を動作する際、サーバーは必要不可欠です。最近では、AWSが提供する各サービスの機能が増えた事により、ユーザーのサーバー構築が不要で処理を動かすことも可能になりましたが、全ての機能が提供されているわけではない為、どうしてもサーバーの構築は切っても切れない存在です。
AWSが提供するサーバーサービスについて

AWSが提供するコンピューティングサービスとは
AWSでは、コンピューティングサービスとして、サーバーサービスのEC2、サーバーレスサービスのLambdaが主流となるサービスとして提供されています。各コンピューティングサービスの違いは、簡易的に説明すると、ユーザーがサーバーを構築するか、サーバーを構築しないかの違いです。使い分けとしては、常に何かしらの処理がある場合や、メンテナンスを行うためのサーバが必要な場合は、サーバを構築し、単純なバッチ処理だけを行う場合は、サーバレスサービスのLambdaを利用するケースが多いです。
AWSが提供するコンピューティングサービスについては、こちらのAWS公式サイトに記載されています。
Amazon EC2
EC2は、AWSが提供する仮想サーバーです。AMIを使用して、Linuxサーバー、Windowsサーバーを作成できます。EC2のログインは、SSHで接続する事はもちろんのこと、セッションマネージャーを利用して鍵認証なしにAWSコンソール上からセキュアにログインできます。
EC2については、様々な機能がありますが、その中でも重要な点を抜粋しました。
EC2の起動に起動テンプレートを利用する
起動テンプレートとは、EC2を起動する為のテンプレートです。起動テンプレートを使用することで、EC2の設定情報をテンプレート化する事ができ、EC2を新しく構築する際に一から設定せずに構築できます。起動テンプレートは、EC2を起動する為のAMIや設定情報をバージョン形式で管理する為、過去の設定に戻してEC2を起動する際は、過去のバージョンを指定してEC2を起動する事ができます。
スポットフリート機能について
スポットフリートとは、EC2の機能であり、指定したキャパシティを満たすようにスポットインスタンスを構成します。
スポットインスタンスとは、AWSの空き資源を使用して、インスタンスを安価に構築できるサービスです。AWSが条件に合ったスポットインスタンスを見つけ出し、EC2を起動できます。
但し、スポットフリートは、スポットインスタンスのスポット価額が高騰した場合、自動的にEC2を終了させる為、一時的にEC2を利用する場合や決められた時間にEC2を起動する場合に利用する場合が多いと思います。
AMIについて
Amazon マシンイメージ (AMI) は、AWS がサポート、管理するイメージ構成です。インスタンスの起動に必要なテンプレート(情報)を提供し、EC2作成時は、このAMIを使用して構築します。
また、AMIは、アカウント内問わず、指定したアカウントに共有する事が可能です。その為、開発環境と本番環境に同じ構成のEC2を構築したい場合にアカウント間でAMIを共有し、EC2を起動する事ができます。
EC2Rescue
EC2Rescueとは、EC2の機能で、EC2 Windows Server にて、インスタンスに問題、障害が発生した場合に、トラブルシューティングができるよう、ログを収集することができます。
プレイスメントグループ
プレイスメントグループとは、複数のインスタンスをグループ化して、耐障害性やパフォーマンスを向上させるサービスです。
プレイスメントグループに新規EC2インスタンスを追加する際は、インスタンスグループ全体を一旦停止する必要があります。
AutoScaling Group(ASG)
こちらは、EC2の機能ではありませんが、重要なサービスの為、紹介します。AutoScaling Groupとは、EC2のスケールを管理する機能です。例えば、下限キャパシティ1,上限キャパシティ1を設定すると、EC2が異常終了した際に新しく別EC2としてインスタンスを起動する事ができます。EC2を起動する際は、起動テンプレートを指定する必要があります。
また、EC2の異常停止を検知するだけでなく、ELBのヘルスチェックを指定する事で、ELBのヘルスチェックがunhealthyになった場合、自動でEC2を停止し、新しくEC2を立ち上げる事ができます。EC2を24H365D稼働させたい場合に利用できるサービスです。
AWS Lambda
Lambdaは、AWSが提供するサーバレスのコンピューティングサービスです。サーバーを必要とせず、Java、Go、PowerShell、Node.js、C#、Python、Ruby で記載したコードを実行できます。バッチ処理など常時サーバーの起動を必要せず、必要な時のみ処理を実行したいときに利用するサービスです。
例えば、LambdaからEC2に存在するスクリプトを実行する際は、Lambda上でAWS Systems ManagerRunCommandを呼び出し、RunCommandからEC2のスクリプトファイルを呼び出し、実行するような実装ができます。
また、ソースコードの記述方法については、Lambdaの機能で環境変数を定義できるため、コード内で頻繁に使用するパラメータがある場合は、環境変数にパラメータを定義し、コード内で呼び出すことが可能です。
Lambdaは、ソースコードの記述により、様々なAWS APIを呼び出し、処理を実装できます。Lambdaのきのうについて、重要な点を抜粋しました。
- プロビジョニングされた同時実行数を設定することで、レイテンシー(遅延)なしに関数をスケーリングして処理を動作させることができる。
- 関数を呼び出す際、同期的に呼び出すか非同期的に呼び出すかを選択できる。
– 同期呼び出し:Lambdaがイベントを受け取り、処理を1回行う。
– 非同期呼び出し:Lambdaがイベントを受け取ると、イベントをキューに入れて処理し、レスポンスを返す。呼び出し回数は0回から2回で調整ができる。(デフォルト設定では2回に設定)
Lambdaレイヤー
Lambdaレイヤーとは、Lambda関数で使用できるライブラリと依存関係を、他のLambda関数と共通化することができるサービスです。
カスタムランタイム
Lambdaのカスタムランタイム機能は、Lambdaでサポートされていない言語であってもLambdaで実行可能にする機能です。関数のセットアップコードの実行、環境変数からのハンドラー名の読み取り、LambdaランタイムAPIからの呼び出しイベントの読み取りが可能です。
クォータについて
Lambdaのクォータについて、重要な点は次の通りです。
- 同一アカウントのリージョン内において、Lambdaの同時実行数は1000。1000以上の同時実行回数を設定する場合は、AWSに依頼して、上限を引き上げする必要がある。
- 関数への呼び出しタイムアウトは15秒(15秒以上処理がかかるタスクの場合、ECSやEC2の利用を検討する)
上記を含むLambdaのクォータは、Lambdaの公式ドキュメントに記載されています。
Amazon EMR
EMRは、ビッグデータフレームワーク(Hadoop、Spark)の構築や運用、分散アプリケーションの実行を行うAWSサービスです。S3DistCPを使用することで、AWSバケット間、AWSアカウント間で大量のデータを移動することが可能です。
コメント