今回の記事はAWS認定資格のソリューションアーキテクトアソシエイト資格の用語まとめ記事です。ソリューションアーキテクトアソシエイト資格はクラウドサービスの機能ではなくサービスを使った設計に関して考える必要があります。用語に関してはテストに出やすい機能や注意点をまとめたので、資格受験を考えている方は是非参考にしてください。
- ソリューションアーキテクトアソシエイト出題範囲
- ソリューションアーキテクトアソシエイト資格用語まとめ
- AWSサービスについて
- AWS Well-Architected フレームワーク
- AZ
- エッジロケーション
- VPC
- EC2
- AutoScaling
- S3
- ストレージクラス
- ボールトロック
- S3のバージョニング機能
- S3のデータ自動保存
- S3のライフサイクルポリシー
- S3のCRR
- S3のCORS
- S3のエンドポイント接続
- S3の容量
- S3のマウント
- データの一貫性
- Application Load Balancerのアクセスログ
- S3 Transfer Acceleration
- ゲートウェイエンドポイントとの接続
- S3バケットの更新・削除をできないようにする方法
- AWS PrivateLink for Amazon S3
- Amazon S3 Select
- オブジェクトロックの種類
- 暗号化データ
- リクエスタ支払い機能
- S3バケットの最適ストレージの見つけ方
- 静的WEBホスティング
- Glacierのデータ移行
- S3 インテリジェント階層化
- 静的ウェブサイトの表示
- S3でCloudFrontを利用する場合
- AWS Lake Formation
- パブリックアクセス設定機能
- AWS Lambda
- Amazon EBS
- Amazon SNS
- Dynamo DB
- IAM
- Elastic IP
- Amazon RDS
- Amazon Aurora
- Amazon ElasticCache
- Amazon SQS
- Amazon kinesis
- AWS CloudFormation
- Cloudwatch
- Amazon CloudFront
- Amazon Route53
- Amazon Athena
- AWS Data Pipeline
- AWS Step Functions
- Amazon DLM(Data Lifecycle Manager)
- ECS
- Snowball
- AWS VPN
- Acceleratedサイト間VPN
- Amazon Redshift
- Amazon EMR
- AWS Secrets Manager
- GuardDuty
- AWS Shield
- AWS Glue
- AWS API Gateway
- AWS Transit Gateway
- AWS Strage Gateway
- AWS Database Migration Service
- AWS Server Migration Service
- AWS DataSync
- AWS Transfer Family
- Direct Connect
- AWS Import/Export
- VM Import/Export
- CodePipeline
- CloudHSM
- Amazon WorkSpaces
- AWS Outposts
- Amazon CloudSearch
- Amazon OpenSearch Service
- AWSサービスの上限関連
- その他アーキテクト概念系
ソリューションアーキテクトアソシエイト出題範囲
ソリューションアーキテクトアソシエイトの出題範囲は下記です。
- セキュアなアーキテクチャの設計 30%
- 弾力性に優れたアーキテクチャの設計 26%
- 高パフォーマンスなアーキテクチャの設計 24%
- コストを最適化したアーキテクチャの設計 20%
クラウドプラクティショナーと違い、サービスを利用して顧客要望を満たす設計ができるかという観点の問題が出題されます。
そのため、各サービスに感してはクラウドプラクティショナーの用語と変わりません。それは別記事でまとめていますので、サービスの機能を抑えられているか不安な方はこちらの記事を参照ください。
【AWS】クラウドプラクティショナー用語まとめ。
【AWS】クラウドプラクティショナー無料試験問題。
クラウドプラクティショナーの知識を前提にソリューションアーキテクトで問われるポイントを今回はまとめたので順番に紹介していきます。
ソリューションアーキテクトアソシエイト資格用語まとめ
AWSサービスについて
AWSサービスには3種類あります。
- アベイラビリティゾーンサービス:EC2/RDS/サブネットなど
- リージョンサービス:VPC/AutoScaling/DynamoDBなど
- グローバルサービス:Route53/Cloud Front/S3(データはリージョンに保存)など
AWS Well-Architected フレームワーク
AWS Well-Architected フレームワークは、以下の6つの柱で構成されています。
・運用上の優秀性
・セキュリティ
・信頼性
・パフォーマンス効率
・コスト最適化
・持続可能性
可用性などは含まれない。
AZ
AZはデータセンターの集まり。リージョン内で物理的に区分され独立しています。AZは物理的に分離されているため、火災、竜巻、洪水などの極端な災害は単一AZのみに影響する。
エッジロケーション
低レイテンシーを達成するためのキャッシュコンテンツを配信するための地理的ロケーションのこと。ファイル圧縮処理などが可能。
VPC
VPCピアリング
VPCピアリングは、異なるVPCからインターネットを経由せずに同じネットワークにいるように通信ができるサービス。
VPCのAZ配置について
VPCは複数のAZに配置可能。
ACLについて
サブネット間の制御として使われます。ネットワークACLはインバウンド(中に入ってくる)設定とアウトバウンド(外に出ていく)の両方を設定する必要がある。
デフォルトの設定
インバウンド :すべて許可
アウトバウンド:すべて許可
SSH接続をする場合、ポートは22、インバウンドのため「Egress:false」に設定されている必要があります。特定のIPのみの場合は、サブネットは「/32」にする。アウトバウンドを広範囲のPCに設定する場合は、ポート「1024~65535」に設定する。HTTPをセキュリティグループで許可は80番ポートで「0.0.0.0/0」。
ネットワークACLルールの評価方法は、低い値から高い値に順番に評価され、低い値が優先される。
セキュリティグループについて
EC2インスタンスなどに適用するファイアウォール機能で、主にVPCリソースのトラフィックを制御するのに使われます。セキュリティグループにはCIDRを指定してIPアドレス範囲を設定するか、別のセキュリティグループIDも設定可能です。
デフォルトの設定
インバウンド :すべて拒否
アウトバウンド:すべて許可
使い方としては、DBなどに接続できるIPアドレスやEC2インスタンスを個別に指定するために使用できる。プロトコル(TCPやUDP)、ポート番号なども指定可。セキュリティグループの設定は即座に反映。
VPCの上限
1リージョンあたり5VPC。申請フォームによりAWSに申請すれば100まで上げることが可能。
セキュリティグループとネットワークACLの違い
セキュリティグループはインスタンス単位で設定するファイアウォールで、ネットワークACLはサブネット単位で設定するファイアウォールです。それぞれ、アウトバウンド(外に出る)とインバウンド(中に入ってくる)のルールを設定して利用します。
セキュリティグループはステートフル(ルールで許可された通信の戻りの通信も自動的に許可)、ネットワークACLはステートレス(アウトバウンド/インバウンドそれぞれで、ルール設定が必要)。
NATゲートウェイ
VPC内プライベートサブネットにあるEC2インスタンスからセキュアなインターネットへのアクセスが必要。その場合は、このNATゲートウェイを使用することで実現できる。プライベートサブネットのルートテーブルを更新して、インターネットトラフィックをNATゲートウェイに向ける必要あり。
トラフィックミラーリング
ミラー対象に指定したENI(Elastic Network Interface)を通るトラフィックの中身をミラーリング。ミラーリングしたパケットを、別のENIやNLB、GWLBに対して転送することができるので、パケットをモニタリングすることが可能。
Elastic Network Interface(ENI)
仮想ネットワーク。ENIはインスタンスにアタッチされているため、デタッチして別のインスタンスに付け替え可能。使い方としては、実行中のインスタンスへのアタッチ(ホットアタッチ)、停止中のインスタンスへのアタッチ(ウォームアタッチ)や起動中のインスタンスへのアタッチ(コールドアタッチ)などとしてフェールオーバ時に使用できます。
AWS Network Firewall
VPC内に配置するファイアウォール。インターネットやVPC間との通信を検査及び制御できる。
DNS hostnamesオプション
パブリックサブネットでEC2インスタンスを起動した際にインスタンスがDNS名を受け取らない場合、DNS hostnamesオプションを有効化します。
AWS WAF
Webファイアウォールは条件に基づきWebリクエストを許可・ブロック・監視するルールを設定し、Webアプリを攻撃から保護するのを助けるWebアプリファイアウォールです。
下記などがブロック例
- リクエストの IP アドレスの送信元
- リクエストの送信元の国
- リクエストの一部に含まれる文字列一致または正規表現 (regex) 一致
- リクエストの特定の部分のサイズ
- 悪意のある SQL コードまたはスクリプトの検出
CloudFrontに使用する場合は、Referer制限をすることで、拒否ルールや許可ルールを設定可能。
EC2
アンマネージドサービス。停止から起動までの時間は数分。
セキュリティグループ変更の適用
変更の適用や新規設定は全EC2インスタンスに即座に反映。
インスタンスの種類
- 汎用:A1・M5・T3
バランスが取れたインスタンス。クラスタープレイスメントグループによる設定可能。 - コンピュータ最適化:C5・C6g
高パフォーマンスが必要なアプリ用 - メモリ最適化:X1・R5
メモリ内の大きいデータセットを処理するのに最適 - 高速コンピューティング:P3・G4
高い計算能力 - ストレージ最適化:ix/dx/hx
ローカルストレージの大規模データセットに対する高い読み取り能力
インスタンスの契約関連
- オンデマンド
時間課金制 - リザーブド
1〜3年間などの年単位での契約を行う場合に利用。1時間程度などの利用はできない。一度契約するとインスタンスタイプやOSを切り替えることはできない。毎日ずっと利用するサーバー向けでなければ、逆に費用が高くなってしまいます。 - スポット
途切れてもいい場合に利用。安い。
オンデマンドキャパシティー予約
特定AZで任意時間インスタンスのキャパシティ予約可能。その間、対象インスタンスの起動が保証。
コンバーティブル
インスタンスの予約期間中にインスタンスファミリー・OS・テナンシー・支払オプションの変更可能。
ステップスケーリングポリシー
スケーリングをCPU使用率などに応じて、複数の閾値を設定。段階的にインスタンス数を増加可能。
スポットフリート
インスタンスタイプや入札価格を指定し、自動で最安値のインスタンスを選択してスポットインスタンス数を調節して、リクエストを処理します。負荷に応じた増減が適切にできます。
EC2フリート
オンデマンド・リザーブド・スポットインスタンスで構成されるインスタンスグループを作れる。それらの購入オプションを共有し、複数のAZにまたがり複数インスタンスタイプを起動可能。
EC2のバッチ処理分散
重い処理をバッチ処理として複数のEC2インスタンスに分散させる場合、Amazon SQSを使用する。
Load Balancer
LBは1つのリージョン内において複数のアベイラビリティゾーンにトラフィックを分散します。リージョン間はできません。
- Amazon ELB(Elastic Load Balancer)
EC2に対して、Webトラフィックなどの負荷分散。 - Amazon ALB(Application Load Balancer)
アプリケーション層のロードバランシングに特化。 - Amazon NLB(Network Load Balancer)
レイヤー4(トランスポート層)で動作し、TCP/UDP/TLSのトラフィック分散に向いている
ELBでDBの利用率を下げるなどは無理。あくまでもEC2のみ。
ALBによるHTTPからHTTPSリダイレクト
ALBのリスナールールを使用して、HTTPリクエストをHTTPSにリダイレクトする設定をする。
ELBのConnection Draining
インスタンスをELB(CLB)から登録解除すると、処理中のリクエストが途絶え、アプリでエラーになる。Connection Drainingを利用すると処理中のリクエストが終わるまで一定期間待機するように設定できる。
ELBを利用せずに高可用性とフォールトトレランスを担保
インスタンスに仮想のElastic IPアドレスを付与し、EC2インスタンス自身の状態をチェックするカスタムスクリプトを使用します。インスタンス応答が停止している場合、スクリプトは、Elastic IPアドレスをスタンバイ側のEC2インスタンスに切り替えるなどで実現可能。
NLBでのフェイルオーバー
UDP接続を使用するVoIPサービスに対応するためには、ネットワークロードバランサ(NLB)が適切。NLBをAWS Global Acceleratorのエンドポイントとして使用することで、遅延が最も短いリージョンにユーザーをルーティングし、リージョン間の自動フェイルオーバーを実現可能です。
EC2の付与できるタグ条件
EC2インスタンスに付与できるタグの上限は50。キーの最大長はUnicode文字128文字。値の最大長は Unicode文字で256文字です。タグでは、大文字と小文字が区別されます。
このタグで開発用・本番用インスタンスを区別し、IAMのポリシーを利用して、開発者の利用範囲を区切ることも可能です。
EC2にアタッチできるストレージ
Amazon EBS(Elastic Block Store)とAmazon EFS(Amazon Elastic File System)。
EBSボリュームがインスタンスのルートデバイスである場合、ボリュームをデタッチする前に、インスタンスを停止する必要がある。
プレイスメントグループ
プレイスメントグループは、複数のインスタンスを論理的にグループ化して、パフォーマンスの向上・耐障害性を高める機能。
- クラスタープレイスメントグループ 単一AZ内でネットワーク性能の引き上げを行う
- パーティションプレイスメントグループ 同一リージョン内でハードウェア障害対策
- スプレッドプレイスメントグループ 同一リージョン内でハードウェア障害対策
DeleteOnTermination 属性
Amazon EC2のインスタンスを終了する際、インスタンスに接続されていたEBS ボリュームを存続させるかを設定する値。デフォルトでは、インスタンスのルートボリュームのDeleteOnTermination属性は有効化されているため、インスタンス削除時にEBSボリュームも削除される。ルートボリューム以外の追加したボリュームタイプではDeleteOnTermination属性は非有効化されている。
IPフローティング
EC2インスタンスにELBやRoute53を構成していると、障害発生時には稼動系からElastic IPアドレスを外し、待機系インスタンスに割り当て直すことで瞬時にトラフィックの向け先を変更できます。ホスト名を待機系IPアドレスに向け直すと、DNS情報が伝播するまでに一定のダウンタイムが発生する可能性があります。これを防止するため、IPフローティングを利用してElastic IPアドレスをフローティングすることで即時に別のEC2インスタンスへとトラフィックを切り替えることができます。
VPCフローログ
インスタンスのネットワークインターフェースに対するVPCフローログを有効化することで、EC2インスタンスのネットワークインターフェイスを介して行き来するIPトラフィック情報をキャプチャ可能。
AMI
EC2インスタンスを起動するための必要情報がまとめられたテンプレートのようなもの。AMIは、仮想マシンのイメージであり、オペレーティングシステム(OS)やアプリケーションソフトウェア、起動許可などがパッケージ化されている。AMIを使用することで、同じ設定やソフトウェアが含まれた複数のインスタンスを簡単に作成できます。また、バックアップなどにも使用できる。
AMIイメージを別アカウントに共有
複数のアカウント間でAMIを共有するには、AMIを別のアカウントと共有するための許可設定が必要。そのためにAMIのLaunchPermissionプロパティを変更する必要がある。
また、AMIはAMS KMSで作成されたキーで暗号化されているため、第三者のアカウントでAMIを利用するためには、KMSのキーポリシーを変更する必要があります。
AutoScaling
リソースが逼迫している場合自動でスケールアウト(リソースを増やす)、余剰な場合はスケールイン(リソースを減らす)を行うサービス。
起動テンプレートを利用してスケーリングを行います。
スケールの種類
- ターゲットトラッキングポリシー
CPU平均使用率や平均ネット入力などの閾値を指定し、それを維持できる台数にインスタンスをスケール。 - 簡易スケーリングポリシー
動的スケーリングオプションの1つ。上限と下限の閾値を設定し、その閾値を超過した場合、スケーリングを実施。基本的にステップスケーリングポリシーの方が使われる。 - ステップスケーリングポリシー
動的スケーリングオプションの1つです。上限と下限の閾値を複数設定し、その閾値に基づいて複数回にわたって段階的にスケーリング可能。細かく定義することができる。 - スケジューリングポリシー
時間によりスケーリング。
複数AZでのインスタンススケールアップ
複数AZを指定したAutoScalingグループを作成。それをELBターゲットグループに設定。複数AZにEC2インスタンスをスケーリングできる。ELBによって既存AZのインスタンスに異常があれば、ヘルスチェックで確認され、その後AutoScalingが停止したAZにあったEC2インスタンスの代わりに別AZにEC2インスタンスを起動できる。
EC2インスタンスのスケールイン
スケールアウトしたインスタンスをスケールインする場合、デフォルトでは下記の順で実行される。
- インスタンス数が最も多いAZを選択する。
- AZのインスタンス数が同じ場合は、起動設定が古いインスタンスがあるAZを選択する。
- 起動設定が古いインスタンスが複数ある場合は、次の課金発生までの時間が最も短いインスタンスを選択する
- 次の課金発生までの時間が同じインスタンスが複数ある場合はランダムで選択する
インスタンスのスケールアウト
複数のAZを跨いでスケールアウトすることができる。また、スケールアウトするEC2インスタンスの上限数を設定することができる。
スケーリングクールダウン
スケーリングクールダウンは、Auto Scalingが連続で実行されないようにするための新しいインスタンスが開始されるまでの待機時間。デフォルトでは300秒。
クールダウンをうまく設定できていない場合、CPU使用率が下がる前に次のインスタンス起動が始り、想定より多いインスタンスが起動してしまうことがある。スケーリングポリシーでスケーリング固有のクールダウンかAutoScalingグループ全体へ適用ができる。
ヘルスチェック
Auto Scalingは起動したインスタンスに対して定期的なヘルスチェックを実行し、インスタンスの状態を監視しています。このへルスチェックにはEC2タイプとELBタイプの2タイプがあります。
- EC2タイプ
EC2のステータスがrunning以外の場合、またはシステムステータスがimpairedの場合に、このインスタンスを異常と判断 - ELBタイプ
インスタンスのステータスチェック、ELBのヘルスチェックからインスタンスの状態を判断
AutoScalingの範囲
AutoScalingは別リージョンでは使用できない。
AutoScalingの対応限界時間
AutoScalingを設定しているEC2でミリ秒遅延には対応できない。
IPアドレス
インスタンス削減時に古い既存インスタンスが削除されると、IPアドレスが変更される可能性がある。
トリガーの制限
メモリ利用率をトリガーとした設定がデフォルトでは設定できない。CPU利用率に応じたスケーリングが適切。
Desired capacity
希望する容量はAuto Scalingによって現在起動するべきインスタンス数を規定するAuto Scalingグループ内の現在起動するべきインスタンス数の設定。これに従ってインスタンスが増減する。
Amazon ECSクラスターにスケーリングを設定
Auto Scaling構成としては、スケーリングポリシーを設定したAuto ScalingはECSクラスターにアタッチすることが必要です。その上で、ECSクラスターにALBをアタッチします。
インスタンスのウォームアップ
新規インスタンスのAuto Scalingのヘルスチェックが成功してInServiceになってから、Auto Scaling グループのメトリクス収集の対象になるまでの期間。
DB系のスケールアップ
性能に関してスケールアップはできないが、データベースのストレージに対して、スケールは可能。
S3
バケット形式のストレージ。デフォルトで保存データを暗号化。
ストレージクラス
コストはS3よりもGlacierの方が安い。Glacier Deep Archive<Flexible Retrieval<Instant Retrieval<One Zone-IA<Standard-IA<Standardの順。
- Glacier Instant Retrieval
ミリ秒単位のアクセスが可能 アクセスはほとんどなし 他のGlacierよりも高い - Glacier Flexible Retrieval
通常データ検索で3~5時間、迅速取り出しモードで2~5分 - Glacier Deep Archive
標準の取り出しで9時間以上〜12時間以内。7~10年以上保存が必要だがほぼ取り出しなしのデータ向け - Standard-IA
低頻度アクセス用ですが、読み込みはすぐ。アクセスが頻繁ではないデータ向け。 - Standard
- One Zone-IA
アクセスが頻繁ではないデータを単一AZに保存することによってコストを節約。読み込みはすぐ。
ログファイルのコピーを保存する典型例。即時にデータ取得可能。ただし、データ取得されないことを前提としているため、データ取得時には課金が発生する。
ボールトロック
Glacierのいづれかのストレージクラスにデータを保存した際に、ボールトへのアクセス制御をポリシーとして設定し、編集できないようできる。
S3のバージョニング機能
ファイルを前のバージョンから復旧することが可能。S3は自動で複数のリージョンに保持され、クロスリージョンレプリケーションを備えており、高い可用性と耐久性を備えている。
S3のデータ自動保存
S3は保存されたデータは、複数のAZに保存される。
S3のライフサイクルポリシー
データを◯ヶ月間保管し、その後Glacierに移動や削除などを設定できる。
S3のCRR
CRRはCross-Region Replicationの略です。S3バケット間でオブジェクトを自動的に複製(レプリケーション)するための機能を提供します。東京リージョンのバケットのデータをオレゴンリージョンにコピーしたりなどです。追加費用は発生する。
S3のCORS
CORSはCross-Origin Resource Sharingの略です。ブラウザが異なるオリジン(ドメイン)のリソースにアクセスするためのスクリプトを許可します。例えば、東京リージョン内のサイトがオレゴンリージョンのS3バケットにアクセスして、画像をダウンロードするなどです。
S3のエンドポイント接続
S3にアクセスする際にS3をインターネットからは非公開として、EC2経由でエンドポイントを通してS3のデータに接続することで、EC2はインターネットを介さずにS3データを取得できる。
S3の容量
S3に保存できるデータの容量に上限はありません。S3コンソール画面からのアップロードする上限容量はあるが、AWS CLIなどを使うことで、その上限もなくなる。
S3のマウント
同時に複数のS3をマウントすることはできない
データの一貫性
新規データ追加後に更新を行うなど、読み取り後書き込みで一貫性を常に保障している。データ更新されても、すぐに反映されます。
Application Load Balancerのアクセスログ
ALBのアクセスログをS3に保存することができる。
S3 Transfer Acceleration
海外リージョンなど、送信元から遠く離れたS3へのデータ転送をAWSのエッジロケーションとネットワークプロトコルの最適で高速化するサービスです。世界中からアップロードが行われたり、大陸間で定期的にGBからTBなどの大きなデータを転送する場合に使用します。
ゲートウェイエンドポイントとの接続
VPCのルーティングテーブルを書き換えて、ゲートウェイ経由でサービスにアクセスできるので、インターネットを経由せずに操作ができる。
S3バケットの更新・削除をできないようにする方法
S3バケットにMFA Delete機能を適用。ユーザーによるデータ削除時にMFA入力を必須化して、誤った削除を防止する。または、Amazon S3バケットの初期設定でデータが削除されないようにオブジェクトロックを設定。(このロックは初期設定でのみ設定可能。オブジェクトロック設定は変更できない)
他にもIAMポリシーで削除権限を拒否するなどもある。
AWS PrivateLink for Amazon S3
S3はインターフェースエンドポイントに2021年対応しエンドポイント経由でVPCからS3バケットインターネットを経由せずにアクセス可能。
Amazon S3 Select
シンプルなSQLステートメントを使用してAmazon S3オブジェクトのコンテンツをフィルタリングし、必要なデータのサブセットのみを取得可能。Amazon S3が転送するデータ量を削減でき、データ取得に要するコストや待ち時間を改善できる。
オブジェクトロックの種類
- ガバナンスモード
バケット内のデータが一般ユーザーからは削除できないような設定 - コンプライアンモード
管理者であってもAmazon S3バケット内のデータを削除することができなくなる。一般社員向きdはない
暗号化データ
S3バケット内のデータの暗号化方法は2通り。暗号化方式はバケット生成時にSSE-S3・SSE-KMS・SSE-Cのいづれかを選択。
- S3のデフォルト暗号化
暗号の復元は自動。 - KSMのカスタマーキー
カスタマーキーが必要。
S3の暗号化を有効化するとログの暗号化も自動で実施される。
リクエスタ支払い機能
別リージョンからの利用と支払いに関しては、S3バケットのクロスアカウントアクセスを有効化し、バケットのリクエスタ支払い機能を有効化する。これで、別リージョン企業の有するAWSアカウントからのS3バケットへのアクセスを許可した上で、データ取得コストを別リージョン企業側に支払わせる。
S3バケットの最適ストレージの見つけ方
Amazon S3 分析のストレージクラス分析により、ストレージアクセスパターンを分析し、適切なデータを適切なストレージクラスに移行すべきタイミングを判断できる。
静的WEBホスティング
S3で静的WEBホスティングを設定する流れは、ブロックパブリックアクセスを無効化→バケットポリシーでバケットの読み取り処理を設定→インデックスをバケット内に保存→静的WEBホスティングの設定画面で、インデックスドキュメントを設定し有効化する。
HTTP レスポンスコード 403が帰ってくる場合、オブジェクトの読み取りアクセス許可が付与されていない可能性がある。
Glacierのデータ移行
5GBを超える場合は、CLIを利用して移行。100GBを超える場合はマルチパートアップロードを使用。
S3 インテリジェント階層化
アクセスパターンが予測できないか、変化するオブジェクトに対して、S3 One-Zone-IAとStandard-IAストレージのコストを最小限に抑える階層化ストレージを提供する。機械学習を使ってコスト効率の良いストレージクラスに自動的に遷移させます。
静的ウェブサイトの表示
サイトのコンテンツとなるIndex.htmlをバケットにアップロード。
- s3-website ダッシュ (-) リージョン
http://bucket-name.s3-website-Region.amazonaws.com - s3-website ドット (.) リージョン
http://bucket-name.s3-website.Region.amazonaws.com
上記のURLにアクセスすると、S3バケットの静的ウェブサイト用に設定したIndex.htmlを表示できる。
S3でCloudFrontを利用する場合
アクセスをCloudFrontのみに絞るために、CloudFront側でオリジンアクセスアイデンティティ(OAI)を割り当てて、そのOAIにのみS3バケット内への読み取り権限があるようにS3バケットポリシーを設定する。
これで、外部のユーザーからはS3バケットにアクセスできない。(単にIAMロールを付与するだけではだめ)
AWS Lake Formation
S3を利用したデータレイク構成を容易に実施することができる。データベースとオブジェクトストレージからデータを収集およびカタログ化して、データをAmazon S3デ ータレイクに移動して保存することができる。
パブリックアクセス設定機能
パケットレベル・アカウントレベルで、オブジェクトへのパブリックアクセスをブロック可能。この機能でブロックを有効化することでS3バケット全体に対してパブリックアクセスを拒否できる。
AWS Lambda
サーバレスアプリを作成するための関数ベースのサービス。
関数のエラー
コードエラーが発生している場合はLambda関数自体の実行ができない。
同時実行処理の限界
限界数を超えると、それ以上のLambda関数が起動できない。動いているものが停止することはない。
利用可能プログラミング言語
Java、Ruby、Python、Node.js、.NET、Go。
Event Bridgeとの連携
毎日◯時に〜処理を実行するなどが設定可能。
Step Functionとの連携
処理フローを構築して、バッチ処理のように動かす。
SQSとの連携
キューからLambda関数を実行する。
コスト
使用した分だけ。関数を定義しているだけではお金はかからない。
エフェメラルストレージ
1つのLamda関数に512MB~10240MBのエフェメラルストレージ(/tmp) を割り当てられる。
Lambda関数の最大呼び出し時間
タイムアウト制限は15分。その他サービスとの兼ね合いで、変わる可能性はあります。例えば、Amazon API GatewayはLambda関数プロキシの呼び出しが完了するまで最大29秒待機します。
Lambdaが向いていない処理
常時多数の処理が実行されるようなアプリケーションのトランザクション処理には向いてない。
Lambda Layer
複数のLambda関数でライブラリを共有できる仕組み。Lambda関数間で利用する共通機能などに適用できる。同じライブラリを利用するLambda関数などが複数あった場合便利。
Lambdaエッジ
サーバー管理を行わなくても、Webアプリをグローバルに分散可能。パフォーマンス向上。
Invocation
Lambda関数の名前空間にあるメトリクス。イベントまたはAPI呼び出し関数の回数を測定可能。
スケジュール設定
定期的にRDSなどのサービスに対して処理を行うなど可能。
Amazon EBS
ES2にアタッチできるストレージ。AmazonEFS / インスタンスストアも合わせて覚えておく。EBSボリュームはボリュームタイプやサイズを途中で変更可能。
一つのAZでEBSボリュームを作成すると、そのゾーン内でのみ自動的に複製が生成される。別のAWSリージョンには複製されません。
IPはEBSではなくインスタンスに設定する。
EBSをインスタンスにアタッチして使用する流れ
まず、インスタンスに追加でアタッチしたボリュームの利用を開始するために、最初にボリューム内にファイルシステムを作成することが必要。
Amazon EBS ボリュームタイプ
HDDよりもSSDの方が性能は良い。また、SSDの中でも「プロビジョンドIOPS SSD」と「汎用SSD」が選択できるが、プロビジョンの方が性能は良い。
HDDでいうと「スループット最適化HDD」「コールドHDD」があり、「スループット最適化HDD」の方が性能は良い。https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-volume-types.html
- プロビジョンドIOPS SSD 1000Mib/s
- スループット最適化 HDD 500Mib/s
- 汎用SSD コールドSSD 250Mib/s
I /O処理での比較
- io2 Block Express:IOPS最大256000
- io2:IOPS最大64000
- io1:IOPS最大64000
Amazon EBSとAmazon EFSの違い
- 接続台数
EBS:1台のEC2インスタンスと接続可能
EFS:複数のEC2インスタンスと接続可能 - 耐久性
EBS:単一のAZ内で冗長化
EFS:複数のAZで冗長化 - 拡張性
EBS:手動でボリューム拡張可能
EFS:自動でボリューム拡張可能
EFSはファイル共有用。NFSv4プロトコル。SMBプロトコルを利用するのはAmazon FSx for Windows。
EFSは標準ストレージと低頻度アクセスストレージ(EFS IA)という2つのストレージクラスがある。EFS IA は、毎日アクセスしないファイルに対して最適化されたコスト効率の料金とパフォーマンスを提供。
ファイルシステムは EFS ライフサイクル管理を有効にするだけで、選択したライフサイクルポリシーに従ってアクセスしないファイルは、自動的にEFS IAに移せる。
EBSとインスタンスストアの違い
- 接続
EBS:EC2インスタンスストアとネットワーク接続
インスタンスストア:ホストコンピュータのストレージを利用 - 耐久性
EBS:単一のAZ内で冗長化
インスタンスストア:冗長化されない - 拡張性
EBS:ボリューム拡張可能
インスタンスストア:ボリューム拡張不可能 - 料金
EBS:従量課金
インスタンスストア:無料
バックアップ
EBSはスナップショット機能があり、データのバックアップができる。バックアップ先はS3。定期的にバックアップを取得する場合は、DLMを使用する。
EBSボリュームの暗号化
既存のEBSボリュームを作成後に設定で暗号化することはできない。EBSのデータをコピーする際にオプションで暗号化オプションを設定することで、暗号化されたスナップショットを作成することができます。その後、スナップショットを復元すれば暗号化されたEBSボリュームに変更することができる。
共有
Amazon EBSボリュームはインスタンス間で共有できません。EBSは単一のEC2インスタンスからのみのアクセスに対して、EFSは複数のリージョンとインスタンスにファイルシステムをマウントできる。
EC2の休止状態との関係
EC2 インスタンスを休止状態にすることで、インスタンスメモリの内容が Amazon EBSのルートボリュームに保存されます。インスタンスが再起動すると、インスタンスメモリの内容が再ロードされます。 これによりインスタンスを特定の期間休止させることで、コストを節約することができます。
スナップショット
EC2が起動している状態で取得できる。スナップショットはS3に保存される。取得できるデータはスナップショット開始時点のデータ。リージョンを跨いでコピーできる。
このスナップショットを復元させて、新しく作ったテスト環境用のEC2などにアタッチすることで、簡単にテスト環境を作れます。
RAID0構成
複数のEBSを使用して1台の装置のように使用することができる。
RAID1構成
耐障害性が I/O パフォーマンスより重要な場合に利用されるストレージ構成。1つのEBSボリュームが故障したとしてもデータの消失を防ぐことができ、RTO1分以内の回復が可能。
課金
EBSボリューム課金はEC2が停止していてもアタッチしていれば課金。デタッチした場合は課金なし。
マルチアタッチ機能
Amazon EBSプロビジョンド IOPS io1・io2ボリュームのみ利用可能。単一のボリュームを同じAZ内の最大16個のインスタンスに同時アタッチ可能。
Amazon SNS
通知配信サービス。「トピック」を作成し、トピックに「サブスクリプション」という形で購読者(エンドポイント)を追加します。この購読者に対して通知を送る。エンドポイントにメールアドレスを設定するとメール送信が、HTTP/HTTPSでは指定URLにHTTPリクエストが、Lambdaを選択すると対象のLambda関数を実行できる。FIFOで配信順序を保証。
Dynamo DB
スケーラブルで高速なパフォーマンス。低レイテンシ(読み書き遅延時間が遅くない。)
Dynamoテーブルのキャパシティは、変化が予測できない場合は「オンデマンド」、予測できる場合は「プロビジョン」。IoTデータやセッションデータ管理などに用いられます。メタデータの保存にも最適。画像データは保存できない。SQLクエリを実行はできない。
Dynamo DBの自動保存
DynamoDBは3箇所のアベイラビリティゾーンに自動保存される。ただし、Dynamo DBにスナップショット機能などはない。
セッション管理
AWSでセッション管理を行う場合は「DynamoDB」「ElastiCache」のどちらか、または、両方を使うのが一般的。
ゲートウェイエンドポイントとの接続
VPCのルーティングテーブルを書き換えて、ゲートウェイ経由でサービスにアクセスできるので、インターネットを経由せずに操作可能。
TTL
過去〇ヶ月分のデータのみを必要とする場合は、データにTTL(Time To Live)を設定可能。
DynamoDB Streams
使用するとトランザクションを他のアプリケーションと共有可能。また、DynamoDBテーブルに保存されたデータ項目の変更を記録できるようになる。
異なるリージョン間でのテーブル同期
DynamoDB Streams を有効にし、対象のリージョンとレプリケーション先のリージョンに同じテーブルを作成する。さらに、それらのリージョンに作成されたDynamoDBテーブルを同期するグローバルテーブルを設定する。これで、DynamoDB Streamsによってリージョン1のDynamoDBテーブルのデータに更新が発生した場合に、リージョン2のDynamoDBテーブルへと自動的にレプリケーションされる設定が可能。
DynamoDBグローバルセカンダリインデックス
クエリ処理の柔軟性を高めるための機能
DynamoDB Accelerator(DAX)
DAXを有効化することで、追加のキャッシュレイヤーによって最大10倍のパフォーマンス向上を実現できる。ただし、高コストなため、コスト最適を考慮する場合は向いていない。(Auto Scalingによる処理負荷に対するスケーリングの方がコスト最適)
AWS Data Pipelineとの連携
Data Pipelineは様々なAWSデータベースやストレージ間のデータの移動と変換を自動化するサービスです。DynamoDBに設定することが可能で、定期的なデータ取得タスクを設定可能。
AppSyncとの連携
リアルタイムで最新の状態に保つコラボレーションアプリを構築できます。
ポイントインタイムリカバリ
指定した日時の状態にテーブルデータを新しいテーブルとして復元します。DynamoDB ではテーブルに対して増分バックアップが実施され、これを利用して、目標復旧時点(RPO)の15分および目標復旧時間(RTO)の1時間を容易に達成可能。
整合性
- 強い整合性モデル
データの更新の際にデータベースをロック。過去のデータが読み取られないようにしてデータの一貫性を担保。 - 結果整合性モデル
データの更新でデータベースがロックされることはない。可用性とスケーラビリティを維持。データ更新時に読み取りリクエストが発生した場合は、データの整合性が担保されません。
DynamoDBのキャパシティ増強
処理性能は上がるが、コストが高い。
IAM
サービスの権限をロール管理するサービス。IAMポリシーで権限を定義し、IAMロールに設定する。このIAMロールを各種サービスに付与する。基本的に権限管理はアクセスキー管理よりもロール管理がセキュアで推奨されている。
AWS CLIを利用する場合
権限はロールとアクセスキーにより制御できる。(ロールが推奨されている。)操作する対象の権限を持つユーザがCLIを実施する必要がある。
開発者が不必要な権限ロールを追加するのを防ぐ
IAMアクセス許可境界で権限ロールを追加できる範囲を設定できる。
署名付きURLを利用するケース
決められた期間内に専用端末でログファイルを見る場合などに利用。S3バケットで署名付きURLを生成し、有効期限が切れる前にベンダーにログファイルをダウンロードしてもらう。仮にIAMロールを付与したアカウントを作成すると、ユーザを削除しないと常に使用できてしまうため。
IAMデータベース認証
これを使うとEC2インスタンスからIAMデータベース認証を利用してRDSのDB インスタンスにアクセスが可能。DBインスタンスに接続する際にパスワードは必要なく、認証トークンを使用。認証トークンはAmazon RDS がリクエストに応じて生成する一意の文字列で、IAM内において管理されます。そのため、ユーザー認証情報をデータベースに保存する必要はありません。
AWS IAM Identity Center(旧SSO)
SAMLフェデレーションを設定してオンプレミス環境のActive Directoryと連携することで、Active Directoryの資格情報を使用して、全ユーザーがAWSとオンプレミスの両方のリソースに対して、一元的にアクセスできるシングルサインオンを実現することができます。
Microsoft Active Directory
オンプレミス環境にあるWindowsサーバーやWindowsアプリに対するユーザー認証を実現する認証用サーバー。こちらのサービスとIAMユーザ管理両方を行うと管理が非効率。そのため、MS Active Directoryの認証情報とIAM認証情報を連携させることが必要。AWS SSOを有効にする必要あり。
Microsoft Active DirectoryとIAM側のディレクトリリクエストをするためにはAD Connectorというディレクトリゲートウェイを使用します。
SAMLを使用して、AWSクラウドへのAPIアクセス用にSAMLベースのフェデレーションを設定できる。
AWS Organizations
アカウントを一元管理するサービス。全アカウントにシングル サインオン (SSO) ソリューションを必要としている。アカウントで IAM ロールを使って、特定のAWSアカウントのリソースへのアクセス権を別の AWS アカウントに付与できますが、これはAWS Organizationsのメンバーアカウント間の連携にしか利用できません。外部ベンダーアカウントには適用できない。
デフォルトでメンバーアカウントが属するOUに対して「FullAWSAccess」(すべてのリソースの全ての操作可能)が付与される。そのため、どんな権限をつけても、この権限があると、全操作可能のまま。そのため、SCPを利用する場合は、この権限をまずは、デタッチする必要がある。
ちなみに、SCPでは明示的なDeny要素が、最初の明示的なAllowよりも優先。
サードパーティソフトの権限
AWSマーケットプレイスで購入したサードパーティのソフトウェアが必要とする権限のIAMポリシーを作成。次に、IAMポリシーを利用してクロスアカウントアクセス用のIAMロールを作成し、該当するサードパーティのソフトウェアに設定。これによってソフトが対象のEC2インスタンスに連携可能。
アカウントごとにIAMユーザを作成する必要がなくなります。
AWS アクセスキー
AWSのアクセスキーは、アクセスキーIDとシークレットアクセスキーから構成される。AWSアクセスキーは、ユーザ名とパスワードによる認証と同様の処理をプログラムアクセス時にアクセスキーIDとシークレットアクセスキーを用いて行える。メリットは更新の影響がないが、デメリットとして、権限が強いキーが存在してしまうこと。
AWS STSとの違い
AWS STSは一時的なセキュリティキーを作成し、キーを提供した信頼するユーザーへ渡すことで、AWSリソースへのアクセスを許可できる。IAMのアクセスキーとの違いは「有効期限」を設定し、一時的な許可が可能な点と、リクエストに応じてその都度動的に作成されるため、ユーザーに紐づいてキーが保存されない。AWS IDを発行しなくて良いので、一時的なアクセスが必要なユーザに対して有効。
OpenID Connect互換のIDプロバイダーを使用してユーザがサインインするには、AWS STSを利用したWeb IDフェデレーションによってアクセス認証を一時的に許可できます。
SCPとの違い
SCPはOrganizationsでAWSアカウントに対する権限の制御ができる。AWSアカウントまたは組織単位(OU)内のアカウントのグループに対してAWSサービスへの権限境界を設定できます。
SCP自体は権限を与えるものではなく「ここまでは許可できる」という境界を設定するもので、AWSアカウントまたはOUに関連付けられているSCPがある場合、許可していないAWSサービスは、AWSアカウントまたはOUへのアクセスを拒否されます。
SCPの使い方としては、組織の大枠でまず使用するサービスにSCPを設定。このSCPで許可・拒否された範囲においてIAMの方で個別ユーザに許可権限を与える流れ。
ROA
RIRを介して作成されるドキュメント。 Amazonが特定のAS番号のアドレス範囲を公開することを承認する。 これを利用して、パブリックにルーティング可能なIPアドレスの一部または全部を、オンプレからAWSアカウントに導入可能。
IAM Access Analyzer
AWSアカウントの外部からアクセスできるリソースを特定する総合的な解析を実行可能。これにより、S3の外部アカウントからのアクセス情報を分析して、不正なアカウントアクセスがないかを確認可能。
Elastic IP
EIPの課金条件
EIPはElastic IPの略です。AWSで利用するインターネットからアクセス可能な静的アドレス。課金される場合は下記です。
- EIPを関連付けているEC2インスタンスが停止している場合
- EC2に関連付いていない(= 昔は使っていたが、EC2を停止してしまって忘れられている)EIP
- 関連付いているEC2は起動しているがEIPが二つ目けれども、ふたつ目以降のEIP
- EIPの「リマップ(remap)」を、1ヶ月に100回以上行った場合
課金されない条件は下記です。
- Elastic IP アドレスが EC2 インスタンスに関連付けられている。
- Elastic IP アドレスに関連付けられているインスタンスが実行中である。
- インスタンスには、1 つの Elastic IP アドレスしかアタッチされていない
インスタンスに関連付いていて、動いている場合に課金されないので注意。
Elastic IPの上限
AWS アカウントでリージョンあたり5つの Elastic IP アドレスまでが上限。パブリック (IPv4) インターネットアドレスが数に限りがあるため。ただし、専用フォームから申請で上限を上げられる可能性。
Amazon RDS
RDSで利用できるDBはAurora・MySQL・MariaDB・Oracle・SQL Server・PostgreSQL。データは暗号化されている。(AWSでMySQLを利用する場合は、Auroraがベスト。)
バックアップ
7日間自動バックアップがある。初回のみフルバックアップで、2回目以降は差分のみバックアップ。パッチ作業自動化。
マルチAZ
RDSはマルチAZを利用可能。マルチAZ構成を利用することで、別のAZにDBを複製し、障害発生時などに切り替ることで高可用性を維持できます。
リードレプリカ
付加分散を目的として、読み取り用として、DBを複製すること。リードレプリカを作成するには新しくDBを作成するより、元のDBからリードレプリカを作るほうが効率が良い。
リードレプリカにはレプリケーションラグというタイムラグがある。
Amazon RDSからデータ自動削除
処理完了後にAmazon RDSから自動でデータを削除したい場合、Amazon Data Pipelineを使用して、指定された間隔で、信頼性のあるデータ処理や移動(ETL)を行うことができます。
Amazon RDS Proxy
RDSプロキシを利用することで、アプリとデータベース間のコネクションを管理できる。Lambda関数からRDS DBインスタンスへのコネクションプールを確立・管理し、アプリからのデータベース接続を最小限に抑えることができ、DBコネクションが非効率に乱立することを防げる。
ストレージエンジン
通常のMySQLではMyISAMをストレージエンジンとして設定することができるが、Amazon RDS MySQLではMyISAMをストレージエンジンとして使用できない。Amazon RDS MySQLにおいて、推奨されるストレージエンジンはInnoDB。
クエリ処理高速化
Amazon ElastiCacheをAmazon RDSに連携してクエリ処理高速化を可能に。
ランダムI/O遅延
ランダムI/O遅延が発生している場合は、データベース性能が不足している。したがって、RDSのデータベース性能をI/O処理に適したものにする必要がある。
拡張モニタリング
拡張モニタリングを有効化すると、RDSのDBインスタンスの様々なプロセス・スレッドのメモリ状況を常時モニタリングすることができる。
Amazon RDSイベント機能
DB更新などが発生した際にAmazon SNS通知やEventBridgeなどでメッセージ送付が可能。ただし、Amazon RDSイベント機能はAmazon S3イベント通知のようにデータ登録でのDB操作をイベントとして利用はできない。そのため、Lambda関数をデータ登録と連動させて動かすことはできません。
また、ライフサイクルポリシーなどはない。
Amazon Aurora
AuroraはMySQL、PostgreSQL互換のDB。3つのAZにまたがるクラスターボリュームを作成します。オンデマンド自動スケーリング構成によって、予測困難なアプリケーションワークロードに対応可能。
Aurora Serverless
Aurora ServerlessはDB インスタンスクラスのサイズを指定せずにデータベースエンドポイントを作成できるというサーバーを常時起動しない柔軟性の高いAuroraデータベースです。Aurora Serverlessは最小と最大のキャパシティーを設定して、その範囲でキャパシティを自動で調整することができます。
RDSとの差
Auroraは標準的なRDS for MySQLと比べて5倍のスループット、標準的なRDS for PostgreSQLと比べて3倍のスループットを実現。
可用性
Auroraはクラスターが3つのAZに分散されて構成。高い可用性を担保。
フェイルオーバー機能
フェールオーバーの実行時間はレプリカを作成している場合は開始から終了までに通常30秒以内に完了。レプリカを作成していない場合、フェイルオーバーは15分以内で完了。
Amazon ElasticCache
インメモリデータベースキャッシュ。
- Amazon ElasticCache for Memcached
レプリカ機能なし。memcachedはシンプルを追求したデータストアです。memcachedでできることはRedisでもできる。 - Amazon ElasticCache for Redis
プライマリの複数レプリカを作成可能。データをディスク上に保存しないため高速でのデータアクセスを実現しています。そのためリアルタイム性を追求するシステムで活用されることが多いです。機械学習などにも利用できる。ただし、データベースが停止するとキャッシュクリアされてしまうため、データが消えます。スナップショット機能でバックアップができます。
Amazon SQS
キュータイプ
Amazon SQS(Simple Queue Service)には2つのキュータイプがある。
- 標準キュー
配信が 1 回以上行われます。そのため重複配信する場合があります。システムが重複メッセージを処理可能な設計である場合や順序が重要でない場合に使用可能。 - FIFO(First-In-First-Out)キュー
メッセージが一度だけ配信され、送信された順で処理される。重複メッセージの配信ない。
キューの優先順付
SQSのキューには優先順付ができます。
SQSによるスケーリング
SQSはキューによってシステム処理を分散させて負荷分散ができる。(水平方向のスケーリング)
キューの保存期間
デフォルトでは4日間。ただし、SetQueueAttributesアクションで、メッセージ保持期間の値を60秒〜14日間まで設定可能。メッセージの保持期間が終了すると、メッセージは自動削除。
可視性タイムアウト
キューが対象に受信された直後、キューがまだ残っているので、そのキューを再処理しないように設定する時間。
メッセージ重複排除ID
同一の重複排除IDが設定されたメッセージをキューへ送っても5分間は受付けない設定です。
ポーリング機能
キューに空のキューが送信されないようにする手法。SQSへメッセージを取得するポーリングリクエスト実施時に空の場合、指定数秒の間待機するロングポーリング機能を使用。一定時間待たない場合はショートポーリングを使用。
デッドレターキュー
デッドレターキューはSQSのキューの一種で、エラーが起きた際に再処理を行うためにデッドレターキューにSQSのメッセージが一旦入って、再処理が行われる。
(例)
LambdaにSQSメッセージ送信→Lambdaエラー→複数リトライ→SQSのメッセージがデッドレターキューに入る→再処理
キューサイズ
キューサイズとはメッセージ数のこと。SQSキューサイズを確認するAutoScalingトリガーを構成することでインスタンスを増加させることができる。
キューサイズが増えると処理が停滞する。この停滞はトラフィックを監視してもわからない。(トラフィックとはネットワークを流れる情報、およびその情報量)
Amazon kinesis
ストリーミングデータをリアルタイムで処理できるサービスです。
Kinesisの種類
- Kinesis Video Streams:配信
数百万など大量のデバイスから動画をストリーミングで安全かつ簡単に配信することが可能 - Kinesis Data Streams:リアルタイム処理
デバイスなどから送られる大量のストリーミングデータをリアルタイムに収集、処理して別のサービスに配送するサービス。IoTデバイスからリアルタイムでデータを取得し、処理を行うなど。 - Kinesis Data Firehose:取り込み変換
データロードまで60秒必要となり、リアルタイムな処理には向いていませんが、データ変換・配信するのに向いています。 - Amazon Managed Service for Apache Flink(旧Analystics):分析
データ分析後に配信などの処理ができる。これを利用して、ストリーミングデータをクエリ処理によって分割し、直接Amazon S3バケットに保存などができる。
Kinesis Dataについて
シャード(ストリーム内の一意に識別されたデータレコードのシーケンス)のセット。Kinesisのストリームは複数のシャードで構成され、各シャードが容量の1単位。
シャード制限
- 読み取り:最大1秒あたり5件のトランザクション
- 読み取り最大合計レート:2MB/1秒
- 書き込み:最大1秒あたり1000レコード
- 書き込み最大合計レート:1MB/1秒 (パーティションキーを含む)
ストリームデータ容量は、ストリームに指定したシャード数で決まる。ストリーム総容量はシャードの容量の合計です。
リシャーディング
Kinesis Data Streamシャードと言われるデータシーケンスを結合・分割することができる機能がある。
appstreamとの違い
AppStreamはアプリケーション配信を行うもので、Kinesisはデータのリアルタイム処理を行うものです。
AWS CloudFormation
JSONやYAMLで記述されたテンプレート(定義ファイル)を利用して、AWSリソースをプロビジョニングするサービス。インフラ環境のデプロイを自動化できる。
CloudFormation記載内容
- Resources:インスタンスなどのスタックリソースとそのプロパティを指定
- Parameters:テンプレートに渡す値を指定
- Description:コメントなど
- Mappings/Conditions:条件分岐を記載
RegionMap:
ap-northeast-1:
hvm: "ami-0792756bc9edf3e63"
ap-southeast-1:
hvm: "ami-0162da29310cc18f6"
この内容が、PropertiesにあるMapping関数によって引用可能。
Properties:
ImageId: !FindInMap [RegionMap, !Ref 'AWS::Region', hvm]
この記述だと、リージョンごとにインスタンスを作成できる。
AWS SAMとの連携
サーバーレスアプリケーションをデプロイするためのツール。YAMLを使用して、サーバレスアプリケーションのLambda関数、データベース、イベントソースマッピングをモデリングできる。
費用
CloudFormation自体は無料。料金はプロビジョニングしたリソースの利用料金のみに発生。
スタックセット
CloudFormationテンプレート内にAWSリソースの設定を定義して、1つのテンプレートにより複数の AWS アカウントやリージョンにリソースを展開できます。
ドリフト
チェックする機能。
Cloudwatch
AWSリソースとアプリケーションの監視サービスで、パフォーマンスデータを収集し可視化し、リアルタイムでアプリケーションを最適化してトラブルシューティングするための補助サービス。カスタムメトリクスは有料で、通常メトリクスは無料。
標準メトリクス
ネットワーク受信料やCPU利用率、データ転送量、ディスク使用量等の標準メトリクスを提供。
カスタムメトリクス
カスタムメトリクスで下記を取得できる
- アプリやサーバーが生成したデータ(Webの読み込み時間、リクエストエラー発生率、同時処理数またはスレッド数)
- CPUやネットワーク使用率、ページロードやクエリ実行時間
- UnhealthyHostCountメトリクス:異常とみなされるターゲットの数を提供
検知・通知機能
CloudWatchはアプリケーション処理の異常正常を監視することもできる。以上を検知した場合、アラームによって通知や自動的なアクションを起動することができ、SNSなどのサービスへの連携も可能。
(使用例)
- EC2停止→イベントをトリガーとしてSNSへ通知→Eメールを送信
- 異常状態インスタンス置換
UnhealthyHostCountメトリクスをモニタリングするAmazon CloudWatchアラームを作成。
AutoScalingアクションを構成。
アラームが起動した場合アラーム状態になった場合Auto Scalingに通知→異常状態のインスタンスを置換
ログ機能
CloudWatch Logsを使ってCloudWatchから取得したログを集約してログを記録できる。
共有リンク
Cloud watchのダッシュボードのみを見たい管理者がいる場合などに使用。最小特権の原則に従うとIAMロールを付与するとAWSコンソールのその他画面を見られてしまう。そのため、この共有リンクを作成し、共有することで、ダッシュボードのみを確認可能とできる。
Amazon CloudFront
Webページを外部から見る場合にレイテンシを抑えるためのサービス。また、予期せぬアクセス集中にはAmazon Cloudfrontが有効です。CloudfrontはCDNサービスであり、キャッシュサーバがリクエストに応答するため、オリジンサイトへのアクセス集中を避けることができます。Cloud FrontはUDPをサポートしていません。
Auto Scalingとの違い
Auto Scalingもアクセス集中には有効だが、CPUが90%を超えた場合など、トリガーをきっかけにスケールするため、予期せぬアクセス集中に対応ができない。
国単位のサイトアクセスの遮断
CloudFrontを使うと国単位のアクセス遮断などが可能。セキュリティグループでは実現できない。
オリジンサーバへのアクセスが増える原因
キャッシュされるべきデータがエッジロケーションにないため、オリジンサーバへのアクセスが頻発。原因として、キャッシュの保持期間が短くなっていることが考えられる。対策としては、CloudFrontディストリビューション設定において、Cache-Controlのmax-ageディレクティブの値を上げる。
CloudFrontの署名付きCookies機能
CloudFrontの署名付きCookies機能を利用すると、現在のオブジェクトURLを変更しないで、有料会員だけにプライベートメディアファイルへのアクセスを提供できる。
DDoS攻撃対応
AWS Shieldを組み合わせることで、WebアプリへのDDoS攻撃に対して最適な防御壁を設定可能。
IP遮断
CloudFrontのIPマッチ条件でリクエストの発信元のIPアドレスに基づいて着信Webリクエストを許可またはブロックできます。
CloudFrontとビューア間のセキュア通信
CloudFrontとビューア間の通信はHTTPS Comodo、DigiCert、Symantec、またはその他のサードパーティプロバイダーなどの信頼できる認証局(CA)によって発行された証明書、またはAWS Certificate Manager(ACM)が提供する証明書の両方が可能。
CloudFrontとオリジン間のセキュア通信
CloudFrontとカスタムオリジン間のHTTPSオリジンがELB以外の場合は、信頼されたサードパーティー認証機関 (CA) (Comodo、DigiCert、Symantec など) によって署名された証明書を使用、ELBの場合はACMの証明書が必要。
Amazon Route53
Amazon Route53はAWSが提供する高い可用性とスケーラビリティを持つクラウドDNS(Domain Name System)サービス。
レコードの種類
- Aレコード:ホスト名とIPv4アドレスの関連付けを提供する
- AAAAレコード:ホスト名とIPv6アドレスの関連付けを提供する
- CNAMEレコード:ドメイン名から別のドメイン名を参照
- MXレコード:対象ドメイン宛のメール配送先ホスト名を定義するレコード
- SOAレコード:DNSサーバや管理者のメールアドレス、シリアル番号などを保持して、更新されているかの判断を行う
ルーティングポリシー
- レイテンシーベースルーティング
レイテンシーの低いリソースへルーティング。アプリケーションの処理を高速化可能。 - 位置情報ルーティング
接続元から地理的に近いリソースへルーティング。 - シンプルルーティング
指定されたレコードの情報に従ってルーティング。 - 複数値回答ルーティング
DNSクエリに対する応答として複数の値を返すように設定可能。IPアドレス単位での正常・非正常を判断してルーティングすることが可能。これはロードバランサーに置き換わるものではありませんが、ヘルスチェックした上で複数の IP アドレスを返すことができる。
フェイルオーバシステム構築
ヘルスチェック機能を使えば、EC2の状態をチェックして、異常時にフェイルオーバーできる。
- アクティブ/パッシブ方式
常時2台が動き1台で処理を実行。もう一台は待機。route53ではこちらしかできない。 - アクティブ/アクティブ方式
常時2台が稼働し処理を実行。障害時性能が半分に。
2台構成で性能を分けるため、1台が動かなくなると性能が落ちる。
RDSのフェイルオーバシステム
DBインスタンスのCNAMEレコードをプライマリーからセカンダリーに切り替えることで、セカンダリーをプライマリへと昇格。セカンダリーDBは最初から実行できる状態で待機されているホットスタンバイとしておく。
DDoS攻撃への対応
DDoS攻撃時にユーザが継続してアプリを利用できるように「シャッフルシャーディング」「 エニーキャスト ルーティング」という支援機能がある。
Amazon Athena
サーバーレスのインタラクティブなクエリサービスで、S3上のデータを直接SQLを使用して簡単に分析できます。機械学習向けで、通常の使用には向かない。
料金
クエリ単位にお金かかる。
AWS Data Pipeline
指定された間隔でオンプレミスデータだけでなく、異なるAWSコンピューティングとストレージサービス間でデータを処理移動するサービス。例えば、LambdaなどでDBのデータ削除処理を行なった場合、合わせてS3のバックアップも削除するなどが可能。
AWS Step Functions
AWS Step Functionsはワークフローのステップを自動的に起動してアプリケーションを順番通りに実行するサービス。
デフォルトで、状態がエラーの場合、実行全体が失敗する。アクションとフロー状態に対するエラー処理方法を設定可能。その際、リトライを実施して処理を継続するか、タイムアウトによって処理を停止できるが、再起動を実施するわけではない。
ワークフローには入力も設定でき、アクションが長時間待ちになっている場合は、人の入力作業が滞っているなども考えられる。
Amazon DLM(Data Lifecycle Manager)
各タスクをスケジューリングできる。
(例)
EBSのスナップショット作成や削除をスケジューリング。
ECS
- EC2モード
EC2を選択した場合は各インスタンスのOSアップデートなど、EC2自体の運用が必要。 - Fargateモード
EC2自体の運用管理を削減できる。
(ECS利用例)
そこからDynamoDBへ読み込み接続をする場合、ECSタスクにIAMロールを付与する。
AWS Fargate
FargateはECS・EKSと共に使用するコンテナクラスターを管理サービス。ECSを動かす環境として、Fargateを選択可能。AWS上でコンテナをサーバーレスで実行することが出来るようにする機能を提供してくれるサービス。
Snowball
Snowballは安全なデバイスを使用してAWS内外に大量のデータを転送するペタバイト規模のデータ転送サービス。データはGlacierに直接インポートはできないため、Glacierに保存する場合は一旦S3に保存して、ライフサイクルポリシーでGracierに保存するようにする。
デバイスの種類
- Snowball Edge Storage Optimized
データ転送用のedgeデバイスオプションで100TB (80TB使用可能) - Snowball Edge Compute Optimized
機械学習、フルモーション動画など大規模42TB - Snowball Edge Storage Optimized
大規模なデータ移行80TB
現在SnowBall利用は推奨されておらず、AWSではSnowball Edgeの利用が求められている。
AWS VPN
オンプレミス環境とのサイト間VPN接続を確立する。サイト間VPNをAWSとオンプレミス間に構成するためには、オンプレミス側のネットワーク環境にカスタマーゲートウェイデバイスを設置して、カスタマーゲートウェイを構成します。
Acceleratedサイト間VPN
Global Acceleratorを利用したサイト間VPN。VPNの通信はAWSグローバルネットワークを経由して接続されるため、高可用性・高パフォーマンスが維持される。
Amazon Redshift
Amazon Redshiftとは、AWS上で提供されているデータウェアハウス専用のデータベースサービスです。あらゆるデータを構造化して蓄積し、高速に分析処理できることが大きな特徴です。機械学習にも利用されます。
RedShift Spectrum
RedShift Spectrumは、Amazon Redshiftと統合されており、S3のデータを直接クエリする能力を持ちます。BIツールと統合されているため、多数の同時ユーザーからの複雑なクエリの要件も満たすことができます。オブジェクト全体に対して実施するため、データの一部を分析するなどは向いていない。
拡張VPCルーティング
Redshiftクラスターに対する拡張VPCルーティングを有効にすることで、VPCに出入りするRedshiftクラスターのすべてのCOPYおよびUNLOADトラフィックを監視可能。
Work Load Management(WLM)
Redshiftのクエリ処理に対して割り当てるRedshiftのリソースを指定する機能。
Amazon EMR
ビックデータ分析用のサービス。Hadoopフレームワーク。1秒ごとの課金。EMRとRedshiftの違いは、ツールか保管しておく場所かの違い。
膨大なデータを迅速かつコスト効率よく処理して分析するサービス。DynamoDB に格納されているデータなど大量のデータを迅速かつ効率的に処理できるが、レポート作成など向きではない。(過剰スペック)
AWS Secrets Manager
データベースやその他のサービスの認証情報を安全に暗号化してシークレットとして保存・取得する仕組みを提供します。自動回転をオンにすることで定期的に資格情報を更新可能
GuardDuty
継続的にモニタリングを行い、悪意のあるアクティビティを確認するサービス。
AWS Shield
マネージド型の分散サービス妨害 (DDoS) に対する保護サービス。standardは基本的に軽減のみ。AWS Shield Advancedでは、DDoS攻撃によって生じた可能性のある請求に関しても保証されます。
AWS Glue
データをRDSやKinesis、S3データレイクなどから集めて、変換して読み込むためのサービス。
AWS API Gateway
トラフィック管理、認可とアクセスコントロール、モニタリング、API バージョン管理などのAPI管理を実施できます。そのパフォーマンスとしては最大数十万規模の同時 API コール処理が可能。API Gateway は受信したAPI コールと転送データ量に応じて課金される従量課金制サービス。
L3/L4 DDoS攻撃に対応可能。
Lambdaと連携して、サーバレスAPIを作成できる。
処理性能を向上
高負荷に備えてAPIゲートウェイのスロットリング制限設定とキャッシュを有効化する。
レスポンスキャッシュ機能があり、実行結果をキャッシュすることが可能。
AWS Transit Gateway
複数のVPCやVPCピアリングをハブ&スポークス方式で接続可能。中央のゲートウェイからネットワーク上にあるAmazon VPC、オンプレミスのデータセンター、リモートオフィスそれぞれに単一の接続を構築して管理することができ、管理の簡略化が可能。
VPN接続スループット向上
AWS Transit Gatewayを利用して、Equal Cost Multipath (ECMP)をこれらの接続の間で有効にできます。トラフィックを複数のパスに負荷分散できるので帯域幅を広げられる。そのため、VPN接続などで接続数が増えた場合、帯域を広げてスループット改善が可能になる。
マルチキャスト
マルチキャストは複数のデバイス(ホスト端末)に対して同一データを一斉に送信するネットワーク方法のこと。AWS Transit Gatewayでマルチキャストを有効にすると実行可能。
AWS Strage Gateway
オンプレミスから実質無制限のクラウドストレージへのアクセスを提供するハイブリッドクラウドストレージサービス。ストレージ間のデータ移行に利用できる。
ボリュームタイプ
- キャッシュ型ボリュームモード
データ自体はS3に書き込まれる。頻繁にアクセスするデータはキャッシュとしてローカルに保持。ストレージ容量は、必要なキャッシュ容量分確保。アクセス方式も移行前と変わらない。 - 補完型ボリュームモード
キャッシュ型と違い、ローカルに必要な分ストレージ容量を確保する必要がある。
データの暗号化
デフォルトでデータを暗号化している
AWS Database Migration Service
オンプレの各種データベースをAWSへ移行するサービス。また、Oracleなどは単純に移行するだけではなく、スキーマーの再作成なども条件次第では可能。(手作業ミスを防げる)
AWS Server Migration Service
オンプレの仮想マシン(VMware vSphereやHyper-V/SCVMMなど)をAWSへ移行するサービス。もう使われていない。Application Migrate Service(AMSに変わった)
AWS DataSync
オンプレのファイルストレージをAWSストレージサービス(S3やEFS)間のデータ移動を自動化。安全オンラインサービス。
AWS Transfer Family
Amazon S3やAmazon EFSへのファイル転送を実現するツール。SFTPやFTPを利用したファイル転送に対応しているため、小規模ファイル転送が可能。
Direct Connect
オンプレミスとAWSを繋げる回線。構築に時間はかかるがセキュリティ抜群。
Direct Connectの料金は「データ転送料金」と「ポート時間料金」の2つで従量課金制。
DirectConectで接続時、オンプレとEC2両方のサーバに対して、SQSなどでポーリング処理が可能。
AWS Import/Export
大量のデータを物理ストレージデバイスからAWSに転送するサービス。ストレージドライブをAWSに郵送し、Amazon高速内部ネットワークを利用してドライブから直接データを転送できる。
Glacierストレージクラスのデータはエクスポートがサポートされていない。
VM Import/Export
仮想マシンイメージを既存の環境から Amazon EC2 インスタンスにインポートすることや、元のオンプレミス環境にエクスポートすることが簡単にできます。
CodePipeline
CodeDeployやECSなどのサービスをパイプラインとして設定することで、コードの開発からデプロイまでを自動化することができる。
CloudHSM
クラウドベースのハードウェアセキュリティモジュール(HSM) 。AWSクラウド側で安全性の高いハードウェアベースの暗号化保存機能を利用して、暗号化キーを簡単に生成して使用できます。
Amazon WorkSpaces
WindowsまたはLinuxのデスクトップを数分でセットアップ可能。これを利用して、すばやくスケールすることで世界中のたくさんの従業員に仮想デスクトップを提供できます。
AWS Outposts
RDSをオンプレ環境にセットアップ可能にするサービス。ほぼすべてのデータセンタ・コロケーションスペース・オンプレ施設にAWSサービス、API、ツールを提供可能。
Amazon CloudSearch
ウェブアプリ向けの検索ソリューションを容易かつコスト効率良く設定、管理、スケール可能。
Amazon OpenSearch Service
Amazon S3バケット保存した大量のPDFファイルに対して、ドキュメント共有アプリケーションにフレーズ検索機能を実装することができる。
AWSサービスの上限関連
- ElasticIPの上限:5
- EC2インスタンスのタグの上限:50
- 1リージョン当たりのVPC上限:5
- 1リージョン当たりのサブネット上限:200
その他アーキテクト概念系
Design for Failure
障害が発生してもサービスを継続できるようにシステムを設計する。
メッシュアーキテクチャ
データ品質に対する責任を全社横断組織のような「中央組織」と各事業部門といった「ドメイン」に分散させることで、データ利活用におけるドメインとしてのアジリティを確保しつつ、ドメインが作成したデータやアナリティクスを他ドメがメッシュのように相互利用できるようにするもの。
ハブアンドスポークシステム
「ハブ」と呼ばれる拠点に一旦全ての荷物を集約し、拠点別に振り分けてから各拠点に向けて配送する仕組みのことです。
SDK
SDKはPerl以外は利用可能。
プロキシサーバ
クライアントからの要求をフィルターし、製品の更新に関連する要求のみを許可して、特定のソフトウェア更新以外のすべての要求をフィルタリングできます。ネットワークACLおよびセキュリティグループはURLに基づいてリクエストをフィルタリングすることができない。
CIDR
国の特定はできない。
シャーディング
データベース内の複数のテーブルにデータを分割するための一般的な概念です。リクエスト増加などで単一のマスターDBの運用で限界がある場合に、 一定のルールに従いデータを複数のDBに振り分けることでアクセスを分散させることができます。
ingress
パケットがネットワーク機器へ入力すること。
egress
パケットがネットワーク機器から出力されること。
コメント