AWS認定ソリューションアーキテクトアソシエイトを受けるにあたって抑えておきたいところメモ
AWS認定SAA試験(2018)を受験することにした
フロントエンドからインフラまで全体を把握しておきたいのと単に強くなりたくて受けることにした。 クラウドはもうすでに流行りを超えて主流になってきているし、とっておいて損はないだろうということで。
受験を終えたら体験記を書くとして、今回はAWS SAAを受ける上で、重要そうな部分をメモしておこうと思います。 網羅的なものではなくあくまで個人的に引っかかりそうな部分のみのメモです。
VPC
設定の適用範囲が違う
どちらもファイアウォールの機能を果たすが、設定する範囲が
・セキュリティグループはインスタンス単位
・NACLはサブネット単位
ステートの保持
・セキュリティグループはステートフル ・NACLはステートレス
なので、セキュリティグループはインバウンドの通信を許可すると自動的にアウトバウンドも許可される。
NACLはステートレスなので、この場合はアウトバウントも個別に許可の設定が必要になる。
デフォルトの設定
・セキュリティグループはインバウンド不許可、アウトバウンドの許可(同セキュリティグループのインスタンスからのインバウンドは許可) ・NACLはすべて拒否?
NACLのルールナンバー
それぞれのルールには固有のルールナンバーがある。 ナンバーの低い方のルールが優先的に評価される。
VPN接続
VPN 接続を使用して Amazon VPC をリモートネットワークに接続できる
・AWS マネージド VPN(IPsec および VPN 接続) ・AWS VPN CloudHub(リモートネットワークが複数あるとき) ・サードパーティー製ソフトウェア VPN アプライアンス
https://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/vpn-connections.html
EC2
・従量課金でスケーラブルなサーバーを立てれる ・同リージョン内のS3、EC2などへのデータ転送は無料
EC2とPrivate IPの固定
・EC2-Classicでは、起動時にPrivate IPが毎回変わる ・EC2-VPC(現在の通常のEC2)では、固定
リージョン毎のリミット
デフォルトではリージョンでインスタンス20個のソフトリミットがある。 AWS側に申請するとリミットを解除してくれる。
On-Demand,Reserved,Spotの違い
On-Demand
需要に応じて使われる普通のEC2。 便利だけどコストがかかる。
Reserved
前もって一定期間分の予約をして買うタイプのインスタンス。 途中で変更したりは一応出来るが色々条件があるのでオンデマンドほど柔軟ではない。 https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ri-modifying.html
ちなみに途中でキャンセルすることは出来ない、ただしマーケットプレイスで売り飛ばすことができる。
Spot
余っているインスタンスを大幅値引きで使わせてもらえる。 ただし、いきなり終了させられたりする場合があるのでそういったケースにも対応できる用途で使う。
AWSに終了させられた場合は最後の1時間分は切り捨てでその1時間分の費用は無料となる。
EBS-Backedとインスタンスストア
インスタンス自身にデータを保存しておくインスタンスストア型のインスタンスと、EBSというストレージに保存するEBS-Backed型のインスタンスがある。
基本的にインスタンスを停止させるとそのインスタンス内のすべてのデータは失われてしまう。 なので普通はEBS-Backedを使う。
EBS
・インスタンスのデータを保存しておく ・データはインスタンスが終了・停止しても保持される ・一つのインスタンスにしかアタッチ出来ない、ただしEC2が複数のEBSを持つのはあり ・AZ内に自動的にレプリカが作られる
EBSのタイプ
汎用 SSD (gp2)
普通のEBS。
プロビジョンド IOPS SSD (io1)
高性能なタイプ。 持続的な IOPS パフォーマンス、またはボリュームあたり 10,000 IOPS または 160 MiB/秒以上のスループットを必要とする重要なアプリケーションなどに。
スループット最適化 HDD (st1)
アクセス頻度とスループットが高いワークロード用に設計された低コストの HDD ボリューム。
Cold HDD (sc1)
アクセス頻度の低いワークロード用に設計された低コストの HDD ボリューム。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/EBSVolumeTypes.html
EBSのスケール、タイプ変更
現行世代のものは、停止したりすることなくボリュームサイズの増加、ボリュームタイプの変更、または (io1 ボリュームの場合) IOPS パフォーマンスの調整ができる。 ちなみに最大 16 TiB のボリュームが用意されている。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ebs-modify-volume.html
EBSのスナップショット
スナップショット、要するにバックアップ的なもの。 EBSのボリュームのスナップショットを作成し、S3に保存しておくことができる。
毎回フルサイズのバックアップを取るのではなく、前回のスナップショットから変更された部分のみを保存する。 スナップショットを削除すると、そのスナップショットに固有の情報だけが削除される。
EBSボリュームの暗号化
EBSボリュームは作成時に暗号化オプションを有効にすることで暗号化できる。
EBS RAID アレイのスナップショット
RAIDアレイの場合少し手順が異なる。
1.すべてのアプリケーションで RAID アレイへの書き込みを停止します。 2.すべてのキャッシュをディスクにフラッシュします。 3.ファイルシステムの凍結、RAID アレイのマウント解除、さらには EC2 インスタンスのシャットダウンなどのアクションを実行し、関連付けられている EC2 インスタンスが RAID アレイへの書き込みを停止していることを確認します。 4.RAID アレイに対するすべてのディスク関連アクティビティを停止する手順を行った後、アレイ内の各 EBS ボリュームのスナップショットを取得します。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/snapshot-ebs-raid-array/
S3
ストレージサービス。 ファイルをアップロードしたらURLを発行してくれる。容量上限無し。
別リージョンにコピーを自動でとってくれたり、99.999999999%の耐久性がある。
・1度にアップロード出来るのは5GBまで
・分割してアップロードする場合は5TBまで
・バージョニングと複数人による削除認証などで間違って削除してしまうのを防げる
・一定期間が過ぎたらGlacierに移すとかいうライフサイクルの設定も出来る
・Web上に公開する設定をすることで静的サイトホスティングも出来る
・データの追加で少なくとも 3,500 リクエスト/秒、データの取得で 5,500 リクエスト/秒をサポートできる
・リージョン内の少なくとも3つのAZにレプリカが作られる
・デフォルトでは暗号化はされない
サーバーサイド暗号化
・S3-Managed Keys (SSE-S3) ・AWS KMS-Managed Keys (SSE-KMS) ・Customer-Provided Keys (SSE-C)
どれかを用いて暗号化できる
クライアントサイド暗号化
・AWS KMS–Managed Customer Master Key (CMK) ・Client-Side Master Key
どちらかを用いて暗号化できる
RRS
・低冗長化バージョン ・費用が下がるが耐久性も99.99%に少し下がってしまう
Infrequent
・あまり使わないデータを保存しておく。費用が少し安くなる ・Glacierと違ってすぐ読み出せる ・レイテンシー・スループットは通常のS3と変わらない ・99.9%の可用性、99.999999999%の耐久性
アクセスコントロールの優先順位
ACL < BucketPolicy < IAM の順に優先される。
Amazon S3 Transfer Acceleration
クライアントと S3 バケットとの間で、長距離にわたるファイル転送を高速、簡単、安全に行えるようになる。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/transfer-acceleration.html
ログの記録
バケットへのアクセスのリクエストを記録することができる。 リクエスタ、バケット名、リクエスト時刻、リクエストアクション、レスポンスのステータス、エラーコードなどをの情報を保存出来る。
これらはCloudtrailでは取得出来ないより詳細な情報。
Amazon Glacier
・データストレージでS3に似ているが、こちらの方が費用が大分安い。 ・そのかわりにデータを読み出すのに3~4時間掛かる。 ・普段は使わないが消すわけにもいかないようなデータを保存しておく。 ・迅速取り出しオプションというのが最近出来て、お金払えば早く取り出せる
CloudWatch
カスタムメトリックについて
通常の状態でモニタリングできる項目は
・CPU使用率 ・EBSのディスクIO ・S3のオブジェクト総数 ・Network IO ・RDSのメモリ空き容量 ・RDSのストレージ空き容量 ・DynamoDBに書き込まれたユニット数
など
カスタムメトリックという拡張機能を使うことでモニタリングできる項目は以下など
・EC2のメモリ使用率 ・ディスクスワップの使用率、ディスクスペースの使用状況 ・ページファイルの使用状況 ・ログ収集
監視間隔について
無料では5分毎に監視が出来る。 追加料金を支払うことによって1分間隔での詳細モニタリングが可能になる。
データの保存期間
・期間が 60 秒未満のデータポイントは 3 時間使用できる。 ・期間が 60 秒 (1 分) のデータポイントは、15 日間使用できる。 ・期間が 300 秒 (5 分) のデータポイントは、63 日間使用できる。 ・期間が 3600 秒 (1 時間) のデータポイントは、455 日 (15 か月) 間使用できる。
CloudWatch Logs エージェント
ログデータをEC2インスタンスからCloudWatch Logsに送信する自動化された方法が用意されている。 以下のコンポーネントで構成されている
・ログデータを CloudWatch Logs にプッシュする AWS CLI プラグイン。 ・データを CloudWatch Logs にプッシュするプロセスを開始するスクリプト (デーモン)。 ・デーモンが常に実行中であることを確認する cron ジョブ。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/AgentReference.html
AMI
インスタンスのイメージを保存しておいて新しく立ち上げるとき再利用したり出来る。 リージョンサービスなので他リージョンでそのまま使うことは出来ない、コピーして少し設定をいじる必要がある。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/CopyingAMIs.html
Auto Scaling
起動設定(Launch Configuration)
・1つの Auto Scaling グループに指定できる起動設定は1つ ・グループを作成した後で起動設定を変更することはできない
https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/LaunchConfiguration.html
クールダウン
・以前の規模の拡大や縮小が適用される前に、追加のインスタンスを起動または終了しないようにする ・デフォルトの値は300秒(5分) ・AutoScalingGroup単位で設定できる
DynamoDB
NoSQL型のデータベースサービス。 一貫した 10 ミリ秒単位の応答性をもつ → マイクロ秒まで伸ばしたい場合はDynamoDB Accelerator (DAX)
RDS
リレーショナルデータベースサービス。MySQLとかPostgreSQLとか。 EC2内でデータベースを作成することも出来るけど、こっちだと細かなバックアップとかフェイルオーバーとか色々AWSがお世話をしてくれる。
・リードレプリカはOralceでは使えない
SQS
・キューサービス ・メッセージの配信順は保証されない ・メッセージ保持の最大期間は14日間 ・メッセージの削除は自動では行われない ・メッセージのサイズは最大256KB
ショートポーリング
ロングポーリング
Lambda
サーバーレスでプログラムを実行出来る。
・Node.js、Python、Javaが使える ・一時ディスク容量は512MB
Route53
ドメイン関連のサービス。
・ドメイン名を登録する ・インターネットトラフィックをドメインのリソースにルーティングする ・リソースの正常性をチェックする
の機能がある。 リソースの正常性のチェックはELBなどにもあるけどRoute53にもある。
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/Welcome.html
そんなでてこないけどとりあえず名前と最低限の概要を覚えときたい奴ら
CloudTrail
AWSアカウント上で行われた操作・操作主などを特定出来る。 なのでインスタンスを消した犯人を探したりするときに使うらしい。
ログはS3に保存される。
https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/how-cloudtrail-works.html
CloudFormation
AWSリソースの設定をテキスト形式でテンプレート化しておくことが出来る。 インフラの複製などに便利。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/Welcome.html
EMR
莫大な量のデータを処理することができるようにするウェブサービス。 キーワードはHadoopフレームワーク。
ウェブインデックス化、データマイニング、ログファイル分析、マシンラーニング、財務分析、科学シミュレーション、生物情報科学研究などに使うらしい。
https://aws.amazon.com/jp/emr/faqs/
Kinesis
リアルタイムの巨大なデータ分析に用いる。 スシローで使われているらしい。
「リアルタイム」がキーワード。 一時的なデータ置き場なので24時間後にはKinesis上からデータが消える。
https://aws.amazon.com/jp/kinesis/faqs/
Kinesis Data Firehose
ストリーミングデータをキャプチャして変換、
・S3 ・Redshift ・Elasticsearch ・Splunk
にロードして、ほぼリアルタイムに分析することができる。
RedShift
ややこしいけどこれも巨大なデータを扱う。 「データウェアハウス」って出てきたらこれ。
https://aws.amazon.com/jp/redshift/faqs/
Snowball
ペタバイトレベルのデータを移送出来るイカれたサービス。 インターネットを使うと時間が掛かるのでデバイスが送られてきて物理的にやり取りする。
https://aws.amazon.com/jp/snowball/
KMS
Key Management Service データの暗号化に使用される暗号化キーの作成と管理するサービス。
API Gateway
・APIの作成が簡単にできる ・サーバーレス ・API呼び出し数と転送データ量のみに応じて課金
https://aws.amazon.com/jp/api-gateway/
EFS
S3やEBSと同じくストレージサービスだが、いくつか特徴がある。
・複数AZの複数EC2インスタンスから同時にアクセスできる ・スループットスケールが数GB/秒を公称しており、EBSより高速、ちなみにS3が一番遅い ・VPCからの使用に限られるので、web上に公開されることなくセキュアである
S3とEBSの良いところを取ったような感じ。 少し前に東京リージョンでのサービス提供が開始された。
https://aws.amazon.com/jp/efs/faq/
Storage Gateway
オンプレミスのデータストレージとAWSのクラウドベースのストレージを良い感じに統合してくれる。
https://docs.aws.amazon.com/ja_jp/storagegateway/latest/userguide/WhatIsStorageGateway.html
Trusted Advisor
・Cost Optimization ・Performance ・Fault Tolerance ・Security and Service Limits
の観点(CPFSS)から利用者のAWS環境をAWSが自動で分析して、「こういう設定の方がええんちゃう?」とかアドバイスしてくれる。
https://aws.amazon.com/jp/premiumsupport/trustedadvisor/
SWF
複数リソースにまたがるタスクを連携して実行してくれる。
・ワークフロー実行を継続できるのは最大1年間