はじめに
本記事では、AWS SAA受験勉強にあたってAWSの各サービスについて学んだことをリスト形式で記述していきます。サービスやツールごとの概要・特徴について記述していきます。
なお本記事では、AWS Documentaionである以下のサイトを基本的に参考にしておりますのでサービスについて詳しく知りたい方はぜひ参考にしてみてください!
目次
- 各種サービスについて
現在なぜか該当箇所にスキップできません。
もし原因がわかる方いらっしゃいましたら教えていただけると助かります。
Amazon EC2
AWSが提供する仮想サーバーサービスです。EC2を利用することで、ユーザーはクラウド上で仮想マシンを簡単に作成、管理することができます。
EC2 インスタンスを起動すると、指定したインスタンスタイプによってインスタンスで使用できるハードウェアが決まります。インスタンスタイプごとに、コンピューティング、メモリ、ネットワーク、ストレージのリソースのバランスが異なります。
自社でOS設定などのデータベースのインフラ環境を管理するためには、EC2インスタンスを使用してDBを構築することが必要です。
AMI(Amazon Machine Image)
AWS がサポートおよび管理するイメージで、インスタンスの起動に必要な情報を提供します。リージョン単位で作成され、S3に保存される。
暗号化されたAMIの共有方法
複数のアカウント間でAMIを共有するには、AMIを別のアカウントと共有するための許可設定が必要となります。そのためには、AMIを第三者のAWSアカウントとのみ共有できるようにAMIの LaunchPermission プロパティを変更することが必要です。
また、このAMIは暗号化されているため、AMIのみを共有するだけでは第三者のAWSアカウントにおいてAMIを利用することができません。AWS KMSの CMK を利用して暗号化されたAMIを利用するには、その暗号化に利用したCMKの権限を有していることが必要です。したがって、KMSのキーポリシーを変更して、第三者のAWSアカウントがAMIの暗号化に利用したKMSキーを使用できる権限を付与します。
インスタンスタイプ
- 汎用
バランスが取れたCPU。
- コンピューティング最適化
コストの高いCPU処理に特化している(画像処理など)
- メモリ最適化
大容量なメモリが必要なものに特化している(データベースサーバなど)
- ストレージ最適化
ストレージ容量や、I/Oスループット性能に特化している(データウェアハウスやビックデータなど)
- 高速コンピューティング
GPUやFPGAなどグラフィック表示が必要な高速処理に特化している。(機械学習など)
購入オプション
- オンデマンドインスタンス
デフォルトの購入オプションであり、使った分だけ請求されます。
使用例)一定の時間しか使わないサーバ、一時的に必要なサーバ
スケジュールドリザーブドインスタンスは日次、週次、月次と3パターンの定期利用に適した購入方法です。以前はこれが正解でしたが、スケジュールドリザーブドインスタンスは現在では利用ができなくなりました。今後はオンデマンドのキャパシティー予約などを利用することが推奨されています。
- リザーブドインスタンス
あらかじめ決めておいた期間の長さ(1 or 3)年分請求されます。最大72%オフ
Convertibleタイプを選択すれば、あらかじめ指定していたインスタンスタイプに依存せず、途中でも変更することが出来ます。
使用例)最低限必要であることが分かっているサーバ、常時軌道が必要なサーバ
- Savings Plans
リザーブドインスタンスのように期間的な契約かつ使用量に対し手も制限をかけることでリザーブドインスタンスよりも安価にサーバを立てることが出来るサービスです。
- スポットインスタンス
余剰リソースを入札形式で利用する方式であり、最も安価に利用できるサービスです。
スポットブロックでは、予め時間を指定しておき(最大6時間)、その間はスポットインスタンスの継続起動を保証されます。
また、スポットフリートでは、C2リソースのターゲット容量を予め指定しておき、その条件を満たすようにスポットインスタンスの稼働を制御するようになっています。
IPフローティング機能
IPフローティングは、EC2インスタンスに固定されたパブリックIPアドレスを割り当て、そのIPアドレスを複数のEC2インスタンス間で簡単に切り替えることができる機能です。
IPフローティングを使用することで、負荷分散や障害時のシームレスな切り替えなど、高可用性と柔軟性を実現することができます。
インターネットを経由せずにS3 APIを呼び出す
VPC内に設置されるEC2とVPC外に設置されるAmazon S3はデフォルトではAWSネットワークを介した通信が実現できません。
PC内のサービスからVPC外のサービスがインターネットを介さずに通信するためには、VPCエンドポイントの1つのタイプであるゲートウェイエンドポイントを使用することで、インターネットを介さずにAWSのネットワークバックボーンを利用して、VPC内のサービスからVPC外のAWSサービスに接続することができます。
エンドポイント:
AWSのサービスにアクセスするための特定のURLやアドレスのことです。AWSの各サービス(例: S3、EC2、Lambdaなど)は、それぞれに固有のエンドポイントを持ち、そのエンドポイントを通じてサービスにアクセスします。
AWS ParallelCluster
AWS ParallelClusterは、AWS上で高性能コンピューティング(HPC)クラスターを簡単に作成、管理、運用できるオープンソースのツールです。必要なコンピューティングリソース、スケジューラ、共有ファイルシステムが自動的に設定されます。
EFA
Elastic Fabric Adapter (EFA) は、Amazon EC2 インスタンス用のネットワークインターフェイスです。これによりお客様は、高いレベルのノード間通信を必要とするアプリケーションを AWS で大規模実行できます。高性能コンピューティング(HPC)や機械学習(ML)ワークロードの通信を高速化するために設計されています。
Amazon VPC
Amazon Virtual Private Cloud (Amazon VPC) は、AWSのクラウド環境内に論理的に隔離されたネットワークを構築するためのサービスです。
これにより、ユーザーは独自のネットワーク環境を定義し、リソースを安全に管理することができます。
主なコンポーネント
- VPC
仮想ネットワークを定義する論理的な枠組み。IPアドレスレンジ(CIDRブロック)を指定して作成します。
- サブネット
VPC内に作成されるIPアドレスの範囲。パブリックサブネット(インターネットアクセス可能)とプライベートサブネット(インターネットアクセス不可)の2種類があります。
- インターネットゲートウェイ
VPCをインターネットに接続するためのゲートウェイ。パブリックサブネットに配置されたリソースがインターネットにアクセスするために使用されます。
- NATゲートウェイ
プライベートサブネット内のリソースがインターネットにアクセスするために使用されるゲートウェイ。
- セキュリティグループ
VPC内のリソースに対するインバウンドおよびアウトバウンドトラフィックを制御する仮想ファイアウォール。
- ネットワークACL
サブネットレベルで適用されるセキュリティルール。ステートレスで、セキュリティグループと補完的に使用されます。
VPCエンドポイント(ゲートウェイエンドポイント)
Amazon Virtual Private Cloud (VPC)エンドポイントは、インターネットを介さずに、AWSのサービスやVPC内のリソースにプライベート接続を確立するためのサービスです。
VPCエンドポイントを使用することで、インターネットゲートウェイ、NATデバイス、VPN接続、またはAWS Direct Connectを経由せずに、安全にAWSのサービスにアクセスできます。これにより、セキュリティが向上し、データ転送コストが削減されます。
DNS hostnamesオプション
VPC内のインスタンスに対してDNSホスト名を付与するかどうかを制御する設定です。
この機能を設定することで、インスタンスやリソース(例えばEC2インスタンス)にプライベート DNSホスト名が自動的に付与 されたり、
VPC内のすべてのリソースに対して 一貫した名前解決 が可能になったたり、
セキュリティグループやネットワークACLなどのセキュリティ設定を 名前ベースで管理 できます。
Amazon ELB
Amazon ELB(Elastic Load Balancing)は、AWS(Amazon Web Services)が提供するロードバランシングサービスです。ELBは、複数のAmazon EC2インスタンスやその他のターゲットにトラフィックを自動的に分散することで、アプリケーションの可用性とスケーラビリティを向上させます。ELBには、以下の3つの主要なタイプがあります。
- Classic Load Balancer (CLB)
- Application Load Balancer (ALB)
- Network Load Balancer (NLB)
Connection Draining
Connection Draining(コネクション・ドレイニング)は、Amazon Elastic Load Balancing(ELB)の機能で、ロードバランサーからのターゲットインスタンス(例えば、EC2インスタンス)を終了、再起動、または削除する際に、新しいリクエストを送信せず、既存のリクエストが完了するまで待つことを可能にします。
これにより、ユーザーがアクティブなセッションを持っている場合でも、途中で切断されることなく安全にインスタンスを停止または置き換えることができます。
IAM
IAM(Identity and Access Management)は、AWS(Amazon Web Services)でのアクセス管理とセキュリティ管理を行うためのサービスです。
固有のプロファイル認証情報と書かれていたらピンと来てください
サードパーティとの連携に必要な設定
サードパーティーのWEBアプリケーションに必要なアクセス権限を付与したIAMポリシーを設定して、それによってクロスアカウントアクセスが可能となるIAMロールを作成し、該当WEBアプリケーションに設定します。
これにより、第三者に資格情報を漏洩することなく、IAMロールの管理によって第三者の情報もコントロールすることができるようになります。
MS Active Directoryの認証情報との連携
AWS IAM Identity Center(旧SSO)を利用して、SAMLフェデレーションを設定してオンプレミス環境のActive Directoryと連携することで、Active Directoryの資格情報を使用して、全ユーザーがAWSとオンプレミスの両方のリソースに対して、一元的にアクセスできるシングルサインオンを実現することができます。
Amazon EBS
Amazon EBS は、Amazon Web Services (AWS) が提供する高性能なブロックストレージサービスで、Amazon EC2 インスタンスに接続して使用されます。
EBS ボリュームは、信頼性が高く、スケーラブルで、パフォーマンスが予測可能なストレージを提供し、データベース、ファイルシステム、ビッグデータ分析などのさまざまな用途に適しています。
Amazon DLM (Data Lifecycle Manager)
Amazon Data Lifecycle Manager (DLM) は、Amazon Elastic Block Store (EBS) ボリュームのスナップショットを自動的に管理するためのサービスです。
DLM を使用すると、EBS ボリュームのバックアップ、保持、および削除のポリシーを簡単に作成および管理できます。これにより、データの保護とコスト効率の最適化が図れます。
DeleteOnTermination 属性
Amazon EBS(Elastic Block Store)のDeleteOnTermination属性は、EC2インスタンスを終了(terminate)したときに、そのインスタンスにアタッチされているEBSボリュームが自動的に削除されるかどうかを決定する設定です。この属性を適切に設定することで、不要なストレージのコストを削減したり、データの保持ポリシーを管理することができます。
ルートボリュームはデフォルトでDeleteOnTermination属性がtrueに設定されており、インスタンスが終了すると、ルートボリュームも自動的に削除されます。
対照的に、インスタンスに追加でアタッチされたEBSボリュームは、デフォルトでDeleteOnTermination属性がfalseに設定されています。
Amazon Route53
AWSが提供するスケーラブルで高可用性のあるクラウドDNSウェブサービスです。
Route 53 を使用すると、ドメイン登録、DNS ルーティング、ヘルスチェックという 3 つの主要機能を任意の組み合わせで実行できます。
- ドメイン登録機能
ウェブサイトのアクセス先(ドメイン名)を登録することで管理・運用が可能になります。
- DNSルーティング機能
ドメイン名とIPアドレスを紐づけた情報が管理されています。これによりブラウザに対してアクセスしたドメインに紐づく情報の受け渡しを行うことが出来ます。
- DNSヘルスチェック機能
ウェブサーバーなどのリソースの正常性を監視することができます。必要に応じて、ヘルスチェックに失敗した際、Amazon CloudWatch アラームの通知を受ける設定も可能です。
本記事では代表的なもののみを紹介していきます
シンプルルーティング
最も基本的なルーティング方法で、単一のリソースに対してクエリを解決します。
ドメイン名を単一のIPアドレスやエンドポイントにマップします。
加重ルーティング
複数のリソース間でトラフィックを分散します。
各リソースにウェイト(重み)を設定し、トラフィックの割合を制御できます。
レイテンシールーティング
ユーザーの地理的な位置に基づいて、最も低遅延のリソースにトラフィックをルーティングします。
フェイルオーバールーティング
プライマリリソースが利用できない場合に、バックアップリソースにトラフィックをルーティングします。
- アクティブ/アクティブ方式
複数のリージョンや環境で同時にトラフィックを処理することが可能です。
- アクティブ/パッシブ方式
メインのウェブアプリケーションやサービスに対して、冗長性と可用性を確保するために複数のリージョンや環境を用意します。
地理的近接性ルーティング
リソースの地理的な距離に基づいてトラフィックをルーティングします。
トラフィックフローのエディタを使用して、エンドポイントに対する優先度や重みを設定できます。
位置情報ルーティングポリシー
ユーザーの位置に基づいてトラフィックをルーティングすることができ、ユーザーに対する最適な言語選択とルーティング制御を行う
CloudFrontディストリビューションの設定
ALIASレコードを作成してCloudFrontを構成することで、Route53のDNSレコードにCloudFrontを設定してドメインを関連付けることができます。その際に、IPv4に基づいたドメイン設定をする場合は、Aレコードタイプにすることが必要です。
Amazon Cognito
Cognitoは、ユーザ認証の仕組みを提供します。既存のシステムや他のIdPで管理しているユーザIDを使用することが可能です。
ウェブアプリケーションおよびモバイルアプリに素早く簡単にユーザーのサインアップ/サインインおよびアクセスコントロールの機能を追加できます。
アプリケーション に ユーザ認証機能を付与 するものであり、ユーザー認証、認可、ユーザー管理を簡単に行うためのAWSサービスです。
ユーザープール
ユーザーはウェブまたはモバイルアプリに Amazon Cognito 経由でサインインする、またはサードパーティー ID プロバイダー (IdP) 経由でフェデレートすることができます。ユーザープールのすべてのメンバーには、SDK を通じてアクセスできるディレクトリプロファイルがあります。
IDプール
ID プールを使用すると、ユーザーは Amazon S3 や DynamoDB などの AWS の各種サービスにアクセスするための一時的な AWS 認証情報を取得できます。
ユーザーにMFA認証を要求する
ソーシャル ID プロバイダーや、エンタープライズ ID プロバイダーを通してサインインすることができます。また、Amazon Cognitoの認証機能では、認証時のパスワード設定に加えて、多要素認証(MFA)を追加することが可能です。
IDプロバイダー:
ユーザーの認証と認可を管理するサービスを提供する組織やシステムのことを指します。IDプロバイダーは、ユーザーが複数のアプリケーションやサービスに対してシングルサインオン(SSO)や多要素認証(MFA)を利用できるようにするために重要な役割を果たします。
Amazon CloudWatch
CloudWatchはAWSが提供するモニタリング・管理サービスです。AWSリソースやオンプレミスのサーバー、アプリケーションのパフォーマンスデータと運用データを収集し、ログ、メトリクス、イベントの一元管理が可能になります。
CloudWatchを利用することで、システムの健全性やパフォーマンスをリアルタイムで監視し、アラーム設定や自動応答を行うことができます。
CloudWatchエージェントとCloudWatch Logsの設定
EC2インスタンスに対してOSレベルの詳細なログ情報を取得する手法です。
CloudWatchエージェントを対象のEC2インスタンスにインストールすることで、CloudWatchによりインスタンス内部の詳細なログが取得できるようになります。CloudWatchエージェントはオペレーティングシステム全体で Amazon EC2 インスタンスから内部システムレベルのメトリクスを収集します。このメトリクスには、EC2 インスタンスのメトリクスに加えて、ゲスト内メトリクスを含めることができます。
次にCloudWatch Logsを設定してCloudWatchエージェントから送られるログを保存します。CloudWatch LogsはEC2インスタンスから取得したログを集約して、ログを保存したり、可視化したりする機能を提供します
AWS Shield
DDoS(分散型サービス拒否)攻撃からアプリケーションを保護するサービスです。StandardとAdvancedの2つのレベルがあり、Advancedではさらに高度な保護機能が提供されます。
Standard版はCloudFrontやRoute53に無料で自動的に適用されますが、Advanced版は有料となるためユーザー側で有効化する必要があります。
Advanced版は有料サービスであるため、 DDoS 攻撃によって生じた可能性のある AWS 請求額の急増に対して、コスト面の保証をしてくれるなどの追加機能が付与されています。
Amazon GuardDuty
AWSアカウント内での異常なアクティビティを自動的に検出するマネージドサービスです。不正アクセスや異常な通信パターンをリアルタイムで識別し、アラートを生成します。
Amazon Inspector
アプリケーションのセキュリティとコンプライアンスを評価するためのサービスです。
ネットワーク構成やOSの設定、アプリケーションの脆弱性を自動的にスキャンし、レポートを生成します
AWS WAF
AWS WAFは、CloudFront に転送される HTTP および HTTPS リクエストをモニタリングして、WEBアクセスの拒否ルールなどを設定できるウェブアプリケーションファイアウォールです。
Referer制限
直接にURLリンクを参照することを制限することができます
Amazon STS
AWS STS(AWS Security Token Service)は、短期間有効なセキュリティ認証情報を生成するサービスです。これにより、ユーザーやアプリケーションは一時的な認証情報を使用して、AWSリソースにアクセスできます。
ロスアカウントアクセスやIDフェデレーションをサポートし、外部IDプロバイダーとの統合も可能です。これにより、さまざまなシナリオでセキュアなアクセス管理を実現できます。
ただし、中長期的なアクセス権限を付与するためには不適切です。
Amazon API Gateway
API の作成、公開、保守、モニタリング、保護を行えます。また、コンテナ化されたサーバーレスのワークロードやウェブアプリケーションをサポートします。
権限管理について
アプリケーション間連携を実施するときには、適切な権限管理が必要になります。
Amazon API GatewayはAPIへのアクセスを IAM のアクセス権限によって制御することができます。そのためには、API の呼び出し等を API コール元にアクセスを許可する IAM ポリシーを作成して設定することが必要です。
スロットリングによる制限設定
Amazon API Gatewayでは作成・管理しているAPIに対するコールが集中した場合に、スケーリングしたり、コールを制限する機能が備わっています。
スロットリング制限はリクエストが多すぎることでバックエンドサービスが処理しきれなくなることを防ぎます。
加えて、Amazon API Gatewayキャッシュを追加して、API呼び出し処理の一部をキャッシュに蓄積して負荷を分散させることができます。コールが集中するリクエスト処理結果を キャッシュ に保存することで、頻繁にリクエストされるAPIコールはキャッシュ経由で処理されるように構成することができます。
Amazon S3
Amazon Simple Storage Service(Amazon S3)は、AWSが提供するオブジェクトストレージサービスであり、大規模なデータの保存、管理、取得を簡単に行うことができます。
バケットを作成時に自動的にサーバーサイド暗号化を適用した暗号化が有効化され、取得時には自動で復号されます。また、S3バケットのデフォルト暗号化によって、自動的にログの暗号化も実施されます。
ストレージタイプ
スタンダード以外のストレージタイプについて特徴を紹介していきます。
- S3 Intelligent-Tiering
アクセスパターンが変動するデータに最適です。
- S3 Standard-IA(低頻度アクセス)
頻繁にはアクセスしないが、必要な時に迅速にアクセスできるデータに最適。
IAはInfrequency Accessの略
- S3 One Zone-IA(単一ゾーン低頻度アクセス)
単一のアベイラビリティゾーン(AZ)内にのみデータを保存し、コストを削減したい場合に適しています。
ログファイルのコピーを保存するためのストレージというのはS3 One Zone-IAを利用する典型例となっております。
- S3 Glacier Flexible Retrieval(グレイシャー)
長期アーカイブとデータバックアップに最適。
- S3 Glacier Instant Retrieval
アクセスされることがほとんどないが数ミリ単位の取り出しが必要なデータ向け
- S3 Glacier Deep Archive(グレイシャーディープアーカイブ)
最も低コストのストレージで、長期間アクセスされないデータに適しています。
- S3 Outposts(アウトポスト)
AWS Outposts上でS3を利用するためのストレージクラス。
- 最後に表形式でまとめておきます。
バケットの設定について
Amazon S3バケットの設定として、保存されているデータが削除されない方法は、2つあります。
1. MFA Delete機能の適用
ユーザーによるデータ削除時にMFA入力を必須化して、誤った削除を防止する。
2.バケットをロック
S3バケットの初期設定でデータが削除されない様にできる
ストレージクラス分析の利用
Amazon S3のストレージクラス分析(S3 Storage Class Analysis)は、データアクセスパターンを分析し、最適なストレージクラスへの移行を推奨する機能です。
この機能を利用することで、コスト効率を最大化し、ストレージの管理を最適化できます。
S3 Access Analyzerの利用
Amazon S3 Access Analyzerは、S3バケットおよびオブジェクトのアクセス許可を確認し、不正なアクセス設定や意図しない公開を防ぐためのツールです。
これにより、S3バケットがインターネットや特定のAWSアカウントに公開されているかどうかを検出し、適切なアクセス制御を実施することができます。
オブジェクトロック機能
データの保護と不変性を確保するための方法で2つのモードが提供されている
- コンプライアンスモード
データオブジェクトを特定の保持期間中に削除または変更できないようにします。このモードでは、設定された保持期間が終了するまで、オブジェクトの内容を変更したり削除することができません。
- ガバナンスモード
オブジェクトを読み込み専用に設定し、指定された期間内はオブジェクトを削除または変更できないようにします。
ガバナンスモードはルートユーザーなどの一部管理者はデータの削除を実行することが可能です。
署名付きURL
事前署名付きURLによって特定の画像を一時的に共有するための特別なURLを発行することができます。
特定のユーザーに特定のオブジェクトへの一時的なアクセスを許可する際は、事前署名付きURLを発行して、そのユーザーに付与します。
静的webホスティング
- ブロックパブリックアクセスのも効果
- バケットポリシーでバケットの読み取りを許可する
- Index.htmlなどのインデックスドキュメントをバケット内に保存する
- 静的webホスティングの設定画面でインデックスドキュメントを設定、有効化する
インデックスドキュメント:
URLにファイル名を省略した場合にデフォルトでレスポンスされるWEBページのこと
バージョニング機能
バージョニングとは、同じバケット内でオブジェクトの複数のバージョンを保持する手段です。バージョニングを有効化することで、Amazon S3 バケットに保存されたオブジェクトに変更が発生した際に過去のバージョンを保存することができます。
これによって、意図しないユーザーアクションやアプリケーション障害によってデータを損失したとしても、過去バージョンから簡単にデータを復旧できます。
Prefixの利用について
S3 は、プレフィックスを利用して日付ベースでアップロードを分散することで少なくとも 3,500 リクエスト/秒、データの取得で 5,500 リクエスト /秒をサポートできるようにパフォーマンスを自動的に向上させることができます。
プレフィックス:
単語の先頭に接頭語を付加してファイル構成などを分割する方式のこと
マルチパートアップロード
大きなオブジェクトを複数のパートに分割して同時にアップロードする機能です。これにより、大容量のファイルを効率的にアップロードすることができ、アップロードが失敗した場合でも部分的に再試行することで、信頼性とスピードが向上します。
Vault Lock(Glacier)について
Vault Lockは、AWSのサービスであるAmazon S3における特定のバケットに対するコンプライアンスを強化するための機能です。
S3バケット内のオブジェクトに対する追加、更新、削除の操作の防止ができ、特定の法的要件(例: FINRAやSECの規制基準など)や業界の規制基準(例: HIPAAなど)に適合するためのツールとして利用することが出来ます。
バケットにVault Lockを適用すると、ロックポリシーを設定できます。ロックポリシーには、Vault Lockの解除に必要な手順や条件を指定することができます。
リクエスタ支払い機能について
リクエスタ支払い機能(Requester Pays)は、Amazon S3のバケット設定の一つで、オブジェクトをリクエストしたユーザーにデータ転送およびリクエスト料金を負担させる機能です。
この機能は、大規模なデータセットを公開する場合や、多数のユーザーがアクセスするデータをホストする場合に特に有用です。
イベント通知
Amazon S3バケットにデータが保存されたイベントをトリガーにして、Lambda関数を動かすことができます。(Amazon SNS経由など)
暗号化について
Amazon S3においてバケットを生成する際はSSE-S3
、SSE-KMS
もしくはSSE-C
のいづれかの暗号化方式を選択する必要があります。
- SSE-S3
S3の標準暗号化方式であり、暗号化キーの生成・管理をS3側で自動で行う
- SSE-KMS
AWS KMSに設定した暗号化キーを利用して暗号化する、クライアント独自の暗号化キーを用いることが出来る。
- SSE-C
ユーザーが指定したキーを用いる。管理が煩雑になるかも
Amazon S3 Select
S3 Selectは、Amazon S3バケット内のオブジェクトから、特定のデータを抽出して取得する機能です。
これにより、オブジェクト全体をダウンロードする必要がなくなり、パフォーマンスが向上し、コストを削減することができます。S3 Selectは、CSV、JSON、およびApache Parquetフォーマットをサポートしています。
Amazon RDS
Amazon RDSは、AWSが提供するフルマネージド型のリレーショナルデータベースサービスです。これにより、データベースの設定、運用、スケーリングを自動化し、ユーザーはアプリケーション開発に集中できます。
読み取り負荷の解消について
読取負荷のみのパフォーマンスを向上させる場合は、リードレプリカを利用するか、キャッシュを利用して集中的なクエリをキャッシュ処理にするといった方法が存在します。
リードレプリカにおけるレプリケーションラグ
リードレプリカは非同期的にレプリケートされる個別のデータベースインスタンスであるため、 レプリケーションデータが遅れることがあり、最新のトランザクションのいくつかが表示できない可能性があります。
拡張モニタリングの利用
loudWatchのデフォルトメトリクスでは取得できない、追加のメトリクス情報を取得するために用います。
RDSの拡張モニタリングを有効化すると、Amazon RDSのDBインスタンス上のさまざまなプロセスまたはスレッドにおけるメモリ状況を常時モニタリングすることが出来ます。
ストレージエンジンについて
MySQLでは一般的にMyISAMをストレージエンジンとして使用することはできないことに注意が必要です。
RDSで推奨されるストレージエンジンはInnoDBです。
ストレージエンジン:
データベース管理システム(DBMS)の内部で使用されるソフトウェアコンポーネントであり、データの保存、読み取り、更新、削除などの操作を行います。ストレージエンジンは、データがどのようにディスク上に配置され、どのようにアクセスされるかを管理します。
Amazon ElastiCache
ElastiCacheは、インメモリキャッシュサービスで、高速なデータアクセスを必要とするアプリケーションのパフォーマンスを向上させるために使用されます。ElastiCacheは以下の2つのキャッシュエンジンをサポートしています
Redis
文字列、ハッシュ、リスト、セット、ソートセットなど、多様・複雑なデータ構造をサポートしています。
Redisはデータの永続化をサポートしており、スナップショット(RDB)やAppend Only File(AOF)を使用してデータをディスクに保存できます。
Memcached
非常にシンプルで軽量な設計になっており、高速なキャッシュ操作が可能です。
データを分散して保存し、負荷分散を行います。スケーラビリティに優れていますが、Redisのようなデータ永続化機能はありません。
Amazon Aurora
AWS が提供するリレーショナルデータベースサービスです。MySQLおよびPostgreSQL互換のフルマネージド型データベースエンジンで、高い性能、スケーラビリティ、可用性を提供します。
Amazon Aurora MySQLデータベースはデフォルトの設定でクラスター構成によって 複数AZにまたがってボリュームを構成 しているため、Amazon RDS MySQLデータベースに比較するとAZ障害には強い構成となっています。
プライマリDBが配置されているアベイラビリティゾーン(それを構成するデータセンター)に障害が発生した場合は、レプリカの1つをプライマリDBに昇格させることで、ダウンタイムを最小限にしてデータベース処理を継続させることができます。
Aurora グローバルデータベース
AWSが提供するリレーショナルデータベース管理サービスであるAmazon Auroraの機能の一つです。これにより、複数のAWSリージョンにわたってデータを簡単に複製および展開できるグローバルデータベースが構築できます
これにより、複数の地理的リージョンにわたるデータの配置と可用性を強化します。
Amazon Athena
Amazon Athenaは、AWSが提供するインタラクティブなクエリサービスで、標準SQLを使用してAmazon S3に保存されたデータを簡単に分析できるように設計されています。
Athenaはサーバーレスであるため、インフラストラクチャの管理が不要で、各クエリでスキャンされるデータ量に基づいて課金されます。
データの圧縮、分割、列形式への変換を行うと、大幅なコスト削減とパフォーマンス向上を実現でき、データ処理コストを抑えることができます。
Amazon DynamoDB
AWSが提供するフルマネージドのNoSQLデータベースサービスです。高い可用性、スケーラビリティ、パフォーマンスを特徴としており、キーと属性によってデータを管理します。
DynamoDBに書き込み時に各トランザクションから機密性の高いデータを削除するアクションを設定できます。
キャパシティーモードの選択
DynamoDBテーブルは利用される負荷が予測できる場合と、予測できない場合に応じて、オンデマンドモードとプロビジョニングモードの2つのキャパシティモードからキャパシティ設定を選択することができます。
- オンデマンドモード
利用するキャパシティーが予想できないときに利用するモードです
リクエストの実績数に応じて課金
- プロビジョニングモード
利用するキャパシティーが予想できる時に利用するモードです
事前に予測した書き込み・読み込みキャパシティーユニットを設定します。
設定したキャパシティーに基づき課金されます。
さらにオートスケーリングを有効化すると効果が期待できます。
DynamoDBストリームについて
DynamoDBストリーム はDynamoDB テーブル内の項目レベルの変更に関するシーケンスを時間順にキャプチャして保存する機能です。
この機能を用いて他のアプリケーションとトランザクションデータを共有します。
DynamoDB Acceleratorについて
DynamoDB Accelerator(DAX)は、Amazon DynamoDBのパフォーマンスを向上させるためのフルマネージドなメモリキャッシュサービスです。
追加のキャッシュレイヤーによってミリセカンドからマイクロセカンドへの最大 10 倍のパフォーマンス向上を実現します。DAXはインメモリ型のキャッシュを利用しているため、特定のデータ領域処理を高速化することが出来ます。
コストが高いため、常時・運用利用には不向きです(AutoScalingを使うべき)
AWS Lambda
Lambdaファンクションの作成
AWSリソースと連携するLambdaファンクションを作成する際は、IAMによる実行ロールをLambdaファンクションに設定してアクセス権限を付与することが必要です。
http経由でアプリケーションの呼び出し
API GatewayをLambdaファンクションに統合して、APIを起動することで、HTTPリクエストによってLambdaファンクションを呼び出してDynamoDBテーブルからデータを取得する処理を実施することができます
Lambdaファンクションは呼び出す際はAPI Gatewayを利用することが一般的です。
しかし近年は、関数 URL(Function URLs) という新機能が実装されたため、API Gatewayを省略してパブリックに公開するAPIや、簡易な認証実装でも差し支えの無いAPIを AWSLambdaで実装することができます
Amazon EventBridge
AWSのフルマネージドイベントバスサービスであり、アプリケーションやサービス間でイベントをルーティングおよび処理するために使用されます。
EventBridgeは、さまざまなAWSサービス、SaaSアプリケーション、および独自のカスタムアプリケーションからイベントを受信し、それらを特定のターゲットに送信することで、リアルタイムでアクションを実行することができます。
アクセス許可設定
IAMによる実行ロールをLambdaファンクションに設定してアクセス権限を付与することが必要です。
このIAMロールに付与されたアクセス権限によって、Lambdaファンクションが操作できるAWSリソースの範囲が決まります。
AWS CloudFormation
AWS CloudFormationは、インフラストラクチャをコードで管理し、自動化するためのサービスです。
テンプレートを利用して、AWSリソース設定を定義したJSON/YAMLファイルからプロビジョニングすることができます。
これによって、テスト環境などのAWSリソース環境をテンプレート化して、自動で展開することが可能です。
AWS CloudFront
CloudFrontとは、AWSが提供するCDN(Content Delivery Network)サービスのことです。S3やALBの配信の際に用いられます。
ユーザーからリクエストがあったコンテンツをキャッシュすることが出来、同じリクエストがあった際に速く配信をすることが出来るサービスです。また、世界中に分散されたエッジロケーションを使って、ユーザーに近いサーバーからコンテンツを配信することで高速なコンテンツの配信を実現しています。
オリジンとビヘイビアの設定が必要である。
署名付きCookiesについて
署名付きCookies(Signed Cookies)は、AWS CloudFrontで特定のコンテンツへのアクセスを制御するために使用される機能です。
署名付きURLと同様に、署名付きCookiesを使用することで、特定のユーザーに対して期限付きのアクセス権を提供し、不正アクセスを防止します。
特定のCookiesを有しているユーザーのみがオブジェクトにアクセスできるように制限することが可能です。CloudFrontの署名付きURLと署名付きCookieは同じ基本機能を提供しており、CloudFrontが配信するコンテンツにアクセスできるユーザーを制御できます。
- 署名付きURL
署名付きURLは、特定のオブジェクトやリソースに対する一時的なアクセスを提供するためのURLです。URL自体に署名情報が含まれており、ユーザーがそのURLを使用してアクセスする際に有効期限やアクセス条件が検証されます。
- 署名付きCookie
署名付きCookieは、ユーザーのブラウザにCookieを設定し、それを通じて特定のリソースやリソースのセットに対する一時的なアクセスを提供する方法です。Cookieには署名情報、ポリシー、および有効期限が含まれています。
署名付きCookieは複数のリソースに対して一貫したアクセス制御を提供に向いており、サイト全体のアクセス制御や認証されたユーザーに対するアクセス管理に適しています。
CloudFormationテンプレートにおけるセクション
CloudFormationテンプレートは、以下の主要なセクションで構成されます。
- AWSTemplateFormatVersion: テンプレートのバージョン。
- Description: テンプレートの説明(オプション)。
- Metadata: テンプレートに関するメタデータ(オプション)。
- Parameters: テンプレートに渡すパラメータ。
- Mappings: 固定のキーと値のマッピング。
- Conditions: リソースの作成に条件を設定。
- Resources: 作成するAWSリソース。
- Outputs: テンプレートの出力。
このうち、Resourcesオプションのみが必須セクションとなっておりその他は任意のオプションとなっています。
Amazon Kinesis
Amazon Kinesisは、リアルタイムでストリーミングデータを収集、処理、分析するためのフルマネージドサービスです。
Kinesisを使用することで、大量のデータを迅速に処理し、リアルタイムでインサイトを得ることができます。
Kinesis Data Streams
リアルタイムのストリーミングデータを収集し、処理するためのサービス。データはシャードと呼ばれる単位で分割され、並列処理が可能です。
Kinesis Data Firehose
ストリーミングデータをキャプチャし、Amazon S3、Amazon Redshift、Amazon Elasticsearch Serviceなどのデータストアに自動的にロードします。リアルタイムでデータを蓄積できます。
Amazon Managed Service for Apache Flink
リアルタイムのデータストリーミングアプリケーションを簡単に構築および管理するためのフルマネージドサービスです。Apache Flinkを基盤とし、大規模なデータストリームを処理するための強力なフレームワークを提供します。
旧称はKinesis Data Analyticsです
Kinesis Video Streams
ビデオストリームをキャプチャ、保存、再生、処理するためのサービス。リアルタイムまたはオンデマンドでビデオデータを利用できます。
シャード
シャードは、データストリームのスケーラビリティと並列処理を実現するための重要なコンセプトです。
シャードを適切に管理し、スケールアップやスケールダウンを行うことで、効率的なデータストリーミングを実現することができます。また、パーティションキーを使用してデータの順序を保証し、CloudWatchを活用してストリームのパフォーマンスをモニタリングすることが重要です。
Amazon SageMaker
フルマネージドな機械学習サービスが提供されています。
何百もの事前トレーニング済みモデルにアクセスでき、数回クリックするだけでデプロイできます。
使用できるアルゴリズムは独自のものに加え、一般的なものも利用することが出来ます。
Jupyter Notebookによりデータ分析が可能です。
Amazon ECR
Amazon ECS
AWSが提供するフルマネージドのコンテナオーケストレーションサービスです。
ECSを使用することで、Dockerコンテナのデプロイ、管理、およびスケーリングを簡単に行うことができます。
利用できるコンピューティングエンジンにはサーバータイプのEC2起動タイプとサーバレスで実行可能なFargate起動タイプの2種類から選択することができます。
AWS Fargate
AWSが提供するサーバーレスのコンテナ実行サービスです。
Fargateを使用することで、サーバーを管理することなくコンテナを実行できるため、インフラストラクチャ管理の負担が大幅に軽減されます。
AWS Config
Configとは、AWSアカウントにあるAWSリソースの設定を評価、監査、審査できるサービスのことです。AWSリソース間の設定や関連性の変更を確認が可能であることから、コンプライアンス監査・セキュリティ分析・変更管理、そして運用上のトラブルシューティングを簡単に行えます。
Amazon Redshift
Amazon Redshiftとは、AWS上で提供されているスケーラブルで高速、費用対効果が高くペタバイト規模のデータウェアハウスサービスです。あらゆるデータを構造化して蓄積し、高速に分析処理できることができます。
データウェアハウス:データウェアハウス(Data Warehouse)は、さまざまなデータの元となる場所からデータを収集・統合・蓄積し、分析のため保管しておくシステムです。主にビジネスインテリジェンス(BI)やデータ分析のために使用されます。
Amazon Redshiftは複数のノードをまとめたクラスター構成によって起動しています。
- コスト削減方法
Redshiftは主にクラスターの起動時間に応じて課金が発生しますが、バックアップとなるスナップショットも含めたデータ量に応じても料金が高くなります。
つまり、クラスター構成を見直して料金が低い構成とする、利用していない期間は休止させる、または、データ量を低減させることでコストを削減することが可能となります。
Amazon Redshift Spectrum
Amazon Redshift テーブルにデータをロードすることなく、Amazon S3 のファイルから構造化および半構造化されたデータを取得できます。Redshift Spectrum クエリでは超並列処理を採用しており、大きなデータセットに対する処理が非常に高速で実行されます。
これによりS3バケット上に保存されたファイルに対して直接、高度なクエリ処理を実行することが出来ます。
拡張VPCルーティング
拡張VPCルーティング(Enhanced VPC Routing)は、Amazon Redshiftに関連する機能であり、RedshiftクラスタがVPC内でクエリやデータ転送を行う際に トラフィック をVPCのルーティングテーブルを介して 制御 できるようにするものです。
この機能を有効にすると、データの転送を詳細に監視および管理し、セキュリティやコンプライアンス要件を満たすためにネットワークトラフィックの流れを制御できます。
AWS Auto Scaling
Auto Scalingは、AWSのリソースを自動的にスケールアップ(拡張)およびスケールダウン(縮小)する機能です。これにより、アプリケーションの可用性を維持しながら、コストを最適化できます。
スケーリングポリシー
- 簡易スケーリング
通常のの設定。アラームに基づいて一段階のスケーリングを実行
- ステップスケーリング
アラームの超過度合いによってスケーリング幅を調節することが出来る
- 手動スケーリング
希望する要領を調節して手動でスケーリングを行う
- スケジュールされたスケーリング
スケーリングを行う日時を指定する。
備考
-
Auto Scalingでは、スケーリングがうまく実行されずに24時間以上たった場合は、自動的にAuto Scaling処理が停止するようになっています。
-
Auto Scalingは特定のAZでの新規インスタンスの起動に失敗した場合には、Auto Scalingグループ設定において指定されたAZ内での起動を実施することになります。
-
Auto Scalingは起動に失敗した場合に備えて、CloudWatchアラーム設定を設定することは可能ですが、Auto Scaling側の機能としてCloudWatchに通知することはありません。
AWS Storage Gateway
AWS Storage Gateway は、オンプレミスのソフトウェアアプライアンスをクラウドベースのストレージと接続し、お客様のオンプレミスの IT 環境と AWS のストレージインフラストラクチャとの間にデータセキュリティ機能を備えたシームレスな統合を実現するサービスです。
このサービスを使用すると、AWS クラウドにデータを保存し、データのセキュリティを維持するために役立つ、スケーラブルで費用効率が高いストレージを利用できます。
ファイルゲートウェイ
データファイルやバックアップイメージをS3ストレージに保存できます
ボリュームゲートウェイ
キャッシュ型ボリュームと保管型ボリュームを用いてクラウドベースのストレージボリュームを提供します
- キャッシュ型ボリューム
プライマリーはS3ストレージであり、オンプレミス環境のストレージをS3に拡張します。
頻繁にアクセスするデータはオンプレ環境にキャッシュを保持することで低レイテンシーなアクセスが可能となります。
- 保管型ボリューム
プライマリーはオンプレストレージであり、非同期的にS3にアップロードします。
テープゲートウェイ
仮想テープストレージを提供します。
Amazon SQS
Amazon SQSは完全マネージド型のメッセージキューイングサービスです。キューによるメッセージ配信によって分散されたソフトウェアシステムとコンポーネントを統合および分離することが可能となります。
システム処理を分散させて負荷分散ができます。これはAWSリソースの水平方向のスケーリングに役立ちます。
可視性タイムアウト
メッセージがコンシューマーに取得された後、他のコンシューマーがそのメッセージを再取得できない期間を指します。この機能は、同じメッセージが同時に複数のコンシューマーに処理されることを防ぎ、メッセージの一貫性を確保するために重要です。
キューの詳細設定
利用場面に応じてさまざまの名機能を使い分けることが出来ます
- 遅延キュー
キューへの新しいメッセージの配信を数秒間遅らせることが出来る機能
- 優先度付きキュー
キューの処理順序に優先度をつけることが出来る
- デッドレターキュー
正常に処理できないメッセージを別のキューへと移動させる。
ChangeMessageVisibility API
Amazon SQS (Simple Queue Service)のメッセージの可視性タイムアウトを変更するためのAPIです。
このAPIを使用することで、指定したメッセージの可視性タイムアウトの期間を延長または短縮することができます。
Amazon SQSキューではメッセージは削除されない限り、コンシューマーからのポーリング後にもキュー内にメッセージは保持されるため、メッセージを2重に取得している可能性があります
ジョブの負荷に応じてインスタンスを増減する
「このジョブはステートレス処理であり、疎結合に構成すること。」に対応するにはSQSキューを作成してジョブメッセージをコンシューマーとなる複数のEC2インスタンスに送信します。
これによって、EC2インスタンスによるバックエンド処理を並列化して、「インスタンス側で状態を維持しない」=「ストートレス」な方式でジョブの並行処理を実行することができます。
「ジョブの負荷に応じてインスタンスを増減すること。」に対応するには、Amazon SQSキューサイズに応じて、EC2インスタンスを増減するようなAuto Scalingを構成します。
まずはAuto Scalingで利用するインスタンス構成を準備するために、処理用に設定されたEC2インスタンスのAMIを設定した起動テンプレートを作成します。
次に、この起動テンプレートを使用して、CPU使用率を閾値としてインスタンス数を増減するスケーリングポリシーを設定したAuto Scalingグループを構成することができます。
Amazon SNS
Amazon SNSは、メッセージングサービスの一つであり、エンタープライズレベルの通知とメッセージ配信を行うためのツールです。
注文管理
Amazon SNSトピックを1つ作成して、Amazon SQSキューからこのSNSトピックにサブスクライブします。これにより、Amazon SNSの注文メッセージに応じてSQSキューの並行処理を開始することが可能となります。注文に応じた処理を実現するために、SNSトピックへのフィルターを設定して注文内容に応じて適切なSQSキューに適切なメッセージが送られるようにメッセージを分割することができます。
これにより、費用対効果と運用効率を最大限にした並列分散処理を実現します
通知機能の作成
Amazon CloudWatchを用いてアプリケーションを監視する際に通知機能を設定するときによく用いられるサービスです。
Amazon KMS
AWSが提供するマネージドサービスで、データの暗号化に使用する暗号化キーの作成と管理を支援します。AWS KMSは他のAWSサービスと統合されており、AWS内に保存するデータを簡単に暗号化し、そのデータへのアクセスを制御することができます。
CMKとは?
CMKはAWS KMSでデータの暗号化および復号化に使用される主要な暗号化キーです。
- シンプル CMK:
AWS KMSが自動的に生成する、データの暗号化に使用されるデフォルトのマスターキーです。
- 外部 CMK:
ユーザーが自分で作成した、AWS KMSにインポートする外部のマスターキーです。
AWS Secrets Manager
AWS Secrets Managerは、AWSが提供するマネージドサービスで、アプリケーション、サービス、データベースなどの機密情報やシークレットを安全に管理するためのソリューションです。
- パラメータストア
AWS Systems Manager パラメーターストアは、AWSが提供するサービスの一つで、アプリケーションの設定情報やシークレットなどの構成データを安全に管理するためのストレージサービスです。
AWS CloudHSM
AWSが提供するマネージド型のハードウェアセキュリティモジュール (HSM) サービスです。
このサービスは、セキュリティとコンプライアンスの要求を満たすために、暗号化キーの生成、保存、管理を ハードウェアレベル で行います。
AWS Marketplace
AWS Marketplaceは、AWSが提供するオンラインストアで、ソフトウェア、データ、サービスなどの様々な商用製品を購入および販売するためのプラットフォームです。
AWS Marketplaceを利用することで、AWS環境に簡単に統合できるソフトウェアやサービスを素早く見つけて導入することが可能です。
AWS OpsWorks
DevOpsツールとして、アプリケーションのデプロイ、自動化、および管理を支援するサービスです。
AWS OpsWorksは、アプリケーションスタックやインフラストラクチャのライフサイクルを管理するための柔軟なプラットフォームを提供し、ChefやPuppetなどの設定管理ツールと統合されています。
AWS Data Pipeline
AWS Data Pipeline は、様々なAWSデータベースやストレージ間のデータの移動と変換を自動化するサービスで、 データ駆動型 のワークロードを管理し、複雑なデータ処理プロセスを効率的に運用するためのツールです。
データ駆動型のワークフローを定義して、タスクの正常な完了をトリガーにして、データ変換と送信タスクを実行できます。
定期的なデータ取得タスクを設定させることができます。
その他関連機能
Route Origin Authorization (ROA)
オンプレミス環境で保有しているIPアドレスをAWSで利用可能なようにIPアドレスを移行するときに用いる技術であり、AWSアカウントに対して特定のIPアドレスを移行します。
ROA (Route Origin Authorization)は、 BGP (Border Gateway Protocol)で使われるAS (Autonomous System)番号と、 IPアドレスの組み合わせが正しいことを示す電子署名が施されたデータです。 ROAによって、数多くのBGPルータ同士でインターネットの経路情報を交換する際に、 経路情報の正当性を確認することができます。
単語集
プロビジョニング
ハードウェアの設置、ソフトウェアのインストール、ネットワーク設定、リソースの割り当てなどのITインフラストラクチャを準備し、設定し、利用可能にするプロセスを指します。
サードパーティ
当事者ではない第三者」という意味があり、企業や団体に対して使われることが多い言葉である。
Message Passing Interface(MPI)
Message Passing Interface(MPI)は、高性能コンピューティング(HPC)環境における並列計算のための標準インターフェースです。MPIは分散メモリ型アーキテクチャをサポートし、複数のプロセッサ間でデータを効率的に交換するためのプロトコルとライブラリを提供します。
アプリケーションの疎結合化
コンテナを用いる(ECS or EKS)
リファクタリング
ソフトウェアコードの内部構造を改善するプロセスであり、外部の動作や機能を変えずにコードを整理し、読みやすく、保守しやすく、効率的にすることを目的としています。
コンシューマー
キューやメッセージングシステムからメッセージを受信して処理する役割を担うプログラムやサービスのことを指します。
運用負荷をかけない
この言葉が問題文に出てきた時にはフルマネージド型のサービスを選ばなければならない