AWS 認定ソリューションアーキテクト – プロフェッショナル資格試験に向けた知識の整理 プロレベルのTips

# 概要
AWS 認定ソリューションアーキテクト – プロフェッショナル資格試験に向けて勉強を始めたのでその小ネタ集です。
今回は個人的にプロレベルと思える（なかなか覚えられない）Tipsです。
覚えられないものが出るたびに随時更新していきます(^^;)

[2020年10月追記]
2回目の受験でついにプロフェッショナル試験に合格しました！
合格体験記／勉強法を以下で投稿しているので良かったら読んでください。
試験受ける予定がある方の少しでも役に立てればと思います(^^)

[AWS初心者がAWS 認定ソリューションアーキテクト – プロフェッショナル資格試験に合格した時の勉強法](https://qiita.com/fkooo/items/17fa401f4e46ecd00675 "AWS初心者がAWS 認定ソリューションアーキテクト – プロフェッショナル資格試験に合格した時の勉強法")

# 参考書
ついにプロフェッショナル資格の唯一の日本語版参考書が発売！！
知識の体系的整理が加速するかも(^^;)

[AWS認定ソリューションアーキテクト-プロフェッショナル ~試験特性から導き出した演習問題と詳細解説](https://amzn.to/2DZ6UDp "AWS認定ソリューションアーキテクト-プロフェッショナル ~試験特性から導き出した演習問題と詳細解説")
<a target="_blank"  href="https://www.amazon.co.jp/gp/product/4865942483/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4865942483&linkCode=as2&tag=aws_exam_p001-22&linkId=ed288152440386a2b39089134e20c5ae"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&MarketPlace=JP&ASIN=4865942483&ServiceVersion=20070822&ID=AsinImage&WS=1&Format=_SL250_&tag=aws_exam_p001-22" ></a><img src="//ir-jp.amazon-adsystem.com/e/ir?t=aws_exam_p001-22&l=am2&o=9&a=4865942483" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

## ネットワーク種類
* パブリックインターネット：いわゆるインターネット経由のアクセス
* パブリックAWSネットワーク：インターネットは通らずAWSで共有するネットワーク
* プライベートネットワーク：自社内部のみのネットワーク

## CloudFormationリファレンス
* リソースプロパティ：各リソース定義に必要な定義集
    * https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html
* リソース属性：リソースに定義できる追加の動作や関係を制御するための属性（DependsOnとか）
    * https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-product-attribute-reference.html
* 組み込み関数：動的設定可能とする関数（リージョン依存しないようにリージョンごとにAZを指定とか）
    * https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html
* 疑似パラメータ参照：CloudFormationによって定義されているパラメータ定義（リージョンや、アカウント名、スタック名など）
    * https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html

## AWS Systems Manager パラメータストア
* CLI で putparameter/getparameter
* 環境依存する情報（S3やRDS接続情報など）を保持
* AWS で 用意しているものもある

## SNI証明書
* CLB(Classic Load Balancer)では複数のSNI証明書をサポートしてないため、マルチプラットフォームなどで各プラットフォームごとに証明書が必要な場合、プラットフォームの数だけCLBが必要になる
* ALB(Application Load Balancer)/NLB(Network Load Balancer)は対応済み
    * https://dev.classmethod.jp/cloud/aws/alb-support-sni/
    * https://aws.amazon.com/jp/premiumsupport/knowledge-center/acm-add-domain-certificates-elb/

## CloudFront SSL/TLS証明書
* https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/cnames-and-https-requirements.html
* ビューワーとCloudFrontとの間でHTTPSを使用するための証明書
    * 信頼された認証機関(Comodo、DigiCert、Symantecなど)が提供する証明書
    * AWS Certificate Manager(ACM)が提供する証明書
    * 自己署名証明書
        * 自己署名証明書も大丈夫という記載もある
        * https://dev.classmethod.jp/cloud/aws/cloudfront_elb_ssl_traffic/
* CloudFront とオリジンとの間で HTTPS を使用するための証明書
    * オリジンがELBの場合
        * 信頼された認証機関(Comodo、DigiCert、Symantecなど)が提供する証明書
        * AWS Certificate Manager (ACM) が提供する証明書
    * オリジンがELB(Amazon EC2など)でない場合
        * 信頼された認証機関(Comodo、DigiCert、Symantecなど)が提供する証明書

## EBS
* https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-volume-types.html
* IOPSとボリュームサイズの関係
    * 汎用 SSD (gp2) :**3** IOPS/GiB
    * プロビジョンド IOPS SSD (io1) :**50** IOPS/GiB
* 最大IOPS
    * 汎用 SSD (gp2) :16,000 
    * プロビジョンド IOPS SSD (io1) :64,000

## VPCのCIDR拡張可能
* https://dev.classmethod.jp/articles/expanding-vpc-cidr/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/ca3f1cf2-b303-865b-ce7e-116ed94be0e3.png)

## プレイスメントグループで「容量エラー」発生
* https://stay-ko.be/aws/solutionarchitect-pro-aws-computing-service-cheat-sheet
* すべてまとめて再起動（停止して開始する）ことで解決することがある

## Bring Your Own IP
* https://aws.amazon.com/jp/vpc/faqs/#Bring_Your_Own_IP
* 顧客所有の既存のパブリックルーティング可能な IPv4 アドレス空間の一部または全体を、AWSリソースとしての使用のためにAWSに移動させることを可能

## クロスアカウントアクセス
* https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html

## CloudFrontキャッシュ管理
* https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/Expiration.html
    * 同じパスパターンに一致するすべてのファイルのキャッシュ保持期間を変更するには、CloudFront の設定でキャッシュの動作の [Minimum TTL (最小 TTL)]、[Maximum TTL (最大 TTL)]、[Default TTL (デフォルト TTL)] を変更
    * 個々のファイルのキャッシュ保持期間を変更するには、ファイルに Cache-Control max-age または Cache-Control s-maxage ディレクティブを追加するか、Expires ヘッダーフィールドを追加するようにオリジンを設定

## CloudFrontフィールドレベル暗号化を使用した機密データの保護
* https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/field-level-encryption.html
* ユーザーが機密情報をウェブサーバーに安全にアップロードできるようになる。ユーザーから提供される機密情報は、ユーザー近くのエッジで暗号化され、アプリケーションスタック全体で暗号化された状態が維持される。この暗号化により、データを必要としており、復号するための認証情報を持つアプリケーションだけが暗号化できるようになる

## S3バージョニングの使用
* https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/Versioning.html
* バージョニング状態を設定する前にバケットに格納されているオブジェクトには、バージョン ID null が付けられる

## AWS Resource Access Manager
* https://aws.amazon.com/jp/blogs/news/new-aws-resource-access-manager-cross-account-resource-sharing/
* AWS Resource Access Manager (RAM) は、AWSアカウント間でのリソース共有を容易にする
* 組織のマスターアカウントの共有を、RAM コンソールの [Settings] ページで有効にする必要がある
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188544/0f995d16-a6cc-5881-32a4-14bac17ef1cc.png)

## デプロイ
* Elastic Beanstalk
* https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.deploy-existing-version.html
    * デプロイオプション
        * All At Once：同時にすべてのインスタンスに新しいバージョンをデプロイする。環境内のすべてのインスタンスは、デプロイが実行される間、短時間ですがサービス停止状態になる
        * ローリング：バッチに新しいバージョンをデプロイする。デプロイフェーズ中、バッチはサービス停止状態になり、バッチのインスタンスによる環境容量への負荷を低減する
        * 追加のバッチとローリング：バッチに新しいバージョンをデプロイするが、デプロイ中に総容量を維持するため、インスタンスの新しいバッチをまず起動する
        * 変更不可：変更不可能な更新を実行し、新しいバージョンをインスタンスの新しいグループにデプロイする
    * Blue/Green デプロイ：個別の環境に新しいバージョンをデプロイしてから、2 つの環境の CNAME を入れ替えて、すぐに新しいバージョンにトラフィックをリダイレクトする 


## Route53 ルーティングポリシー
* シンプルルーティング／加重ルーティング／レイテンシールーティング／位置情報ルーティング／複数値回答ルーティング／フェイルオーバールーティング
* https://dev.classmethod.jp/articles/implement-route53-routing-for-begineer

## RAID
* AWSと直接関係ないけどちょくちょく設問／選択肢に姿を現すRAID
* https://www.infraexpert.com/study/networking9.html
    * RAID0:ストライピング
    * RAID1:ミラーリング
    * RAID5:パリティを付与した3台以上の構成で1台の耐障害性を持たせた
    * RAID6:パリティを付与した4台以上の構成で2台の耐障害性を持たせた
    * RAID10:01ではなく10、1:ミラーリング2つと0:ストライピングの構成

## 組織の一括請求全体に適用されるリザーブドインスタンスの注意事項
* リザーブドインスタンスの共有のオン／オフはマスターアカウント／両者のアカウントでオンになっている必要がある
    * https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/ri-turn-off.html
* リザーブドインスタンスのキャパシティーの予約は、リザーブドインスタンスの共有がオンになっているかオフになっているかにかかわらず、リザーブドインスタンスが購入されたアカウントのみに適用される
    * https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-ri-consolidated-billing/
* リザーブドインスタンスの共有はAZが一致している必要がある
    * https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/consolidatedbilling-other.html

## アナリティクス領域サービス

### EMR
* マネージド型の「Hadoop」に代表される大規模データ分散処理基盤
* ノードを管理するマスターノード、データをHDFSに保存するコアノード、処理を行うタスクノードで実現する

### Athena
* S3上のデータに標準SQL
* クラスタノードやECインスタントを持たない
* スキャンしたデータに対する従量課金
* クエリエンジンpresto
* 結果をQuickSightなどのBIツールに渡す
* Glue Data Catlogでメタデータを管理
* kinesins data firehose で Parquet出力可

### CloudSearch
* マネージド型の検索機能サービス
* EC2(AutoScaling),DynamoDB,S3を利用した検索エンジン

### ElasticSearch Service
* Elastic社が開発を進めるElasticSearchのマネージド型サービス
* KibanaというBIツールをデフォルトで利用
* 高いカスタマイズ性

### Kinesis
* ストリーミングデータをリアルタイムで一時保存、配信、分析するマネージド型サービス
* Kinesis Data Streams/Kinesis Data Firehose/Kinesis Data Analyticsがある


### QuickSight
* マネージド型BIツール
* データソースとして、S3/RDS/Redshift/Athena/オンプレDB/Excel/CSV/Salesforceのような3rdPartySaaS利用可
* SPICE　インメモリデータべース、分析データここに取り込む

### Glue

* データソースのメタデータを管理するETLサービス（抽出Extract、変換Transform、取込Load）
* ワークフロー（クローラー、トリガー、ジョブ）
* データソースからクローラーがメータデータを保存するデータカタログを作成
* GlueのデータをRedShiftにおいて処理することが可能
* サーバーレスETLの規模順は、Lambda、Gule（PythonScript）、Gule（Spark）
* 料金はETLジョブDPU単位、開発エンドポイント、データカタログ（ストレージ、リクエスト数）、クローラーDPU単位


## セキュリティ領域サービス

### Secrets Manager
* DBの認証情報やAPIキーといったシークレット情報を保存、かつ、定期的なローテーションを可能にするサービス

### GuardDuty
* AWS上での操作や動作をモニタリングし、セキュリティ上の脅威を検出するサービス
* APIの呼び出しや操作履歴、VPC上を流れる通信ログの内容を分析して脅威を検出

### Inspector
* EC2インスタンスの脆弱性を診断・検出するサービス
* Inspector Agentをインストールして定期的にチェックする

### Amazon Macie

* 機械学習によって AWS 内の機密データを自動的に検出、分類、保護するセキュリティサービス
* Macie では、個人情報 (PII) や知的財産などの機密データが認識される
* 日本のリージョンではまだ使えない

## その他サービス

### AWS AppSync

* GraphQL を使用してアプリケーションが必要なデータを正確に取得できるようにするマネージド型サービス
* NoSQL データストア、リレーショナルデータベース、HTTP API、AWS Lambda を使用したカスタムデータソースなどのさまざまなデータソース上で、リアルタイムの更新を必要とするアプリケーションを含む、スケーラブルなアプリケーションを構築できる

### AWS Amplify

* モバイルおよびフロントエンドのウェブデベロッパーが AWS を利用して安全でスケーラブルなフルスタックアプリケーションを構築できるようにするツールとサービスのセット
* Amplify ライブラリを使用すると、認証、データ、AI/ML、分析などの機能を組み合わせて、数行のコードでカスタムオンボーディングフロー、リアルタイムチャットボット、ターゲットキャンペーンなどを構築できる

## その他参考

アソシエイト資格の勉強法は以下を参照

[AWS初心者がAWS 認定ソリューションアーキテクト – アソシエイト資格試験に合格した時の勉強法](https://qiita.com/fkooo/items/e5284a4ed3c3466ffd41 "AWS初心者がAWS 認定ソリューションアーキテクト – アソシエイト資格試験に合格した時の勉強法")

プロフェッショナル資格の勉強法は以下を参照

[AWS初心者がAWS 認定ソリューションアーキテクト – プロフェッショナル資格試験に合格した時の勉強法](https://qiita.com/fkooo/items/17fa401f4e46ecd00675 "AWS初心者がAWS 認定ソリューションアーキテクト – プロフェッショナル資格試験に合格した時の勉強法")

その他のプロレベルの投稿は以下を参照

[プロレベルのTips](https://qiita.com/fkooo/items/e3c0c9a11d078619cbe0 "プロレベルのTips")（本記事）
[フェデレーションとDDoS対策](https://qiita.com/fkooo/items/a6d71407b2bed42332cc "フェデレーションとDDoS対策")
[IAMポリシー](https://qiita.com/fkooo/items/45cd86fa6e71d51f12e2 "IAMポリシー")
[DR対策](https://qiita.com/fkooo/items/cbeb13fea8b99e4b7964 "DR対策")
[IAMポリシーサンプル](https://qiita.com/fkooo/items/ae934fe9b1eb2a77f65d "IAMポリシーサンプル")