AWSSysOps備忘録1

#全般

- Amazon リソースネーム（ARN）
    - リソースを一意に識別する
- ユーザベースおよびリソースベース

#その他

- AWS API
    - アクセス資格情報の使用を評価
        - 署名証明書
        - コンソールのパスワード
        - アクセスキー
- AWS SDK
    - IAMロールを使用する場合はAPIキーを明示的に取得する必要なし
- スナップショット
    - 自動：インスタンス削除時に一緒に削除される
    - 手動：インスタンス削除時にスナップショットは保持される


#EC2

##EC2

- インスタンスタイプ
    - M5aインスタンスタイプとM5は使用されているCPUが違う
    - M5a：AMD
    - M5：Intel
    - hi1：(4xlarge)4Kブロック、120000回のランダム読み出しIOPS、10000~85000ランダム書き込みIOPS
- インスタンスのテナント属性
    - default：共有するハードウェア
    - dedicated：シングルテナントのハードウェア
    - host：Dedicated　Hostはユーザーが設定を制御できる隔離サーバー
- EC2のプラットフォームは２種類
    - EC2-Classic：他のユーザーとネットワークを共有する古いタイプ
    - EC2-VPC：VPCを用いたプライベートなネットワークを利用する今時のタイプ
- インスタンス停止した時の挙動
- EC2-Classic
    - 関連づけられているEIPを解除する
    - 関連づけがなくなったEIPは課金される
    - インスタンスを再起動すると、再度EIPの関連づけが必要
- EC2-VPC
    - EIPは保持される
    - 停止されているインスタンスに関連づいているEIPに対して課金される
- AWSの認証情報
- 災害復旧
    - AMIを作成し別リージョンにコピーして、そのリージョンでAMIからインスタンス作成・起動
    - システム状態チェック
        - impaired：ホストが壊れている可能性がある
        - 障害時：EBS停止→インスタンス終了→再起動
- S3へデータをアップロードする際、ネットワークスループットがボトルネックになっている対策
    - より大きなインスタンス変更（インスタンスタイプ：R4インスタンスはネットワークパフォーマンス）
- RI(リザーブドインスタンス)
    - 最大75％割引がある
- プレイスメントグループ
    - 同じリージョン内のピアVPCにまたがることができる
- クラスタープレイスメントグループ
    - インスタンスタイプの制限
        - 汎用: A1、M4、M5、M5a、M5ad、および M5d
        - コンピューティングの最適化: C3、C4、C5、C5d、C5n、および cc2.8xlarge
        - メモリ最適化: cr1.8xlarge、R3、R4、R5、R5a、R5ad、R5d、X1、X1e、および z1d
        - ストレージを最適化: D2、H1、hs1.8xlarge、I2、I3、および I3en
        - 高速コンピューティング: F1、G2、G3、P2、P3
    - 単一アベイラビリティゾーン内のインスタンスを論理的にグループ化
    - 10Gbpsのフロー制限
    -　完全2分割
        - 非ブロッキング
        - 非オーバーサブスクライブ
    - プレイスメント内の他のノードどうし対話することができる
        - オーバーサブスクリプションの遅れなしに10Gbpsフロー可能
        -　25アグリゲートで行われる
- パーティションプレイスメントグループ
    - AZ内のパーティションにまたがって分散されているインスタンスグループ
    - パーティション毎に、別の基盤ハードウェアを使用している（共有しない）
    - ハードウェアを拠有しないのでハードウェア障害の影響は1つのパーティションのみ
- スプレッドプレイスメントグループ
    - それぞれ異なるハードウェアに配置されるグループ
    - ハードウェア専有インスタンスとDedicated Hostsでは使えない
    - 1つのAZ内の7つの基盤を共有しないインスタンスを指します。
    - 少数の重要なインスタンスがお互いに分離して保存されるアプリケーションに推奨
- EC2 フリート
    - 様々なEC2インスタンスタイプのキャパしいティーのプロビジョニングを簡素化する新機能
    - 単一のAPIコールでインスタンスタイプや購入モデルのキャパシティーをプロビジョニング
        - 必要な規模、パフォーマンス、コストを達成できる
- NATインスタンスを通貨するトラフィック量が増加し、通信速度が低下している
    - NATインスタンスのインスタンスタイプを大きくする
    - NATインスタンスを追加する
- インスタンス
    - オンデマンドインスタンス
    - スポットインスタンス
        - データ分析、バッチジョブ、バックグラウンド処理、オプションタスクに適する
        - オンデマンドより低価格で利用できる
        - スポット料金
            - 長期供給と需要に基づいて徐々に調整されている
        - リクエスト1時間あたりの上限価格がスポット料金を越えるたびに実行される
        - アプリケーションの実行時間が柔軟でありや中断可能である場合には費用対効果が高い
    - スタンダード リザーブドインスタンス
        - 交換はできずに変更のみができる
        - インスタンスタイプは変更できない
        - 一部の属性は期間内で変更できる
            - インスタンスサイズなど
        - リザーブドインスタンスマーケットプレイスで販売できる
    - コンバーティブル リザーブドインスタンス
        - 期間内で新しい属性に変更可能なもの
            - インスタンスファミリー
            - インスタンスタイプ
            - プラットフォーム
            - スコープやてナンシー
            - リザーブドインスタンスマーケットプレイスで販売できない
        - 年間通じで稼働し、インスタンスタイプをアップグレードする必要がある場面で使用される
- バーストパフォーマンスインタンス
    - unlimited
        - 必要なときに任意の期間にわたって高いCPUパフォーマンスを保持できる
        - 24時間ごとのインスタンスの平均CPU使用率、存在期間のいずれか短い方の時間で平均CPUの使用率がベース以下になった場
            - 1時間ごとのインスタンス価格は自動的に全てのCPU使用率スパイクをカバーする
- インスタンス状態が再起動後、pendingからterminatedに変わる原因
    - EBSスナップショットが破損している
    - EBSボリューム制限に達成した
    - ルートEBSが暗号化されていて、復号用のKMSキーへのアクセス権がない
    - インスタンス軌道に使用したInstanceStore-BackedAMIでひつy０王なimge.part.xxファイルがない
-　削除された理由は「AWS Command Line Interface」で確認できる
- 単一リージョン内の末b手のEC2インスタンスを集計するには詳細モニタリングが有効化されている必要がある
- impaired(機能していません)はホストが壊れている可能性
    - 正常なホストイッステム祭デプロイするために、インスタン停止して開始を行う
    - システム状態チェックが障害状態の場合
        - EBSの停止、インスタンスストアを終了して再起動する必要がある
- インスタンスを起動する際、AZを選択しないことをお勧めする
    - AWSはシステムの健全性に基づいて最良のアベイラビリティゾーンを自動に選択する


##Auto Scaling

- スケジュールに基づいたスケーリング
    - ウェブアプリケーションの予測可能なトラフィックパターンに合わせてスケーリングを計画
    - 2つの別々のスケジュールの内容が重なってしまった場合は競合を知らせるエラーが発生する
- インスタンスの起動を繰り返し失敗するAutoScalingグループ
    - プロセスが停止されることがある（管理上の停止）
    - 24時間以上インスタンスの起動を試みているが成功しない場合
-　AutoScalingのインスタンスの終了と起動の順序
    - 異常なインスタンスの終了->新しいインスタンス起動
- プロセス
    - 基本プロセスタイプ
        - Launch：新しいEC2インスタンスをAutoScalingに追加
        - Terminate：インスタンスをグループから削除
    - 他のプロセスタイプ
        - AddToLoadBalancer：インスタンス起動時にロードバランサーやターゲットグループに追加
        - AlarmNorification：関連づいてるCloudWatchアラートからの通知を受け取る
        - AZRebalance：関連づいてるAZ間でインスタンス数を均等に保つ
        - HealthCheck：ELBからの異常通知が届いた場合、インスタンスのステータスに異常と表示
        - ReplaceUnhelthy：異常のマークがあるインスタンスを削除し、新しく作成
        - ScheduleActions：予測スケーリング機能によって作成されたスケーリングアクションを実行
- 起動設定が更新されると、同時に複数のノードが無効になる
- EC2メトリクス（組み込みメトリクス）を使用してAutoScalingイベントのトリガーにした
    -　CPU使用率
- AutoScalingグループのインスタンスがカスタムメトリクスをCloudWatchに送信したい
    - PutMetricData権限を使用してIAMロールを作成、軌道設定にロールを関連づける
- 別々のAZのAutoScalingグループ2つをAZまたがる1つのグループにマージしたい
    - 1つのAutoScalingグループの設定を更新して、もう１方を削除する
    - 設定を動的に更新：update-auto-scaling-groupコマンドを実行する
- 詳細モニタリング
    - AutoScalingグループをAPI、CLIから作成するとデフォルトで詳細モニタリングが有効
         - コンソールから作成した場合はデフォルトで基本モニタリングが有効
- CLIからAutoScalingを削除
    - 最小サイズ(min)とDesred capacityを0にする



##AMI

- AMIの分類
    - Amazon EBS-Backed
        - AMIから起動されるインスタンスのルートデバイスがEBSスナップショットから作成されたもの
        - デフォルトではインスタンス終了時にルートボリュームは自動的に削除される
    - Store-Backed
        - S3に格納されていたテンプレートから作成されたもの
        - デフォルトではインスタンス終了時にルートボリュームは自動的に削除される
- AMI取得時の流れ
    - (1)バンドルプロセス
        - ボリュームを圧縮・暗号化署名を行う
        - 完了まで数分かかる
    - (2)バンドル（以下の二つのファイルから構成されている）
        - イメージマニュフェスト（image.part.xml）
        - ルートボリュームのテンプレートを含むファイル(image.part.xx)
    - (3)バンドルをS3バケットにアップロードしてAMIを登録する
- AMI IDはリージョン毎に固有
- AMI作成に必要なタスク
    - AMIツールインストール
    - CLIインストール
    - バンドルにS3があることを確認
    - AWSアカウントIDがあることを確認
    - アクセスキーID、シークレットアクセスキーがあることを確認
    - X.509証明書および対応するプライベートキーがあることを確認
    - インスタンスに接続し、ソフトウェア、アプリのインストール、データコピー、一時ファイル削除
    - Linux設定変更
- 特定のAWSアカウントとAMIを共有できる
    - AMIを暗号化されたボリュームと購入する場合、暗号化に使用したCMKも共有が必要
- Instance Store-backed AMI
    - S3バケット名：
    - amis-for-アカウント-in-リージョン-ハッシュ
-  制限
    - 同時コピー数：50個
- Instance Store-Backed Windows AMIからAmazon EBS-Backed Windows AMIへの変換はできない
    - linuxならできる


##EBS

- ユースケース
    - （スループットが高いアプリ）
    - 長時間の連続読み取り/書き込み
    - ランダムな読み取り/書き込み
- io1(プロビジョンド IOPS SSD)
    - ボリュームサイズ：4GiB〜16TiB
    - IOPS：100~32,000IOPS
    - ボリュームサイズに対するプロビジョンドIOPSの割合（単位GiB）：50 IOPS対1 GiB
        - IOPS最大時は32,000IOPS（５０＊６４０GiB＝32,000)
    - 制限
        - スナップショット数：100,000
        - ボリューム数：1,000,000
- EBS暗号化は作成時のみ設定可能
- EBS作成後は、データを手動で暗号化するか、サードパーティのツールを使用して暗号化する必要あり
    - もしくは、スナップショットから作り直す
- EBSのパフォーマンスを向上するには
    - EBS最適化インスタンスを利用する
    - プロビジョンドIOPS SSDを使用する
- スループット出ない時の確認項目
    - 10GiBのネットワークじゃないか
    - インスタンスがEBS最適化になっているか
    - 存在するか
- EBSsnapshotを公開する
    - EC2>EBS>SnapShotからAction>Modify Permissionsを選択
        - PublicかPrivateを選択する
- コマンド
    - ec2-create-snapshot：CLIでスナップショットを作成

##ELB

- リスナーとは接続リクエストをチェックするプロセス
- ロードバランサーはヘッダーを変更せずにバックエンドインスタンスにリクエストを転送する
- クライアントとバックエンドインスタンスの間のトラフィックをインターセプトする
    - バックエンドインスタンスのログには
        - 発信元クライアントのIPアドレス
        - ロードバランサーのIPアドレス
    - Proxy　Protocolを有効にすると
        - 発信元IPアドレス
        - 発信先IPアドレス
        - ポート番号などのクライアント情報も含まれる
- セキュリティポリシーで古い暗号スイートを利用しているクライアントが拒否されないようにしたい
    - ELBSecurityPolicy−2014−01のポリシーを選択する
    - [ELBポシリーに関しての参考サイト](1https://dev.classmethod.jp/cloud/aws/sugano-028-security/)
- インスタンスが登録されているELBを削除した
    - ELBは削除され、インスタンスはELBから解除され継続して実行される
- ELBとクライアント間はSSL接続でサポートされるプロトコル
    - Server Order Preference
        - サーバーの優先順位オプションをサポート
    - SSL Ciphers
        - 暗号化キーを使用してコード化されたメッセージを作成するアルゴリズム
    - SSL Protocols
        - SSLやTLSなど、機密データの暗号化に使用されるプロトコル
- Connection　Draining
    - 登録解除中や異常なインスタンスにリクエストを送らないようにする
    - コンソールorCLIから無効にできる
- CLBと比較してALBは費用対効果が高い
- 料金（東京：2019年8月現在）
    - CLB：0.0270USD/1h
    - ALB：0.0243USD/1h
    - NLB：0.0243USD/1h
- メトリクス
    - SpilloverCount
        - 保留中のリクエスト（HTTPリスナー）か接続（TCPリスナー）の合計数がいっぱい
        - サージキューがいっぱいで、拒否されたリクエストの総数
        -　HTTP　503エラーコードを返す
        - その前にSurgeQueueLengthで様子を見られる
    - SurgeQueueLength
        - 正常なインスタンスへのルーティングを保留中のリクエスト、接続の合計数
        - キューの最大サイズは1,024
- NLB
    - ホワイトリスト登録する静的IPアドレスを割り当てることができる
    - 開放型システム乾燥後接続（OSI）モデルの第４層で機能
    - 毎秒数百万のリクエストを処理可能
    - クライアントの送信元IPアドレスが保持され、アプリケーションに提供される
- CLB
    - １つ以上のリスナーを設定する必要がある
    - URLがhttpsの場合、ELBはポート443でトラフィックを許可するように設定が必要
- アクセスログ
    - ELBから有効にする
    - S3に保存される
- ヘルスチェックが失敗しているのにインスタンスが置き換えられていない
    - AutoScalingグループでELBヘルスチェックを使用するように設定する
- 配下のインスタンスで負荷分散が偏っている時
    - スティッキーセッション（セッションの記憶）を無効にする
        - スティッキーセッション：ユーザーのセッションを特定のインスタンにバインドする 
    - ウェブソケットなどの長いポーリングを使用している場合、webサーバへの接続を長く開いてしまう
- Pre-warmingをピーク時に予測された要求と一致するようにすることでサービス中断を避ける
    - 暖気申請  
- AutoScalingグループに1つや複数のELBをアタッチし、インスタンスがELBのヘルスチェックに合格しなかった
    - その場合はデフォルトでインスタンスを置き換えない
    - EC2インスタンスステータスチェックとLBのヘルスチェックの両方を使用することもできる
-　複数ELをアタッチしている場合、一つでも異常ステータスを出した場合、インスタンスを置き換える 
- アクセスログ
    - ログの感覚：5~60分
    - フィールド
        - bucket名、ブレフィックス、aws-accounnt-id、リージョン、yyyy/mm/dd、Load-balancer-name 
        - ennd-time、ロードバランサーのプライベートIP、random-string（ランダムな文字列）
- ２つのセキュリティグループ
    - VPCセキュリティグループ：EC2-VPCプラットフォーム
    - DBセキュリティグループ ：EC2-Classicプラットフォーム
        - EC2-Classicのみで使用できる
        - RDSでイベントが発生した場合、SNSを使用して通知できる
        - イベント：（DB）インスタンス、セキュリティグループ、スナップショット、パラメータグループ
- Proxy　Protocol有効にする条件
    - LBがProxyProtocolが有効になってるプロキシサーバの背後にいないこと
    - プロキシサーバーとLBの両方でリクエストにヘッダーを追加すると重複し、インスタンスの設定によってはエラーになる
- ProxyProtocolとは
    - 接続をリクエストする送信元から送信先に接続情報を伝達するためのインターネットのプロトコル
    - 有効にすると以下の人間が理解できるヘッダーがリクエストヘッダーに追加される（インスタンスにも送信される）
        - 送信元IP、送信先IP、ポート番号


#Amazon VPC

##VPC

- VPCに接続する時に外部ネットワークとの接続を提供するコンポーネント
    - VGW（仮装プライベートゲートウェイ)
        - ルーティング可能なトラフィックの送信先をVPCのルートテーブルに追加できる
        - パブリックIPv4アドレス付きのインスタンスに対してネットワークアドレス変換（NAT）を行う
    - IGW(インターネットゲートウェイ)
        - VPN接続のAmazon側にあるVPNコンセントレーター
- パブリックVPN
- ハードウェアVPN
    - VPN専用サブネット
    - データセンターと接続するVPC仮装プライベートゲートウェイ
    - VPNに接続しただけの状態でコンソールからVPCを削除した場合、全ての設定を削除し、ゲートウェイから切り離す
- インターネットゲートウェイでVPN接続を行う場合
    - カスタマーゲートウェイが必要になる
- インスタンスからネットに繋ぐが、ネットからインスタンスに繋がせたくない
    - Egress-Onlyインターネットゲートウェイを使用する
- オンプレの認証（LDAP）をAWSサービスでて一円接続で使用したい
    - データセンターとAWS間をVPN接続
    - AWS状にLDAPレプリカを作成し、認証にLDAPレプリカを使用するようにアプリ側の設定を行う
- VPCピアリング接続
    - 相互にピアリング接続し、ルートテーブルを変更する
- デフォルトのVPC（SG）では、同じサブネット内の通信は可能
- ユーザが作成したVPC内のセキュリティグループはアウトバウンドが全て許可

##NACL

- サブネットに関連づけられたネットワークACLよりIPを明示的に拒否できる

##VPC エンドポイント

- 冗長性と高可用性を備え、水平にスケールするため帯域幅の制約はない
- VPCをプライベートに接続できる
- 2種類
    - インターフェイスエンドポイント
        - https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-endpoints.html
    - ゲートウェイエンドポイント
        - S3,DynamoDB



##VPC フローログ
    
- VPCネットワークインターフェイスとの間で行き来するIPトラフィックに関する情報をキャプチャ
- ログ先：CloudWatch、S3
-　インスタンスに到着していない場合のトラブルシューティング等に役立つ


##ルートテーブル

- NATゲートウェイを使用したプライベートサブネットのルートテーブルの書き方
    - Destination： 0．0．0．0/0　and　Target： {NatGateway（インスタンス）のID}
- Site-to-Site VPN接続の状態がUPであるとき
    - 静的ルーティング：VPNに設定した静的IPプレフィックスがルートテーブルに伝播する
    - 動的ルーティング：カスタマーゲートウェイからBGPでアドバタイズされたルートがテーブルに伝播する


##ネットワークインターフェイス

- EC2に複数のENIを付与することで、別々のSSL証明書で実行できる
- 複数ENIを付与し、1つのサーバーで複数のウェブサイトをホストできる


#RDS

- 複雑なクエリとテーブル結合が必要な場合にRDSは適している
    - Multi-AZなら高可用性も持ち合わせる
- フェイルオーバ
    - DBインスタンスの正規名レコード（CNAME）を反転させてスタンバイをポイントする。
    - 切り替え時間：60〜120秒
- マルチAZ時のフェイルオーバー
    - DBインスタンスのエンドポイントは変わらない
- 読み取り負担の軽減
    - リードレプリカ
    - ElastiCache
- 書き込み負担の軽減
    - シャーディング
- メンテナンスによる更新が利用可能（OSのパッチ適用）かどうかはRDSコンソールから確認できる
    - Maintenanceの列に表示され
- メンテナンスで強制的にオフラインになるのは
    - インスランスの修正（インスタンスクラスのスケーリング）
    - ソフトウェアパッチ適用
- DBインスタンスのセキュリティを強化したい
    - DBインスタンスでSSL（Secure Socket Layer)接続を使用する
    - RDS暗号化を使用して、休止中のDBインスタンスとスナップショットを保護
    - セキュリティグループを変更して、ウェブアプリからのアクセスのみ許可
- ウェブサーバーからデータベースへの接続エラー
    - 接続ポートミス
    - セキュリティグループのミスRDS
- RDSメンテナンスウィンド
    - DBインスタンス作成時に希望する毎週のメンテナンスウィンドウを指定しないとデフォルトになる
    - デフォルト：30分
    - インスタンス修正やパッチ適応にメンテナンスウィンドウを利用する
    - マルチAZにすることでメンテナンスでインスタンスを利用できない件を回避できる
- メンテナンス期間中のイベントの順序
    - 1.スタンバイに対してメンテナンスを実行
    - 2.スタンバイをプライマリに昇格
    - 3.旧プライマリでメンテナンスを実行後、旧プライマリは新しいスタンバイになる
- マルチAZ配置
    - Amazonテクノロジーを使用
        - Oracle、PostgreSQL、MySQL、MariaDB
    - SQL　Server　ミラーリングを使用
        - SQLServerDB  


##SQL Server

- msdbデータベースへのデータインポートはサポートしていない

##MS SQL Server

- オプションで提供されていないマルチAZ配置を実現するには
    - 同期レプチケーションを使用し。SQLServerネイティブミラーリングテクノロジーを採用

##Aurora

- DBクラスター
    - リードレプリカのReplicaLogメトリクスが高い状態
        - ショッピングサイトであれば、商品が断続的に購入リストに反映されない可能性あり
    - クラスターは2種類のDBインスタンスで構成される
        - 1つ以上のDBインスタンス
        - DBインスタンスのデータを管理する1つのクラスターボリュームで構成
- エンドポイント
    - 読み取りエンドポイント
        - DBクラスターへの読み取り専用接続のロードバランシングサポートを提供
    - クラスターエンドポイント
        - DDLステートメントなどの書き込みオペレーションを実行できる
    - インスタンスエンドポイント
        - DBクラスター内のAuroraレプリカごとに１つのエンドポイントがあります

#DynamoDB

- データベースの拡張性、管理、パフォーマンス、および信憑性が必要な場面に適している
    - 複雑なクエリや結合、トランザクションは適していない
- ユースケース
    - WEBセッション、JSONドキュメント、S3オブジェクトのメタデータ
    - モバイルアプリケーション、ゲーム、デジタル広告サービス、ライブイベント、ショッピングカート
- NoSQLデータベース
- パフォーマンスが高く、低コスト


#S3

##S3

- パブリック（読み取り）設定
    - 全てのオブジェクトを読み取り可能にするバケットポリシーを設定
    - アップロード後に読み取り可能アクセス許可をオブジェクトに設定
- オブジェクトは署名つきURLを仕様することが可能
    - 有効期限切れ日時
- オブジェクトサイズは０〜５TB
- １つのPUTにアップロード可能なオブジェクトの最大は５GB
    - 100MB以上のオブジェクトはMultipartUpload機能を使うことを検討
-　マルチアップロード
    - スループットが改善
    - ネットワーク問題から速やかに回復
    - オブジェクトのアップロードを一時停止/再開できる
        - マルチアップロードは明示的に完了または中止する必要がある
    - 最終的なオブジェクトサイズがわからなくてもアップロード可能
        - オブジェクトを作成しながらアップロードすることができる
- 性能
    - 書き込み読み込み
        - PUT/POST/DELETE：3,500リクエスト
        - GET：5,500リクエスト
- 事実上無制限の量のデータ保存可能
- ACL(アクセスコントロール）
    - バケットとオブジェクトへのアクセスを管理できる
    - アクセス許可に「正規ユーザー（Canonical user）ID」は使用できない
    - IAMユーザーレベルの制御はできない
    - アカウント所持者（他のアカウント）がアップロードできるようにするにはACLでしか設定出来ない

| アクセスコントロールタイプ|AWSアカウントレベルの制御|IAMユーザーレベルの制御|形式|
|:---------------|:------------------:|:------------------:|:----|
| ACL            |              ◯ |        ×        |XML|
| バケットポリシー    |            ◯ |       ◯     |JSON|
| IAMポリシー    　 |              × |       ◯     |JSON|

- 定義済みグループ
    - Authenticated Userグループ
        - 任意のAWSアカウントがリソースにアクセスできる
    - All Userグループ
        - 世界中の誰でもリソースにアクセスできる
    - Log Deliveryグループ
        - バケットWrite許可によりサーバーアクセスログをバケットに書き込める
- パブリックアクセスのS3バケットがあるかどうか確認するには
    - S3のバケットアクセス許可チェックを使う
    - AWS Trusted AdvisorでS3バケットアクセス許可チェックを使う
    - バケット数が多い場合
        - AWS Configを使ってどのバケットが読み・書きのパブリックアクセスが許可されているか特定できる
        - 確認後、S3バケットのパブリックアクセス許可が可能になった場合、通知する設定も可能
- IAMポリシーのStatementでユーザーがS3にアクセスするためにSSLの使用を強制する設定
    - "aws:SecureTransport":"true"
- サーバー側の暗号化を使用したデータjの保護
    - S3のデータはSSE-S3暗号化を有効にすることで保護できる
- ユーザーに影響を与えず、オブジェクトの誤削除をなくす方法
    - バージョニング管理を有効
    - S3バケットでMFAを設定
- バージョン管理と暗号化(SSE-C)キー
    - バケットのバージョニングを有効化する必要がある
    - 同じオブジェクトの異なるバージョンに対して異なる暗号化キーを使える
- S3が提供するAES256暗号化キーを使わずサーバー側の暗号化を使用する
    - 各API呼び出しでキーと暗号化アルゴリズムを送信する
- ACLで他のアカウントに許可を与えるために有効なID
    - 正規ユーザー：所有者を識別するOwner要素が含まれている


#IAM

- グローバル
- 大規模の従業員が利用する場合
    - IAMユーザーやグループごとではなくIAMロールを割り当てる
    - プロキシサーバーを使用して、組織の認証サービス（SSO）にIAMロールを割り当てる
- ログインする際のパス
    -  https://{AWSアカウントID}signin.aws.amazon.com/console/
- AWS認証情報（アクセスキーIDとシークレットアクセスキー）の代わりになる設定
    - リソースにIAMロールを割り当てる
    - 認証情報が誤って開示された場合も、一時的なセキュリティ認証情報のためリスク低減できる 
- ポリシー
    - PassRole：割り当て可能なロールを制限できる 
- IAM SAML IDプロバイダーの作成
    - SAMLフェデレーションをActiveDirectoryとAWSの間にIDプロバイダーを使用してアクセス管理する
    - 書くユーザーに一時的な認証情報を付与できる
- SAML2.0ベースのフェデレーション
    - SAMLフェデレーションをActiveDirectoryとAWSの間にIDブローカーを使用する
    - SAML2.0を使用したIDフェデレーションをサポート(LdP)
        - フェデレーションシングルサインオン（SSO）を有効にする
        - 組織内全員のIAMユーザーを作成せずにコンソールにログインできる
- ベストプラクティス
    - 特権ユーザーに対してFMAを有効にする
    - 認証情報を定期的にローテーションする
- 認証情報のレポートの取得
    - 4時間ごとに１回精製できる
    - ユーザーの各種認証情報
        - パスワード、アクセスキー、MFAデバイスIAM   
- ワンタイムアクセス資格情報を利用するには
    - IAMポリシーでパスワードを変更できるポリシーをアタッチ
    - MFAを登録する
- バケット状の書き込みのACLと同等のポリシー
    - s3:DeleteObject
- 制限

|リソース|デフォルトの制限|
|:---|:---|
|カスタマー管理ポリシー|1500|
|グループ|300|
|ロール|1000|
|IAMロールにアタッチされた管理ポリシー|10|
|IAMユーザーにアタッチされた管理ポリシー|10|
|アカウントの仮装MFAデバイス|対象アカウントのユーザクォータと同等|
|インスタンスプロファイル|1000|
|アカウントに格納されるサーバ証明書|20|



#AWS Lambda

- Lambda関数を作成するときにIAMロールを指定する必要がある
- 指定したロールのアクセス権によって、ロールを引き受けた時実行できるリソールにルーティング
- 言語
    - Node.js、Java、C#、Go、Python
- 定期的なスケジュール、固定感覚、Cron式を指定することもできる

#Amazon ElasticCache

- Memocached
    - メトリクス
        - Evictions：新しく書き込むために領域を確保するためにキャッシュが削除した期限切れではない項目数
        - GetMisses：キャッシュが受信したリクエストされたキーが見つからなかったGetリクエスト数
            - 上記二つの対策：クラスタ内のノードサイズを大きくする、ノード数を増やす

- Redis



#Route53

- グローバル
- レイテンシールーティングポリシー
    - ネットワークレイテンシーが最も低いリージョンでリクエスト処理することでパフォーマンス向上
- 地理的接近性ルーティングポリシー
    - 待ち時間に関係なくユーザーとリソースの地理的位置に基づいてトラフィックをルーティングする
- 位置情報ルーティングポリシー
    - ユーザーの位置に基づいてルーティングする
- フェイルオーバールーティングポリシー
    - アクティブ/パッシブフェイルオーバーを構成する場合に使用する
- シンプルルーティングポリシー
    - ドメインで特定の機能を実行する単一のリソースがある場合
- 複数値回答ルーティングポリシー
    - ランダムに選ばれた最大８つの正常なレコードを使用してDNSクエリに応答する場合
- 加重ルーティングポリシー
    - 指定された比率で複数リソースにトラフィックをルーティングする
    - トラフィックを比率を指定して制御できる
- レコード
    - エイリアスレコード
        - DNS nameを別のAmazonRoute53DNS名にマッピングする
    - CNAMEレコード
        - どこにでもホストsれている人いのDNSレコードを指す




#Amazon CloudFront

- セキュリティパッチを配布するインスタンスの動作で遅延やエラーが発生している
    - セキュリティソフトウェアのパッチは静的ファイル
    - CloudFrontでファイルをキャッシュする
- CloudFrontディストリビューションを作成すると以下のことを指示できる
    - コンテンツの配信元の場所
    - コンテンツ配信の追跡と管理の方法
- オリジンアクセスアイデンティティのユーザーは
    - CloudFrontのURLを持っている人なら誰でもアクセスできてしまう
- S3ファイルにアクセスした際、署名つきURLか署名つきCookieの使用を求めるように設定ができる
    - プライベートコンテンツへの安全なアクセスが提供できる
- エラー
    - 4xx
        - オブジェクトが見つからず、アクセスが拒否される場合（NosuchKey、AccessDenied）


#CloudWatch

##グラフ

- 複数リージョンにまたがってデータを収集することはできない
- 各リージョン毎にデータを取得し、データをオフラインで収集してCloudwatchでグラフに保存する
    - CLIを使用して各リージョンのエンドポイントからメトリクスを習得
    - 複数リージョンにまたがってデータを収集することはできない

##メトリクス

- メトリクス
    - 標準メトリクス
    - カスタムメトリクス
        - メモリ使用率、ディスク使用率
        - 工場の温度データを視覚的に表示したい
            - APIorAWSCLIでCloudWatchにデータをアップロードする
- モニタリングタイプ
|タイプ|取得間隔|
|:---|:---|
|基本|5分|
|詳細|1分|

- JSON形式のファイル（遅延データ）をAWSCloudWatchに送信する
    - CLIを使用してファイルをCloudWatchにアップロードする
- メトリクスのグラフ監視
    - グラフ内から指定範囲の情報がみたい場合、グラフ領域をドラックし、マウスを離す
    - グラフのズームをリセットするには[Reset zoom]アイコンをクリック

- データベース（RDS）がボトルネックになっているかどうかモニタリングしたい
    - DiskQueueDepth
        - 未処理のディスクI/Oアクセスの和
    - ReadLatency、WriteLatency
        - 1回のディスクI/O操作にかかる平均時間
    - ReplicaLag
        - ソースDBインスタンスからリードレプリカDBインスタンスまでのラグ
- 請求メトリクスデータは
    - バージニア北部（米国東部）リージョンに保存される
- メトリクス名が同じ場合でも、ディメンションの一位の各組み合わせを別個のメトリクスとして扱う
- 用語
    - メトリクス
        - 監視対象の変数
    - ディメンション
        - メトリクスのアイデンティティの一部である名前と値のペア
        - １メトリクスは１０ディメンションを割り当てられる
- 1つのダッシュボードで複数リージョンのリソースをモニタリングできる
- Auto Scalingグループ別に統計情報を取得できる
- カスタムデータをアップロードの時の時間
    - アップロード：２分
    - 見るのに：15分後〜
-　グラフの時間を指定
    - Absolute：意味（絶対）
    - Relative：意味（相対）

##モニタリング

- AWS予想請求額
    - アカウントに対する請求モニタリングを有効にすると金額が計算されて、1日複数回送信される
    - 請求メトリクスデータは北部バージニアリージョンに保存され、世界全体の請求額として表示される
    - メトリックス保存期間：15ヶ月

##ログ

- サポート（取り込み、集計、モニタリング可能）
    - テキストベースの一般的なログデータ
    - JSON形式のログ
- 最小値：1分
- ログイベントのタイムスタンプのタイムゾーンを指定する
    - UTCとLOCALが対応していて、デフォルトはLOCAL


##ダッシュボード

- オンプレとAWSのサーバー両方を統合されたダッシュボードで管理したい
    - 両サーバーにCloudWatchエージェントを導入する
        - オンプレサーバーからシステムレベルのメトリクスを収集する
    - メトリクスをダッシュボードに設定する

##アラーム

- SNS通知をトリガーにして特定の人に通知できる
- メトリクスを監視するアラーム、複数のメトリクスに基づく数式の結果を監視するアラーム等作成できる
- アクション
    - EC2アクション。EC2AutoScalingアクション、SNSトピックへの通知送信
- アラームはAmazon　SNSと統合されているため、SNSの通知タイプも使用できる
- アラームの動作をテスト
    - CLIを使用してアラーム状態を「アラーム」に設定する
    - SetAlarmState API(mon-set-alarm-stateコマンド)を使用してい状態を設定
- インスタンスを監視し、不健全になった場合は通知を送る簡単な方法
    - インスタンスのステータスチェックに基づいてアラームを設定


#AWS Trusted Advisor

- AWS環境を最適化することで以下の項目を評価する
    - コスト削減
    - パフォーマンスの向上
    - セキュリティの向上
- ベストプラクティスに従ってリリースをプロビジョニングするのに役立つ


#AWS Direct Connect ゲートウェイ

- プライベート仮装インターフェイスを介して、AWS Direct Connect接続
    -  同じリージョンまたは異なるリージョンに配置された地震のアカウント１つ以上のVPCに接続できる

#Amazon Inspector

- 自動化されたセキュリティ評価サービス
- デプロイしたアプリケーションのセキュリティとコンプライアンスを向上させられる
- 自動的にアプリケーションを評価、露出、脆弱性、ベクとプラクティスからの逸脱がないか確認
- 評価結果は重大性の順で表示するリストが作成される
    - 調査結果はコンソールか、APIを介して入手（確認）可能
- 機能
    - 設定スキャンおよびアクティビティモニタリングエンジン
        - エンジン分析、リソース設定を提供
        - ターゲットと潜在的なセキュリティまたはコンプライアンスの問題の全体像が得られる
    - 組み込みコンテンツライブラリ
        - 一般的なコンプライアンス基準や脆弱性の点検
    - APIを介した自動化
        - 開発プロセスと設計プロセスにセキュリティテストを組み込める
        - テスト結果、実行、レポート
- 制限

|リソース|デフォルトの制限|
|:---|:---|
|実行してるエージェント|500|
|評価の実行|50,000|
|評価テンプレート|500|
|評価ターゲット|50|

#AWS WAF

- 利用者が作成したルールに基づいてトラフィックをフィルタリングする
    - ウェブアプリケーションを攻撃から保護する
- 使用例
    - ウェブリクエストをIPアドレス、HTTPヘッダー、HTTP本文、URI文字列に基づいてフィルタ
    - SQLインジェクションやクロスサイトスクリプティングなどの攻撃パラーンをブロック可能


#Cloud Formation

- サービスは設定しない
- AWSインフラストラクチャのバージョン管理に適する
- Retaina
    - DeletionPolicy属性
    - スタックを削除する際、リソースやコンテンツを削除せず保持する
    - 保管されて存在したリソースは削除しない限り課金対象になる
- ネストされたスタック
    - テンプレートはS3にアップロードする
    - ネストされたスタック間で使用可能なリソースの依存関係によりロールバックが失敗する
        - 失敗した場合、全てのオペレーションがキャンセルされる
- エラー時の自動ロールバック機能（デフォルトで有効）
- スタック作成に失敗した場合のロールバックを無効にするには
    - DisableRollbackを「true」にする
- スタックの作成
    - 「aws cloudformation create-stack」
        - パタメータ名を間違えるとCloudFormationはスタックを作成しない
        - テンプレートにパラメータが含まれていないことをレポートする
- CreateStack
    - テンプレートの指定に従ってスタックを作成する
    - DescribeStacks APIを介してスタックのステータスチェックできる
- PauseTime内に新しいインスタンスから新しいシグナルを受け取るには
    - cfn-signal　ヘルパースクリプトを使用する
    - SignalResource APIを使用する
- 正常にインストールされた場合のみスタックが成功と判断されるには
    - cfn-signal　ヘルパースクリプトを使用する
        - インスタンスが正常に作成・更新されたかどうかをCloudFormationに送信する
- セクション
    - AWSTemplateFormatVersion：AWSCloudFormationテンプレートのバージョン
    - Description：テンプレートを説明するテキスト文字列、バージョンの後に記述 
    - Resources(必須)
    - Parameters：
        - 実行時（スタックを作成、更新）にテンプレートに値を渡すことができる
    - Metadata：
    - Mappings：
    - Conditions：条件、特定のリソースプロパティに値が割り当てられているか制御
    - Transfrom：変換、サーバーレスアプリケーションの場合AWS Serverless Application Modelのバージョン指定
    - Outputs：出力
- 起動するCloudFormationスタックが最新のAMIを楽に使用するには
    - ParmetersセクションにSSMパラメータを指定して、最新バージョンのAMI IDに置き換える。
    - 手間なやり方：AMI IDをインスタンスタイプとリージョンゴトンいマッピングしていく
- カスタムリソース
    - リソースタイプで使用できないリソースは、カスタムリソースを使用することで含められる
    - 「AWS::CloudFormation::CustomResource」、「Custom::String」リソースタイプで定義する
    - 「AWS::Lambda::Function」リソースプロパティでLambda関数のコードを指定する
    - Node.jsやPython函数の場合、テンプレートにインラインで関数コードを指定できる
- 同じようなテンプレートを作成し、片方にだけRoute53レコードをセットしたものを本番環境にデプロイしたい
    - Parameterに本番環境の条件を定義する
    - ConditionにRoute53のリソースを追加して、本番環境のみ作成するようなテンプレートを作成する 
- AutoScalingグループの起動設定が更新されると複数のノードを無効にする
    - CloudFormationを使用しアプリケーションを更新する場合に影響を制限するための設定
        - UpdatePolicy属性を追加する
        - WaitOnResourceSignalsプロパティを有効にする
        - UserDataプロパティを使用してインスタンスでアプリの実行が成功した時CloudFormationにシグナルを送る
- UpdatePolicyを指定したWaitOnResourceSignalsのの挙動
    - インスタンスインストール終了後、アプリケーションを設定した後でAutoScalingグループの更新を実施する
- DependsOn属性
    - 特定のリソースが他のリソースに続けて作成できるように指定できる
    - DependsOn属性をリソーツに追加した場合
        - そのリソースは必ずDependsOn属性で指定したリソースの作成後に行われる
    - 依存関係のエラーを解決するためにも使用される
    - 「Circular dependency between resources」のエラー
        - 「Fn::Join」組み込み関数とスタックパラメータで循環依存を回避
- テンプレートを別のリージョンで起動
    - テンプレート内にAZ固有のものがある場合
        - AMIなど他のリージョンで使用する場合には、そのAMIを別リージョンにコピーする必要がある
    リージョン別
        - EC2、SG、キーペア名、AMI、EIP、EBSスナップショット、EBSボリューム
- 作成したスタックの更新を予定しているが、その前に変更が実行中のリソースへの影響を確認したい
    - CloudFormationの変更セットを使用する
エラー
    - Wait Condition
        - 設定プロセスのステータスを追跡する
        - countプロパティで指定する成功のシグナルが發すされない場合に発生
        - cfgーsignalが正常に作成・更新されたかのシグナルをCloudFormationに送信するためログを確認する


#AWS Elastic Beanstalk

- アプリケーションのデプロイと管理を簡単に行える
- アップロードするだけでキャパシティのプロビジョニング、ロードバランシング、スケーリング、モニタリングを自動で行う
- 言語
    - Go、Java、PHP、.NET、Node.js、Python、Ruby
- ウェブアプリケーションをDockerコンテナからデプロイできる
    - コンソールから定義された全ての環境変数はコンテナに渡される
    - 独自のランタイム環境を定義できる

#AWS OpsWorks

- アプリケーションのスタックの定義をサポート
- アプリケーションの展開を準備するためにスクリプトを必要とする

#AWS CodePipeline

- 継続的デリバリー
    - コードの変更が毎回自動的に構築・テストされ、本稼働環境へのリリースのために準備される
    - CloudFormationテンプレートへの変更を自動的に構築してテストしてから、本稼働スタックに昇格できる

#AWS Systems Manager

##パラメータストア

- パラメータストア
    - 設定データ管理
    - 機密管理のための安全な階層型ストレージを提供

##RunCommand

- 一般的な管理タスクを自動化し、臨時の変更を大規模に実行できる

##パッチマネージャー

- セキュリティ関連の更新パッチ
    - インスタンスをスキャンし、見つからないパッチのレポートのみ表示できる
    - 見つからないパッチは自動的にインストールできる 

#AWS Config

-　AWSリソースの設定詳細ビューを提供する
    - リソース間の関係と設定履歴が含まれる
-　サポートされているサービスにはAWS Configを使用する
    - サポートされていないサービスにはAPIを介した自動プロセスを使用する  
- 大量のインスタンスでSSHが無効になっていることを確認sいたい
    - AWS Config Rulesを使用してセキュリティグル＾ぷを確認する
    - リソースで発生する設定変更を継続的に追跡する
    - ルールの条件に違反している場合、非標準を示す[noncompliant]フラグをつける   　

#AWS Organizations

- メリット
    - 複数のアカウントに対して請求は１つになる
    - 各アカウントの料金をトラッキングしてcsvで出力し、コストデータを簡単にダウンロードできる
    - 複数のアカウントの使用料金が合算されるため、従量制割引（ボリューム割引）が適用されることがある
- 一括請求(Consolidated Billding)
    - 支払いアカウントが連結アカウントを一括請求に追加するよう要求（招待）する
    - 支払いアカウントは、リンクされたアカウントのAWS請求の詳細を表示できる
- メンバーアカウントの招待
- サービスコントロールポリシー（SCP）
    - 全てのアカウントにわたってポリシーを実装するために最も効果的
- 組織のマスターアカウトから設定されたポリシーはメンバーアカウント管理者が付与したポリシーより強力
#AWS Serverless Application Model(AWS SAM)



#AWS Personal Health DashBoard

- 利用しているリソースに影響するイベントが発生した場合、アラートや改善のためのガイダンスが提供される
- リソースの状態の変化によってアラートがトリガーされるため、イベントが可視化されて迅速な診断と解決が得られる　　



#AWS Security Token Service(AWS STS)

- AWSリソースへのアクセスコントロールできる一時的セキュリティ認証情報を持つユーザ作成・提供する
- （例）S3バケットに格納されている写真を認証情報を用いてアクセスを提供できる
- ウェブIDフェデレーションを使う際、AmazonCognitoの使用を推奨


#Amazon Cognito

- アクセス許可を厳密に定義するIAMロールを作成する
- OIDC　Idpをしてようしている場合
    - IAM　OIDC　IDプロバイダーのエンティティも作成して、AWSアカウントとIdPを信頼関係を確立
- 外部IDプロバイダー(IdP)
    - Login with Amazon, Facebook, Google
    - OpenID Connect(OIDC)   

#Simple Workflow Service(SWF)

- 分散するアプリケーションコンポーネントにまたがる作業のコーディネートをしてくれる
    - 複数のタスクを連携させて設計できる
    - 様々な処理ステップがある
        - 実行可能コード
        - Webサービス呼び出し
        - 人間によるアクション
        - スクリプト
    - タスクのコーディネート
        - 実行従属関係、スケジューリング、同時実行をアプリケーションの論理的フローで管理する


#Amazon SNS

- Cloudwatchでのアラームを使用するSNS
- サポートするプロトコル
    - SQS、HTTP(S)、Eメール、SMS、Lambda
- 流れ
    [Publisher] -> [SNS　Topic(SNS)] -> [サポートするプロトコル]
- AmazonSESは対応外
 

#SQS

- メッセージキューイングサービス
- マイクロサービス、分散システム、サーバーレスアプリケーションの切り離しとスケーリングが可能SQS
- デフォルト
    - キューは４日間メッセージが保管される（最大は１４日間）
- 受診していないメッセージのキューは削除は手動で削除できる
- 水平スケーリングが容易にできるため
- 種類
    - 標準キュー：順序は厳密ではない、シーケンス情報を使用することで順序を維持する
    - FIFOキュー：送受信された順番が保持される

#Kinesis Data Streams
    
- インターネット経由でトラフィックをルーティングすることなく通信するには
    - VPCエンドポイントを用いる
    - プライベート内インスタンスからkinesis間のアクセスで使用する

#AWS Storege Gateway

- オンプレミスとクラウドストレージ環境を統合する
- ゲートウェイ
    - ボリュームゲートウェイ
        - オンプレやEC2からiSCSIデバイスとしてブロックストレージボリュームの作成マウントができる
    - ファイルゲートウェイ
        - NFSプロトコルを使用してS3でオブジェクトの保存と取得が実行できる
    - テープゲートウェイ
        - 仮装メディアチェンジャー、仮装テープドライブ、仮装テープから構成されるiSCSI仮装テープライブラリ
        - 仮装テープデータはS3に保存される
        - Glacierにアーカイブ可能
        - Deep_archiveにアーカイブ可能
- ２種類のモード
    - キャッシュ型モード
        - プライマリデータはS3に書き込まれる
        - 頻繁にアクセスのあるデータはキャッシュでローカルに保持される
        - 低レイテンシー
    - 保管型モード
        - プライマリデータはローカルに保存される
        - 非同期にAWSにバックアップされる
        - データセット全体が低レイテンシー
- 両モードはEBSスナップショットとして保存される
    - ボリュームのポイントインタイムスナップショットを取ることができる
    - データ保護、リカバリー、バージョニングされたボリュームのコピーも作成できる
- AWS KMSを使用して暗号化をサポートする
- AWS KMSと統合されている、カスタマーマスターキー(CMK)を使用して受信、保存、管理するデータを保護する
- オンプレのソフトウェアプライアンスをクラウドのストレージと接続する。
    - オンプレ、AWS間のデータセキュリティ機能を備えたシームレスな統合を実現するサービス
- クラウド保存でき、セキュリティが維持され、スケーラブルで費用対効果が高い 


#Amazon GuardDuty

- AWSアカウントとワークロードを保護する
    - 悪意のある操作や不正な動作を継続的にモニタリングする脅威検出サービス
    - アカウント侵害の可能性を示す異常なAPIコールや不正なデプロイなどもモニタリング
    - 侵入者の可能性や攻撃者による偵察も検出


#AWS Key Management Service(AWS KMS)

- 


#AWS Cost Explorer

- コストを表示おようび分析するツール
- 表示方法
    - キャッシュベースと非ブレンドコストの表示
        - キャッシュを受信あるいは支払った時に記録されるコスト）
    - 加算ベース表示
        - 収益を獲得あるいはコストが発生した時に記録されるコスト
- 過去13ヶ月までのデータを表示
- 今後3ヶ月間の費用を予測
    - RI（リザーブドインスタンス）を購入するための推奨事項を得られる
- データの時間範囲を指定できる（日、月）


#AWS Shield アドバンスド

- DDos攻撃に対する以下のリソース拡張保護を提供
    - EC2、ELB、CloudFront、Route53、AWSGlobalAcceleratorなど
- ウェブアプリケーションを標的をした攻撃に対する高レベルな保護を行う
- DDoS攻撃受けている中、24時間365日体制で依頼できる
    - 依頼先：DDoS　Response　Team（DRT)
- 検出および軽減されるレイヤー
    - ネットワークレイヤー（L3)
    - トランスポートレイヤー（L4)
    - アプリケーションレイヤー（L7)

#Cloud Trail

- アカウントのアクティビティを記録する
- ログはS3バケットに送信する
- アカウントのガバナンス、コンプライアンス、運用とリスクの監視
- アカウントで行われたAPIの呼び出しを記録する
    - CloudWatchAPIの追跡はCloudTrailでできる
- 全リージョンで有効かする機能が追加されている
    - デフォルトで有効
    - グルーバル
    - リージョンごとに有効
    - ログは各リージョンのS3に保存

#Redshift

- 「Failed to estanblish a connection to」というエラー
    - クラスタセキュリティグループのインバウンドアクセスを許可
- 拡張されたVPCのルーティング
    - クラスターとデータリポジトリ間の全てのCopyとUnloadトラフィックがVPCを通る


#AWS Snowball

- 物理ストレージデバイスを使用し、インターネットを迂回してAWSとの大容量データを高速化する
- 複数のSnowballアプリケーションを持つ複数のワークステーション
    - Snowballクライアントの複数インスタンスを使用する

|ユースケース|Snowball|Snowball Edge|
|:---|:---:|:---:|
|AmazonS3へのデータインポート|レ|レ|
|AmazonS3からエクスポート|レ|レ|
|耐久性のあるローカルストレージ||レ|
|AWSLambdaでのローカルコンピューティング||レ|
|AmazonEC2コンピューティングインスタンス||レ|
|デバイスのクラスターでの使用||レ|
|AWS IoT Greengrass(IoT)での使用||レ|
|NFSを介してGUIによるファイル転送||レ|

- ストレージ容量

|ユースケース|Snowball|Snowball Edge|
|:---|:---:|:---:|
|50(42)TB米国リージョンのみ|レ||
|80(72)TB|レ||
|100(83)TB||レ|
|100TB　Clustered（ノードあたり45TB）||レ|

- 物理インターフェイス

|ユースケース|Snowball|Snowball Edge|
|:---|:---:|:---:|
|E lnkディスプレイ 配送情報の追跡とIPアドレスの設定に使用|レ|レ|
|LODディスプレイ 説族を管理し、一部の管理機能を提供するために使用||レ|

#AD Connector

- 既存のオンプレADのユーザーやグループも割り当てられる


#請求コンソール

- Cost Allocation Tags
- タグの種類
    - AWS-generated tag
    - ユーザー定義タグ
- コスト分配レポートを使用するにはタグをアクティブ化しないといけない
- 全てのリソースが請求期間別に金額が出力される

#Billing（請求）
- 知らないうちに料金が発生するのを防ぐ方法
    - 設定＞Billidingの設定から請求アラートの有効化

#タグ
- キーの最大長：127文字(Unicode)(UTF-8)
- 様々なリソースのコスト配分を見つけるために使用される
- S3バケットにタグを適用できる
- タグはキーとバリューで構成される
- 環境ごとのインスタンスのコストを把握したい
    - コスト配分タグとコスト配分レポートを使用する



#構成検討
- ウェブ層はAZSでAutoScaling
- データベース層はMulti-AZのRDSMySQLを使用しパブリックアクセス禁止
    - サブネットの最小数：４個
- オンプレのVMをAWSVPCに移行する
    - AWSDirectConnectでVPCとオンプレミスの内部ネットワークをつなぐ
    - VPCとオンプレでIPを重複させない
    - 仮装マシンのVMを（S3に）インポート
- 写真配信サイトの運営をしており、他サイトからリンクを貼られているため訪問者数が減った
    - 他サイトからアクセス禁止する対策としてパブリックアクセス禁止し、有効期限つきの署名入りURL発行
- ハードウェアVPNで接続しており、パブリックサブネットに送信されるトラフィックを会社のプロキシに従う様にしたい
    - VGWからのトラフィックを受信するパブリックサブネットのルーティングテーブルとセキュリティグループを設定
- 同じVPCの異なるサブネット間でのPingが通じない
    - セキュリティグループからICMPが許可されているか確認
    - NACLでICMPが許可されているか確認
- EC2とSQSで1秒に何百万ものメッセージキューを送受信する際に、十分な帯域幅をもたせたい
    - AutoScalingグループとSQSのメッセージ数をCloudWatchで監視する
    - メッセージ数の監視をAutoScalingトリガーに使用してプライベートサブネットにインスタンスを起動する
- AWS上のEC2に異常が発生した場合、オンプレのプライベートクラウドに新しくサーバーを自動的に起動させたい
    - CloudWatch　＋ AmazonSNS
    - StasusCheckFialedが不合格の時SNSを通知
    - サーバーを起動するユーザーのHTTPエンドポイントに通知を送信
    - 受信したらサーバーを起動する設定をデータセンター側で行う
- レガシーアプリでIPを直接記述しているものがフェイルオーバーしたい
    - DNSベースであれば、ELBやRoute53を使えるがDNSベースではないので無理
    - ENIを利用してフェイルオーバーを行う
- モバイルアプリケーションでDynamoDBに接続するベストプラクティス
    - IDプロバイダを使用するWebIDフェデレーションでIAMロールをしようする
        - ルートアカウントのアクセスキーIDとシークレットアクセスキーはアプリに埋め込んではだめ！
- Linuxに接続できない場合の原因
    - セキュティグループでSSHが許可されていない
    - 秘密鍵が正しくない
    - ログインするユーザー名を間違っている
    - インスタンスCPUが高い
- OS、OSといっているあれは何か
    - オペレーティングシステム



#単語
- Disaster Recovery
    - DR（ディザスタリカバリ）災害復旧
- impaired
    - 障害
- 目標復旧時間
    - RTO（Recovery Time Objective)
- リカバリポイント目標
    - RPO（Recovery Point Objective）  
- 最高情報責任者
    + CIO(Chief Information Officer)
- コンバーティブル
    - 型を変えることができる事を指す