Help us understand the problem. What is going on with this article?

AWS SAP エッセンス(執筆中 毎週更新)

はじめに

こんにちは!おんづかです!
この記事は未完成です。
合格した上で書き終わって完成なのでよろしくお願いします。
完成形期待して開いた人ごめんなさい🙇
(応援していただけたら超喜びます)
現在の進捗 約9%

AWS SAPとは?

AWS Certified Solutions Architect - Professional のことです。
詳細はこちらの公式ページを見てみてください。

自分のスペック

AWSは2019年の春ごろから業務で触り始めた。
使ったのは主にEC2,RDS,S3,lambdaで、
Code系、AmazonConnectを少し。

2019年5月 AWS Certified Cloud Practitioner 取得
2019年6月 AWS Certified Solutions Architect – Associate 取得

合格までのロードマップ

  • 試験ガイドを確認
  • Exam Readinessを見て試験のイメージをしっかり掴む
  • 分野ごとに教材(ホワイトペーパーとブラックベルトがメイン)を1周する
    • 組織の複雑さに対応する設計(12.5%)
    • 新しいソリューションの設計 (31%)
    • 移行計画(15%)
    • コスト管理(12.5%)
    • 既存のソリューションの継続的な改良(29%)
  • 模擬試験で現状の実力確認
  • 以下、繰り返し
    • Udemyの問題集を解く
    • 教材を再度確認
    • 苦手な機能を実際に触ってみる
    • 並行してQiitaにエッセンスをノートしていく
  • 本番(4月予定)

公式が推奨する勉強法にUdemyでの問題演習で補強を加えたいたってシンプルなやり方です。過去に取得済みの認定はがむしゃらに詰め込んだので今回は腰を据えてじっくり取り組もうと思います。

試験ガイドをしっかり確認

何を知識として抑えるべきかをしっかり把握します。
日本語の試験ガイド
英語の試験ガイド

認定準備ワークショップ(Exam Readiness)を受講

こちらを受講して以下のことを学習。

  • 試験プロセスの注意事項
  • 試験の構成と問題のタイプを理解
  • 問題が AWS のアーキテクチャの概念とどのように関連しているかを識別
  • 試験問題で問われている概念を読み取る
  • 試験勉強のための時間配分を検討

試験の受け方(公式が推奨してるやつの要約)

  • ホワイトペーパーが充実してるからそれを読み込もう
  • 読解問題であり込み入った問題のキーワードを見つけ出しそれに対する適切な回答を選択する必要がある
  • 試験問題は認定の価値を保つためにも外部に漏らさないでください
  • 複数選択の問題はすべて正解して〇です、部分点はありません
  • 170分のテスト、めちゃくちゃ長いし時間も余るわけではない
  • マークを付けて飛ばしていかないと時間足りなくなるよ
  • 選択肢はすべてよむこと、間違ってない解答の後により適切な解答がある場合も
  • 逆に明らかな間違いとして除外することのできる選択肢もある
  • 修飾句に着目する例えば「最もコスパがいい」とか
  • 特定の機能についての記載があったら着目する、正解の選択肢はその要件を満たすものである
  • 試験日前6か月に発表・リリースされたような機能は問題に反映されていない
  • 消去法だけの解き方ではうまくいかないだろう=〇と◎があったら後者を選ぶ必要あり

試験問題の分野と出題の比率

  • 組織の複雑さに対応する設計(12.5%)
  • 新しいソリューションの設計 (31%)
  • 移行計画(15%)
  • コスト管理(12.5%)
  • 既存のソリューションの継続的な改良(29%)

以下、各分野で出題されるサービス・アーキテクチャについてキーワードのみつらつらと書いていく。ここで出てくるワードについて説明ができるレベルになるよう後から知識を補強していく予定。

分野1「組織の複雑さに対応する設計」(12.5%)

以下の3つの設計ができるようになること
- クロスアカウント認証とアクセス戦略
- ネットワーク
- マルチアカウントの AWS 環境

クロスアカウント認証とアクセス戦略

  • IAMオブジェクト、ユーザ、グループ、ロールの理解
  • STS(Secure Token Service)を使った一時的なセキュリティ認証情報を渡す方法
  • ユーザーフェデレーション
    • 外部のユーザーアイデンティティに自分のアカウントのAWSリソースを使用する権限を付与的る
    • 長期のセキュリティ認証情報を配布しないためにAWSアカウントのセキュリティが向上する
    • SAML2.0接続とOpenIDConnect接続を理解する必要がある
    • フェデレーティッドユーザー
      • AWSアカウントを持たないユーザーまたはアプリケーション
    • フェデレーティッドユーザーのロール
      • ロールを使用することで一定の期間AWSリソースへのアクセス権を付与できる
      • Microsoft AD、LDAP、Kerberosなどの外部サービスで認証できるAWS以外のユーザーが存在する売位に役立ちます
    • 一時的なAWS認証情報
      • 一時的なAWS認証情報とロールを組み合わせて使用すると、AWSユーザーとそれ以外との間でIDフェデレーションを提供できる
  • AWS Directory Service
    • Microsoft Active DirectoryをAWSの他のサービスと一緒に使用するための方法が複数ある、それぞれ理解する必要あり
      • AWS Managed Microsoft AD
        • AWSクラウドでマネージド型ADを使用可能にする
      • AD Connector
        • オンプレミスユーザーがAD経由でAWSのサービス委アクセスできるようにする
      • Simple AD
        • 小規模で低コストの基本的なAD機能を提供する

ネットワーク

ハイブリッド型VPN接続
  • AWSマネージドVPN
    • リモートネットワーク上のオンプレミスネットワーク機器からAmazonVPCにアタッチされたAWSマネージド型ネットワーク機器へのハードウェアVPN接続
  • AWS VPN CloudHub
    • 複数のリモートブランチオフィスをAmazonVPCに接続するハブアンドスポークモデル
  • ソフトウェアVPN
    • リモートネットワーク上の危機からAmazonVPC内で実行されているユーザー管理型のソフトウェアVPNアプライアンスへのVPN接続
ハイブリッド型 AWS Direct Connect(DX)
  • AWSリソースとファイバー回線でつながっているDXロケーションに接続する
  • Virtual Interface(仮想インターフェイス、通称VIF)をセットアップする方法
    • パブリックとプライベートがある
ハイブリッド型 AWS Storage Gateway
  • 4種類ありそれぞれの特徴を理解して最適なものを選べるようになること
    • ファイルゲートウェイ
    • テープゲートウェイ
    • 保管型ボリュームゲートウェイ
    • キャッシュ型ボリュームゲートウェイ
VPC エンドポイント

インターネットゲートウェイまたは仮想ゲートウェイを介さずに、インスタンスがプライベートIPを使用して、AWSサービスと接続することを可能にする仮想デバイス

  • インターネットフェイスエンドポイント
    • インターフェイスVPCエンドポイントはプライベートIPアドレスを持ったENIで、AWS PrivateLinkを使用するサービスあてのトラフィックのエントリポイントになります。
  • ゲートウェイエンドポイント
    • ルートテーブルでしていされたルートのターゲットであるゲートウェイ。このタイプのエンドポイントは、サポートされているAWSのサービス(S3やDynamoDBなど)へのトラフィックに使用される。
  • デフォルトではIAMユーザーにはエンドポイントを使用するアクセス許可はない。IAMユーザーポリシーを作成して、エンドポイントを作成・変更・記述・削除するアクセス許可をユーザーに付与できます。 IAMポリシーを介してVPCエンドポイントへのアクセスを管理する

マルチアカウントのAWS環境

リソースと請求の分離
  • 多くの場合、要素ごとに固有のアカウントを用意することで特定の分離を監査機関に証明することが容易になる
  • 例えば開発アカウントがありそれが独立している場合、開発者は規制対象のグローバルアカウントにアクセスできないことを簡単に証明できます。
  • 1つのアカウント内で分離をするには明確なポリシーの分離を証明できる必要がある
複数アカウントの請求戦略
  • グループエイリアスに通知を送信
  • アカウント全体でAWSタグ付け標準を使用
  • AWS API およびスクリプトで会社のベースラインの設定を自動化
AWS Oraganizations
  • 複数のAWSアカウントをポリシーベースで一元管理
    • アカウント全体のポリシーを管理し、不要なアクセスをブロック
    • APIを使用して新しいアカウントの作成お自動化
    • アカウントを組織単位(OU)に編成する
    • AWS一括請求(コンソリデーティッドビリング)

分野2「新しいソリューションの設計」 (31%)

信頼性の要件の実装/戦略ビジネス継続の確保/パフォーマンス目標の達成

この分野で慣れるべきアーキテクチャやサービス

  • Amazon EC2
  • Auto Scaling
    • マルチAZ Auto Scaling
    • Auto Scaling グループを設定する方法
    • 起動設定
  • Amazon ElastiCache
  • Amazon Simple Notification Service
    • 非同期だよ
    • 特定のプロセスを配信するのに適している
    • SQSに配信することが多いよ
  • AWS CloudFormation
  • Elastic Load Balancing(ELB)
    • Auto Scalingグループにトラフィックを分散させる方法
    • インスタンスをELBに登録する方法
  • Amazon Simple Queue Service
    • 標準では順不同、「少なくとも1回」配信
    • FIFOオプションがあるが本当に必要かどうかをよく検討しよう(Kinesis使えって言いたいのかな?
  • Amazon Kinesis
  • Amazon CloudWatch
  • Amazon CloudFront
    • ELBの前に置きグローバルなデプロイをする方法
  • Route53
    • 多数のルーティングオプションについての理解
    • ElasticIPのありなし、ELB、オンプレミスなどの様々なエンドポイントに接続する方法
  • 中間層スケーリングアーキテクチャ
    • ELBとAutoScalingグループを使う
    • 外部からアクセス不可のELBを追加して独立したスケーリングを行うケースもある
      • フロントエンドのweb層で使われるELBとはまた別の役割ってことっぽい
  • 中間層の分離
    • SQSによる分離、非同期だよ
    • SQSは単一方向で非同期できるよ、ELBは複数方向だから同期的だよ
    • SQSで分離した際にトラフィックを戻す設計がいる
  • Amazon Kinesis Streams
    • これも非同期かつ単一方向
    • SQSと違って順序がある、少なくともシャード内では
    • 「少なくとも1回」であることを考慮する必要あり
      • オブジェクトの複数の処理に対応できるシステムまたはアプリケーションにする必要あり、これはSQSも同じ
    • 独立したストリーム位置
  • Amazon Kinesis Data Streams
    • データが外部から入ってきてマルチAZストリームを介してアプリケーションで処理するアーキテクチャ、機械学習に使われる
    • Kinesisに対応しているとメトリクスを抽出できる、プロセスの集約や重複排除に対応できる
    • これらのアセットを任意の数の要素に渡すことができる
      • S3やDynamoDBに直接
      • 別の新しいKinesisストリーム
  • Kinesis Data Stream と Kinesis Data Fiehose の比較
    • Kinesis Data Stream
      • 受信レコードごとのカスタム処理
      • 1秒未満の処理レイテンシー
      • ストリーム処理フレームワークの選択
    • Kinesis Data Fiehose
      • 管理が不要
      • 60秒以上の処理レイテンシー
      • S3、Redshift、Elasticsearch Serviceベースの既存の分析ツールが使用可能
  • SQSを使用したレスポンス
    • 単一方向のSQSで双方向ソリューションを構築するとき
    • 2つ目のキューを追加することで可能
    • レスポンスを返すための識別子が必要になる
  • S3を使用したデータのスケーリング
    • ユーザがCloudFront→S3またはEC2→EBSにアクセス
    • S3にコンテンツを置いてキー名をランダム化することがS3を加速させるのに今までは重要だった、DyanamoDBでは今でも重要
    • オブジェクトが大きいほどGetやPutオペレーションが減少
  • CloudFrontを使用したデータのスケーリング
    • トラフィックのコストを削減
    • パフォーマンスを向上
    • オリジンにはAWSまたはオンプレミスのデータセンターを使用可能
    • S3バケットへのアクセスはオリジンアクセスアイデンティティに制限可能
  • AmazonEBSとインスタンスストア
    • EC2インスタンスにアタッチされているEBSボリュームサイズを増加可能
    • インスタンスにアタッチされているEBSボリュームタイプおよびスループットを変更可能
    • EC2インスタンスは最大のEBSスループットを発揮
    • QSベースのRAIDセットの検討を推奨
    • インスタンスストアは増やすことができない、EC2のボリュームサイズに基づいてあらかじめ決められている
  • スケーリングとRDS
    • プロセッサの能力の観点からスケーリング
      • インスタンスサイズを増やす
    • ストレージのスケーリング
      • RDSのインスタンスにアタッチされているストレージを増やす
  • リードレプリカ
    • 読み込みパフォーマンスのみを向上
    • 非同期的レプリケーション
      • mysqlの場合、数十秒のレイテンシーが起きる可能性あり
      • Auroraでは数秒
    • 一意の/さまざまなエンドポイント
    • クロスリージョン
    • CloudWatchメトリクス:ReplicaLag
      • 上記の非同期レプリケーションでのレイテンシーがどれほどかを確認できる
  • Amazon ElastiCache:Redis および Memcached
    • Redis
      • 高度なデータ構造
      • 永続的
      • マルチAZ配置での自動フェイルオーバー
      • リードレプリカを使用してスケール可能
      • スケールアップは可能、スケールアウトは不可能
      • スケールアップ後はスケールダウン不可能
      • バックアップ及び復元操作をサポート
      • AOF(Append Only File)ログの有効化によるノードのリカバリが可能
    • Memcached
      • シンプルなキーと値のストレージ
      • 非永続的で純粋なキャッシュ
      • スケールアップおよびアウトの両方が可能
      • 複数のノードを使用したスケールアウト
      • バックアップおよび復元操作はサポート対象外
      • マルチスレッドオペレーションをサポート
    • Amazon ElastiCache
      • アプリケーションによるキャッシュの読み取りと書き込みが可能
      • 一意のエンドポイント
      • RDSの非同期レプリケーションとElastCasheにアクセスするリードレプリカを利用して適切なキャッシュタイムアウトを作成できる
        • タイムアウトするタイミングや要素を無効にするタイミングを作成する
      • Redisレプリケーショングループ(リードレプリカ)
  • AmazonDyanamoDB
    • RDSはACIDトランザクションを実行するリレーショナルデータベースでDyanamoDBとは違う
    • DyanamoDBは非構造化データに適している
    • RDSと同レベルのDBA管理は不要
  • DyanamoDBキャッシュ
    • DyanamoDBの前にElastiCacheを配置して使用できる
    • DAXを使って読み取り/書き込みスルーキャッシュを構成することもできる
    • DyanamoBのスループットでは読み書きパイプの大きさが重要な要素、費用にも大きな影響がある
  • AmazonSQSとDyanamoDB
    • SQSをフロントエージェントとしてDyanamoDBと通信できる
    • DyanamoDBにアクセスするときに厳密に最短のレイテンシーを考慮する必要がない場合、少しの非同期は許容できる場合
      • SQSに書き込みキュードレインアプリケーションを利用してDBに書き込んだ場合、パイプを一貫して小さくすることができる
      • ある程度のバックアップをSQSがしてくれそのピーク時にDyanamoDBのスケーリングについて心配する必要がなくなる
      • 書き込まれるのを待っているオブジェクトとDyanamoDBにあるオブジェクトの間のレイテンシーにアプリケーションで対応できるときに費用削減の方法として有効
  • DyanamoDBとAWS Auto Scaling
    • オプションでAuto Scalingが提供されている
    • CloudWatchで追跡し自動的にスケールアウトする
  • DyanamoDBグローバルテーブル
    • 低レイテンシーのグローバルテーブルという概念
    • 1つの書き込みが複数のリージョンにまたがって自動的に処理される

疎結合アーキテクチャのコンポーネントについてそれぞれの特徴と違いを特に理解しておこう!
ELB/SQS/SNS/Kinesis/AutoScaling

セキュリティ要件と管理

  • IDおよびアクセスの管理
    • IAMユーザーとグループ
      • AWS IAM
      • AWS STS
    • AWSサービスロール
      • AWS Lambda
      • Amazon EC2
    • IDプロバイダー
      • SAML 2.0 シングルサインオン、OpenID Connect
      • Amazon Cognito
      • AWS Directory Service
  • セキュリティとコンプライアンス管理
    • 本番稼働用にロールを割り当てるセキュリティ用のアカウントを作成する
    • 本番稼働のログはAWS ConfigとAWSCloud TrailでセキュリティアカウントのS3バケットに保存される
    • これにより本番環境で悪意のあるユーザが自分の痕跡を自分で消すことができなくなる
  • Amazon Cognito
    • フルマネージド型のソリューションでwebアプリとモバイルアプリ向けのアクセスコントロールと認証を提供
    • MFAをサポート
    • 保存データと送信データの暗号化
    • ソーシャルIDプロバイダー経由でログイン
      • Facebook/Google/Amazon
    • SAMLのサポート
  • ユーザープール
    • すべてのユーザーに対して、SDKを介してアクセス可能なディレクトリプロファイルを提供する
    • サードパーティのアイデンティティプロバイダーを通してユーザーの組織化をサポートする
    • 署名付きユーザーが認証トークンを受け取る
    • Amazon Cognito ID プールを介して、AWSアクセス用のトークンを交換可能
  • IDプール
    • Amazon CognitoユーザープールなどのwebIDプロバイダーによってユーザーを認証する
    • AWS STSを介して一時的なAWS認証情報を割り当てる
    • 匿名のゲストユーザーをサポート

ビジネス要件に基づいたデプロイ戦略

  • デプロイメカニズム
  • それぞれのサービスのスイートスポットを把握しておく
    • ランタイム/コンテナ
      • Amazon EC2
      • Amazon ECS
      • AWS Lambda
      • AWS Elastic Beanstalk
    • アプリケーションのデプロイ
      • AWS CodeDeploy
      • AWS OpsWorks
      • AWS Elastic Beanstalk
    • コード/デプロイ管理
      • AWS CodeCommit
      • AWS CodePipeline
      • AWS Elastic Beanstalk
    • インフラストラクチャのデプロイ
      • AWS OpsWorks
      • AWS CloudFormation
      • AWS Elastic Beanstalk
  • AWS Elastic Beanstalk
    • 単純な学習ツールだと思われがちだがは非常に強力な機能を持っている
    • コンテナ化の処理が可能
    • ランタイム要素の処理が可能
    • Red/Greenデプロイ
    • 様々なコード管理
  • 開発、テスト、ステージングの環境
    • 以下のような要素・目的に応じて環境の構成が変わる
      • (例えば機能テストを実施する環境ではマルチAZのRDSはいらない、など)
    • アベイラビリティー
      • 通常は低めの要件
      • HAが必要な場合がある
    • パフォーマンス
      • スモークテスト
      • 負荷テスト
    • 類似性
      • デプロイプロセス
    • コスト

(執筆中/毎週更新/最後の更新:2020/2/17)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした