AWS Certified Solutions Architect – Associate(SAA-C03)の勉強がてら、出題範囲の内容をまとめる機会がありましたので以下のようにまとめを掲載します。
広く浅くの内容になるので本記事だけで合格は難しいと思いますが、用語や概要をさっと復習したい場合などにご活用ください。
1. AWSの基礎
クラウドコンピューティングの概念
クラウドコンピューティングとは、インターネットを通じてコンピューティングリソース(サーバー、ストレージ、データベース、ネットワーキング、ソフトウェアなど)をオンデマンドで利用できるサービスモデルです。AWSはこのクラウドコンピューティングの主要なプロバイダーの一つです。
クラウドコンピューティングの主な特徴:
- オンデマンド性:必要な時に必要な分だけリソースを利用できる
- スケーラビリティ:需要に応じて簡単にリソースを拡張・縮小できる
- 従量課金制:使用した分だけ支払う
- 高可用性:複数の地理的位置にデータを分散して保存し、障害に強い
- セキュリティ:最新のセキュリティ対策を常に提供
AWSのグローバルインフラストラクチャ
AWSのグローバルインフラストラクチャは、世界中に分散された高性能なデータセンターのネットワークです。これにより、ユーザーは地理的に近い場所からサービスを利用でき、低レイテンシーと高可用性を実現しています。
リージョンとアベイラビリティーゾーン
リージョン
リージョンは、AWSの主要な地理的拠点です。各リージョンは完全に独立しており、複数のアベイラビリティーゾーンで構成されています。
リージョンの特徴:
- 世界中の主要な地域に配置(例:東京、シドニー、フランクフルトなど)
- データの主権やコンプライアンス要件に対応
- 異なるリージョン間でデータを複製することで、災害対策が可能
アベイラビリティーゾーン(AZ)
アベイラビリティーゾーンは、各リージョン内の独立したデータセンターです。
アベイラビリティーゾーンの特徴:
- 各リージョンに通常3つ以上のAZが存在
- 物理的に分離されているが、高速ネットワークで接続
- 一つのAZで障害が発生しても、他のAZは影響を受けない
AZの活用例:
リージョン:東京
├── AZ-a:東京都内のデータセンターA
├── AZ-b:神奈川県のデータセンターB
└── AZ-c:千葉県のデータセンターC
このような構成により、一つのAZで災害や障害が発生しても、他のAZでサービスを継続できます。
AWSのグローバルインフラストラクチャを理解し、適切にリージョンとAZを選択・利用することで、高可用性と耐障害性の高いシステムを設計することができます。これは、AWS認定ソリューションアーキテクト – アソシエイト試験において重要なトピックの一つです。
2. コンピューティングサービス
Amazon EC2
Amazon Elastic Compute Cloud (EC2) は、AWSのクラウド上で仮想サーバーを提供する中核的なサービスです。EC2インスタンスは、さまざまな用途に合わせてカスタマイズ可能で、オンデマンドで起動・停止できます。
主な特徴:
- 多様なインスタンスタイプ (汎用、コンピューティング最適化、メモリ最適化など)
- 複数の購入オプション (オンデマンド、リザーブド、スポットインスタンス)
- Amazon Machine Image (AMI) を使用した簡単なデプロイ
- セキュリティグループによるネットワークアクセス制御
Auto Scaling
Auto Scalingは、アプリケーションの需要に応じてEC2インスタンスの数を自動的に調整するサービスです。これにより、パフォーマンスを維持しながらコストを最適化できます。
主な機能:
- 需要に応じたインスタンス数の自動調整
- スケジュールベースのスケーリング
- 予測スケーリング (機械学習を使用した需要予測)
- ヘルスチェックと自動置換
設定例:
aws autoscaling create-auto-scaling-group \
--auto-scaling-group-name my-asg \
--launch-template LaunchTemplateName=my-launch-template,Version='$Latest' \
--min-size 1 \
--max-size 3 \
--desired-capacity 2 \
--vpc-zone-identifier "subnet-12345678,subnet-87654321"
ELB (Elastic Load Balancing)
ELBは、複数のEC2インスタンス間でトラフィックを分散させるサービスです。アプリケーションの可用性と耐障害性を向上させます。
ELBの種類:
- Application Load Balancer (ALB)
- HTTP/HTTPSトラフィック向け
- パスベースルーティング、ホストベースルーティングをサポート
- Network Load Balancer (NLB)
- TCP/UDP/TLSトラフィック向け
- 超高性能、低レイテンシー
- Classic Load Balancer (CLB)
- 旧世代のロードバランサー
- HTTP/HTTPS/TCPトラフィックをサポート
ALBの設定例:
aws elbv2 create-load-balancer \
--name my-alb \
--subnets subnet-12345678 subnet-87654321 \
--security-groups sg-12345678 \
--scheme internet-facing
ELBとAuto Scalingを組み合わせることで、高可用性と自動スケーリングを実現できます。これにより、トラフィックの変動に柔軟に対応しながら、効率的なリソース利用が可能になります。
3. ストレージサービス
AWSは様々なストレージサービスを提供しており、それぞれ異なる用途や特性を持っています。ここでは主要な3つのストレージサービスについて解説します。
Amazon S3 (Simple Storage Service)
Amazon S3は、高い耐久性、可用性、スケーラビリティを持つオブジェクトストレージサービスです。
主な特徴:
- データをオブジェクトとして保存
- 無制限に近い容量
- 99.999999999%の耐久性
- バージョニング機能
- ライフサイクル管理
- 暗号化オプション
使用例:
- 静的ウェブサイトのホスティング
- バックアップとアーカイブ
- ビッグデータ分析
基本的な操作:
# バケットの作成
aws s3 mb s3://my-bucket
# オブジェクトのアップロード
aws s3 cp myfile.txt s3://my-bucket/
# オブジェクトのダウンロード
aws s3 cp s3://my-bucket/myfile.txt ./
Amazon EBS (Elastic Block Store)
Amazon EBSは、EC2インスタンスにアタッチして使用する永続的なブロックストレージサービスです。
主な特徴:
- EC2インスタンスに直接アタッチ
- 高い耐久性と可用性
- スナップショット機能
- 暗号化オプション
- 複数のボリュームタイプ(gp2, gp3, io1, io2, st1, sc1)
使用例:
- データベースの保存
- ファイルシステム
- アプリケーションのデータ保存
基本的な操作:
# ボリュームの作成
aws ec2 create-volume --volume-type gp2 --size 100 --availability-zone us-west-2a
# ボリュームのアタッチ
aws ec2 attach-volume --volume-id vol-1234567890abcdef0 --instance-id i-01234567890abcdef0 --device /dev/sdf
# スナップショットの作成
aws ec2 create-snapshot --volume-id vol-1234567890abcdef0 --description "My snapshot"
Amazon EFS (Elastic File System)
Amazon EFSは、複数のEC2インスタンスから同時にアクセス可能な、フルマネージドのNFSファイルシステムです。
主な特徴:
- 自動でスケーリング
- 複数のAZにまたがる高可用性
- 同時に複数のEC2インスタンスからアクセス可能
- NFSv4プロトコルをサポート
- 暗号化オプション
使用例:
- ビッグデータ分析
- コンテンツ管理
- ウェブサービング
基本的な操作:
# ファイルシステムの作成
aws efs create-file-system --performance-mode generalPurpose --throughput-mode bursting
# マウントターゲットの作成
aws efs create-mount-target --file-system-id fs-12345678 --subnet-id subnet-12345678 --security-groups sg-12345678
# EC2インスタンスへのマウント
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-12345678.efs.us-west-2.amazonaws.com:/ /mnt/efs
4. ネットワーキングとコンテンツ配信
AWSのネットワーキングとコンテンツ配信サービスは、クラウドインフラストラクチャの重要な部分を構成します。この章では、主要なサービスであるAmazon VPC、Amazon Route 53、Amazon CloudFrontについて詳しく説明します。
Amazon VPC (Virtual Private Cloud)
Amazon VPCは、AWSクラウド内にプライベートな仮想ネットワークを作成するサービスです。VPCを使用することで、ユーザーは自身のデータセンターで運用しているような論理的に分離されたネットワーク環境をAWS上に構築できます。
主な特徴:
- IPアドレス範囲のカスタマイズ
- サブネットの作成と管理
- ルートテーブルによるトラフィック制御
- セキュリティグループとネットワークACLによるセキュリティ強化
- VPNやAWS Direct Connectを使用したハイブリッドクラウド構成
VPCの設定例:
aws ec2 create-vpc --cidr-block 10.0.0.0/16
aws ec2 create-subnet --vpc-id vpc-1234567890abcdef0 --cidr-block 10.0.1.0/24
aws ec2 create-internet-gateway
aws ec2 attach-internet-gateway --vpc-id vpc-1234567890abcdef0 --internet-gateway-id igw-1234567890abcdef0
Amazon Route 53
Amazon Route 53は、高可用性と拡張性に優れたドメインネームシステム(DNS)ウェブサービスです。ドメイン登録、DNSルーティング、ヘルスチェックの機能を提供します。
主な機能:
- ドメイン名の登録と管理
- 複数のルーティングポリシー(シンプル、加重、レイテンシー、地理的など)
- ヘルスチェックとDNSフェイルオーバー
- プライベートDNS
Route 53の設定例:
aws route53 create-hosted-zone --name example.com --caller-reference 2014-04-01-18:47
aws route53 change-resource-record-sets --hosted-zone-id Z1PA6795UKMFR9 --change-batch file://change-resource-record-sets.json
Amazon CloudFront
Amazon CloudFrontは、グローバルに分散したコンテンツデリバリーネットワーク(CDN)サービスです。静的および動的なウェブコンテンツ、ストリーミングメディアを高速で配信します。
主な特徴:
- グローバルエッジロケーションネットワーク
- オリジンへのトラフィック負荷軽減
- セキュリティ機能(HTTPS、フィールドレベル暗号化)
- カスタマイズ可能なコンテンツ配信設定
- AWS WAFとの統合によるセキュリティ強化
CloudFrontの設定例:
aws cloudfront create-distribution --origin-domain-name my-bucket.s3.amazonaws.com --default-root-object index.html
aws cloudfront create-invalidation --distribution-id E1BTGP2EXAMPLE --paths "/*"
5. データベースサービス
AWSは様々なデータベースサービスを提供しており、Solution Architect Associate試験ではこれらの理解が重要です。主要なサービスについて解説します。
Amazon RDS (Relational Database Service)
Amazon RDSは、クラウド上でリレーショナルデータベースを簡単に設定、運用、スケーリングできるマネージドサービスです。
主な特徴:
- 複数のデータベースエンジンをサポート (MySQL, PostgreSQL, Oracle, SQL Server, MariaDB, Amazon Aurora)
- 自動バックアップとパッチ適用
- マルチAZ配置による高可用性
- リードレプリカによる読み取りスケーリング
使用例:
-- RDSインスタンスに接続後
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);
INSERT INTO users VALUES (1, 'Taro Yamada', 'taro@example.com');
SELECT * FROM users;
Amazon DynamoDB
DynamoDBは、フルマネージドのNoSQLデータベースサービスで、高速で予測可能なパフォーマンスを提供します。
主な特徴:
- キーバリューストアとドキュメントストアの両方をサポート
- 自動スケーリングとパフォーマンス管理
- グローバルテーブルによる複数リージョンでのレプリケーション
- オンデマンドキャパシティモードとプロビジョンドキャパシティモード
使用例:
// AWS SDKを使用してDynamoDBにアイテムを追加
const params = {
TableName: 'Users',
Item: {
'UserId': {S: '1'},
'Name': {S: 'Taro Yamada'},
'Email': {S: 'taro@example.com'}
}
};
dynamodb.putItem(params, (err, data) => {
if (err) console.error(err);
else console.log('Item added successfully');
});
Amazon Redshift
Redshiftは、ペタバイト規模のデータウェアハウスサービスで、大規模なデータセットに対する高速なクエリ実行を可能にします。
主な特徴:
- 列指向ストレージと並列クエリ実行
- SQLインターフェースによる簡単な操作
- S3との統合によるデータレイク分析
- Redshift Spectrumを使用したエグザバイト規模のデータ分析
使用例:
-- Redshiftクラスターに接続後
CREATE TABLE sales (
sale_id INT,
product_id INT,
sale_date DATE,
amount DECIMAL(10,2)
);
COPY sales FROM 's3://mybucket/sales_data'
IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
FORMAT AS CSV;
SELECT product_id, SUM(amount) as total_sales
FROM sales
GROUP BY product_id
ORDER BY total_sales DESC
LIMIT 10;
6. アプリケーションサービス
AWS認定ソリューションアーキテクト – アソシエイト試験では、アプリケーションサービスに関する知識が重要です。ここでは、主要なサービスであるAmazon SQS、Amazon SNS、AWS Lambdaについて詳しく解説します。
Amazon SQS (Simple Queue Service)
Amazon SQSは、マイクロサービス、分散システム、サーバーレスアプリケーション間のメッセージの送受信を可能にする、フルマネージド型のメッセージキューイングサービスです。
主な特徴:
- 高可用性と耐久性
- スケーラビリティ
- 標準キューと FIFO (First-In-First-Out) キューの2種類
- メッセージの重複排除と順序保証 (FIFO キューの場合)
- 暗号化によるセキュリティ確保
使用例:
// メッセージの送信
sqs.sendMessage({
QueueUrl: "https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue",
MessageBody: "Hello, SQS!"
}, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
Amazon SNS (Simple Notification Service)
Amazon SNSは、アプリケーション間やアプリケーションとユーザー間のメッセージング用の、フルマネージド型の発行/購読(Pub/Sub)メッセージングサービスです。
主な特徴:
- 高可用性と耐久性
- トピックベースのメッセージング
- 複数のプロトコル (HTTP/S、Email、SMS、SQS など) をサポート
- ファンアウト機能による複数のサブスクライバーへの同時配信
- メッセージのフィルタリング
使用例:
// トピックへのメッセージ発行
sns.publish({
TopicArn: "arn:aws:sns:us-east-1:123456789012:MyTopic",
Message: "Hello, SNS!"
}, function(err, data) {
if (err) console.log(err, err.stack);
else console.log(data);
});
AWS Lambda
AWS Lambdaは、サーバーのプロビジョニングや管理なしでコードを実行できる、サーバーレスコンピューティングサービスです。
主な特徴:
- イベントドリブンな実行
- 自動スケーリング
- 従量課金制
- 複数のプログラミング言語をサポート (Node.js, Python, Java, C#, Go など)
- AWS の他のサービスと容易に統合可能
使用例:
import json
def lambda_handler(event, context):
# イベントデータの処理
print("Received event: " + json.dumps(event, indent=2))
# 処理ロジック
message = "Hello from Lambda!"
# レスポンスの返却
return {
'statusCode': 200,
'body': json.dumps(message)
}
これらのサービスを組み合わせることで、スケーラブルで耐障害性の高い分散システムを構築することができます。例えば、SQSを使用してメッセージを一時的に保存し、Lambdaでそれらを処理し、処理結果をSNSで通知するといったアーキテクチャが可能です。
7. 管理ツール
AWS認定ソリューションアーキテクト – アソシエイト試験では、AWSの管理ツールに関する知識が重要です。ここでは主要な管理ツールであるAWS CloudWatch、AWS CloudTrail、AWS Configについて詳しく解説します。
AWS CloudWatch
AWS CloudWatchは、AWSリソースとアプリケーションのモニタリングサービスです。
主な機能は以下の通りです:
- メトリクスの収集と追跡
- ログの収集と分析
- アラームの設定
- 自動アクションの実行
メトリクスモニタリング
CloudWatchは、EC2インスタンス、RDSデータベース、S3バケットなど、様々なAWSリソースのメトリクスを自動的に収集します。例えば:
- EC2: CPU使用率、ネットワークトラフィック
- RDS: データベース接続数、ディスク使用量
- S3: バケットサイズ、リクエスト数
カスタムメトリクスを作成して、アプリケーション固有の指標を監視することも可能です。
ログ管理
CloudWatchLogsを使用すると、EC2インスタンス、Lambda関数、その他のソースからログを収集し、一元管理できます。ログデータの検索、フィルタリング、分析が可能で、長期保存にも対応しています。
アラームとアクション
メトリクスの閾値を設定し、条件を満たした場合にアラームを発生させることができます。アラームと連動して、以下のようなアクションを自動実行できます:
- Auto Scalingグループのスケーリング
- EC2インスタンスの停止/再起動
- SNSトピックへの通知送信
CloudWatchダッシュボード
カスタマイズ可能なダッシュボードを作成し、複数のメトリクスやアラームを一目で確認できます。
# CloudWatchメトリクス取得のサンプルコマンド
aws cloudwatch get-metric-statistics \
--namespace AWS/EC2 \
--metric-name CPUUtilization \
--dimensions Name=InstanceId,Value=i-1234567890abcdef0 \
--start-time 2023-07-21T00:00:00Z \
--end-time 2023-07-21T23:59:59Z \
--period 3600 \
--statistics Average Maximum
AWS CloudTrail
AWS CloudTrailは、AWSアカウントのガバナンス、コンプライアンス、運用監査、リスク監査を支援するサービスです。
主な特徴は以下の通りです:
- AWS APIコールの記録
- ユーザーアクティビティの追跡
- イベント履歴の保存
- セキュリティ分析とトラブルシューティング
イベントの記録
CloudTrailは、AWSマネジメントコンソール、AWS CLI、SDKなどを通じて行われたアクションを自動的に記録します。記録される情報には以下が含まれます:
- 誰が何をいつ行ったか
- どのIPアドレスからアクセスしたか
- リクエストのパラメータ
- AWSサービスからのレスポンス
ログファイルの保存
CloudTrailのログは、指定したS3バケットに保存されます。デフォルトでは90日間保存されますが、長期保存も可能です。
セキュリティ分析
CloudTrailのログを分析することで、以下のような用途に活用できます:
- 不正アクセスの検出
- リソース変更の追跡
- コンプライアンス監査の実施
マルチリージョン対応
デフォルトでは、CloudTrailはグローバルサービスとリージョナルサービスの両方のイベントを記録します。
# CloudTrailイベント取得のサンプルコマンド
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=EventName,AttributeValue=ConsoleLogin \
--start-time 2023-07-01T00:00:00Z \
--end-time 2023-07-21T23:59:59Z
AWS Config
AWS Configは、AWSリソースの設定を評価、監査、および評価するサービスです。主な機能は以下の通りです:
- リソース構成の記録
- 構成変更の追跡
- コンプライアンスルールの適用
- セキュリティ分析
リソースインベントリ
AWS Configは、AWSアカウント内のリソースとその設定を継続的に記録します。サポートされるリソースタイプには、EC2インスタンス、セキュリティグループ、VPC、IAMユーザーなどが含まれます。
構成変更の追跡
リソースの構成が変更されると、AWS Configはその変更を記録し、通知を送信することができます。これにより、意図しない変更や潜在的なセキュリティリスクを迅速に特定できます。
コンプライアンスルール
事前定義されたルールまたはカスタムルールを使用して、リソースの設定がベストプラクティスやセキュリティポリシーに準拠しているかを評価できます。例えば:
- EBSボリュームが暗号化されているか
- パブリックアクセス可能なS3バケットがないか
- 特定のタグが付与されているか
構成スナップショット
AWS Configは定期的にリソース構成のスナップショットを作成し、S3バケットに保存します。これにより、特定の時点でのインフラストラクチャの状態を確認できます。
# AWS Config準拠状況確認のサンプルコマンド
aws configservice describe-compliance-by-config-rule \
--config-rule-names s3-bucket-versioning-enabled
8. セキュリティとアイデンティティ
AWS認定ソリューションアーキテクト – アソシエイト試験では、セキュリティとアイデンティティに関する理解が重要です。この章では、主要なサービスであるAWS IAM、AWS KMS、AWS WAFについて詳しく説明します。
AWS IAM (Identity and Access Management)
AWS IAMは、AWSリソースへのアクセスを安全に制御するためのサービスです。
主な機能
- ユーザー管理:個々のAWSユーザーアカウントを作成・管理
- グループ管理:ユーザーをグループ化し、権限を一括管理
- ロール:AWSリソースに対して一時的な権限を付与
- ポリシー:JSON形式で詳細なアクセス権限を定義
ベストプラクティス
- ルートユーザーの使用を最小限に抑える
- 最小権限の原則を適用する
- MFAを有効化する
- IAMユーザーとロールを適切に使い分ける
実装例
IAMポリシーの例(S3バケットへの読み取り専用アクセス):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::example-bucket",
"arn:aws:s3:::example-bucket/*"
]
}
]
}
AWS KMS (Key Management Service)
AWS KMSは、暗号化キーの作成、管理、制御を容易にするサービスです。
主な機能
- カスタマーマスターキー(CMK)の作成と管理
- 暗号化操作(暗号化、復号、再暗号化)
- キーローテーション
- 監査とログ記録
使用シナリオ
- S3バケット内のデータの暗号化
- EBSボリュームの暗号化
- RDSデータベースの暗号化
- アプリケーションデータの暗号化
実装例
AWS CLIを使用してKMSキーを作成する:
aws kms create-key --description "My test KMS key"
AWS WAF (Web Application Firewall)
AWS WAFは、Webアプリケーションを保護するためのファイアウォールサービスです。
主な機能
- SQLインジェクションやクロスサイトスクリプティング(XSS)などの一般的な攻撃からの保護
- IPアドレスベースのアクセス制御
- 地理的制限
- レートベースのルール(DDoS攻撃対策)
設定可能なリソース
- Amazon CloudFront
- Application Load Balancer
- Amazon API Gateway
実装例
AWS WAFのWebACLルールの例(特定のIPアドレスをブロック):
{
"Name": "BlockBadIPs",
"Priority": 1,
"Action": {
"Block": {}
},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "BlockBadIPs"
},
"Statement": {
"IPSetReferenceStatement": {
"ARN": "arn:aws:wafv2:us-east-1:123456789012:regional/ipset/bad-ips/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
}
}
}
9. 費用最適化
AWS認定ソリューションアーキテクトアソシエイト試験では、クラウドリソースの費用を最適化する方法についての理解が求められます。この章では、AWSが提供する主要な費用最適化ツールについて説明します。
AWS Cost Explorer
AWS Cost Explorerは、AWSの使用状況と費用を可視化し、分析するためのツールです。
主な機能:
- 過去13か月分のデータを表示
- 将来の費用を予測(最大12か月先まで)
- カスタムレポートの作成
- リソースタグに基づく費用の分類
使用例:
# AWS CLIを使用してCost Explorerのレポートを取得
aws ce get-cost-and-usage \
--time-period Start=2023-01-01,End=2023-12-31 \
--granularity MONTHLY \
--metrics "BlendedCost" "UnblendedCost" "UsageQuantity"
AWS Budgets
AWS Budgetsを使用すると、AWSの使用状況と費用を追跡し、予算を設定できます。
主な機能:
- 費用、使用量、リザーブドインスタンス(RI)の利用率とカバレッジに基づく予算設定
- カスタムアラートの設定
- 予算の自動調整
使用例:
# AWS CLIを使用して予算を作成
aws budgets create-budget \
--account-id 123456789012 \
--budget file://budget.json \
--notifications-with-subscribers file://notifications-with-subscribers.json
AWS Trusted Advisor
AWS Trusted Advisorは、AWSのベストプラクティスに基づいて、環境を最適化するための推奨事項を提供します。
主な機能:
- コスト最適化
- パフォーマンス
- セキュリティ
- 耐障害性
- サービス制限
使用例:
# AWS CLIを使用してTrusted Advisorのチェック結果を取得
aws support describe-trusted-advisor-checks \
--language en
10. 高可用性と耐障害性
マルチAZ配置
マルチAZ(Availability Zone)配置は、AWSのインフラストラクチャを利用して高可用性と耐障害性を実現するための重要な戦略です。
マルチAZ配置の概要
- 定義:複数のアベイラビリティーゾーンにリソースを分散配置すること
- 目的:単一障害点を排除し、システムの可用性を向上させる
マルチAZ配置の利点
- 高可用性:1つのAZで障害が発生しても、他のAZのリソースが稼働を継続
- 耐障害性の向上:自然災害やハードウェア障害のリスクを分散
- レイテンシーの最適化:ユーザーに近いAZからサービスを提供可能
マルチAZ配置の実装例
- Amazon EC2インスタンス
- 複数のAZにEC2インスタンスを配置
- Auto Scalingグループを使用して自動的にインスタンスを分散
- Amazon RDS
- マルチAZデプロイメントオプションを有効化
- プライマリDBインスタンスと同期レプリカを別のAZに配置
- Elastic Load Balancing (ELB)
- 複数のAZにロードバランサーを配置
- トラフィックを異なるAZのターゲットに分散
リージョン間レプリケーション
リージョン間レプリケーションは、さらに広範囲な障害に対応するための戦略です。
リージョン間レプリケーションの概要
- 定義:異なるAWSリージョン間でデータやリソースを複製すること
- 目的:大規模な災害やリージョン全体の障害に対する耐性を確保
リージョン間レプリケーションの利点
- グローバルな耐障害性:リージョン全体の障害にも対応可能
- 地理的な冗長性:地理的に離れた場所にバックアップを確保
- パフォーマンスの最適化:ユーザーに近いリージョンからコンテンツを提供可能
リージョン間レプリケーションの実装例
- Amazon S3
- クロスリージョンレプリケーション(CRR)を設定
- 例:
aws s3 sync s3://source-bucket s3://destination-bucket --source-region us-west-2 --region us-east-1
- Amazon RDS
- クロスリージョンリードレプリカを作成
- 例:
aws rds create-db-instance-read-replica --source-region us-west-2 --region us-east-1 --source-db-instance-identifier source-instance --db-instance-identifier read-replica-instance
- Amazon DynamoDB
- グローバルテーブルを使用してマルチリージョンレプリケーションを実現
- 例:
aws dynamodb create-global-table --global-table-name my-global-table --replication-group RegionName=us-west-2 RegionName=us-east-1
ディザスタリカバリ戦略
ディザスタリカバリ(DR)戦略は、大規模な障害や災害からシステムを復旧するための計画です。
ディザスタリカバリの重要性
- ビジネス継続性の確保
- データ損失の最小化
- 法規制への準拠
ディザスタリカバリ戦略の種類
- バックアップ&リストア
- 定期的なバックアップを取得し、必要時に復元
- 例:Amazon S3を使用したEBSスナップショットの保存
aws ec2 create-snapshot --volume-id vol-1234567890abcdef0 --description "Daily backup"
- パイロットライト
- 最小限のコアシステムを常時稼働させ、必要時に迅速にスケールアップ
- 例:小規模なEC2インスタンスとRDSインスタンスを常時稼働
- ウォームスタンバイ
- 縮小版のシステムを常時稼働させ、必要時にフルスケールに拡張
- 例:Auto Scalingグループを使用して、負荷に応じてインスタンス数を自動調整
- マルチサイトアクティブ/アクティブ
- 複数のリージョンで完全なシステムを同時稼働
- 例:Route 53を使用したグローバルロードバランシング
aws route53 change-resource-record-sets --hosted-zone-id Z1234567890 --change-batch file://change-batch.json
ディザスタリカバリ計画の要素
- リスク評価:潜在的な脅威と影響の分析
- 復旧目標の設定:
- RPO(Recovery Point Objective):許容可能なデータ損失量
- RTO(Recovery Time Objective):許容可能なダウンタイム
- DR戦略の選択:ビジネス要件に基づいて適切な戦略を選択
- テストと訓練:定期的なDRテストと従業員の訓練
- 文書化:詳細なDR計画の作成と定期的な更新