###### tags: `AWS` # SAA勉強メモ ## Redshift - スナップショット用の無料ストレージがあるが、超えると課金が発生する。自動スナップショットを保存し、保存期間を見直すことでコスト削減。 - 拡張VPCルーティングを使用すると、COPYとUNLOADのトラフィックがVPCを通るようになる。(無料) - モニタリングも可能 - ノードの種類:オンデマンド、リザーブド - リザードの場合、1、3年間の契約を結ぶことで、最大75%残すと削減 - CloudWatchメトリクスを利用可能(無料)。カスタムメトリクスを利用すると有料。 ### Redshift Spectrum - S3バケット上に保存されたファイルをRedshiftにロードするための特別な準備なしに、S3バケットに直接高度なクエリ処理を実行することが可能 - クエリ実行の背後ではSpectrumが数千台までスケールするインスタンスが用意されている。 ![](https://i.imgur.com/WCfwnV5.png) ### Data Streams ![](https://hackmd.io/_uploads/ByqRbJbI3.png) ## ECS - コンテナ化されたアプリケーションのデプロイ、管理、スケーリングができるフルマネージドなコンテナオーケストレーションサービス - 構成時に、EC2起動モード、Fargate起動モードを選択することができる - EC2起動モード - EC2インスタンスで起動 - サーバーレベルの詳細なコントロールを実行可能 - サーバークラスターを管理し、サーバーでのコンテナ配置をスケジュール可能 - 幅広いオプションが利用できる - Fargate起動モード - ECSで設置できる専用のコンピューティングエンジン - クラスター管理不要 - インスタンスタイプの選択、クラスタースケジューリングの管理、クラスター使用の最適化は不要 - CPU、メモリなどのアプリ要件を定義すると、必要なスケーリングやインフラはFargateが管理する - 秒で数万個のコンテナを起動 ## Fargate - インスタンスタイプやサイズなどのプロビジョニング設定を自動でしてくれる - AWS上でのDockerコンテナベースのコンピューティングの設定や運用管理の自動化 ![](https://i.imgur.com/nBFkLD1.png) ## EC2 - デフォルトではEC2インスタンスのパブリックIPはインスタンスの停止後に解放される - EIPを設定しておくことで再起動後もIPアドレスが維持される - パブリックIP - 動的なIPv4アドレス - インスタンスが停止した時に変更される - VPCでパブリックIPアドレスの割り当てが有効化されている場合、自動的にVPC内リソースに割り当てられる - 無料 - Elastic IP - 制的なIPv4アドレス - インスタンスが停止しても変更されない - VPCコンソールにおいてEIPを作成してから、アタッチする - 利用時は無料。解放せずに利用しないと有料になる。 - EC2にアタッチしている時にEC2が停止しているなど - EC2のインターネットアクセスを制限するには、プライベートサブネット内にDB用のEC2インスタンスを設置し、その上でプライベートサブネットのルートテーブルに対してNATゲートウェイを通じたインターネットへの返信のみを許可するルート設定をする。 ### インスタンス購入オプション - オンデマンドインスタンス - 通常のインスタンス購入方式 - 長期契約なしでコンピューティング性能に対して秒単位で支払う。 - ライフサイクルを完全制御 - リザーブドインスタンス - 1年または3年の先払い契約。最大75%のコスト削減 - 特定のAZまたは、リージョンで使用するキャパシティーを予約できる2つのタイプがある。 - スケジュールドリザーブドインスタンス - 2021年に利用停止となった - スポットインスタンス - オンデマンドよりも低価で利用できるAWS管理用に保持されているが未使用のEC2インスタンス。未使用のEC2インスタンスを静止状態割引(最大90%)でリクエストできる - 実行時間に柔軟性がある場合・中断できる場合に利用する - 一時的に発生する処理・バッチ処理ジョブなど ![](https://hackmd.io/_uploads/rJ2xJX_rn.png) ![](https://hackmd.io/_uploads/S1Ju17urh.png) ### EBS - デタッチする場合は、明示的にデタッチする必要がある - デフォルトでは、インスタンスが削除されると、ルートボリュームも削除される - アンマウント → (ルートボリュームの場合: EC2停止) → デタッチ - Amazon Data Lifecycle Managerを使用して、EBS スナップショットと EBS-backed AMI の作成、保持、削除を自動化できる - 定期的なバックアップスケジュールを実施して貴重なデータを保護する - 定期的に更新できる標準化されたAMIを作成する - 監査担当者または社内のコンプライアンスが必要とするバックアップを保持する - 古いバックアップを削除してストレージコストを削減 - 分離されたアカウントにデータをバックアップする災害対策バックアップポリシーを作成する #### ボリュームタイプ - 汎用SSD - ユースケース - 仮想デスクトップ - 低レイテンシー - 小〜中規模のデータベース - 開発環境 - サイズ - 1GB~16TB - プロビジョンドIOPS - ユースケース - 高いI/O性能に依存するNoSQLやアプリ - 10,000IOPSや160MB/s超えワークロード大規模DB - Nitroシステム AmazonEC2インスタンス・EBS最適化インスタンスタイプで高速化 - サイズ - 4GB~16TB - スループット最適化HDD - ユースケース - ビッグデータ処理 - DWH - 大規模なETL処理やログ分析 - ルート(ブート)ボリュームには利用不可 - サイズ - 125GB~16TB - コールドHDD - ユースケース - ログデータなどのアクセス頻度が低いデータ - バックアップやアーカイブ - ルート(ブート)ボリュームには利用不可 - サイズ - 125GB~16TB - マグネティック - ユースケース - 旧世代のボリュームで、基本利用しない - データへのアクセス頻度が低いワークロード - サイズ - 1GB~1TB - DeleteOnTermination - インスタンスが停止してもルートボリュームを維持したい場合は、ルートボリュームのDeleteOnTermination属性を非有効化する ![](https://hackmd.io/_uploads/SkiWFutr2.png) #### スナップショット - EBSのスナップショットは利用状況に関係なく非同期に作成可能 - ルートデバイスとして機能する EBS ボリュームのスナップショットを作成する場合は、スナップショットを取る前にインスタンスを停止 - 休止が有効にされているインスタンスからスナップショットを作成することはできない - 休止したインスタンスからスナップショットを作成することはできない - ボリュームの前のスナップショットが pending 状態の間でもボリュームのスナップショットを作成できますが、1 つのボリュームで複数の pending スナップショットを作成すると、スナップショットが完了するまでボリュームのパフォーマンスが低下する場合がある ### AMI - LaunchPermission - 特定のAWSアカウントとAMIを共有できるようにする設定項目 ### セキュリティグループ - セキュリティグループの変更と新規設定は全てのEC2インスタンスに即座に反映される ### ネットワーク ![](https://hackmd.io/_uploads/BJKkEzA4n.png) ### ストレージタイプ ![](https://hackmd.io/_uploads/rk-V4VNr2.png) ### インスタンスタイプ - 汎用 - A1 - Arm系 - T3 - バースト - M5 - バランス ### IPフローティング - 障害発生時にダウンタイムをなくすため、EIPを自動で振り替える機能 ![](https://hackmd.io/_uploads/rkD-j_Krh.png) ## Auto Scaling ![](https://i.imgur.com/di6KgUk.png) ![](https://i.imgur.com/KvLcmik.png) - インスタンスの起動設定(非推奨) - インスタンスのAMIを使用した起動テンプレートを作成 ### ヘルスチェック - EC2タイプ - EC2のステータスがrunning以外の時、またはシステムステータスがimpairedの時にこのインスタンスを異常と判断 - ELBタイプ - インスタンスのステータスチェックと、ELBのヘルスチェックから、インスタンスの状態を判断する ### 設定オプション - 最小キャパシティ - スケールイン時のインスタンスを削除する際の下限インスタンス数を設定 - 希望するキャパシティ - AutoScalingが実行されない状態でのインスタンス数を設定 - この値を変えることで手動でスケーリングも可能 - 最大キャパシティ - スケールアウト時に起動するインスタンスの最大数を設定 ![](https://hackmd.io/_uploads/S1tPvfnBh.png) ### ターゲットポリシー - シンプルスケーリングポリシー - CloudWatchアラームを利用して動的に一定量スケーリングする - ターゲットトラッキングポリシー - 平均 CPU 使用率 - 平均ネットワーク入力 (バイト) - 平均ネットワーク出力 (バイト - ターゲットごとの Application Load Balancer リクエスト数 - の閾値設定し、動的にスケーリングする - ステップスケーリングポリシー - CloudWatchアラームを利用して動的に段階的にスケーリングする - スケジュールスケーリングポリシー ## StorageGateway - バックアップ・ストレージサービスのひとつ - オンプレミスにあるファイルサーバーなどのストレージと、S3の大容量ストレージを密接に連携させ、堅牢かつ、可用性の高いストレージを構築することができる - ゲートウェイタイプ - ファイルゲートウェイ - オンプレミスのファイルシステムとS3バケットを統合し、NFSやSMBプロトコルを使用してファイルをクラウドに保存 - ボリュームゲートウェイ - オンプレミスのブロックストレージとS3バケットを統合し、iSCSIプロトコルを使用してボリュームをクラウドに保存 - テープゲートウェイ - オンプレミスのテープバックアップとS3 GlacierやS3 Glacier Deep Archiveを統合し、仮想テープライブラリ(VTL)を使用してテープデータをクラウドに保存 - 低レイテンシでデータにアクセスできるように、キャッシュや同期などの機能を提供している - AWSの俊敏性、経済性、セキュリティ機能を利用可能 - ボリュームゲートウェイ - キャッシュ型 - プライマリーはS3 - オンプレミス環境のストレージをS3に拡張 - 頻繁にアクセスされるデータはローカルのストレージゲートウェイに保持して、S3をプライマリデータストレージとして使用 - 頻繁にアクセスするデータはオンプレミス環境にキャッシュ保持することで低レイテンシーなアクセスが可能 - 保管型 - プライマリーはオンプレミスストレージ ![](https://hackmd.io/_uploads/ByM0rWvE2.png) - iSCSIデバイスによってオンプレミス側と接続が可能 - デフォルトで暗号化 ## S3 - 事前署名付きURL - 特定のオブジェクトを一時的に共有するための特別なURLを発行することができる - 最適なパフォーマンスを確保するために - プレフィックスを利用して日時ベースでアップロードを分散させることで、プレフィックスごとに、3500リクエスト/秒、データ取得5500リクエスト/秒をサポートできるようにパフォーマンスを向上させることができる - マルチパートアップロード - S3に大きなファイルをアップロードする際に利用 - ライフサイクル - 時間に応じてオブジェクトのストレージクラスの変更や、削除を自動的に行うルールを設定可能 - ![](https://hackmd.io/_uploads/ryOuYFKNh.png) - 暗号化・複合化 - デフォルトで暗号化 - 保存の際に暗号化・ダウンロードの際に自動的に複合化 ### ストレージクラス #### 汎用 - S3標準(S3 Standard) - アクセス頻度の高いデータ向けに高い耐久性、可用性、パフォーマンスのオブジェクトストレージ - 低レイテンシー、高スループットを提供するため、幅広いユースケースに適している - オブジェクトレベルで構成できるため、1つのバケットに、「S3 Standard」「S3 Intelligent-Tiering」「S3 Starndard IA」「S3 1ゾーンIA」に格納されたオブジェクトを含めることができる - S3ライフサイクルポリシーを使用して、アプリケーションを変更せずに、ストレージクラス間でオブジェクトを自動的に移行することも可能 #### 不明なアクセスまたはアクセス権の変更 - S3 Intelligent-Tiering - パフォーマンスへの影響、取り出し費用、運用上のオーバーヘッドなしに、アクセス頻度に基づいてデータを最も費用対効果の高いアクセス階層に自動的に移動することにより、ストレージコストを自動的に削減できる - 高頻度アクセスに最適化された階層、低頻度アクセスに最適化された 40% 低コストの階層、めったにアクセスされないデータに最適化された 68% 低コストの階層の 3 つのアクセス階層にオブジェクトを自動的に保存される。 - ストレージコストを最大95%節約できる - 取り出し・ストレージクラスの自動移動にはコストがかからない #### 低頻度アクセス - S3 Standard IA - アクセス頻度は低いが、必要に応じてすぐに取り出す必要があるデータに最適 - S3 Standardと同じ高い耐久性、高スループット、低レイテンシーを低価格のストレージ料金、取り出し料金で提供 - 長期保存、バックアップ、災害対策ファイルのデータストアとして理想的 - オブジェクトレベルで構成できるため、1つのバケットに、「S3 Standard」「S3 Intelligent-Tiering」「S3 Starndard IA」「S3 1ゾーンIA」に格納されたオブジェクトを含めることができる - S3ライフサイクルポリシーを使用して、アプリケーションを変更せずに、ストレージクラス間でオブジェクトを自動的に移行することも可能 - S3 1ゾーンIA - 最低3つのAZに保存する他のS3ストレージクラスと異なり、ひとつのAZにデータを保存するため、S3 Standard IAよりも20%のコスト削減になる。 #### アーカイブ - S3 Glacier ストレージクラスでは、データアーカイブ専用に設計されている。クラウドで最高のパフォーマンス、最高の検索の柔軟性、最低のコストのアーカイブストレージを提供される。 - S3 Glacier Instant Retrieval - すぐにアクセスする必要のあるアーカイブデータ。ミリ秒単二の取り出しが必要な、長期間有効なデータ用に最低コストのストレージを提供するクラス - 四半期に一度データにアクセスする場合、S3 Starnderd IAに比べて最大68%節約可能 - S3 Glacier Flexible Retrieval(旧S3 Glacier) - 1年に1,2回アクセスされ、非同期で取り出されるアーカイブデータ向けに(S3 Glacier Instant Retrieval)最大10%低いコストのストレージを提供。 - すぐにアクセスする必要はないものの、大量のデータを無料で取り出せる柔軟性 - S3 Glacier Deep Archive - S3のもっとも低コストのストレージ。 - 1年のうち1,2回しかアクセスされないようなデータを対象とした長期保存やデジタル保存をサポート。 - コンプライアンス要件を満たすために7~10年以上データセットを保管する場合に使用 ![](https://hackmd.io/_uploads/ByxiMZAV2.png) ### 静的Webホスティング 1. ブロックパブリックアクセスを無効にする。 2. バケットポリシーでバケットの読取許可を設定する。 3. Index.htmlなどのインデックスドキュメントをバケット内に保存する。 4. 静的Webホスティングの設定画面でIndex.htmlのインデックスドキュメントを設定し、有効化する。 - 静的Webホスティングを設定したS3バケットに対して、Route53を利用して各リージョンにルーティングするように構成することはできない ### 整合性 - 2020年までは結果整合性だったが、現在は強い整合性モデルが利用されている ### バージョン管理 ![](https://hackmd.io/_uploads/Syo8IgRN2.png) #### MFA delete - バージョニング機能のオプション - オブジェクトの削除時にMFA認証を必須にできる ### オブジェクトロック - オブジェクトを削除できないようにする設定 - バケット作成時のみ設定可能 ### ゲートウェイ ![](https://hackmd.io/_uploads/HydV8GA4h.png) ### クロスアカウントアクセス - クロスアカウントアクセスを有効化すると、他アカウントのアクセスを可能に - リクエスタ支払いにすると、リクエスト側にコストを支払わせることも可能 ### S3イベント通知 - イベント通知で呼び出せるサービス - SNSのトピック - SQSキュー - lambda関数 ## Kinesis - Kinesis Data Streams - ストリームデータ処理に利用するサービス - Kinesis Data Firehose - ストリームデータを変換したり、ストレージやDBに配信するサービス - S3データレイクに送信することができる - lambdaと連携してETLとしても機能する - Kinesis Data Analytics - IoTストリーミングデータのリアルタイム分析 - Kinesis Data StreamsとKinesis Data Firehoseの違いはレイテンシーの違い - Firehoseでは60秒要する ![](https://i.imgur.com/zsbqej5.png) ![](https://i.imgur.com/8kFQIw0.png) - シャード - コールドシャード - 予想よりも少ないデータを受け取るシャード - ホットシャード - 予想よりもデータが集中してしまったシャード - リシャーディングを実行し、パフォーマンスの調整ができる - 分割 - 1つのシャードを2つのシャードに分ける - 結合 - 2つのシャードを1つのシャードに組み合わせる - コールドシャードを結合して、容量とコストを削減したり、ホットシャードを分割して、パフォーマンスを向上させることができる ## Code ### Code Pipeline - AWSサービス間のデータ転送や変換処理に利用されるサービス - 保存場所にあるデータに定期的にアクセスし、データの変換と処理を行い、その結果をS3、RDS、DynamoDB、EMRなどのAWSサービスに転送可能 ## Route53 ### ルーティングポリシー - シンプルルーティングポリシー - レコードセットにおいて事前に設定された値のみに基づいてDNSクエリに応答するルーティング方式 - 静的マッピングによりルーティングを決定 - ドメインで特定の機能を実行する単一のリソースを提供 - 例) example.comに対応する1つのウェブサイト - 位置情報ルーティング - ユーザーのIPアドレスにより位置情報を特定して、地域ごとに異なるレコードを返すルーティング方式 - ネットワーク構成に依存しない精度の高いレコード返答の区分けが可能 - ユーザーの地理的位置に基づいてトラフィックを処理するリソースを選択 - フェイルオーバールーティングポリシー - ヘルスチェックに基づいて、利用可能なリソースにDNSクエリを応答するルーティング方式 - 利用可能なリソースにルーティングされる。 - アクティブ/パッシブフェイルオーバーを構成する場合に使用 - 位置情報ルーティングポリシー - ユーザーの位置に基づいてトラフィックをルーティングする場合に使用 - 地理的近接性ルーティングポリシー - リソースの場所に基づいてトラフィックをルーティングし、必要に応じてトラフィックをある場所のリソースから別の場所のリソースに移動する場合に使用 - レイテンシールーティングポリシー - リージョンのレイテンシーに応じて、DNSクエリに応答するルーティング方式。 - ユーザーの最寄りのリージョンになることが多い - リージョン間のレイテンシーが低い方へルーティングされる - 複数のAWSリージョンにリソースがある場合、レイテンシーの最も小さいリージョンにトラフィックをルーティングする場合に使用 - 複数値回答ルーティングポリシー - ランダムに選ばれた最大8つの別々のレコードにIPアドレスを設定して、複数の値を返答するルーティング方式 - IPアドレス単位でヘルスチェックを実施して、ルーティングすることで、正常なリソースの値を返す。ELBに代わるものではないが、正常を確認して複数のIPアドレスを返す機能により、DNSを使用してアベイラビリティとロードバランシングを向上させることができる - ランダムに選ばれた最大8つの正常なレコードを使用してRoute53がDNSクエリに応答する場合に使用 - 加重ルーティングポリシー - 複数のエンドポイントに重みを設定して、重みに応じてDNSクエリに応答するルーティング方式 - 重みづけの高いエンドポイントに多くルーティングする。 - 指定した比率で複数のリソースにトラフィックをルーティングする場合に使用 ### レコードタイプ - A - ドット形式10進表記のIPv4アドレスを使用して、ウェブサーバーなどのリソースにトラフィックをルーティングする - 例) 192.0.2.1 - AAAA - コロン区切りの10進表記のIPv6アドレスを使用して、ウェブサーバーなどのリソースにトラフィックをルーティングする - 例) 2001:0db8:85a3:0:0:8a2e:0370:7334 - CAA - ドメインまたはサブドメインの証明書の発行を許可する認証機関(CA)を指定する。 - CAAレコードを作成すると間違ったCAがドメインの証明書を発行することを防止できる。 - CAAレコードは、ドメインの所有者であることを検証する要件など、認証機関によって指定されたセキュリティ要件に代わるものではありません。 - CNAME - CNAME レコードは、acme.example.com などの現在のレコードの名前に対する DNS クエリを、別のドメイン (example.com、example.net など) またはサブドメイン (acme.example.com、zenith.example.org など) にマッピングします。 - 例) hostname.example.com - DS - Delegation Signer (DS) レコードは、委任されたサブドメインゾーンのゾーンキーを参照します。DNSSEC 署名を設定するときに、信頼のチェーンを確立するときに DS レコードを作成することがあります。 - 例) 123 4 5 1234567890abcdef1234567890absdef - MX - MX レコードは、メールサーバーの名前を指定します。複数のメールサーバーがある場合は、優先順位を指定します。MX レコードの各値には、優先順位とドメイン名という 2 つの値が含まれます。 - 例) 10 mail.example.com - NAPTR - 名前付け権限ポインタ (NAPTR) は、動的委任発見システム (DDDS) アプリケーションで、1 つの値を別の値に変換または置き換えるために使用されるレコードのタイプです。例えば、1 つの一般的な用途は、電話番号を SIP URI に変換する場合です。 - 例) 100 50 "u" "E2U+sip" "!^(\\+441632960083)$!sip:\\1@example.com!" . - 100 51 "u" "E2U+h323" "!^\\+441632960083$!h323:operator@example.com!" . - 100 52 "u" "E2U+email:mailto" "!^.*$!mailto:info@example.com!" . - NS - NS レコードはホストゾーンのネームサーバーを識別します。 - 例) ns-1.example.com - PTR - PTR レコードは、IP アドレスを対応するドメイン名にマッピングします。 - 例) hostname.example.com - SOA - Start of Authority (SOA) のレコードは、ドメインおよび対応する Amazon Route 53 のホストゾーンに関する情報を提供します。 - 例) ns-2048.awsdns-64.net hostmaster.awsdns.com 1 1 1 1 60 - SPF - 以前は、メールの送信者の身元を確認するために SPF レコードが使用されていました。しかし、レコードタイプが SPF のレコードを作成することはもうお勧めできません。 - 例) "v=spf1 ip4:192.168.0.1/16 -all" - SRV - SRV レコードの Value 要素は 4 つのスペース区切りの値で構成されます。最初の 3 つの値は、優先順位、重み、およびポートをそれぞれ表す 10 進値です。4 番目の値は、ドメイン名です。SRV レコードは、メールや通信用のサービスなどのサービスにアクセスするために使用されます。 - 例) 10 5 80 hostname.example.com - TXT - TXT レコードには、二重引用符 (") で囲まれた 1 つ以上の文字列が含まれます。シンプルルーティングポリシーを使用する際には、同じ TXT レコードにあるドメインのすべての値 (example.com) またはサブドメイン (www.example.com) を含めます。 - 例) "String 1" "String 2" "String 3" ![](https://hackmd.io/_uploads/H18su-0E3.png) ![](https://hackmd.io/_uploads/rkmp_-RE3.png) ## CloudFormation - AWSリソース設定を定義したJSON/YAMLファイルからプロビジョニングすることが可能 ## DB - 自社でOS設定などのDBのインフラ環境を管理する場合は、EC2インスタンスを使用してDBを構築することが必要 - アンマネージド型 - EC2 - マネージド型 - RDS ## RDS - I/O遅延が発生している時、IO性能が高いインスタンスタイプを選択するべき - db.m5dは低レイテンシー、非常に高いI/O性能、高いシーケンシャル読み取りスループットに向けて最適化された汎用インスタンスクラス - プロビジョンドIOPSストレージ - 低I/Oレイテンシーおよび一貫したI/Oスループットが必要になるI/O負荷の高いワークロードのニーズを満たすように設計されている - 汎用 - T系: 一時的な高負荷に強い - M系: 安定 - メモリ最適 - R系: 安定? - X系: 大規模なインメモリデータベース - Z系: 高速なストレージ・低レイテンシー - ベストプラクティス - 自動バックアップを有効 - 大きなテーブルのパーティションは16TBを越えないように - etc.. - [ベストプラクティス](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_BestPractices.html) ### Aurora - 最大15個のAuroraレプリカを配置することが可能 - Auroraレプリカは、AWSリージョン内でDBクラスターが使用している複数のAZに分散できる。また、複数リージョンにも展開可能である - Auroraレプリカがプライマリインスタンスに昇格することができる - AuroraはデフォルトでマルチAZに分散化されたDBクラスター構成をとる - AuroraDBのバックアップやスナップショットを作成して別リージョンにおいて回復させることも可能。ただし、時間がかかる ### リードレプリカ - RDSリードレプリカによって、DBインスタンスの読み込み処理のパフォーマンスと耐久性が向上する。この機能により、1つのDBインスタンスのキャパシティーを伸縮自在にスケールし、読み取り頻度の高いDBのワークロードを緩和できる。レプリカを最大5台作成し、アプリケーションの大容量読み取りトラフィックを提供して全体の読み込みスループットを向上させることができる。 ### グローバルデータベース - Amazon Aurora Global Database はグローバル分散アプリケーション向けに設計されており、単一の Amazon Aurora データベースを複数の AWS リージョンにまたがって運用できます。データベースのパフォーマンスに影響を与えずにデータをレプリケートし、各リージョンでレイテンシーを低減してローカル読み取りを高速化し、リージョン規模の停止からのディザスタリカバリを実現します。 ![](https://hackmd.io/_uploads/r1uAjgCVn.png) ### IAMデータベース認証 - IAMユーザーorロール認証と認証トークンを使用してRDSに接続可能 ![](https://hackmd.io/_uploads/HJh0cQ4Bh.png) ### 拡張モニタリング - OSのリアルタイムメトリックスが確認可能 - CloudWatch Logsからの拡張モニタリングを理よすうることができる - デフォルトで30日間保存 ### MySQL - ストレージエンジン - InnoDB ## DynamoDB - 予測不能な書き込み読み込みトラフィックにはオンデマンドのDynamoDBテーブルを作成 - 逆に予測可能な場合はプロビジョニングモードを使用 ![](https://hackmd.io/_uploads/SJmPO6hV3.png) - 小規模データを保存・高速処理するためにはNoSQLDBを利用することが最適 ![](https://hackmd.io/_uploads/r18nQZA42.png) ### オンデマンド 使った分だけかかる ### プロビジョンド 予想される読み込み・書き込みキャパシティユニットを指定しておき、固定料金 ### トランザクション - DynamoDB Transactionを利用して、書き込み時に機密性の高いデータを削除するアクションを設定することで機密データを削除する ### DBストリーム - 項目レベルの変更に関するシーケンスを時間順にキャプチャし、その情報を最大24時間ログに保存する機能。アプリケーションはそのログにアクセスし、データ項目の変更前および変更後の内容をほぼリアルタイムに実現できる。 ![](https://hackmd.io/_uploads/BkJmAyRNn.png) ![](https://hackmd.io/_uploads/r13ER1043.png) ### Auto Scaling - AutoScalingポリシーの設定 - CloudWatchのモニタリングに基づいてトラフィックパターンに応じたプロビジョンドスループット性能を動的に調整 - テーブル・グローバルセカンダリインデックスはプロビジョニングされた読み込みおよび書き込みキャパシティを増やし、急激なトラフィック増加をスロットリングなしに処理できる - デフォルトで有効 ### DAX(DynamoDB Accelerator) - ミリセカンドから、マイクロセカンドへの最大10倍のパフォーマンス向上 - キャッシュを利用する - 高コスト - 需要変動に応じたパフォーマンスには不適切 ### グローバルテーブル - マルチリージョンにマルチデータベースをデプロイするための完全マネージド型のソリューション - グローバルテーブルを作成する際、そのテーブルの利用を許可する AWS リージョンを指定する - DynamoDB は、これらのリージョンに同一のテーブルを作成するのに必要なすべてのタスクを実行し、変更中のデータをすべてのテーブルに伝達する ### ポイントインタイムリカバリ - Amazon DynamoDBテーブルのポイントインタイムリカバリを使用して連続バックアップを有効にすることができます。ポイントインタイムリカバリを有効化すれば、誤って本稼働環境の DynamoDB テーブルに書き込みを実施したり、削除してしまっても、過去 35 日間の任意の時点にテーブルを復元することができます。DynamoDB は、選択された日時 (day:hour:minute:second) に基づく状態でテーブルデータを新しいテーブルに復元します。DynamoDB では、テーブルの増分バックアップが維持されます。これを利用して、目標復旧時点(RPO)の15分および目標復旧時間(RTO)の1時間を容易に達成することが可能です。 ## SQS - 水平方向のスケーリング - 処理を分散させて、負荷分散を可能にするサービス - ワーカーインスタンス(ターゲット)のヘルスチェックする機能はない - スケジュールに沿ったキューイングを実施しない - 可視性タイムアウト - 処理担当のインスタンス以外からは一定時間(30秒~12時間)キューが見えなくなる機能 - ChangeMessageVisibility APIを使用して設定 - 権限設定 - 適切な権限設定 - AddPermission API - キュー作成 - CreateQueue API - 待機時間設定 - 適切な待機時間設定。 - メッセージの取得を待機するため、処理に遅延が発生。 - メッセージの重複を防ぐ機能はない - ポーリング - 設定時間の変更はできない ![](https://hackmd.io/_uploads/HyMYhZAV2.png) - FIFO - FirstInFirstOut - メッセージの順番を保証 ![](https://hackmd.io/_uploads/r1tvplRVh.png) ### キューの詳細設定 - デッドレターキュー - Amazon SQSは、デッドレターキュー(DLQ)をサポートしています。このキューは、正常に処理 (消費) できないメッセージの送信先として、他のキュー (ソースキュー) をターゲットにすることができます。デッドレターキューは、未使用のメッセージを分離して、処理が成功しない理由を調べることができるため、アプリケーションやメッセージングシステムのデバッグに役立ちます。 - 優先度付きキュー - キューに対して優先度を設定可能 ![](https://hackmd.io/_uploads/HkNBGGAVh.png) - データ保持期間 - デフォルト4日間 - 1分から14日間の範囲で設定可能 ![](https://hackmd.io/_uploads/ry2ch8-Un.png) ## Cloudfront - Aliasレコード(Aレコード)を作成して、CloudFrontを構成することでRoute53にCloudFrontを設定してドメインを関連づけることができる。 ## GuardDuty - 悪意のあるアクティビティのためにAWSアカウントとワークロードを継続的にモニタリングし、可視化と修復のための詳細なセキュリティ調査結果を提供する脅威検出サービス。 ## EMR - ElasticMapReduceの略 - ビッグデータの解析とか ## Secrets Manager - データベースやその他のサービスの認証情報を安全に暗号化して、シークレットとして保存・取得する仕組み - 認証情報をローテーションしながら、セキュアに保存することも可能 ## Systems Manager - インフラストラクチャを可視化し、制御するためのサービス - パラメータストアを利用して、資格情報を保存して提供する仕組みも実現可能 ## EventBridge - アプリケーションの可用性の問題やリソースの変更などのシステムイベントに自動的に応答する機能を作成する機能 - ACMに対して更新の対象となるACM証明書に対してAWSヘルスイベントを生成することができる。 - SNSと連携したアラーム通知を実施可能 - スケジュールに基づいてAWS Lambda関数を実行するルールを設定可能 - lambda:InvokeFunctionをアクションに設定し、EventBridge principal(events.amazonaws.com)のアクセス許可を使用してルールを実行するにはadd-permissionコマンドを使用する 【アクセス許可設定の例】 ```bash aws lambda add-permission \ --function-name LogScheduledEvent \ --statement-id my-scheduled-event \ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/my-scheduled-rule ``` ## SNS - FIFO - FirstInFirstOut - メッセージの順番を保証 ## Lambda - これまではHTTP経由でLambda関数を実行するためにはAPI Gatewayを経由する必要があったが、関数URLという新機能が実装されたため、API Gatewayを省略したパブリックに公開するAPIや簡易な認証実装でも差し支えのないAPIを実装することができるようになった ## VPC ### VPCエンドポイント - インターネットを介さずにVPC内のサービスからVPC外のAWSサービスに接続可能 - インターネットを通さないため、通信料金が発生しない - (同一リージョン内の通信料金は無料のため) - ゲートウェイエンドポイント - AWS ネットワーク経由でVPCからS3などのサービスにアクセスするためにルートテーブルで指定するゲートウェイ。 - S3やDynamoDBに接続する場合、エンドポイントポリシーを設定する - インターフェイスエンドポイント - プライベートIPアドレスを使用して、VPC内、オンプレミス、VPCピアリングやAWSリージョンを使用する別のAWS Transit GatewayにあるVPCからS3などのサービスにルーティングする。 - S3に接続する場合、エンドポイントポリシーを設定する ![](https://hackmd.io/_uploads/BkzgYVfH3.png) ![](https://hackmd.io/_uploads/H1J7xiQH2.png) ### SiteToSite VPN - VPN接続 - オンプレミス機器とVPC間の安全な接続 - VPNトンネル - お客様のネットワークとAWSの間でデータを送受信できる暗号化されたリンク。 - 各VPN接続には、高可用性のために同時に使用できる2つのVPNトンネルが含まれる - カスタマーゲートウェイ - カスタマーゲートウェイデバイスに関する情報をAWSに提供するAWSリソース - カスタマーゲートウェイデバイス - Site-To-Site VPN接続のユーザー側にある物理的なデバイスまたはソフトウェアアプリ ### DirectCorrect - 専用線接続 - 最も低レイテンシーで安全な接続 - 客の拠点とAWSとの間を専用回線で接続できるサービス - 拠点 ⇄ Direct Connectロケーション ⇄ AWŚ - 2重構造も可能だが、高コスト ### VPCフローログ - VPCのネットワークインターフェイスとの間で行き来するIPトラフィックに関する情報をキャプチャできるようにする機能 - CloudWatch Logs, S3, Kinesis Data Firehoseに発行可能 ### ENI - Elastic Network Interface - VPCの論理ネットワークコンポーネント - EC2インスタンスにアタッチ可能 - 実行中のアタッチ(ホットアタッチ) - 停止中のアタッチ(ウォームアタッチ) - インスタンスが起動中のアタッチ(コールドアタッチ) ## Cognito - アプリケーションにユーザー認証機能を付与したい場合に使用 ## FSx - フルマネージドなファイルシステム ![](https://hackmd.io/_uploads/ry_zKRMrn.png) ## Athena S3バケットに保存されているデータに対して直接クエリ処理が可能 ## Data Lifecycle Manager(DLM) - EBSのスナップショット取得のライフサイクルポリシーを設定可能 ## CloudWatch - CloudWatchエージェント - EC2インスタンスにこのエージェントをインストールすることで詳細なログを確認可能 - CloudWatch Logs - EC2インスタンスなどから取得したログを集約してログを保存したり、可視化したりする機能 ## Data Migration Service(DMS) - オンプレからRDSへの移行 ## OU - 組織単位(OU)を使用すると、アカウントをまとめてグループ化し、単一の単位として管理可能 ## SCP - Service Control Policy - AWSアカウントまたは組織単位(OU)内のアカウントのグループに対してAWSサービスの権限境界を設定可能 - 権限を与えるのではなく、「ここまでは許可できる」という境界を設定するもの ## ROA - Route Origin Authorization - オンプレミス環境で保有しているIPアドレスをAWSで利用可能なようにIPアドレスを移行する方法 - パブリックにルーティング可能なIpv4 or Ipv6アドレス範囲の一部 or 全部をオンプレミスのねっとわーくから、AWSアカウントに移行することができる ## Single Sign-On - オンプレミスのActviveDirectoryと連携し、SAMLフェデレーションを設定することが可能 ![](https://hackmd.io/_uploads/Hyhnrf3rn.png) ### Directory Service - フルマネージドなMicrosoft Directory Service - AWS Managed Microsoft ADを使い、SSOが可能 ## API Gateway ### スロットリング制限機能 - リクエストが多すぎるために、バックエンドサービスが処理しきれなくなることを防ぐ - 制限を超えたリクエストは429レスポンスを受け取る ![](https://hackmd.io/_uploads/BJV0-EEr3.png) ### キャッシュ - キャッシュをプロビジョニングして、そのサイズをギガバイトで指定することで、API呼び出しにキャッシュを追加可能 - キャッシュはAPIの特定の段階用にプロビジョニングされている。これによりパフォーマンスが向上し、バックエンドに送信されるトラフィックが減少する ## ELB ![](https://hackmd.io/_uploads/S1qQ4uFH3.png) ![](https://hackmd.io/_uploads/BkzQJAOU3.png) ## CloudTrail - ユーザーのログを取得し、AWS アカウントのガバナンス、コンプライアンス、運用監査、リスク監査を行うためのサービス ## Config - AWS リソースの設定を評価、監査、審査できる構成管理のサービス ## Step Functions - Step Functionsはサーバーレスなワークフローのオーケストレーションサービスであり、 AWSリソースと組み合わせたワークフローを作成する - このワークフローにはLambda関数などのAWSリソースを組み込むことに加えて、人によるアクションを必要とするようなタスクを設定することが可能 ![](https://hackmd.io/_uploads/S1R0Xbjr2.png) # その他 ## RAID - RAIDとは、複数のハードディスクを組み合わせることにより、1台の仮想的なハードディスクとして認識させて冗長性を向上させる技術 - RAID 0 - パフォーマンスの向上のため設定 - 複数のハードで別々の処理をさせ、処理速度の向上 - 一つでもダウンすると涙目 - ストライピング - RAID 1 - 冗長性を高めるため設定 - 複数のハードで同じ処理をさせ、可用性の向上 ## ActiveDirectory - Windowsに搭載されいている機能 - 組織のシステム管理者がユーザーの管理をする機能 ## スロットル - 一定時間内に送信できるリクエスト数を制限するプロセスのこと ## ストレージ - デジタル情報を記憶/保存する装置のことで、ハードディスク、MO、CD-R、磁気テープなどが該当します。 ### DAS(Direct Attached Storage) - 1台のサーバなどに直接接続する形態のこと - 接続プロトコル - ATA - SATA - SCSI - SAS - 複数のサーバでストレージを共有することができない ![](https://hackmd.io/_uploads/B1etrDdSh.png) ### NAS(Network Attached Storage) - ネットワークを介して接続する形態のこと - NASは「ハードディスク、LANインターフェース、簡易OS」などで構成されるファイルサーバ専用機といえる - NASは、LAN接続型ハードディスクとも呼ばれている ![](https://hackmd.io/_uploads/ByHFrPOH3.png) ### SAN(Storage Area Network) - ![](https://hackmd.io/_uploads/BJFYBPdHn.png)