AWS RDS(1)Relational Database Serviceの概要

RDSとは

RDSは、AWS内でRDBSを簡単に設定、運用、スケールできるサービスで、データベースのセットアップやパッチ適用、バックアップなどの管理タスクを自動化している。対応しているRDBSは、Amazon AuroraMySQLMariaDBOracleMicrosoft SQL ServerPostgreSQLの6種類である。一部制限事項も存在するため、この制限事項とのトレードオフが許容できない場合は、EC2上でRDBSを稼働させることも検討する。

管理負荷を軽減

RDBSにわずか数分でアクセス可能で、CloudWatchによる監視にも対応しているため、パフォーマンスの問題を簡単に検出することが可能である。また、ソフトウェアのパッチが自動的に適用されるために、常に最新の状態が維持されている。

パフォーマンス

汎用(SSD)ストレージプロビジョンドIOPS(SSD)ストレージから選択することが可能である。

スケーラビリティ

最大32vCPUおよびRAM244GiBまで拡張することが可能で、数分以内にスケーリングすることができる。また、ストレージサイズも柔軟に拡大が可能で、稼働中にダウンタイムなしに最大16TBまでストレージの拡張を行うことができる。また、リードレプリカを使用(=Amazon AuroraMySQLMariaDBPostgreSQLのみ対応)することで、読み込み負荷の高い処理をスケールアウトすることができる。

可用性と耐久性

自動バックアップ機能によって自動的(=1日に1回)に、もしくは任意の時点のスナップショットを保存することもでき最大35日(デフォルトは7日間保持)まで保存可能。また、RDは、5分に1回トランザクションログを保存しているため、これを用いて新たなインスタンスを起動(ポイントインタイムディカバリ)が可能。マルチAZ配置オプションを使用することで、異なるAZのスタンバイインスタンスにデータを複製し、可用性を向上させることができ、ハードウェア障害が発生した場合には、自動でフェールオーバされる。DNSでCNAMEが書き換えられ切り替えには数分要する。なお、スナップショット実行時は、短時間I/Oが停止することに注意が必要

セキュリティ

KMSを使用してデータベースを暗号化することが可能。また、VPC上で稼働させることで独自のネットワーク上で外部と隔離された状態で稼働できる。

AWS SNS(2)モバイルプッシュ通知

モバイルプッシュ通知

AWS SNSは、モバイルデバイスのアプリケーションにプッシュ通知メッセージを直接送信できる。通知可能なサービスは、

  • Amazon Device Messaging (ADM)
  • iOS および Mac OS X 用の Apple Push Notification Service (APNS)
  • Baidu Cloud Push (Baidu)
  • Android 用 Google クラウドメッセージング (GCM)
  • Windows Phone 用 Microsoft プッシュ通知サービス (MPNS)
  • Windows プッシュ通知サービス (WNS)

である。

プッシュ通知サービスは、登録時にデバイストークンを返すため、SNSはこのデバイストークンを元にモバイルエンドポイントを作成しプッシュ通知を行う。モバイルプッシュ通知を行うためには以下の手順が必要となる。

  1. 認証情報を上記サービスに対して要求し認証情報を取得する
  2. トークンを上記サービスに対して要求しトークンを取得する
  3. プラットフォームアプリケーションオブジェクトを作成する
  4. プラットフォームエンドポイントオブジェクトを作成する
  5. メッセージを送信する

AWS SNS(1)Simple Notification Serviceの概要

Amazon SNSについて

Amazon SNSは、マネージド型のメッセージ発行/購読サービス。SNSは、発行者からのメッセージを受信し、LambdaやSQS、Email、SMSなどの購読者に対してこれらを送信することが可能である。SNSを使用するときは、その所有者としてトピックを作成し、発行者と購読者を定義するポリシーを策定する。

SNSの流れ

トピック名は他と識別できるユニークな名称であり、発行者はこのARNを利用してメッセージをこのトピックに送信する。購読者は、送信されたメッセージを購読するかどうか判断し、購読を許可した場合に全てのメッセージが受信可能となる。発行者は、各配信先ごとに異なるメッセージを送信することも可能である。トピックの所有者は、購読情報を全て削除(クリーンアップ)することも可能となっている。

SNSの機能とシナリオ

SNSは以下のようなシナリオで動作させることができる。

ファンアウト

発行者からのメッセージをSNSが複製することで、並列非同期処理が可能となるシナリオ。並行処理を行なったり、本番環境のデータをテスト環境に入力するために使用できる。

アラートの送信

アプリケーションやシステムからの出力に対してあらかじめ閾値を定めておき、それを超えた場合にメッセージが送信される。

EメールおよびSMSの送信

特定の購読者へEメールおよびSMSの送信する。

モバイルプッシュ通知

モバイルアプリケーションへ通知を送信する。

ポリシー

所有者は各トピックに対して、「どの購読者(=プリンシパル)がどの配信先(=リソース)を受信できるか。」「どの発行者(=プリンシパル)がメッセージの発行を行えるか」などのアクションを定めることができる。ポリシーのデフォルトは拒否であるため、許可を与えるためにはポリシーを明示しなくてはならない。また、ポリシーでは、リトライ回数や遅延時間等も指定することができる。

AWS S3(3)S3の概要

S3 (Simple Storage Service)とは

S3は、どこからの、どのような量のデータ(通常100バケットまで1ファイル5TBまで)でも保存と取得が可能なオブジェクトストレージ。データは3箇所以上のデータセンタへ自動複製され、
99.999999999% の耐久性を提供している。高い耐久性、可用性、スケーラビリティー、数多くのセキュリテイ機能を持つ。AWS AthenaやS3 Selectを用いることで簡単に、S3内のデータに対してビッグデータ解析を行うことが可能で、さまざまな方法でS3へのデータ転送を行うことができる。

S3には、S3 StanderdS3 Standerd(低頻度アクセス)S3(1ゾーン/低頻度アクセス)Amazon Glacierの4つのストレージが用意されている。S3(1ゾーン/低頻度アクセス)は、地震や洪水といった災害によるアベイラビリティーゾーンの物理的な損失時にデータを失う可能性がある。S3 Standerd(低頻度アクセス)とS3(1ゾーン/低頻度アクセス)は、他の手法で復元可能なデータや原本のコピーを保存する目的で使用する。VPCエンドポイントを用いることで、同一リージョンのVPC内からセキュアにファイル転送を行うことが可能である。また、複数の暗号化、監査ログ、バージョニングにも対応している。

S3は、キーバリュー型のストアであるので、フラットな構造であり、ディレクトリや階層構造は存在しない。フォルダやファイル名に相当するのがキーであり、スラッシュ文字によってディレクトリ構造のように見せることができる。

タイプ 堅牢性 備考
Standard 99.999999999% 3箇所以上にデータ複製
Standard(低頻度アクセス) 99.999999999% 安価だが読み出しに課金される
1ゾーン(低頻度アクセス) 99.99% 低い堅牢性。オブジェクト毎に指定可能。
Glacier 99.999999999% 取り出しに時間(3-5時間)とコストを要する

S3は、ファイルを複数のチャンクに分割して並列アップロードを行う、Multipart Uploadに対応している。ファイルサイズが100MBを超える場合は、このMultipart Uploadを使用することが奨励されている。AWS CLIでは、ファイルサイズによって自動判別されてこの機能が利用される。Glacierに格納されたデータの復元時には、迅速(Expedited)(=1-5分)、標準(Standard)(=3-5時間)、大容量(Bulk)(=5-12時間)の3種類が用意され、それぞれ実行単価が異なる。

また、静的なファイルをS3のみでホステイング可能なWEBサイトホスティング機能を有している。独自ドメインの指定クロスドメインCloudFrontとの連携なども可能。

セキュリティ

アクセス管理

S3はデフォルトでは全てプライベートアクセス権限となっている。アクセス権限は、バケットやオブジェクト単位で指定可能である。IAMユーザ単位でS3へのアクセス権限を指定できる「ユーザポリシー」(=IPアドレスも指定可能)、バケット毎にアクセス権限を指定できる「バケットポリシー」(=IPアドレスレンジやMFA等も指定可能)、バケットやオブジェクト単位で指定可能な「ACL」などが存在する。バケットポリシーは、バケットの所有者のみが設定でき、またACLは、バケットACLよりもオブジェクトACLが優先される。

暗号化

サーバサイド暗号化、クライアントサイド暗号化の両方に対応している。デフォルト暗号化を指定することも可能である。

Pre-signed Object URL

一定時間のみアクセスを許可するURLを発行できる。

通知

バケットにイベントが発生した際に、SNS、SQS、Lambdaに対して通知を行うことが可能。

モニタリング

CloudWatchとCloudTrailによるモニタリングが可能。

料金

通常ははストレージおよびデータ転送に掛かるコスト全ては、バケットの所有者が負担する。しかし、リクエスタ支払いバケットに指定した場合は、リクエストおよびバケットからのデータダウンロードに掛かるコストは、 所有者ではなくリクエストを実行したリクエスタが支払う

バージョニング

バージョニングが有効となったオブジェクトに対してDELETE処理を行った場合、全てのバージョンはストレージに残り削除マーカーが付加される。当該オブジェクトをGETしようとすると404 Not Foundが返されるが、オブジェクトバージョンを指定すると当該オブジェクトを取得可能である。

ライフサイクル

ライフサイクルと呼ばれる、オブジェクトに対するアクションルールをXMLにより規定できる。ライフサイクルによって、オブジェクトを異なるストレージクラスに移行したり、オブジェクトを削除したりすることができる。Glacierは削除や上書き、アーカイブリクエスト、復元に対して費用が発生する。ただし90日以上アーカイブされているオブジェクトに対する削除および上書きは無料である。

AWS(3)監視およびログサービス

AWS Configとは

AWS Configは、リソースごとの設定項目を生成し、履歴としてこれを保持するため、全ての変更を追跡することが可能で、AWSリソース間の関係と設定の履歴などを確認することができる。また、設定が最適であるかの評価設定のスナップショットの取得設定変更時の通知IAMポリシーの確認などを行うことが可能である。

設定項目は、S3バケットに蓄積することが可能で、データはJSON形式でS3に6時間ごとに送信される。また、リソースが変更されたタイミング等で、Amazon SNSを用いてEメール等で通知することも可能である。

設定履歴と設定項目、設定レコーダ

設定履歴は、特定期間の特定リソースに関する設定項目のコレクションである。設定項目は、アカウント内のサポートされているAWSリソースの属性を記録したものである。設定レコーダは、これらのリソースの設定を設定項目としてアカウントに保存する。

設定スナップショットと設定ストリーム

設定スナップショットは、設定項目のコレクションで記録対象のリソースの全体像を示す。また、設定ストリームは、これらの記録しているリソースの設定項目の自動更新リストを示す。

AWS Configの仕組み

AWS Configは、サポートされているAWSリソースを検出し、リソースごとに設定項目を生成し、その記録を履歴として保持する。Configはリソースごとに、DescribeもしくはListのAPIコールによって、リソースの全ての変更を追跡するConfigルールを利用することで、定期的にこのルールに照らして、リソースの設定の評価を行うことができる。

AWS Configルール

AWS Configルールは、各リソースの望ましい設定を確認することが可能で、事前に定義済みのルールが用意されている。また、各ユーザがカスタムルールを作成することも可能となっている。AWS Configは、このルールを参照して、現在の設定を評価する。

マネージドインスタンスの記録

AWS Configを用いて、EC2やオンプレミスサーバのソフトウェアインベントリの変更を記録可能である。

課金

記録される設定項目ごとに 0.003 USDの課金が発生し、これに加えてS3やSNSを使用する場合には、これらのサービスの使用料金が課金される。

AWS Cloudtrailとは

AWSサービスによって実行されたアクションを記録するサービス。この記録を基にAWS アカウントのアクティビティの分析を行い、これらに対応することが可能である。デフォルトで有効にされており、90日間のログが履歴として保持される。また、それ以上保持したい場合には、トレイル機能を用いて、S3やCloudWatch Logs等にイベント配信することも可能である。トレイルは、全リージョンに対して、もしくは特定のリージョンの情報のみを保持することが可能で、作成後に設定内容を変更することもできる。デフォルトではS3の暗号化機能を用いて暗号化され、アクションの15分以内にデータが送信される。

Cloudtrailイベントとトレイル

Cloudtrailイベントには、管理イベントとデータイベントの2種類が存在するが、トレイルにはデフォルトでは管理イベントのみが記録される

課金

デフォルトでは無料で90日間のログを保持しており、これに加えて1つのトレイル作成までは無料となっている。S3やSNSを使用する場合には、これらのサービスの使用料金が課金される。

AWS(2)セキュリティの概要

AWSのセキュリティ

ユーザのデータは、安全性が高いデータセンターに保存される。また、複数のコンプライアンス要件に準拠している。SOC1 ISAE 3402などの複数のITセキュリティ基準に対応しており、その状況は、AWS Articraftから参照することが可能となっている。

AWSのコンプライアンスとセキュリティは、高度な自動化と、高い可用性高度な認定によって実現されている。

責任共有モデル

AWSは、クラウドのセキュリティを管理する。具体的には、AWSはCPU、メモリなどの物理マシンをはじめとしたインフラストラクチャの保護を行う。一方、ユーザは、クラウド内のセキュリティを管理する必要がある。

AWSの組み込みセキュリティ

AWSは、データの暗号化やアクセス管理などのセキュリティサービスを提供しており、Trusted Advisorは、AWS ベストプラクティスに従ってリソースをプロビジョニングするのに役立つ、リアルタイムガイダンスを行う。また、AWS Inspectorは、自動化されたセキュリティ評価サービスで、AWS にデプロイしたアプリケーションのセキュリティとコンプライアンスを向上させることができる。EC2上にエージェントをインストールすることで診断可能となる。

AWS Shieldは、マネージド型の分散サービス妨害 (DDoS) に対する保護サービスで、追加料金なしで AWS Shield Standard の保護の適用を自動的に受けることができるAWS Shield Advancedは、大規模で洗練された DDoS 攻撃に対する追加の検出および緩和策と、ほぼリアルタイムの可視性を提供し、AWS WAFと統合されている。

AWS(1)AWSの概要とメリット

クラウドとは

クラウドとは、従量課金でWEB上からオンデマンド提供されるITリソースである。

AWSのメリット

AWSのメリットは、先行投資となる先行投資資本となるインフラコストを、ユーザのビジネス拡大にあわせた低額の変動費に移行できることである。また、スケールによる大きなコストメリットを享受することが可能で、自社環境よりも低い低額コストを実現できる。スケールアップおよびスケールダウンがわずか数分で実現できることから、キャパシティーの推測が不要となる。1クリックでITリソースを手に入れることが可能となるため、リソースを用意する時間が大幅に短縮され、組織の速度と迅速性が向上する。またこれらのことから、ユーザはデータセンターの運用や保守への投資が不要となり、ビジネスを差別化するプロジェクトに集中できる。また複数のリージョンに簡単にデプロイできることから、グローバル化も容易である。

グローバルインフラストラクチャ

リージョン

リージョンとは、世界中の物理的場所であり、リージョンに複数のアベイラビリティゾーン(AZ)が配置される。他のリージョンとは完全に分離されている

アベイラビリティゾーン(AZ)

独立したデータセンターで、冗長性ある電源とネットワーク、接続性を実現している。洪水の影響が及ばない場所に設置され、複数のTier1プロバイダに接続されている。各AZ間は低遅延リンクで接続されている。

サービス

AWSの各種サービスには、次の3つのサービスレベルがある。

種類 サービスの例
AZサービス EC2, RDS, ELB, ElastiCache
リージョンサービス S3, DynamoDB, SQS
グローバルサービス IAM, Route 53, Cloudfront

AWS導入の道のり

AWSを導入するためには、まず調査を行う。移行対象は非クリティカルなアプリケーションとし、セキュリティとユーザロール、VPCをセットアップ、開発/テスト環境をデプロイする。次に本番環境へアプリケーションを移行し、分析ワークロードをデプロイする。

本番環境に移行後に検討チームを結成し、プラットフォームの検討とAWSを拡張を行う。また、IT戦略を見直しクラウドに一致させる。また、DevOpsの導入オートメーションとコードリファクタリングを行う。

ベストプラクティス

AWSでは、オンプレミスとは異なるベストプラクティスが存在する。

  1. 故障に備えた設計で障害を回避
  2. コンポーネント間を疎結合で柔軟に
  3. 伸縮自在性を実装
  4. 全ての層でセキュリティを強化
  5. 制約を恐れない
  6. 処理の並列化を考慮
  7. さまざまなストレージの選択肢を活用

APNパートナーに提供されるサービス

APNパートナーは、AWSを導入する企業をサポートすることができる。APNパートナーには以下のツールが提供される。

AWSクイックスタート

人気の高いソリューションの AWS へのデプロイを支援するために、AWS ソリューションアーキテクトおよびパートナーによって構築されたもの

AWS コンピテンシープログラム

習熟した技術を持ち、専門的なソリューションエリアでお客様を成功させられることを実証した APN パートナーに付与

AWS Marketplace

AWSに最適化されたITおよびビジネスソフトウェアのカタログ

費用

AWSの費用体系は従量課金である。どの程度費用が掛かるかは簡易見積もりツールで計算できる。

総所有コスト

オンプレミス環境とクラウド環境の費用を比較する場合は、総所有コスト(TCO)を比較する必要がある。これは、購入と運用、撤去と廃止、機会コスト、サーバ、ストレージ、ネットワーク、人件費、機会コストなどを含む。施設のデフォルトコストは1ラックあたり月25万円+電気代とAWSでは考えている。総所有コストを計算し正しくオンプレミス環境とクラウド環境の費用を比較するためには、TCO計算ツールを利用する。

 

AWS EC2(6)Elastic Load Balancing

ELBとは

ELBとは複数のアベイラビリティゾーンのEC2インスタンスに負荷を分散させるロードバランサである。ELBには、Classic Load BalancerApplication Load BalancerNetwork Load Balancerの3種類が存在する。特段の理由がなければ、Clasic Load Balancerは使用せず、Application Load Balancer、Network Load Balancerを使用する。

ロードバランサは、登録されているEC2のうち正常なものだけを選んで負荷を分散する。Clasic Load Balancerは、EC2のインスタンスを直接登録するが、Application Load BalancerとNetwork Load Balancerは、ターゲットグループをまず生成し、その中にインスタンスを登録する形となる。クライアントから接続があった場合は、作成したリスナーがそれを確認し、EC2へとトラフィックをルーティングする。EC2にルーティングをクロスゾーン負荷分散を無効にしていると、インスタンスがどのようなバランスで配置されていたとしても、アベイラビリティゾーンの数で均等に配分されてしまうので注意が必要である。なお、Application Load Balancerでは、クロスゾーン負荷分散はデフォルトで有効になっている。

ロードバランサに紐付けられているドメイン名に紐づけられたIPアドレスは、負荷に合わせて動的に変化する。DNSエントリは、TTLが60秒に設定されている。内側のインスタンスとの通信では、EC2にKeep Aliveを設定しておくことが望ましい。

特徴

HTTPS

SSLの終端に対応している。また、同じIPアドレスには1つのドメインしか割り当てられないSSL/TLSを拡張し、複数のドメインに対応したSNIにも対応している。

 

 

 

Application Load Balancer とは

Application Load Balancerは、OSI参照モデルのレイヤー7で動作するロードバランサで、負荷に合わせて自動的にスケールする。HTTP/2やWebSocketに対応している。EC2でクライアントの送信先アドレスを取得するためには、x-forwarded-forヘッダフィールドを参照する。ALBが負荷に追従できずスケーリングが間に合わなかった場合は、503を返す。リクエストタイムアウト値は60秒

スティッキーセッション

ALB(およびClassic Load Balancer)では、スティッキーセッションを利用できる。ALBは、レスポンスにCookieを含め、 同一のCookieを受信した場合にはリクエストを同じターゲットに送信するターゲットグループ単位 で、スティッキーセッションを有効化できる。

アベイラビリティゾーン

ALBが対象とするアベイラビリティゾーンを有効化/無効化することができる。 無効化されたアベイラビリティゾーンのターゲットは、ALBに登録された状態のままであるが、トラフィックはルーティングされない

ルーティング

IPアドレスベースのルーティングに対応しているため、オンプレミス上の任意のサーバをターゲットとして指定することができる。また、Lambdaをターゲットにすることも可能。ホストベース、パスベース、ヘッダーベース、メソッドベースなどのコンテンツベースルーティングにも対応している。

ELB基本コンポーネント

Network Load Balancerとは

Network Load Balancerは、OSI参照モデルのレイヤー4で動作するロードバランサで、必要に応じて1つのElastic IPをサブネットごとに紐づけることができる。また、NLBを作成するときには耐障害性を向上させるために、複数のAZを有効にすることができる。ただし、NLB作成後にAZを有効化したり無効化したりすることはできない。また、割り当てたサブネットに1つ以上のターゲットが存在する必要がある。割り当てたサブネットには最低8個の利用可能なIPアドレスが必要となる。

送信元のIPアドレスを保持することが可能で、Pre-Warmingなしに急激なスパイク(数百万requests/秒)に対応可能。また、NGとなったAZのIPアドレスは自動的にDNSとの紐付けから削除されるなど高い可用性を持つ。

リスナーは、TCP 1-65535ポート、およびWebSocketに対応している。ログは、VPCフローログを利用する。

クロスゾーン負荷分散

NLBでクロスゾーン負荷分散を有効にすると、同一AZ(同一サブネット)のターゲットだけではなく、有効な全てのAZの登録済みのターゲットに対してトラフィックを分散することができる。

AWS Identity and Access Management(1)IAMの概要

AWS Identity and Access Management (IAM)とは

AWS IAMは、AWSをセキュアに使用するための認証認可の仕組み。UserやGroupを作成してパーミッションを付与することができる。AccessKey, SecretKeyの取り扱いは注意が必要で定期的な更新が望ましい。また、Rootアカウント(アカウントを作成したときのID)はIAMの設定するポリシーが適用されない強力なアカウントになるので極力使用しない。

IAMで作成したユーザでマネージメントコンソールにログインすることが可能で、ログインURLはIAM Dashboardより確認編集することが可能である。

安全なアカウント管理のために

安全にアカウントを管理するためには以下のような手法を講じることが望ましい。

  • ルートアカウントのアクセスキーを消去する
  • ルートアカウントをMFA認証にする
  • AWSが定期着したポリシーを利用する
  • ユーザにグループを割り当て、グループごとにポリシーを定義する
  • 最小限の権限のみを与える
  • EC2で動作するアプリケーションへは、アクセスキーではなくロールで権限を与える

セキュリティ監査

セキュリティ監査を実施することで高いセキュリティレベルを維持することができる。セキュリティ監査は、定期的もしくはユーザの増減があった際や、サービスの開始/停止時、不正アクセスが疑われる際などに推測を交えずに徹底的に行うと良い。

管理ポリシー

AWSアクセスへの管理権限をJSON形式で指定することが可能である。条件(Condition)は、項目を連ねた場合はAND、項目内で条件を連ねた場合はORとして扱われる。全てのアクセスはデフォルトで拒否、Allowが指定されれば許可、Denyが指定されれば明示的な拒否として扱われる。

分類 項目例 内容
Effect Allow or Deny 許可設定であればAllow, 拒否設定であればDeny
Action s3:createBucket 操作の指定、ワイルドカードも使用可能
Resource arn:aws:s3:::mybucket service:region:account:resouceの順で記述する
Condition “IPAddress”: {“AWS:SourceIP”: “192.168.0.1”} 条件を指定する

IAMロール

AWSサービスに対してAWSアクセスの管理権限を付与する仕組み。UserやGroupには紐付かない。例えばEC2からDynamoDBやS3にアクセスする場合は、EC2上にCredentialを置くのではなくインスタンス作成時に適切なIAMロールを紐付ける。EC2へのIAMロールの紐付けは、インスタンス作成時のみ可能であることに注意が必要である。

AWSCredentialsProvider

AWSの各サービスにアクセスするプログラムをEC2上で動作させる場合に、認証情報をCredentialsから取得するのか、IAMロールから取得するのか選択することができる。Credentialsから取得する場合はProfileCredentialsProviderを、IAMロールから取得する場合はInstanceProfileCredentialsProviderクラスを使用する。

// Credentialsから取得する場合
AWSCredentialsProvider credentialsProvider = new ProfileCredentialsProvider();

// IAMロールから取得する場合
//
// 引数(refreshCredentialsAsync)をtrueにすると認証情報を非同期に更新する新しいスレッドが生成される
// falseにすると認証情報の更新は、インスタンスメタサービスに合わせられる
AWSCredentialsProvider credentialsProvider = new InstanceProfileCredentialsProvider(true);

// 認証情報の取得
credentialsProvider.getCredentials();

STS(AWS Security Token Service)

AWSには、STS(AWS Security Token Service) と呼ばれる一時的に認証情報を付与するサービスが存在し、動的にIAMユーザを作成することができる。IAM Role for EC2はこの仕組みを利用している。有効期限は数分から数時間に設定可能である。

AWS CloudWatch(1)CloudWatchの概要

CloudWatchとは

CloudWatchは、AWSの各リソースを監視することのできるサービスである。AWSでシステム構築を行う場合、基本的にはこのCloudWawtchのみの監視で十分なことが多く、Zabbixなどの他の監視環境を構築する必要がない。フルマネージドのサービスの場合は自ら監視環境を構築することができないため、CloudWatchによる監視が必須となる。また、CloudWatch Logsを用いることで、各リソースのLogデータをCloudWatchで監視することが可能になる。CloudWatch Logsは、ログデータを無期限で保存する

CloudWatchの概要

CloudWatchは、NameSpace(AWS/service)と呼ばれるAWSサービス単位の項目とMetricsと呼ばれる時系列のデータポイントセットから構成され、これらを組み合わせて指定することで任意の項目を確認することが可能となる。CloudWatch上のデータ(CloudWatch Logsのデータを除く)は削除することはできず、15ヶ月経過したデータポイントは自動的に削除される。データポイントに付随するタイムスタンプは、UTC時刻であることが望ましく、データの更新間隔は最短1分となっている。

開発環境か本番環境か、実行しているリージョンはどこかなど、同じMetricsであっても環境によってデータが異なる。同一名称のMetricsの中から特定のMetricsを一意に識別するためにDimentionと呼ばれる名前と値のペアを持つことができる。CloudWatchは、ソースが異なっていてもNameSpaceとMetricsが同一のMetricsは1つのMetricsとして扱う

データポイントの種類 保持期間
60秒間隔未満 3時間
1分 15日間
5分 63日
1時間 455日

アラームを使用することで、単一のMetricsを監視し、一定期間における閾値とMetrics値に応じてアクションを実行することができる。アクション機能を用いることで、各アラームに対する通知やAutoRecovery, AutoScaleなどのアクションを規定することも可能である。

CloudWatch Agent

統合 CloudWatch エージェントを使用することで、EC2やオンプレミスサーバからより多くのメトリクスを取得することができる。例えば、通常のCloudWatchでは計測できないサーバのメモリ量ディスク量などのメトリクスを追加で取得できる。また、メトリクスだけでなくサーバ内のログを収集して、CloudWatch Logsに送信することもできる。

EC2には、デフォルトではCloudWatchエージェントはインストールされていないため、Systems ManagerやCloudFormationなどを用いて追加でインストールする必要がある。なお、過去にはCloudWatch Logs エージェントが使用されていたが、現行バージョンは統合 CloudWatch エージェントであるため、特段の理由がなければ統合 CloudWatch エージェントを使用する。