AWS勉強備忘録4 - AWSアカウント、リージョン、Cloudwatch、EC2

## AWSの概要

AWSは、クラウドコンピューティングプラットフォームであり、サーバーやストレージ、ネットワーキング、データベース、分析、アプリケーションサービスなど、多種多様なサービスを提供しています。最大の特徴は、**オンデマンド**でリソースを利用でき、「必要なものを必要な時に必要なだけ」使える柔軟性があります。これにより、ユーザーはインフラの過剰な前投資を避けつつ、ビジネスの成長や変化に合わせて容易にスケールアップ・ダウンが可能です。

## サービスの組み合わせ

AWSでは、複数のサービスを組み合わせて使用することが一般的です。例えば、Amazon EC2（Elastic Compute Cloud）でアプリケーションをホストし、Amazon S3（Simple Storage Service）でデータを保存し、Amazon RDS（Relational Database Service）をデータベースとして使用することができます。これにより、開発者はアプリケーション構築に必要な各コンポーネントを柔軟に、かつ簡単に組み合わせて利用できます。

## AWSアカウントとRootユーザー

AWSアカウントは、AWSサービスを使用するためのアカウントであり、アカウント内でリソースを作成し管理します。**Rootユーザー**はアカウントの所有者であり、アカウントに対する全権限を持っています。Rootユーザーは非常に強力な反面手違いが生じたり乗っ取られたりすると非常に危険なため、日常のタスクにはIAM（Identity and Access Management）ユーザーを使用し、Rootユーザーは必要最小限に利用することが推奨されます。

## リージョンの選択

AWSは世界中に多数のリージョンを設けています。リージョンを選択する主な理由は、**遅延の低減**、**法規制の遵守**、および**可用性の向上**です。例えば、ユーザーが日本にいる場合、東京リージョンを選択することで、データ転送の遅延を最小限に抑えることができます。また、特定の国のデータ保護法を遵守する必要がある場合、その国内、または法的要件を満たすリージョンを選択します。

## AWS CLIとマネジメントコンソール

AWS CLI（コマンドラインインターフェイス）とマネジメントコンソールは、AWSリソースを管理するための2つの主要なインターフェイスです。**マネジメントコンソール**はウェブベースのグラフィカルインターフェイスで、直感的な操作が可能です。一方、**AWS CLI**はコマンドラインからAWSサービスを操作するためのツールであり、スクリプトや自動化に適しています。

## グローバルサービス

AWSには、リージョン固有のサービスとグローバルサービスがあります。グローバルサービスの例としては、Amazon Route 53（DNSサービス）、Amazon CloudFront（CDNサービス）があります。これらのサービスは、世界中のユーザーに低遅延でサービスを提供したり、グローバルな可用性と耐障害性を提供するために存在します。

## IAMポリシー

IAMポリシーは、AWSリソースへのアクセス許可を定義するためのドキュメントです。これにより、特定のユーザーやグループ、またはロールに対して、特定のAWSサービスやリソースへのアクセス権を細かく設定できます。例えば、特定のS3バケットへの読み取り専用アクセスを特定のユーザーにのみ許可するポリシーを作成することができます。これにより、セキュリティを強化しながら、必要な権限のみをユーザーに付与することができます。

AWSを学ぶ過程でこれらの概念を深く理解することは、クラウドインフラストラクチャを効果的に設計し、管理する能力を高めるために非常に重要です。


## Amazon CloudWatch

Amazon CloudWatchは、AWSリソースとアプリケーションをリアルタイムでモニタリングするためのサービスです。このサービスを使用することで、システム全体のパフォーマンス、運用状況、およびリソースの使用状況を視覚化し、理解することができます。主な機能としては、以下があります。

- **メトリクスの収集と監視**: EC2インスタンス、RDSデータベース、DynamoDBテーブルなど、さまざまなAWSリソースからパフォーマンスメトリクスを自動的に収集します。
- **アラーム**: 特定のメトリクスが定義した閾値を超えたときに通知や自動アクションをトリガーします。
- **ログデータのモニタリング**: アプリケーションのログデータを監視し、特定のキーワードやパターンが見つかったときにアラートを発することができます。
- **カスタムダッシュボード**: リソースやアプリケーションの監視データを一元的に表示するカスタマイズ可能なダッシュボードを作成できます。

## Amazon CloudWatch Logs

Amazon CloudWatch Logsは、Amazon CloudWatchの一部であり、アプリケーションやシステムのログデータを簡単に監視、格納、アクセスできるサービスです。このサービスを利用することで、ログデータのリアルタイムモニタリング、長期保持、ログデータの検索が可能になります。特に、以下のような用途に有効です。

- **ログデータの集中管理**: 複数のアプリケーションやサーバーからのログを一箇所で収集、分析できます。
- **リアルタイムモニタリング**: ログデータに基づいてメトリクスを生成し、異常な動作やエラーをリアルタイムで検出できます。
- **ログ保持ポリシー**: ログデータの保持期間を設定でき、不要なデータは自動的に削除されます。

## AWS Billing and Cost Management

AWS Billing and Cost Managementは、AWSの利用料金とコストを管理するためのツールセットです。このサービスを使用することで、AWSの支出を詳細に把握し、コストを効果的に管理できます。主な機能としては以下があります。

- **請求ダッシュボード**: 現在の支出と過去の請求額を一目で確認できます。
- **コストエクスプローラー**: コストと使用状況の詳細な分析が可能で、過去と現在のデータを比較してトレンドを把握できます。
- **バジェット**: 予算を設定し、コストが予算を超えた場合にアラートを受け取ることができます。
- **料金アラート**: 特定のサービスの使用料が閾値を超えたときに通知を設定できます。

メリットとしては、コストの可視化と予算管理を通じて、予期せぬ高額な請求を防ぎつつ、AWSリソースの利用効率を最適化できる点が挙げられます。また、コスト削減の機会を特定し、よりコスト効率の良いアーキテクチャの設計に役立てることができます。

これらのサービスを利用することで、AWSリソースの監視、ログ管理、およびコスト管理を効果的に行うことができ、安全かつコスト効率の良いクラウド環境を維持することが可能になります。

## 補記
### 予算を超えた際、自動で停止させることは可能か

AWSのコスト管理に関して、特定の予算を超えた際にサービスを自動的に停止させる機能は、AWSの標準機能としては直接提供されていません。しかし、AWSの機能を組み合わせることで、このような自動化を実現することは可能です。たとえば、AWS Budgets で予算アラートを設定し、そのアラートをトリガーとして Amazon CloudWatch Events（現在はAmazon EventBridgeとして知られています）を使用し、Lambda関数を呼び出して特定のリソース（例：EC2インスタンス）を停止する、といった自動化が考えられます。ただし、このような自動化を設定する際には、サービスを停止することによる影響を十分に考慮する必要があります。

### EC2に関してはどういう場合に費用が発生するか

Amazon EC2（Elastic Compute Cloud）の費用は、主に以下の要素に基づいて発生します。

1. **インスタンスの稼働時間**: EC2インスタンスが起動している時間に基づいて費用が発生します。インスタンスを停止状態にしている間は、インスタンス使用料は発生しませんが、付随するEBS（Elastic Block Store）ストレージの費用は継続して発生します。

2. **インスタンスタイプ**: EC2インスタンスはさまざまなサイズと性能レベルで提供されています。インスタンスタイプによってCPU、メモリ、ストレージ、ネットワーキングのキャパシティが異なり、それぞれの価格も異なります。

3. **データ転送**: AWS内、あるいはインターネットへのデータ転送量によっても費用が発生します。AWS間のデータ転送や特定の方向へのデータ転送は無料の場合もありますが、一定量を超えるデータ転送やインターネットへのデータ送信では追加料金がかかります。

4. **追加ストレージ**: EC2インスタンスに接続されるEBSボリュームや、一時的なデータに使用されるインスタンスストアボリュームに対しても、使用量に応じて費用が発生します。

5. **その他のサービス利用料**: EC2インスタンスと組み合わせて使用するAWSサービス（例: Elastic Load Balancing, Amazon RDS）に対しても、それぞれのサービス利用料が発生します。

### 通信量とリクエスト量について

EC2の費用は、通信量（データ転送量）に基づいて発生する部分がありますが、リクエスト量自体は直接の課金対象ではありません。ただし、Amazon S3のようにリクエスト数に基づいて費用が発生するサービスもあります。EC2では、インスタンスが稼働している時間とデータ転送量が主な課金要素です。

コスト管理とコントロールは、AWSを使用する際の重要な要素です。コストが予算を超えないように監視し、適切にリソースを管理することが必要です。また、AWS Free Tierを活用することで、小規模な使用量であればコストを抑えることも可能です。