【AWS】ソリューションアーキテクトプロフェッショナル(SAP)勉強メモまとめ

AWS IT

こんにちは。れいです。

最近、AWSソリューションアーキテクトプロフェッショナル(SAP)の勉強を始めました。
勉強メモを以下に列記していきます。

SAP勉強内容まとめ

EC2

Amazon EBS-Backed AMI を使用するインスタンスの場合、いったんインスタンスを停止してから再開することで、障害が発生したホストから正常なホストに切り替わり、障害を復旧できる
※再起動しただけでは、ホストが変更されないため、NG
Amazon CloudWatch アラームアクションを設定することで、インスタンスにパブリック IP アドレスが割り当てられている場合、復旧後にパブリック IP アドレスが維持される

Auto scaling

Amazon EC2 Auto Scaling は、アベイラビリティーゾーン間のバランスを再度取って不均衡を補います→これが嫌だったら、AZRebalancingを停止する

スポットインスタンス

1,2,3,4,5,6時間の継続期間を指定できる

EBS

スナップショットから作成されたEBSボリュームは事前にウォームアップする必要がある
(この処理には一定の時間がかかるため)

MFA

aws:MultiFactorAuthAge

ユーザが過去xx時間いないにMFAに認証された場合にのみ、アクセスを承認したい場合に使う条件キー

AWS Batch

大規模計算をしたい時に使う
スポットインスタンスとS3の利用することで、最小限の管理で、費用対効果が高い耐久性のあるソリューションになる

Lambda

エイリアス

トラフィックをシフトするカナリアデプロイに役立つ
AWS CLI update-alias小窓にrouting-configパラメータを指定して負荷を分散する

パフォーマンスの向上方法

実行コンテキストの再利用を活用する
メモリ容量を増やす

Amazon QuickSight

Athenaを使用してS3データを簡単に照会できる

API Gateway

APIキャッシュ

・キャッシュを有効にして、Lambda関数の呼び出し回数を減らす→すでに読み取られたデータのパフォーマンスの向上に役立つ
・CloudFrontは不要

Dynamo DB

・最大項目サイズは400KB

TTL

・TTLを使用すると、データベースから自動的に削除できる

Amazon DynamoDB Accelerator(DAX)

・DynamoDBを高速化するもの
・書き込み集中型の場合は不要

DynamoDB Auto Scaling

自動スケーリングポリシーに従って、読み込みキャパシティーや書き込みキャパシティーを必要に応じて増加させます。​

グローバルテーブル

・マルチリージョンのNoSQLデータベースサービスを提供する
・大規模なグローバルアプリケーションのローカルでの高速な読み取りおよび書き込みパフォーマンスを実現する
・たDynamoDBのテーブルは自動的に同期されるようになる、神機能で、インターネットに出ることはなさそうです。
https://qiita.com/is_ryo/items/766736fde2ef42da9791

RDS

クロスリージョンレプリケーション

・セカンダリをプライマリに昇格し、プライマリが復旧したら元に戻すための手動作業が必要になる

Aurora

Aurora Global Database

Aurora グローバルデータベースは、専用のインフラストラクチャを使用して、プライマリ DB クラスターとセカンダリクラスターの間で変更をレプリケートする

Amazon ElastiCache

・読み取りの問題のみを解決する

Amazon Elastic File System(EFS)

アプリケーションを中断させることなく、オンデマンドでスケーリングが可能
ファイルの追加や削除にあわせて自動的にスケーリングされる
作成時に保存データの暗号化を有効にする必要がある
ファイルシステムがEC2インスタンス にマウントされている場合に転送中のデータの暗号化を有効にできる

AWS Direct Connect

・AWSが提供する専用接続サービスで、ユーザーのネットワーク環境からAWSまでインターネットを経由せずプライベートな接続を確立できる
https://www.itechh.ne.jp/column/detail/column_aws_direct_connect.html
・コスト効率が悪い
・クロスコネクトが90日以内に完了しない場合は、LOA-CFAが付与した権利は無効になる

AWS Direct Connect Gateway

仮想インターフェース(以下VIF)とVPCの仮想プライベートゲートウェイ(以下VGW)の間に追加する新たなコンポーネント

パブリック仮想インターフェイス(Public virtual interface)

パブリックリソース (非 VPC サービス) に接続するために使用する。
 ※パブリックリソース・・・AmazonS3, AmazonGlacier等

プライベート仮想インターフェイス(Private virtual interface)

VPC に接続するために使用する。

VPN 接続

通常、オンプレミスとVPC間の接続に使用する

CloudFormation

スタックセット

・複数のアカウントおよびリージョンのスタックを1度のオペレーションで作成・更新・削除できるようにする

クロススタック

CloudFormationスタックから別のスタックへリソースをエクスポートするには、クロススタックの参照を作成する→渡すパラメータの量を削減できる

AWS::AutoScaling::LaunchConfiguration

・EC2 Auto Scaling 起動設定を指定する
・Auto Scalingグループの起動構成を更新すると、CloudFormationはそのリソースを削除し、更新されたプロパティと新しい名前で新しい起動構成を作成する。既存のインスタンスは影響を受けない。

UpdatePolicy

・既存のインスタンスを更新する場合は、Auto ScalingグループのUpdatePolicy属性を指定する必要がある

DeletionPolicy

・スタックが削除された際にリソースを保持またはバックアップする

AWS Organizations

・AWS Service Catalogと統合した
・所属組織でメンバーアカウントとの AWS Service Catalog のポートフォリオ共有を簡素化できます。
・AWS Organizations では、複数の AWS アカウントをポリシーベースで管理できます。
・AWS Cloudformationテンプレートをサービスカタログに追加することで、アクセス制御やOrganizationとの連携がしやすくなる

サービスコントロールポリシー(SCP)

SCPはユーザポリシーを制御しないため、ユーザにアクセス許可を付与するにはIAMポリシーをアタッチする必要がある(SCPはあくまでルールであり、実際にアクセス付与はしない)
誤って重要なサービスからユーザを締め出さないようにアカウントを1度に1つずつ移動します

Service Catalog

・通常CloudFormationを起動するためには、テンプレートが提供するリソースを全て作成できる権限が必要
・Service Catalogの制約でLaunchを設定すると、ログインユーザに構築する権限がなくてもAWS環境一式を構築できます。

Amazon EventBridge

直接関連していない独自のアプリケーションや AWS 外で提供される SaaS (Software-as-a-Service) アプリケーション、および AWS のサービスから送信されるデータを配信先としてサポートしている AWS サービスにルーティングする

CodePipeline

パイプライン内に手動の承認アクションを追加できる
CloudFormationテンプレートのデプロイ・テストに利用できる

CodeDeploy

CloudFormationテンプレートのデプロイ・テストに利用できない

CloudFront

・Hostヘッダーを削除すると、CloudFrontとALBに適用している証明書ドメイン名でHostヘッダーの値が一致せず、エラーが起きてページが閲覧できなくなる
・プログレッシブオプションに設定されたダウンロードオプションを利用して、動画のストリーミングをサポートする

オリジンフェイルオーバー

オリジンをプライバリ・セカンダリのグループで定義し、障害時にセカンダリへフェイルオーバーする機能
フェイルオーバー判定に利用するタイムアウト条件を細かく設定できる

CloudFrontとALB間でSSL/TLDハンドシェイクを失敗させることなくキャッシュヒット率を改善する方法

・オリジンを静的コンテンツと動的コンテンツに分割
・動的コンテンツはCookieとAuthorizationヘッダーが必要
・静的コンテンツはCookieとAuthorizationを削除する

Trusted Advisor

すべての項目をチェックするために、ビジネスサポートプラン以上を利用する必要がある

Amazon Kinesis Data Streams

・リアルタイムデータをキャプチャできる
・Kinesisクライアントでリアルタイム分析ができる
・「次々に上がってくるデータの内容をリアルタイムに加工、表示させたい」時に使う
・レコードを数時間後に同じ順序で使用する場合に使う

Amazon Kinesis Data Firehouse

Kinesisクライアントを使用した分析を許可していない
「Zero Administration」「ダイレクト」がキーワード
ビデオストリーミングには使用されない

Amazon Kinesis Video Streams

データをHTTP Live Streaming(HLS)に変換する必要がない

AWS Directory Services

AWS Managed Microsoft AD

ADをAWS環境上に作る
MFAをサポートする
オンプレミスのADと信頼関係を構築する→、ユーザはAWSもオンプレミスのドメイン内にアクセス可能となる

AD Connector

オンプレミスのADにリダイレクトして認証を実施する
オンプレミスのADでユーザ情報は管理される

Simple AD

ADをAWS上で簡単に構築できる
Windows以外でADのような機能を実現したい時に使う?

VPC

VPCピアリング

・クライアントのVPCが会社のVPCに接続するのに役立つ
・通信はピアリングされているVPC間でのみ行われる(他のVPCにルーティングできない)
・VPC CIDRブロックは重複してはいけない

Transit Gateway

複数VPCや、オンプレミスを単一のゲートウェイで接続することができるサービス
VPC とオンプレミスネットワークを接続するクラウドルーターだと言われています。

Transit VPC

TBD

プライベートホストゾーン

これはroute53.testのような実在しないドメインをRoute53に登録&設定すれば、設定したVPC限定でそのドメインが使えるというものです。

プライベートDNSレコード

オンプレミスでは使用できない
発信元のリクエストがVPC内から行われた場合のみ機能する

Route53

レイテンシールーティング

各リージョンのレイテンシーを測定し、レイテンシーが短いリージョンを優先する。
(基本的には物理的距離が近い方が優先されると思うが、時と場合によってそういうわけではなくなるということ)

地理的ルーティング

・単純に、現在地から一番近いリージョンにルーティングする

複数値回答ルーティング

・ヘルスチェックを用いて、正常なものの応答を返す

フェイルオーバールーティング

複数値回答ルーティングのプライマリーとセカンダリーに限定したバージョン
プライマリーが死んだらセカンダリーに切り替える
エンドユーザに最小のレイテンシーを提供する場合は、レイテンシールーティングポリシーを使用する

エンドポイントをモニタリングするヘルスチェックのステータスを決定する方法

・HTTPステータスコードが2xx or 3xxでエンドポイントが応答する
・文字列一致はレスポンス本文の最初の5120バイト内に出現している

CloudFormer

AWSリソースからAWS CloudFormationテンプレートを作成するテンプレート作成用のベータツール

デプロイ

カナリアデプロイ

稼働中サーバーの一部だけに新しアプリケーションをデプロイ、リリースする方法です。 特定のユーザーだけに新しいアプリケーションを利用してもらうことで新サービスの検証ができます。 デプロイする方法は問わず、デプロイ先の数だけに注目したデプロイ方法です。

各種デプロイ方法の参考

https://garafu.blogspot.com/2018/11/release-strategy.html#canary

Amazon Macie

S3に保存されている個人データの検出と保護のみを支援する

Amazon Elasticsearch Service(ES)

CloudWatch Logs サブスクリプションを通して、ほぼリアルタイムでAmazon Elasticsearch Service (Amazon ES) クラスターで受け取るCloudWatch Logs ロググループをストリームデータに設定するためには、ES ドメインの設定が必要

Amazon ES クラスター

検索に特化したクエリを投げられるデータベース

S3

・可用性が高く耐久性があるため、ログの保存に適している
・複数のレコードを収集して1つのオブジェクトに集約する機能を提供していない
・PUT時に課金されるので、多くのデータをPUTすることは避けたい?

バージョニング

リージョンに障害が発生した場合のデータ損失を保護しない

S3クロスリージョンレプリケーション

リージョンに障害が発生した場合のデータ損失を保護する
・S3標準からS3Glacierへクロスリージョンレプリケーションは可能
・S3GlacierボールトからS3Glacierボールトからへクロスリージョンレプリケーションはできない

S3アクセスログ

・レイテンシーに関する情報は提供していない

バケットポリシー

特定のVPCまたはVPCエンドポイントからバケットへのアクセス制御が可能
エンドポイントへのアクセスを制御することがベストプラクティス

Amazon S3 Transfer Acceleration

クライアントと S3 バケットの間で長距離にわたるファイル転送を高速、簡単、安全に行えるようにする

Range Get

オブジェクト全体を読み取る必要はなく、必要な部分を取得できる

リクエスタ支払い

S3のオブジェクトへリクエストしたアカウントが支払いをする方法

S3 Glacier

ストレージとプットに料金がかかるため、個々のファイルを保存するのに費用対効果が高くない

Fargate

コンテナを動作させる上で必要だったEC2インスタンスのプロビジョニングや管理が不要になる
状態異常が発生した際のEC2インスタンスの再起動や入れ替えが不要
ホストレベルのスケーリング管理が不要になる
Serviceのスケールに応じて自然にコンテナが起動・終了し、コンテナの起動時間に応じて課金される

Kibana

Elasticsearchで稼働するように設計された、ポピュラーなオープンソースの可視化ツール

Egress-Only インターネットゲートウェイ

プライベートサブネット内のインスタンスからインターネットへIpv6トラふぃくをルーティングする

ロードバランサー

・クライアント証明書による認証をサポートしていない
・リージョン内のサービスであり、リージョン間でトラフィックをルーティングできない

ALB

レイヤー7(HTTP/SMTP/POP3)のトラフィックのみをサポートしている
※レイヤー4(UDP/TDP)はサポートしていない

NLB

レイヤー4(UDP/TDP)はサポートしている

WAF

ALBとCloudFrontに対してのみ機能する

AWS Shield

DDoSに対する保護サービス
Amazon CloudFrontとRoute53を使用すると、メリットがある

AWS Shield Standard

サードパーティのロードバランサーをサポートしていない

AWS Storage Gateway

オンプレミスから実質無制限のクラウドストレージへのアクセスを提供するハイブリッドクラウドストレージサービス
既存のアプリケーションに変更を加えることなく AWS のストレージ(S3やGlacierなど)を使用できます。

Amazon Redshift

シングルAZのみをサポートしている
自動的にスナップショットを作成し、S3に保存する
障害発生時はスナップショットから新しいクラスターを作成する

ワークロード管理(WLM)

ワークロード内の優先順位を柔軟に管理して、短くて実行速度の速いクエリが実行時間の長いクエリの後に溜まらないようにできます。

Amazon DMS

セカンダリインデックス、シーケンス、デフォルト値、ストアドプロシージャ、トリガー、シノニム、ビュー、その他データ移行に特に関係のないスキーマオブジェクトは移行されない。
これらのオブジェクトをAurora MySQLターゲットに移行するには、AWS SCTを使用します。
・Elasticsearchのソースをサポートしていない
・Amazon RDS on VMWareには対応していない

Amazon Schema Conversion Tool(SCT)

データベースエンジン間で既存のデータベーススキーマを変換できます。

SAM

CodeDeployでLambda関数の新しいバージョンをデプロイし、トラフィクを新しいバージョンに移行することで、サーバーレスアプリケーションを段階的にデプロイする

SQS

・メッセージキューはリージョンごとに独立している(=共有はできない)

スタンダード

・処理が増え続ける要件には対応できる(TPSに上限がないため)

FIFO

・処理が増え続ける要件には対応できない(TPSに上限があるため)

Amazon AppStream

フルマネージドの非永続デスクトップおよびアプリケーション仮想化サービス
FirefoxやLibre officeなど、アプリケーション単位で利用できる

Amazon Workspaces

フルマネージドの永続的なデスクトップ仮想化サービス

AWS CloudHSM

SSLトランザクションを実行するため、SSL秘密鍵を保存、管理方法を追加することなく、キーがAWS環境外に移動しなくなる

専用のハードウェアで暗号化キーを保管するため、KMSと比べると安心してキーを管理することが可能
可用性を高めるためには複数のアベイラビリティゾーンにデプロイする必要がある

IAMポリシーはCLoudHSMで生成されたキーへのアクセス制御を提供できない

パイロットライト

停止した状態のサーバーを別のリージョンに用意しておき、障害発生時に立ち上げるというもの

KMS

AWSリージョンに固有であり、リージョン間で同じキーを使用出来ない
証明書は提供しない

CloudWatch

・CloudWatchアラームによりAuto Scalingのスケーリングを変更できる(一定のCPUに到達したらインスタンス数を増加させる、など)

CloudWatch Logs

保存期間は無料
CreateExportTask
ログをAES256で暗号化されたS3バケットにエクスポートできる

CloudTrail

ログはリアルタイムではなく、通常15分遅れる

ACM

証明書はリージョンごとに要求する必要がある

AWS Snowmobile

エクサバイト期ののデータ転送サービス
100PBまで転送できる

AWS Snowball Edge

至急便の場合は約 1 日で配送される
最大で 100 GB/秒の転送速度
100TBまでデータを保持できる
10PB未満のデータの場合やバックボーンの帯域幅が限られている場合は、Snowmobileよりも複数のSnowballを使用してデータを徐々に移行する必要がある

AWS Application Discovery Service

オンプレミスデータセンターに関する情報を収集することにより、エンタープライズのお客様の移行プロジェクト計画を支援
サーバーの設定データ、使用状況データ、動作データが収集される
データを CSV ファイルとしてエクスポートし、AWS で稼働した場合の総所有コスト (TCO) の見積もりや、AWS への移行計画に使用できます

AWS Application Discovery Agent

検出や移行のためにオンプレミスサーバーや VM にインストールされる AWS ソフトウェア
エージェントは、システム設定、システムパフォーマンス、実行中のプロセス、およびシステム間のネットワーク接続の詳細をキャプチャする

AWS Systems Manager Patch Manager

パッチを適用するプロセスを自動化する

Amazon Kinesis Data Firehose

S3やAmazon ESに直接データを送信できる

Cost Explorer

AWSアカウント単位に機能しない

Beanstalk

Swap Environment URLs

CNAMEを切り替える機能があり、それを使うことでブルー/グリーン環境の切り替えが可能→ダウンタイムを発生させない

その他用語

Active Directory

Windows Serverに備わっている機能で、組織のシステム管理者がユーザーを管理するのに使うシステム
ユーザの一覧がまとまっているもの
パソコンの設定を一元管理したり、すべてのパソコン環境を均一化できる

フェデレーション

一度認証を通れば、その認証情報を使って、許可されているすべてのサービスを使えるようにする仕組み

SAML

1回認証を通れば許可されているすべてのサービスが使えるようになる仕組み(シングルサインオン)を実現するときに使われる仕組みのひとつ
認証情報を受け渡しするときに使うことを目的として作られたXML形式の書式(と、あれやこれやの決まり事)
「Security Assertion Markup Language」の略

RPO(Recovery Point Objective)

障害発生時、過去の「どの時点まで」のデータを復旧させるかの目標

RTO(Recovery Time Objective)

障害発生時「どのくらいの時間で(いつまでに)」 復旧させるかを定めた目標値である。言い換えると、RTOは「システム停止やサービス中断が許される時間」とも言える。

仮想インターフェース

ConnectionをVLAN(802.1Q)で区切っているもの

ENI(Elastic Network Interface)

EC2インスタンスに挿す仮想のNIC(ネットワークカード)
1つのNIC毎に最大で30IPまで設定でき、1つのインスタンス毎に最大で8枚のNICの設定できますので、240のIPアドレスを設定することができます。インスタンスタイプを大きく設定しなければいけませんが、何台もインスタンスを用意することなくたくさんのIPアドレスを使うことができます。
https://dev.classmethod.jp/articles/vpc-ec2-multi-eip/

多くの小さなファイルのコスト効率が高い保存方法

・方法1:Kinesis Data Firehoseで収集し、S3に書き込む
・方法2:DynamoDBに保存し、TTLを使用して自動的に有効期限を設定する

アプリケーションのコンポーネントの遅延によるタイムアウトに関するデバック方法

・方法1:AWS X-Rayを使う
・方法2:AWS CloudWatch Logsを使用する

サーバ証明書

サーバ証明書とは、Webサイトの身分証のようなものです。サーバ証明書は決められた認証局(CA、Certification Authority)が管理・発行しており、証明書の発行を受けることで主に次のような恩恵が得られます。

・Webサイトを所有している企業について確認できる
・フォームの入力情報を暗号化して受け渡すことができる

サーバ証明書を受け取ったクライアント側では、その証明書が正当な認証局から発行されているかと、証明書に記載されたサーバと現在通信しているサーバがちゃんと一致しているかを、自動的にチェックしています。チェックした結果信用できないと判定された場合、多くのWebブラウザで危険性を示す警告ページが表示されます。
https://proengineer.internous.co.jp/content/columnfeature/6317

クライアント証明書

クライアントがサーバにアクセスする際に提示する身分証のようなもの
対応する証明書をインストールしたPC以外からのアクセスを制限することができます。
例えばある企業が組織内にのみ公開したいページがあったとした場合、パスワードやIDの管理だけでは私用のPCからでもアクセスすることができてしまう
→クライアント証明書がインストールされたPCかのチェックを行うことで、組織内の特定のPCからしかアクセスできないよう制限する

勉強時間メモ

2021/6/16(水)

・勉強時間:19:15-
・「Web問題集で学習しよう」 SAP #10-

2021/6/15(火)

・勉強時間:6:30-7:30, 9:10-9:50, 21:00-22:45
・「Web問題集で学習しよう」 SAP #20-#11
・今日は朝から勉強開始
・合格体験記を都度読みながらモチベーション維持
・布団に横になるとだらけてしまうので、極力避けたい

2021/6/14(月)

・勉強時間:7:30-8:30
・「Web問題集で学習しよう」 SAP #24-#21
・夜仕事終わりの勉強をサボってしまった

2021/6/13(日)

・勉強時間:10:30-
・「Web問題集で学習しよう」 SAP #35-#25
・久しぶりに積み上げ宣言を実施→今までよりも集中できた気がする

2021/6/12(土)

・勉強時間:8:30-9:30, 他隙間時間
・「Web問題集で学習しよう」 SAP #39-#36
・1日外出していたが、スキマ時間をうまく活用することで勉強時間確保

2021/6/11(金)

・勉強時間:7時- 8時
・「Web問題集で学習しよう」 SAP #40

2021/6/10(木)

・勉強時間:9時- 10時
・「Web問題集で学習しよう」 SAP #41
・AWS Directory Services周りについて勉強

2021/6/9(水)

・勉強時間:7時- 9時
・「Web問題集で学習しよう」 SAP #44-#42

2021/6/8(火)

・勉強時間:19時-21時
・「Web問題集で学習しよう」 SAP #46-#45
・以前購入した「これだけでOK! AWS 認定ソリューションアーキテクト – アソシエイト試験突破講座(SAA-C02試験対応版)」でVPC周りの知識を復習

2021/6/7(月)

・勉強時間:8時-9時45分、
・「Web問題集で学習しよう」 SAP #49-#47
Ultimate AWS Certified Solutions Architect Professional 2021を購入

2021/6/6(日)

・「Web問題集で学習しよう」 SAP #52途中-#50
・勉強メモをブログにまとめることにする
・Amazon AppStreamとAmazon Workspacesのハンズオン

2021/6/5(土)

・「Web問題集で学習しよう」 SAP #52
・ECR+ECS+Fargate, ECR+ECS+EC2をハンズオンで理解
・このペースだと、7月の受験に到底間に合わないので、勉強ペースを上げる
・仕事終わりはダラダラしてしまうので、仕事前に勉強することにする

2021/6/4(金)

・「Web問題集で学習しよう」 SAP #53
・Route53の各種ルーティングをハンズオンで理解
・ハンズオンなどをやりながら進めているので時間がかかる
・7月に受験予定なので、勉強計画を立てる必要があることに気づく

2021/6/3(木)

・「Web問題集で学習しよう」 SAP #55-#54
・Code系サービスを以下のAWSの公式ハンズオンで理解。非常にわかりやすくておすすめ
AWS Hands-on for Beginners – AWS Code サービス群を活用して、CI/CD のための構成を構築しよう!
・アソシエイト試験と比べて問題文が長い
・今回は分からないところがあれば、ハンズオンやチュートリアルで理解しながら進めることにする

2021/6/2(水)

・AWS SAPの勉強開始
・2021年7月に試験の申し込み実施
・「Web問題集で学習しよう」ダイヤモンドプラン申し込み実施