AWS Solution Archietct Professional 自分まとめ[合格]

以下の内容で85%で合格
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159589/8622b7a2-7044-2608-1bd8-8baf0d08e64c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159589/c3e5df54-d357-bb75-bb75-e31bfbb140a9.png)



# セキュリティ・認証系

## CloudFront
### 署名付きURL
CloudFrontの署名つきURLを発行して、S3への直接アクセスを防ぐ
S3署名つきURLを発行して、他のユーザーからのアクセスを削除する。

### 地域制限
CloudFrontのGeo-Restrictionで国単位でのアクセス制限をかける。

### OAI
S3でCFrontディストリビューションを経由してアクセスさせたい場合はOAIを使って、オリジンアクセスIDを許可し、S3 URLを使ってのアクセスを削除する
また、セキュリティを強化する場合は、信頼された署名者(AWSアカウント)による署名つきURLを発行する

### 証明書の配置
ViewerーCloudFrontーオリジン

Viewer-CFront間は、自己証明でもいいし、CA証明でもいい
CFront-オリジン間は、CA証明でなければならない。

### ストリーミングはダウンロードオプションを用いる。

### CDNとしての機能もあるので、動的コンテンツも対象になる。

### オリジンへのTCP接続
### クエリ文字列の転送を有効、TTLを0にしておくと常時接続




## GuardDuty
### VPCフローログおよびCloudTrailイベントログを分析および処理する継続的なセキュリティモニタリングサービス

## KMS

### KMSマスターキーとS3暗号化クライアントを使用して、クライアント側でデータを保護することもできる。

### 証明書(X.509証明書)を使って接続の際の認証を行いたい、しかもインスタンスごとに一意に
### →インスタンス起動時にSNSでKMSに送信する。KMSで署名付き証明書を生成し、新しく起動したインスタンスに直接送信する。
### ※KMSはサービスをポーリング(見張る)する機能はない。

### CloudFrontを用いた暗号化
### KMSを使用してソースデータを復号化し、結果の出力を暗号化する。
### また、OAIを使うので、コンテンツはS3 URLではなく、CFを介してのみ提供される。





### 個別管理
S3へのアクセスなどで個々のユーザーが、個々の暗号化キーにアクセスするためには、、、
・KMS管理のキーによるサーバ側暗号化を使用し、個別のCMKを作成し、キーポリシーを使用してアクセスを制御する。
・顧客のCMKを使用し、CloudHSMインスタンスを使用してキーを管理する。CloudHSMクライアントソフトで生成されるキーへのアクセスを制御する。

## IAM
### 監査
監査人がAWSに入って確認したいとき、サードパーティツールがあるときは、クロスアカウント用のIAMロールを作成して、サードパーティツールがロールを引き受ける。

IAMロールを参照するには、インスタンスプロファイルからロールを参照する。あくまでEC2は資格情報を保持しない。
IAMロールをEC2にアタッチするとインスタンスメタデータから一時的なセキュリティ認証情報を取得する。

### APIアクセス時に認証する場合
・インスタンス起動時にIAMロールを指定
・実行中または停止中にロールをアタッチする
・ロールを引き受けた後で、アプリで使用できるAPIを定義
・一時的な認証情報セットを取得して使用



## オンプレ認証連携
オンプレのADで認証を一元化したい場合
・ADフェデレーションサービスなどのSAMLベースのIDプロバイダーと連携するためのIDプロバイダーを構築
・STSを使用して一時トークンを生成
・SSOエンドポイントをセットアップ
・IDプロバイダーを信頼できるエンティティとして識別するIAMロールを作成

### 具体的なUC
①アプリはLDAPに対して認証を行い、ユーザーに関連づけられたIAMロールの名前を取得する。次にアプリはIAMのSTSを呼び出して、そのIAMロールを引き継ぐ。アプリは一時視覚情報を使用して適切なS3バケットにアクセスする。

②LDAPに関して認証を行い、IAMのSTSを呼び出して、IAMフェデレーションされたユーザー資格情報を取得するIDブローカーを開発、アプリはIDブローカーを呼び出して適切なS3バケットにアクセスできるIAMフェデレーションユーザー資格情報を取得する。

※LDAP認証情報を使ってIAMログインはできない。


## OpenIDによる認証連携
Webアイデンティティプロバイダを活用して、STSのAssumeRoleWithWebIdentityを利用して一時的な認証情報を生成する。そのWebプロバイダーのIAMロールを作成して、IAMロールのアクセス許可を設定し、S3へのGETやDynamoDBへのPUTなどを許可する。
※Cognitoを認証に利用しても良い。

## S3
### CORS(クロスオリジンリソース共有)
S3で別のドメインからアクセスがありファイルが引っ張ってこれないときはこれを疑う。

### S3バケットの公開阻止
・PutObject呼び出しを行う
・S3がCloudTrailにログを刻むとともにCloudWatchEventsに通知
・Lambdaで蓋をする
※S3ログの監視だと1min以上かかる場合があるのでダメ
※Trusted Advisorはリアルタイムアラートは提供していないのでダメ

特定のユーザーに特定の時間だけS3にアクセスさせるには署名済みURLを利用する。

### 暗号化種類
SSE-S3:各オブジェクトが一意のキーで暗号化される、定期的にローテーションするマスターキーを使用してキー自体を暗号化する。
SSE-KMS:CMKマスターキーを管理する。いつ、誰によってキーが使用されたかの監査証跡も残る

## AWS Config
﻿﻿### リソースポリシーの監視
### :point_up:AWS ConfigでConfigカスタムルールをLambdaと関連づけ作成・変更・削除を継続的に評価
### :point_up:CloudWatch Eventsのリアルタイムストリーム機能で検知して、Lambdaで直す。

## 証明書
SSL証明書を隔離したい場合、IAMもしくはCertificate Managerに配置し、アクセス制限を行う。
例:開発者はEC2の権限のみ、セキュリティ管理者はIAMやCMの権限を付与し、ELBでSSL終端する。

## クライアント証明書
ELBは対応していないので、TCP/443で素通してWebサーバで解決
ELBを使わず、WebサーバにEIPをつけて解決させる方法もある。

## SSL証明書
独自ドメインの場合はカスタムSSL証明書→IAMとかSCMで管理する

## Systems Manager
コンテナ(ECS)内DBへのアクセスは、機密情報をSystems ManagerのParameter Storeもしくは、Secrets Managerを利用する。
ライフサイクル管理とキーローテーションが必要な場合は、Secrets Managerを使う。(SMのParameter Storeはそんな機能はない)

## CloudHSM
CloudHSMを利用して、秘密鍵を保存し、SSLトランザクションを実行する。
また、アプリログはS3に暗号化されたログを蓄積することで秘匿性を守る。

## EFS
### EFSの暗号化
### 保存データの暗号化:EFS作成時
### 転送データの暗号化:EC2マウントされてる時

### マウントターゲットはマウント前に作成する必要がある(当然)

### EFSマウントヘルパーを使用してEC2にマウントする
・EFSファイルシステムID
・EFSマウントターゲット
・EC2
・EFSマウントヘルパー(ユーティリティを使用する場合は -o tlsの暗号化オプションを追加する)


## AWS Shield
### :point_up:CloudFront、Route53を使用するとメリットあり

## WAF
### :point_up:CloudFront、ALBと連携

## モバイル認証
Cognitoを利用するか、WebIdPとやりとりするカスタムコードもしくはアプリを作成し、AssumeRoleWithWebIdentityを呼び出すことで認証を実現できる。

# ネットワーク系

## VPC内Lambda
Lambdaがインターネットアクセスが必要な場合、NATGWなどを利用する。
また、LambdaのSGのアウトバウンド設定にInternet向けが許可されているかを確認する。

## CloudFront
配信系でデータの読み込みが遅い場合には、CloudFrontと静的コンテンツS3とインメモリキャッシュのECacheを用いるのが良い。
CloudFrontはDBクエリはキャッシュできない。

## CloudHub
複数のAWS Site-to-Site VPN接続がある場合は、CloudHubを利用して、安全なサイト間通信を提供する
VPCの有無にかかわらず使用できるハブアンドスポークモデルで動作する。
複数のCGWを使ってVGWを作成する必要がある。
CGWの一位のBGP自律システム番号 (ASN)を使用する必要がある。
CGWは適切なルートをそのSite-to-SIte接続にアドバタイズする。
これらのルーティングアドバタイズが受信され、各BGPピアに再アドバタイズされることでサイト間でのデータ送受信が可能になる。
サイト間でIPが重複することは許されない。

## VPC
1つのVPCに仮想プライベートゲートウェイは1つまで

## VPN
DX + 
各VPCのVGWでVPNトンネルを終了し、ルート管理用にBGPを設定

## Route53
### :point_up:VPC間でプライベートDNSを共有するには、共有VPCでRoute53のプライベートホストゾーンを関連づけ、各VPCと共有VPCをピアリングし、プログラム的に関連づける。

## ELB
クライアントのIPを知るにはELBのProxyProtocol機能を用いる

## 各エンドポイント
ゲートウェイエンドポイント:S3,Dynamo
インターフェイスエンドポイント:EC2、ELBなど

## プレイスメントグループ
プレイスメントグループと制御用EC2のネットワーク速度を改善したい
→いっそのこと、プレイスメントグループに制御用EC2も入れちゃう。

## DirectConnect
### インターネットからもオンプレからもアクセスしたいEC2がある時
### →デフォルトルートをIGWにしておいて、DXのCGWでBGPを介してオンプレのスタティックルートを伝播する。

### オンプレからS3などにアクセスしたい時、パブリックインタフェースを作成して、BGPを既存のルーティングに再配布する。NWの特定のルートをAWSにアドバタイズする。


### BGPは「最適パス」で動作する

## プロキシサーバ
### 特定のURL以外のアウトバウンド接続を拒否りたい時

## DX Gateway

## TransitVPC
﻿VPCがハブとなって、オンプレミス群を管理する。

## TransitGW



# 運用・コスト系
## CloudWatch
### CloudWatchログストリーム
単一のログストリームに複数のエージェントからログを送信することはできない。

### アラーム
サポート範囲の確認
Auto Scaling起動設定に通知してスケールアップできない。

## Service Catalog
### エンドユーザーがデプロイできるものを制御する。


## CloudFormation
### :point_up:定期的にCFormationをメンテナンスしながら、環境を最新に保っておきたい時
CloudFormationとSystems Manager Parameter Storeを使用してテンプレートの最新のAMI IDを取得する。EC2を更新する場合は、CloudFormationテンプレートのupdate-stack APIを呼び出す。

### Cloud Formationで作ったリソースの更新
Systems Manager Parameter Storeを使い、テンプレートの最新AMI IDを取得
CloudFormationでupdate-stack-APIを呼び出して更新する
ただし、別個に作ったリソースがネットワークに乗っかっている場合、サブネットの削除などのネットワークスタックの更新が失敗する。


### 別リージョンや別アカウントに環境を複製したい場合(DRとかではなく、単なるコピー)
### CFormationのStackSetsを利用(リソースセクションでアプリの詳細を記述)して、アプリを他のリージョンにデプロイするスタックインスタンスを起動する。

### EC2のユーザーデータを使うとアプリの展開と構成を自動化できる。


## インプレースデプロイ
### Blue/Greenとは違い、稼働中の環境にデプロイを仕掛けていく。
数十TB級のデータは、移行日が何週間かになっていればSnowballを使う。
また、移行時に入れたデータからの差分はVPN経由でオンプレからレプリケーションしてくる。

## エンドポイント監視方法(Route53ヘルスチェック)
### エンドポイントが2XXもしくは3XX系を返すことを確認する
### 特定のテキストがレスポンスの最初の5120バイト内に出現しているか確認する

## :point_up:コールセンターの構築
### Connect(クラウド型のコールセンター)
### Lex(対話型で発信者の意図を認識する)
### Lambda(関連サービスとの統合)

## 継続的デリバリー
### CodePipelineとCodeCommitを使った組み合わせ
### 別のパイプラインを生成する
### Codebuildで単体テストを行う
### CodeDeployを使ってS3などに入っているコードをデプロイする

## AWS Config
リソースの設定を継続的に監視および記録する

AWS Config Managed Rule
これで、承認済みのAMIを使用しているかなど監視する。

## OpsWorks
OpsWorksの自動修復機能を利用して、障害発生時にすぐに再起動するようにする。
OpsWorks Stackでは起動中に最新の更新を行う。
→ライフサイクルイベントはインスタンス(AMI)そのものではなく、インスタンス内でのタスク実行

OpsWorksで立てたリソースのパッチ更新
・新しいインスタンスを起動して、現在のインスタンスと置き換える(新しいインスタンスには最新のセキュリティパッチが入っている)
・Linuxベースの古いインスタンスでは、Update Dependenciesスタックコマンドを実行する

## DevOpsの構築
### OpsWorksのスタック、レイヤー、インスタンスを構成
### CodepipelineでソースをS3バケットとして、選択→アプリのzipファイル化
### Opsworksスタックを展開プロバイダとして設定、アプリをスタックに自動でデプロイ

## CloudFormation
RDSとS3をCFormationで作成したあと、いつでもデータを使用できるようにしたい時
DeletionPolicyについて
RDSをsnapshot、S3をretainにしておく。
RDSにアクセスを常にしたい場合はretain。

## EFS
サーバが大量にあり、データの中身が急速に変化する場合は、EFSを用いる(S3ではなく)
また、EFSはオンプレとAWSの間でリソースを共有できる。

## Systems Manager
Systems ManagerのState Managerは大規模サーバの一括構成管理に向いている。

パッチ管理はSSMエージェントをEC2にインストールして、Systems Managerで行う。

### 未承認のAMIでEC2を起動しようとした際の保護と監視について
### Systems ManagerのPatch ManagerでインストールOKなパッチを定義したパッチベースラインを設定する。
### 承認済みAMIを使用しているかどうか、AWS Configのmanaged Ruleを用い、監視し、問題があれば、通知を行うため、CloudWatchを使う。
### 終了させる場合はLambdaを使う 

パッチ運用
・AWS-DefaultPatchBaselineを使用してパッチを決定、メンテナンスウインドウを作成
・AWS-RunPatchBaselineドキュメントを使用してパッチを適用
※パッチグループのタグは1つしかつけられない。
※メンテナンスウインドウでは破壊的なパッチ適用は行わない。スケジューリングすることができる。

# Step Functions
変更に伴うデプロイなどでサーバレス環境のワークロードを自動化したい

## EBS 
Data Lifecycle ManagerでEBSの自動バックアップアンド鮮度維持を行う。

## Lambda
バッチ処理をLambdaでやった時にスケーリングできない
→IPが足りない
→VPCにサブネットENIおよびIPがない。

## AWS Limit Monitor
### CloudWatch + Lambda + SNS
### ビジサポ必須

## CloudTrail
### CloudTrailはグローバルサービスオプションを有効にすると、複数のリージョンにおける証跡を一元化することができる。

### データイベント→S3オブジェクトのAPIオペレーション

### 管理イベント→SGの設定、ログ記録の設定、デバイスの登録などなど

### :point_up:CloudTrailとCloudWatchEventsを統合して、CloudWatchEventsがアラームを起こす。

### :frowning2:CloudTrail単体では不正なアクティビティは検出できない。

### CloudTrailの設定
### 新しいS3バケットを各アカウントに設定
### S3バケットへのアクセス制御のIAMロールを作成する
### S3バケットへのアクセス制御のバケットポリシーを作成する

## トラフィック監視
### VPCに出入りするトラフィックをIPS/IDSシステムでみはる
### 環境内の変更を見張るにはCloudTrailとCloudWatchを使う

## ログの集約
ログ管理専門のAWSアカウントでKinesis Data Streamを作成する
各アカウントからData Streamのサブスクリプションを利用してCWatch LogsからData Firehoseストリームに配信してログ管理専門アカウントのS3バケットにログを保存する。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/Subscriptions.html

## Redshift
Redshiftはクロスリージョンスナップショットコピーを行うことが可能である。
移行先でマスターキーのセットアップを行う。
ただ、Multi-AZは組めない。
自動スナップショットを持つようにし、クロスリージョンスナップショットコピーを実行すれば、DRサイトに自動で複製される。

## IAM
### リクエスタ支払いをしたい場合、クロスアカウントアクセスは使わない。ロール作成元(ブーメラン)に料金が飛んでしまうから。

### PowerUserAccess
開発者の権限管理にうってつけ。
IAM、Organizationsの権限がなく、そのほかの権限が全てあるので。

## Organizations
SCPをOUに付与する際は、アカウントを1つ1つ移動していく
IAMのサービス最終アクセスデータや、CloudTrailで問題ないか確認をしておく。

### 認可には使用できるが、認証には使用できない。

#ストレージ系

## RDS
### RDSで読み取り多発の場合は、
・ストレージをプロビジョニングIOPSタイプにする
・リードレプリカを準備する
・もしくはECacheを手前に置く。

### RDSで書き込み多発して、将来的に厳しい場合
・Kinesis Data StreamsとLambdaを用いてデータを取り込み処理する
・RDSからDynamoDBに移行する。

### 別リージョンにリードレプリカを作成することができる。
これで1つのリージョンにデータを集約させることができる。


## EC2
### EC2で書き込みが遅い場合は
RAID0にしてストライピング(複数のHDに同時に分散して読み書き)化を行い、性能を上げる
RAID1はミラーリングで耐障害性を上げる。
インスタンスタイプをあげてIOPSを上げる。
### ハードウェア専有インスタンスを作成しても同じ物理サーバ上で作り続けられるとは限らない

### スケーリングする際は、CloudWatchアラームを使用してAuto Scalingポリシーを作成する。

### EBSのI/Oパフォーマンステスト
### テストの前に全てのブロックを読み取り、事前にEBSが温められていることを確認する

## DynamoDB

### 書き込み
DynamoDBで動作が遅い場合(書き込み)には、SQSキューを起動

大量の書き込み案件には、
フロントにAuto Scaling EC2、その後ろにバッファリングのためのSQS、そしてDynamoDBがベスト。

### DAX
DAXのメモリキャッシュサービスを使うことにより、読み込み性能が向上する。

### リザーブドキャパシティ
DynamoDBで性能を上げたい場合は、
リザーブドキャパシティを購入しておいて、割り当てると良い。


### リージョン間同期
DynamoDBで複数のリージョンでデータを同期させたい時は、
Dynamoグローバルテーブルを活用し、Streamオプションを有効にしておく。

昔はDatapipelineによるLastupdated属性によるフィルターによるコピー

### リージョン間同期(DR的な)
クロスリージョンレプリケーションも使える

### ﻿グローバルセカンダリインデックス
パーティションキーとソートキーをもつインデックス。ベーステーブルのものとは異なる可能性がある。
全てのパーテションにまたがりベーステーブル内の全てのデータを対象とする可能性があるので、グローバルと呼ぶ。

### ローカルセカンダリインデックス
パーティションキーはベーステーブルと同じだが、ソートキーが異なる。
同じパーティションキー値を持つベーステーブルのパーティションに限定されるという意味でローカル。

## Aurora
### Aurora Serverless 
使いどころ
・予測不可能なワークロードのとき
・使わない時がある場合(自動でシャットダウンできる)

制限
・パブリックIPを割り当てることはできない(VPC内からのみアクセス可能)

## S3
### S3DistCp→書き込み処理が原因でアプリ動作が不安定な場合
S3DistCp + EMRで分散DBのような振る舞いをさせることも可能
To オンプレDB
DistCpでHDFSに効率的にコピーできる。
そこからEMRの機能が使える。

### S3 Transfer Acceleration
アップロードパフォーマンスを向上させる

## Hadoop
### MapReduce
Mapでキーバリューをマッピングし
Reduceで欲しいデータを集計する。

HiveはMapReduce処理をSQLライクにできる。

## EFS
### 性能向上 
1つのEBSボリュームを複数のEC2で共有する場合に、性能が出ないときはEFSを使う。

### EFSは複数AZ間で共有できる
## DBクラスタ
### DBクラスターの性能を上げたい場合
・ENAの拡張ネットワーキングを使う
・クラスタープレイスメントグループを使う(単一AZ内のインスタンスを論理的にグループ化)
・ジャンボフレームを有効にする

## ホストのアフィニティ
有効にしておくと、特定のホストで起動したインスタンスが停止しても常に同じホストで再開される。

## 大容量データの処理とBIをマネージド
Atheta + QSight


## :point_up:Lambda@Edge
### CloudFrontサイトなどでUX(ログインが遅いなど)が悪い場合
### A/BテストやB/Gデプロイで役に立つ。

### CloudFrontを使っていて、ログイン処理などが遅い時
### ・Lambda@Edgeで近いところで認証処理
### ・オリジングループを作って、オリジンフェールオーバーをセットアップ

## RDS障害発生時
### DB障害が起きた時、RDSイベント通知を行うように設定しておく
### 通知を受けたらLambdaをトリガーにして、リードレプリカがあればそれをマスターに昇格させる。

# 設計系

## SQS
### リージョン間でデータの処理などをレプリケーションしたい場合は、スケールアウトできるSQSを仲立ちして処理することもできる。

## AppStream
### マネージド型ストリーミング提供サービス
### RDSを使用して、ユーザーアカウントの管理や保存などができる。

## ECS

### 特徴
・Dockerコンテナに対応した管理システム
・VPCやELB、EBS、IAMなどが利用できる。

### デプロイ
Elastic Beanstalkは、デプロイとスケーリングを簡単に行うことができるのでコードの記述に集中できる。
なので、この上にECSを乗っければ、環境を意識せずにより楽にアプリをリリースできる。

## SAM
### CI/CD
サーバレスでCI/CDパイプラインを構築する場合は、
SAMを使用して、CBuild、CDeploy、CPipelineを構築する。

## Cognito
### 認証
モバイルアプリで大量ユーザーがいる場合、認証はCognitoを使う

## SNSを使ってデバイスにサイレントプッシュ通知→ユーザーには表示されない。

## モバイルアプリの設計
### モバイルアプリでデータをクライアントに即時に投げたい時
SQSにリクエストを投げて、EC2 groupがDynamoからデータを引っ張り出し、Mobile Pushを使用してクライアントモバイルに送信する。

## リアルタイムデータのDWHへの格納と過去データ削除
KinesisーLambdaーEMRーRedshift

## API GW
### API Gateway Lambda統合
・APIメソッドをLambda関数に統合する
・CognitoユーザープールでAPIヘのアクセス制御
・DynamoDBで永続的ストレージを提供
・保護されたS3バケットでコンテンツ配信するために署名つきURLを使用

## Elastic Cache
## Elastic Cacheクラスターのデータ耐久性は
・自動バックアップ
・Redis追加専用ファイル(AOF)を利用した手動バックアップ
・自動フェールオーバーを備えたマルチAZセットアップ

## Kinesis

### Data Streams
ストリーミング

### 拡張ファンアウト
コンシューマとシャード間に論理的な2MB/sのスループットパイプを提供する→データストリームから読み取る処理を増やせる。

### Firehose
データストリームをAWSのサービスに直接ロードする
S3とか。

## DataPipeline
### タスクランナーはDatapipelineから実行するタスクを受け取るためにPollForTaskを呼び出す。


# バックアップ系
## バックアップサイトですぐに復旧させたい場合
DBはクロスリージョンレプリケーションで別リージョンのS3に保存
トランザクションログはRPO以内に収まるようにする。

### クロスリージョンレプリケーションはS3でもGlacierでも使える




# 移行系

## Snow系

### Snowmobile1つよりはSnowball複数のほうが効率はいい。

## SMS
### SMSはDB2をサポートしていない。DB2はDMSを使え！

## DMS
### :frowning2:DMSはRDS on VMwareには対応していない。

### :point_up:データ変換(SCT)


## Aamzon MQ
### :frowning2:Apache ActiveMQ用のメッセージブローカー

### 移行対象
DMSでOracleDBを移行する場合、暗号化などはほとんど対応している(TDEなど)


## Storage Gateway

### ファイルゲートウェイ
:point_up:NFSなどのファイルプロトコルを使用して、S3でオブジェクトの保存と取得ができる。直接アクセスできる。バックアップファイルなどをおいておくと良い。
### テープゲートウェイ
:frowning2:S3に保存されたデータに直接アクセスすることはできない。(Storage Gateway APIを使う必要がある)
Glacierへのアーカイブが可能である。

### キャッシュゲートウェイ
:point_up:AWS側でストレージボリュームを作成して、オンプレサーバにアタッチして低遅延アクセスを可能にする。

## Discovery Service
各仮想マシンにエージェントを入れて、デプロイすれば、全ての情報を収集できる。
※エージェントレスだと全ての情報は収集できない。
※サーバ間のネットワーク情報や、ワークロードなどを入手したい場合はエージェントを入れるしかない。

## 別リージョンへの移行
### PEMキーは別リージョンにコピーされないが、同じPEMキー名で起動されることを確認する必要がある。

## オンプレ

### オンプレアクセス低減
オンプレミスで、大量トラフィックを捌くためにはCloudFront distributionをAWSに立てて、Route53でそちらに向けておく。そうすることで、エッジにキャッシュされ、オンプレへのアクセスが減る。

## 移行ステージ
### リホスト
手動で移行したり、SMSを使ったりなどでとりあえず移行すること

### リプラットフォーム
既存のコアアーキテクチャを変更せずにメリットを享受する
RDSに置き換えたりなど

### 再購入
別の製品に移ること
使用してきたライセンスモデルを変更する

### リファクタリング

### 使用停止
役に立たないのでやめる。

### 保持
移行する準備ができてないのでそのままにする。


# その他

### 有限の顧客に専用のS3バケットを準備する
### 単一のS3バケットを作成して、顧客ごとにIAMユーザーを作成してusernameなどのポリシーh変数を使ってバケット内のサブディレクトリへのアクセスを制御すれば大量にバケットを作らなくてよくなる

### 外部ホストにアクセスしたい時に、ホワイトリストで管理する場合はnATゲートウェイのElasticIPでやり取りするのが良い

### S3 One Zone-IAやStandard-IAは頻繁にアクセスされるデータには向かない

## ストレージサービスの通知(容量制限が段階的くる場合)
### DynamoDBのユーザーデータカウンターを更新するSWFのアクティビティワーカを用いて、SESで通知する。

## オンプレのVCenterから大量のデータを持っていく場合
### VM import Connectorを使うのもよろし

## オンプレからVPCに大量のデータを持っていく場合に一回限りじゃない時
### DXを使う

## 移行する場合にLDAPを使うときはVPN接続が必要

## CloudFrontで提供されているサイトで更新が頻発する際はTTL0で設定して提供する

## KMSのまとめ
### マスターキーとデータキーの2種類のキーをサポートしている
### マスターキーは最大4KiBのデータを直接暗号化および復号化するために使用できる、データキーを保護するためにも使用される
### データキーは顧客データの暗号化と復号化に利用される。

## 誤ってEC2を削除した際のリカバリ
### IAMユーザーとともにリソースベースのタグ付けを活用する

## CloudFormationを活用したAWSへの移行
### CFormationでVPCやNATGWなどのインフラを構築、Codecommitでバージョン管理
### ネストされたテンプレートで、Opsworksスタックを作成してアプリをリリース

## ストリーミングデータを複雑なクエリで分析する場合
### まずはKinesisのデータストリームで送信し、変換
### Lambdaで2爪のデータストリームに送信し、Kinesis Data AnalyticSでクエリ(分析)する

## EMRで完了時間を短縮させたい時
### 同時マッパータスクの数を調整
### MApreduceジョブ構成で入力分割サイズを変更

## DXでS3パブリックエンドポイントへの接続を確立する
### パブリック仮想インタフェースを構成する

## 顧客が大容量画像をDLしたい場合
### IAMロールを作成して、署名つきURLを発行
### CloudFrontディストリビューションを作成
### S3バケットで静的ホスティングを有効


## OpsWorksを使った新しいリリース法
### OpsWorksでスタック、レイヤー、インスタンスを構成
### CodepipelineでソースをS3バケットとして選択することによりアプリがzip化される。
### これを用いてOpsWorksで展開する

## I/Oパフォーマンステスト
### 事前に全てのブロックを読み取って、EBSボリュームを暖めておく

## CloudFrontを用いた配信でのロード時間の短縮
### distributionを作成する
### クエリ文字列の転送を有効にしておく
### TTL 0
### 他、ストリーミングの場合はダウンロードオプションを使う


## キャッシュボリューム
### 頻繁にアクセスされるデータに対して低遅延で提供できる
### S3に保存される

## ストアドボリューム
### スナップショットをS3に非同期でバックアップできる
### EC2にリカバリすることができる