AWS Certified Solutions Architect(ソリューションアーキテクトアソシエイト)試験(SAA-C03)の試験対策用の備忘録メモになります。
Well-Architected Frameworkの「一般的な設計原則」は以下の6つ
必要キャパシティーの推測が不要に
本稼働スケールでシステムをテストする
自動化によってアーキテクチャでの実験を容易にする
発展するアーキテクチャが可能に
データに基づいてアーキテクチャを進化させる
ゲームデーを利用して改善する
SaaS (Software as a Service)はアプリケーションを含むすべての機能を提供するサービス
AMI(Amazon マシンイメージ)はEC2インスタンスを起動するためのOS・ミドルウェアなどのテンプレート
EC2インスタンスはユーザーが選択したAMIから選択される
AMIに含まれないOSの設定や、ミドルウェアの導入は個別に実施する必要あり
OS・ミドルウェアのセキュリティパッチはユーザーで管理・適用する必要あり
EC2の購入オプション
スポットインスタンスではスポットフリートのオプションで必要なインスタンス数を指定できる
ハードウェア専有インスタンスは他のAWSアカウントとは分離された専用ハードウェアでEC2インスタンスを利用できる購入オプション
Dedicated Hosts(専有ホスト)は他のEC2インスタンスとは分離された専用ハードウェアで利用できる購入オプションで購入価格が一番高い
プレイスメントグループは、複数のEC2インスタンスをグループ化し、インスタンス間の低遅延通信やハードウェア障害の影響を軽減できる機能
クラスタープレイスメントグループは、グループ内のEC2インスタンスを単一AZ内の物理的に近い距離に配置し、通信遅延を減らす
パーティションプレイスメントグループでは、グループをパーティションとよばれる論理グループに分割し、各パーティション(1つのラックが対応)に1つ以上のEC2インスタンスを配置し、ハードウェア障害による影響を減らす
スプレッドプレイスメントグループは、グループ内のEC2インスタンスを異なるラックに配置し、ハードウェア障害による影響を減らす
インスタンスストアは、EC2インスタンスの稼働中にだけ利用できるブロックストレージ
一時的なストレージとして利用でき、EBSよりも高いパフォーマンスを持つ
EC2インスタンスの停止・終了・削除時・障害発生時にはデータは消える
利用料金はEC2に含まれておりインスタンスストア自体は無料
キーペアは、EC2インスタンスに安全に接続するための暗号鍵のペア(SSHキー)
バケットはS3のオブジェクトが保存される領域
バケットにはオブジェクト数が無制限で保存できる
バケット名はグローバルで一意にする必要あり
作成したバケットのバケット名は変更できない
S3バケットに一度にアップロードできる最大サイズは5GB
S3のアクセス制御
ユーザー(IAM)ポリシーは、自分のAWSアカウントのIAMユーザー・グループ・ロールに対してアクセスと、アクセス元のIPアドレス・ドメイン名によるアクセス制御ができる
バケットポリシーはバケット単位でアクセス権限を設定でき、他のAWSアカウントに対してもアクセス制御ができる(アクセス元のIPアドレス・ドメイン名のアクセス制御も可能)
ACLは、他のAWSアカウントからの読み取り・書き込みを許可できるが、アクセス元のIPアドレスやドメイン単位でのアクセス制御はできない
S3のオブジェクトロックは、S3バケットに保存したオブジェクトに対して更新・削除を制限する
オブジェクトロックはS3バケット作成時にのみ設定可能
オブジェクトロックには保持期間が無期限のリーガルホールドと、期限付きのリテンションモードがある
リーガルホールドは、権限を持たないユーザーに対し、リーガルホールドが解除されるまでオブジェクトを読み取り専用にする
リテンションモードはガバナンスモードとコンプライアンスモードのどちらかを選ぶ
ガバナンスモードでは権限を持たないユーザーに対し、指定の保持期間中オブジェクトを読み取り専用にする
コンプライアンスモードではルートユーザーを含む全てのユーザーに対して、指定した保持期間中オブジェクトを読み取り専用にする
S3 Glacierにはボールトロックという機能があり、ボールト内のアーカイブに制限をかけることが可能
SSE(Server-Side Encryption)は、データをS3に保存する時にサーバーで暗号化する方法
SSE-S3ではS3が管理している鍵を使用する
SSE-KMSではAWS KMSに保存されているKMSキーを使用する
SSE-Cではユーザーが管理している鍵を使用する
MFA Deleteは、S3のバージョニング機能を使用して管理されているオブジェクトを削除する際に、MFAデバイスの認証が必要となる機能
Transfer Accelerationは、S3上のデータをAWSネットワーク内から最速で通信できるルートを経由して転送させる機能
ENI(Elastic Network Interface)はAWSリソースのネットワークインターフェイス
VPC内のEC2インスタンスやNATゲートウェイなどに割り当てて利用する
VPCフローログは、VPC内のENIで通信するネットワークトラフィック情報をキャプチャする機能
AWS Transit Gatewayは、複数のVPCや複数のオンプレミスネットワークを相互に接続するハブ機能を持つ
サブネットのルートテーブルはデータをどこに転送するかを定義する機能
インターネットゲートウェイをターゲットにすることでVPCからインターネットへ接続できる
ルートテーブルがないサブネットはVPC全体に適用されるメインルートテーブルに従ってルーティングする
インターネットゲートウェイは、インターネットとVPC内のAWSリソースを接続する機能
NATゲートウェイ・NATインスタンスは、プライベートサブネットからインターネットへの通信を可能にするIPv4専用の機能
NATゲートウェイはAWSによってAZ内で冗長化されている
NATインスタンスはEC2インスタンスから作成し、ユーザーが管理を行う
NATインスタンスはNATゲートウェイでは利用できないポート転送機能を設定できる
NATインスタンスはVPC外からプライベートサブネット内へ接続する際の踏み台サーバーとして利用可能
Egress-Onlyインターネットゲートウェイは、VPCからインターネットへの接続開始要求を通すIPv6専用のインターネットゲートウェイ
VPCエンドポイントはプライベートサブネット内のAWSリソースから、インターネットゲートウェイを経由せずにVPC外のAWSサービスへアクセスする機能
VPCエンドポイントポリシーでVPCエンドポイントからの接続先を制限する
VPCエンドポイントにはゲートウェイ型とPrivateLinkがある
ゲートウェイ型はS3とDynamoDBで利用でき、PrivateLinkは多数のサービスで利用できる
IPアドレスの種類
プライベートIPアドレスは、VPC内のリソース間の通信に使用し、AWSリソースを停止・起動しても同一のIPアドレスが使われ、AWSリソースの削除時にIPアドレスが解放される
パブリックIPアドレスは、インターネットと通信可能なIPアドレスでAWSリソースが停止する時にIPアドレスが解放され、AWSリソースが起動する時に新規のIPアドレスが割り当てられる
Elastic IPアドレスは、インターネットと通信可能な固定のパブリックIPアドレスでAWSリソースが削除されても同一のIPアドレスが保有される
IAMポリシーはAWSリソースに対する権限を定義する
IAMポリシーにはアイデンティティ(ユーザー)ベースとリソースベースのポリシーがある
アイデンティティベースのポリシーはIAMユーザー・IAMグループ・IAMロールにアタッチする
リソースベースのポリシーは、S3バケットなどのAWSリソースに対してアタッチするポリシー
ELB経由のクライアントからWebサーバーまでの通信の暗号化
ALB・CLBでELBとターゲットにサーバー証明書を導入する(クライアントとWebサーバー間の暗号化通信はHTTPS)
NLB・CLBでターゲットにサーバー証明書を導入する(クライアントとWebサーバー間の暗号化通信にHTTPSを利用、経由するELBはTCPを利用する)
ELB経由でクライアントからWebサーバーまでのインターネット通信を暗号化
ALBでHTTPのリクエストをHTTPSに変換するには、HTTPリスナーを作成しHTTPSへリダイレクトするルールを設定する
SNI(Server Name Indication)は、サーバー証明書をパブリックIPアドレスではなくドメイン名によって判断する昨日
アクセスログを有効にするとクライアントの接続情報が記録される
Auto Scalingグループはスケーリングの管理単位で、グループ内でのリソースの最小・最大数やスケールアウト・インの実行条件などを指定する
グループのスケールイン時にリソースを削除する優先順位を終了ポリシーにて設定する(デフォルトは最も作成時刻が古い起動テンプレートを利用して起動されたリソース)
グループでスケールアウトが発生した時に起動するリソースは、起動テンプレートで指定する
ライフサイクルフックは、スケーリングの起動・終了時に任意の処理を実行する機能
動的スケーリングは、CPUやネットワークなどのパフォーマンスの負荷状況に応じてスケーリングを実施する
Lambda関数はLambda専用のVPCに配置される
Lambda専用のVPCからプライベートサブネット内のAWSリソースへはアクセスできない
VPCアクセスを設定したLambda関数は、ENIを作成したサブネットへアクセスできるようになるがインターネットへアクセスできなくなる
ECSにはクラスター・タスク・サービスがある
クラスターは1つ以上のタスク・サービスで構成される
クラスターではコンテナが動作するVPC・サブネットなどを設定する
タスクはECSで管理するコンテナの実行単位
サービスでは起動するタスクのタスク定義、クラスター内で必要なタスク数などを設定する
タスク定義は実行コンテナイメージ・CPUやメモリのスペック・タスクロールなどを定義する
ECSで実行・管理するコンテナは、AWS FargateとEC2起動タイプがある
AWS Fargateはコンテナ実行環境のCPUやメモリのスペック・アクセス権限などを設定すれば、サーバーの環境構築や管理をすることなくコンテナを実行できる
EC2起動タイプはユーザーが管理するEC2インスタンス上でコンテナを実行する
Amazon ECR(Elastic Container Registry)はコンテナイメージを登録・管理するサービス
Amazon EBS(Elastic Block Store)はEC2インスタンスに割り当てられる可用性・堅牢性に優れたブロックストレージ
インスタンスを終了してもデータを永続的に保持することができる
スナップショット機能・暗号化機能がある
暗号化する際はAWS KMSを利用する
HDDのボリュームタイプ(st1、sc1)はEC2インスタンスの起動ボリュームには指定できない
DeleteOnTerminationの値をfalseにするとEC2インスタンス終了時にデータが削除されない
EBSで扱えるデータ量の上限は16TiB
アタッチしているEC2インスタンスのOSの機能を利用してEBSボリュームのRAID構成を組むことができる
EFS(Elastic File System)はNFS(Network File System)プロトコルをサポートするファイルストレージサービス
複数のコンピュータからストレージを共有することができる
EFSではデータ量で自動的に拡張・縮小のスケーリングがされる
ACID特性のあるストレージ
ファイルシステムに対する読み取り・書き込みパフォーマンスを設定できる
パフォーマンスの設定にはファイルシステム作成時にのみ設定するパフォーマンスモードと運用中に変更できるスループットモードがある
パフォーマンスモードには一般的な用途向けの汎用パフォーマンスモードと、ビッグデータ解析などの大容量データや数千台のクライアントの処理向けの最大I/Oパフォーマンスモードがある
スループットモードにはベースライン性能の2倍まで性能向上できるバーストスループットモードと、ユーザーが予約した性能からスループットを提供するプロビジョンドスループットモードがある
EFSのストレージ容量は無制限
Amazon FSxはAWSが提供するファイルストレージサービス
Amazon FSx For Windowsファイルサーバーは、SMBプロトコルを介してWindows Server上に構築されたファイルシステムを提供するフルマネージドのストレージサービス
DFSR機能を備えたファイル共有を利用できる
Active Directoryによるユーザー認証が行える
NTFS(NT File System)を利用できる
ファイルサーバーにはオンプレミス環境とAWSの両方からアクセスできる
Amazon FSx For Lustreは、Lustreという既存のファイルシステムをAWS上で利用できる
LustreファイルシステムはS3と連携できる
HPC(High Performance Computing)や機械学習用途に適したストレージサービス
AWS Storage Gatewayは、オンプレミスからAWSストレージサービスへのアクセスを高速・セキュアに行うサービス
ファイルゲートウェイは、オンプレミスからNFSまたはSMBを介してS3バケットへアクセスする
オンプレミスにキャッシュストレージを持ち低レイテンシでのアクセスも可能
IAMロールでユーザーごとにアクセスするバケットを制御可能
ボリュームゲートウェイはS3をiSCSI接続のブロックストレージボリュームとして提供する
キャッシュ型(キャッシュボリューム)は、データをS3に保存し、高頻度アクセスのデータのみオンプレミスのキャッシュストレージにコピーする
保管型(ストアドボリューム)は、データをオンプレミスのボリュームストレージに保存し、S3に非同期でバックアップを保存する
AWS Snowファミリーにはデータの量・用途で3つのサービスがある
Snowconeは最小のデバイスで、オフラインの転送およびAWS DataSyncを使用したオンラインでの転送に対応
Snowballは最大でHDD80TBのストレージ
Snowmobileはエクサバイト規模(100PBのストレージ搭載のトレーラー)
Snowball Edge Compute Optimizedはコンピューティング向けのデバイス
RDSは、フルマネージド型のリレーショナルデータベースサービス
マルチAZでは、プライマリDBインスタンスとスタンバイDBインスタンスを異なるAZに配置することによって可用性を向上させる
データベースインスタンスの暗号化を行うとバックアップ・スナップショット・ログ・リードレプリカへも暗号化が行われる
RDSでは参照専用のデータベースとして動作するRR(リードレプリカ)参作ることができる
DBパラメータグループ(DBクラスターパラメータグループ)・オプショングループでタイムゾーン・最大接続数・監査ログの有効化などデータベースの設定を変更する
Amazon Auroraは、MySQL/PostgreSQL互換のデータベースエンジン
データベースインスタンスとストレージが分離しており、データベースインスタンスだけを必要に応じて増減できる
デフォルトで3つのAZに2つずつのデータコピー・自動修復機能でストレージの高い耐障害性がある
Redshiftはペタバイト級のデータウェアハウス
Leaderノードは各クラスタに一台だけ存在する
ComputeノードはLeaderノードからの命令を処理する
クロスリージョンスナップショットでスナップショットを異なるリージョンへ保存できる
シンプルな構造でありデータアクセスのパフォーマンスは非常に高い
ストレージの容量制限がない
インデックスを作成してテーブル内のデータに高速にアクセスが可能
自動的に3つのAZにデータが保存される
テーブルへの書き込み・読み込みのスループット単位をキャパシティユニットとして管理する
キャパシティユニットを自動的にスケールに設定するとコストを抑えられる
リザーブドキャパシティで予約購入しコストを抑えられる
DynamoDB Streamsでテーブルに対して行われた直近の24時間の変更(追加・更新・削除)をログに保存する
オンデマンドバックアップでユーザーが任意のタイミングでバックアップを作成する
ポイントインタイムリカバリ自動的に差分バックアップを行う
Amazon DynamoDB Accelerator(DAX)は、DynamoDBのインメモリのキャッシュクラスタ
ElastiCacheはフルマネージドのKey-Value型インメモリデータベース
RedisはMemcachedよりも高機能なデータベースエンジン
自動フェイルオーバー・マルチAZ機能を持つ
データを永続的に保持できる
データの暗号化・SSL/TLSでの通信の暗号化に対応している
複数のメトリクスでアラームを通知したい場合は複合アラームを作成する
標準メトリクスとして取得可能な項目はCPU使用率・ディスクI/O・ネットワーク使用率
Amazon EventBridgeはAWS上のリソースの状態変化やスケジュールに応じてアクションを実行する
Amazon CloudWatch LogsはAWSサービス・EC2インスタンスのOS・アプリケーションのログを収集・管理する
ログの内容をフィルタリングして管理者に通知できる
EC2インスタンスのOSのログを収集するにはEC2インスタンスにCloudWatchエージェントをインストールする
CloudWatch Logs Insightsは収集されたログを解析するサービス
Kinesisなどの別のサービスへ転送するには、サブスクリプションフィルターでデータの転送先を設定する
過去90日間のログを無料で参照できる
証跡情報を登録することによりCloudTrailのログをS3バケットへ保存することができる
AWS Elastic Beanstalkは、アプリケーションが動作する定番の構成を提供する
Dockerに対応している
シングルコンテナ・マルチコンテナを選択できる
コンテナが動作する環境はElastic Beanstalkによって管理されるが、コンテナ上の環境はユーザーが管理する
AWS CloudFormationは、AWSのリソースをコード化・構築する
スタックセットを利用することでターゲットアカウント・リージョンを指定して環境を複製できる
コスト最適化
パフォーマンス
セキュリティ
フォールトトレランス
サービスの制限
AWS WAFは、CloudFront・ALB・API Gatewayなどを保護する
Web ACLのアクセスコントロールリストで、IPアドレスなどに対してフィルタリングできる
鍵の作成者ではないIAMユーザー・IAMロールが鍵で暗号・復号をしたい場合はキーユーザーとして使用者を追加する
鍵の使用ログはCloudTrailに記録される
AWS CloudHSMでは、専用のハードウェアデバイスで鍵を生成・管理する
鍵の管理はユーザーが行う
ハードウェアの管理はAWSが行う
ゾーン情報はホストゾーンで管理する
パブリックホストゾーンはインターネットなどVPC外に公開されたドメインのDNSレコードを管理する
プライベートホストゾーンはVPC内に公開されたドメインのDNSレコードを管理する
エイリアスレコードはDNSレコードの1つで、AWSサービスのドメイン名に割り当てた別名から直接IPアドレスへ名前解決ができる
位置情報ルーティングポリシーはクライアントの位置情報に基づいてIPアドレスを決める(例えばクライアントに合った使用言語ページを表示できる)
地理的近接性ルーティングポリシーはクライアントと地理的に近いリージョンのIPアドレスを決める
複数値回答ルーティングポリシーとフェイルオーバールーティングポリシーはヘルスチェックの結果に基づいて回答する
フィールドレベル暗号化は送信されたHTMLフォームのPOSTリクエストの一部のフィールドを暗号化し、特定のアプリケーションでのみ復号可能とする機能
OAIはS3へのアクセスをCloudFront経由でのアクセスに限定する機能
地理的制限はクライアントからのアクセスを国別に制限できる機能
AWS Global Acceleratorは、ユーザーからAWSリソースまでのアクセス経路を最適化するサービス
複数のリージョンで展開しているWebアプリケーションなどへのリージョン間の負荷分散が可能
固定のパブリックIPアドレスが利用可能
Direct ConnectロケーションはオンプレミスとAWSのデータセンターとを相互に接続するポイント
Direct ConnectエンドポイントはDirect Connectサービス提供範囲にあるオンプレミス側の終端のルーター
Direct ConnectゲートウェイはDirect Connectエンドポイントと仮想プライベートゲートウェイの間に配置される
Site-to-Site VPNは、カスタマーゲートウェイ(オンプレミスのルーター)とVPCの仮想プライベートゲートウェイをインターネットVPNで接続する
SQSはフルマネージドのメッセージキューイングサービス
可視性タイムアウトは、メッセージを受信した後に指定時間が経過するまでそのメッセージが他のクライアントから受信できないようにする
遅延キュー・メッセージタイマーは、送信したメッセージを指定時間経過後に受信させる
デッドレターキューは、エラーが一定回数に達したメッセージを隔離する
ショートポーリングではメッセージがない場合に空のレスポンスを返す
ロングポーリングではメッセージが空である場合に設定された時間を待つ
似たサービスで、Apache ActiveMQ・RabbitMQに対応したフルマネージドのメッセージブローカーサービスであるAmazon MQがある
SNSはプッシュ型のメッセージングサービス
通知方法は、Eメール・HTTP/HTTPS・モバイル端末へのプッシュ通知などを利用できる
Amazon Kinesisはストリーミングデータをリアルタイムで収集・処理する
Kinesis Data Analyticsは、Kinesis上のストリーミングデータを処理し、可視化・分析を行う
Kinesis Data FirehoseはストリーミングデータをS3・Redshift・OpenSearch Serviceなどへ配信する
Kinesis Data Streamsは外部から送信されるストリーミングデータを収集する
EMRはビッグデータの処理や分析を行う
HDFSでHadoopのファイルシステムを利用できる
EMRFSでS3をEMRクラスターからファイルシステムとして利用できる
Glueは、フルマネージドのサーバーレスETLサービス
クローラーはデータソースからデータを抽出しデータカタログを作成する
データカタログは抽出データのメタデータ(データの属性情報)が保存されたもの
データカタログはEMR・Athenaから参照できる
AWS Data Pipelineは、データの移動や変換を自動化するサービス
AthenaはS3上のデータに対して標準SQLを実行できる
CSV・JSON・Parquetなどのデータ形式に対応している
Comprehendは、機械学習を利用してテキストデータを解析する
Comprehend Medicalは医療情報に特化したサービス
Textractは、機械学習を利用したOCR(光学的文字認識)サービス
スキャンしたドキュメントやPDFからテキストやデータを抽出する
SSM(Systems Manager)は、複数のAWSリソースをグループ化し、グループ内リソースの運用管理サービス
AWS Systems Manager Session Managerは、EC2インスタンスへブラウザ・CLIからセキュアにログインできる
AWS Systems Manager Parameter Storeは、DBなどにアクセスする際のパラメーターを管理する
AWS Systems Manager Patch ManagerはEC2インスタンスのOSパッチ適用を自動化する
AWS Secrets Managerは、データベースのログイン時の認証情報などを管理する
ローテーション機能で定期的にシークレットを更新する