2020年8月26日から8月28日に開催しました、Architecting on AWS for APN Partnerにていただきましたご質問と回答の一部を掲載します。
以下は、2020年8月28日現在の情報を元に回答しております。
Q. 単純な固定メッセージを返すだけの機能が欲しい場合、Lambdaで簡易なAPIを立てるほうがいいかS3にテキストを配置するほうがいいか悩んでいます。どういう観点で判断すればよいでしょうか また、もっと他にいい方法があれば教えてください。
A. 固定メッセージということですので、GETリクエストに対して静的な情報をレスポンスすると想定して回答します。静的な情報で計算や加工処理や動的な認証が必要ないのであれば、S3が最適です。
Q. Direct Connectを行う場合、VPC側ではどのように接続するのでしょうか?
A. 仮想プライベートインターフェースを作成して、VGWに接続します。
ルートテーブルでは、Direct Connectへ接続するルートをVGWをターゲットとして設定します。
Q. Lambdaに対してのセキュリティの考慮は必要なのでしょうか。
A. Lambdaを誰が呼び出せるか、という部分は考慮する必要がありますが、トリガーを設定するとリソースベースのポリシーが自動で設定されます。
Q. Storage Gatewayですが、オンプレのサーバへAWSからできた何かしらエージェントをオンプレミスのファイルサーバなどに展開するイメージですか?
A. ゲートウェイとして機能する仮想イメージをAWSからダウンロードしてオンプレミスにデプロイします。
Q. Lambda関数のシグネチャは、Python3.7の場合はdef lambda_handler(event, context):
で固定なのでしょうか?メソッド名の変更や引数の追加は可能でしょうか?
A. 基本設定で変更できます。 lambda_function.lambda_handler はデフォルト設定です。
Q. Cognitoには、アプリケーションで登録されたアカウントの情報が保存されるのでしょうか?
その場合、アカウントのログインが必要ないようなアプリケーションでは、Cognitoの認証情報というのは誰に対して許可された認証情報を使ってAWS上のサービスを実行しているのでしょうか?
A. IDプールには、認証済みユーザー用IAMロールと、認証していないユーザー用IAMロールが設定できます。今回のラボでは認証していないユーザー用IAMロールを使っています。
Q. SQSの代わりにStep Functionを利用するといったこともケースとしてあるのでしょうか?
A. はい。状態変更管理と実行制御をシンプルに行うことができます。
Q. Lambdaに関して、最大実行時間が15分とありましたが、関数が無限ループなどしてしまっても途中で止まるということでしょうか。無限ループで課金額が大変なことにならないためにあるイメージでしょうか。
A. はい。タイムアウトとなります。
Q. プラクティショナーとソリューションアーキテクトアソシエイトの試験は、どちらを先に受けたほうが良いなどおすすめありますでしょうか?前者は浅く広く、後者は狭く深い知識が必要という理解です。
A. 難易度としては技術的な点ではクラウドプラクティショナーのほうが低いので、先に受けたほうがいいかも知れません。また、模擬試験の受験をオススメします。
Q. SQSはELBの置き換えで利用するものでしょうか?それとも同時に利用するものでしょうか?
A. ELB、SQSどちらも疎結合を実現するものですが、ELBは同期的な処理、SQSは非同期的な処理と使い分けを考えることができます。
Q. EFSとFSxはどちらもファイルシステムを提供しており、機能的に同じもののように思えるのですが、どのように使い分けるのでしょうか。
A. EFSはNFSv4のみ対応で、Windowsの標準共有サービスであるSMBに対応していません。 Windowsから利用したい場合、Amazon FSx for Windowsを利用することで、SMBファイル共有を利用できます。
Q. スティッキーセッションが使用できるロードバランサーは、Application Load Balancer (L7) のみという理解ですが、その認識であっていますか?
A. はい。ALBとCLBで利用可能です。
Q. 会員サイトのようなセッション保持が必要な場合はCloudFrontはマッチしないですか?
A. サイトの構成要素ごとにふるまいを設定することができます。例えばセッション情報を持つ動的な部分はキャッシュを持たないように設定します。
Q. CloudFormationのテンプレートをアップロード時にアップ先のバケットの指定はできないのでしょうか?
A. 最初にS3バケットを作成してテンプレートをアップロードしておき、読み込むことで結果的にバケット指定できます
Q. EBSのスナップショットから復元などは具体的にどうやるのでしょうか?
A. スナップショットからボリュームを作成してEC2インスタンスにアタッチできます。ルートボリュームの場合はスナップショットを選択してAMIを作成し、そこからEC2インスタンスの起動もできます。
Q. yaml、json形式で作成したテンプレートが正常(意図した通りに作成できている)か確認をしたい場合は、実際にスタック化してみて確認するのが正攻法でしょうか。
A. はい、検証用のアカウントで、実際にスタックを作成してみるのが一番よいでしょう。
Q. スタックの作成時にテンプレートを指定すると「デザイナーで表示」から、構成図のようなものが表示されますが、この図をエクスポートすることは可能でしょうか。
A. 右上のダウンロードアイコンから、画像ファイルとしてダウンロード可能です。
Q. AWSのサービスの構成図を記載する際のルールや、一般的な記載方法についての情報はありますか。
A. AWSアイコンページからダウンロードできるアイコンセットにガイドラインがあります。
https://aws.amazon.com/jp/architecture/icons/
Q. VPCエンドポイントとNAT Gatewayの対象サービスによる使い分けを整理させて下さい。
A. 対象のサービスと言う意味では、
・VPCエンドポイント
→エンドポイント対応のAWSサービスを使うために利用
・NAT Gateway
→各AWSサービスAPIリクエストも含むインターネット通信を実施したい場合に利用
となります。
Q. 今回のラボでインスタンス1つを停止したところ、自動的にDrainingになっていましたが、
DrainingはApplication Load Balancerに付属の機能という理解でよろしいでしょうか?
特に追加の設定は不要、また追加の料金は発生しない、ということでしょうか。
A. はい、ご認識の通りです。Draining自体は、正確にはターゲットグループで設定します。
Q. Load Balancerのように複数のAZに配置できるサービスは実体的には各AZごとにサービスが動いているということですがコストはその分増加するのでしょうか?
A. LoadBarancerは時間課金がベースなのですが、使用量によっての追加料金(LCU)も発生します。ですので実体の数ではなく、使用量によっての変動です。
https://aws.amazon.com/jp/elasticloadbalancing/pricing/
Q. NATゲートウェイは1つだけの場合、別AZのインスタンスからアクセスできますか?
A. できますが、今回のラボのような構成では、AZaに障害が発生した場合、EC2はパラメータストアにアクセスできず、接続情報が取得できないので、アプリケーションが動作しなくなります。
Q. EC2からパラメータストアへ接続する際は、VPCエンドポイントで接続可能でしょうか。
インターネットに出るリスクもあるかと思いましたので。
A. 可能です。
Q. KMSで、同じキーを使いまわしてしまってもよろしいのでしょうか?
A. 可能です。
Q. RDSを使用した場合とEC2にデータベースソフトウェアをインストールして使う場合とでは,RDSの方がパッチ適用やメンテナンスなどの管理タスクが減ることは理解できました。
使用する上で違いはあるのでしょうか。(RDSだと使えない機能がある,設定できないパラメータがあるなど。)
A. いくつか違いがあるため、データベースエンジンごとにユーザーガイドでご確認ください。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_Oracle.html
Q. EC2を起動させた際に、EC2に割り当てたIAMロールを読みこみ、SDKではその情報を使ってS3などへのアクセス可否を判断する、と解釈しました。ラボ1で作成したような、S3を使用した静的webサイトから他サービスへのアクセスを許可する場合は、どのように行うのでしょうか。
S3にIAMを割り当てられるのでしょうか?あるいは、他の設定値または他のサービスを使用するのでしょうか?
A. S3でサイトを公開する場合、サイト内にあるコードが実行されるのはAWS上ではなくユーザーのブラウザ上です。すなわち、認証はS3でなくブラウザ側で行うことになります。
この場合はCognitoを使った認証を行えます。
Q. ブログの構成図では、RDSが一つで、プライベートサブネットが3つあり、二つのプライベートサブネットが中身が空でしたが、RDSがあるAZに障害があった際に別のAZで自動起動するような
設定をされているのでしょうか。
A. ブログに関しては、障害時に自力で復旧するため冗長構成をとっていません。また自動復旧の仕組みも使っていません
マルチAZ構成にすることで、DBを自動フェイルオーバーさせることができます。
Q. 攻撃の対策はどのようなことをされてますか?
A. CloudFrontでは、WAFを使って特定パスへのアクセスを特定のIPアドレスのみに限定しています。
Application Load Balancerでは、特定ヘッダーが含まれないとブロックするようにして、CloudFrontを経由してないリクエストをブロックしています。
Q. オートスケーリングの削除タイミングによっては、エラーで落ちるということがあり得るということでしょうか。
例えばAmazonのサイトで買い物した場合、決済をしている最中にスケールインして、確定画面に進めないなど。
A. 設定や設計次第です。
例えばスケールインの場合、ELBでターゲットグループを使用している場合はConnection Drainingが有効なので、セッション中のインスタンスがタイムアウト時間前に登録解除されることはありません。
Q. リザーブドインスタンスには使用期限はありますか?
A. 年単位で購入し、月ごとの利用時間です。1ヶ月31日の場合で744時間分を使わなかった場合に翌月に繰越にはなりません。
Q. Auto Scalingで増やしたインスタンスを削除するタイミングは、そのインスタンスのタスクが0になったタイミングとなる認識でしょうか。
A. 一般的には、CPU使用率やリクエト数によるボリュームベースか時間ベースでのスケールインをします。SQSのキューの数でのオートスケーリングも可能です。
Q. リザーブドインスタンスをオートスケーリングに設定していると、24時間使わないので無駄なコストがかかると思ったのですが、メリットがあるのでしょうか。
A. 1つのインスタンスではなく同じ条件のインスタンスの合計時間数がどれぐらいかで判断します。必ず利用する分をリザーブドインスタンスにすることでコスト削減ができます。
Q. VPCくらいまではなんとか理解できていたのですが、セキュリティとコストの話になるとちょっとついていけなくなってきました。復習をしようと思っていますが、テキストを読むことのほかに何かいい方法ございますでしょうか。
A. チュートリアルなど実際の環境を触っていただくことがいいと考えます。他の資料としてはAWS BlackBeltのビデオもいいです。
https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-service-cut/
Q. CloudWatchにSnmp監視を設定することはできますか?
A. 以下で紹介されているように、collectdとCloudWatch Agentを組み合わせるなどして実現できます。
https://dev.classmethod.jp/articles/cloudwatchagent-collectd-snmp/
Q. Cloud Watchのログのフィルター条件に正規表現等は使用可能ですか?
A. 正規表現はサポートしていません。フィルタの書式に関しては、以下のページが参考になります。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.htm
Q. CloudWatch Logs に収集するログはS3上にためられているのでしょうか。
A. CloudWatch Logsのストレージに保管されます。検索できるなどの利点があります。
もちろんS3にエクスポートして保管することも可能です。
Q. Organizationsでポリシー適用すると、AWSアカウントとIAMユーザーに適用されるのでしょうか?
A. サービスコントトールポリシーを適用すると、そのアカウントのルートユーザー、全てのIAMロール、IAMユーザーに適用されます。
Q. IAMユーザをアカウントごとに個別に作成することもできるけど、IAMロールに設定した上でIAMユーザがスイッチする方が管理が楽ということでしょうか。
A. ご認識通り、管理が楽になります。アカウントごとにIAMユーザーを用意すると退職時などの管理が大変になるのでそれを楽にできます。
Q. 個人ではrootでMFAを設定して利用しています。
IAMでユーザーを作成する場合、その権限はどのようにするべきでしょうか?そもそもどのような権限があるのかを正しく理解していないので、基本的にrootの一つ下のランクのような権限を割り当てることになると思ってます。
A. そのアカウントが限定的な用途ではなく、検証目的で全般的に使用したいのであれば、1人目の管理者に、AWS管理ポリシーのAdministratorAccess、Billingを設定しておくと、rootユーザーでしか実行できないこと以外は実行できます。
Q. rootユーザへの直接ログインを拒否などはできますか?IAMユーザーからrootユーザーに昇格などができますか?
A. root ユーザーのログイン拒否はできません。また、昇格もできません。
rootユーザーのログイン拒否ではないですが、Organizationsで新規に作成したメンバーアカウントはrootユーザーのパスワードが20桁で自動生成されて公開されません。IAMロールを使ったスイッチロールのみのアクセスとなり、実質rootユーザーでログインしない運用となります。
Q. STSはEC2インスタンス起動時に自動実行されるのでしょうか?
A. はい。自動実行されています。そして起動後およそ6時間ごとにキーとトークンが変更されます。
Q. Route53はAWS管轄外のサーバの名前解決にも使えますか?
例えば別のクラウドサービス下のサービスのレコードを登録したりするなど。
A. 通常のネームサーバとして使用できます。AWSサービスと連携した機能は使えません。
Q. レプリケーションの基本が分かっていないかもしれませんが、RDSのメイン側がダウンした場合にセカンダリに自動で切り替わったとします。
その場合、アプリケーションからDBへの更新処理は可能でしょうか。
セカンダリが自動でメインに切り替わるようなイメージでしょうか。
A. RDSはのフェイルオーバーは内部DNSによりエンドポイントがスタンバイにつけ変わります。アプリケーション側の接続情報の変更は不要です。
Q. Connection Drainingは、ALB用ですか?NLBでも使えますか?
A. ALBとCLBで利用可能です"
Q. WebAppのバランシング・TLS化したい場合、WAFはどのように設定することになります?
A. CertificateManagertを使用してALBから証明書を指定します。ALBにはWAFルールを追加することもできます。
Q. グローバルIPアドレスを固定するときは、「Elastic IPアドレス」、「Elastic Network Interface」のどちらでも可能ということでしょうか。
A. ENIで指定できるのは、プライベートアドレスレンジのみとなります。サブネットのアドレスレンジ以外の値は指定できません。
Q. NATゲートウェイの冗長化は利用者側で考慮しないといけない範囲でしょうか?
A. NATゲートウェイはAZ単位のサービスのため、AZレベルでの障害を考慮する場合、AZごとに配置します。AZ内でのNATゲートウェイ自体は冗長化されています。
Q. VPCで設定して使うIPアドレスは、他の方のIPと被ってしまっても大丈夫なのでしょうか。
A. はい、アカウントが異なっていても、同じであってもアドレス範囲は重複しても問題ありません。ただし、VPCピア接続で接続する場合は同じレンジだと接続できないので、将来的に接続をする可能性がある場合は重複しないように設計します。
Q. キーペアとは何でしょうか?
A. 公開鍵と秘密鍵から構成される鍵認証の仕組みです。どちらもテキストファイルで、公開鍵はサーバーに、秘密鍵はログイン元のユーザーが保管します。ログイン時に秘密鍵と公開鍵のペアが確認さえ、あって入ればログインが可能になります
パスワードよりも安全な認証方法としてクラウド以外でも用いられます。
AWSでは、公開鍵はリージョン単位で保管され、EC2インスタンス作成時にコピされます。秘密鍵は作成時に一度だけダウンロード可能です。
Q. ユーザデータを用いて、GitHub等に保存している作成済みのWeb Appを、EC2にデプロイすることも可能なのでしょうか?
A. はい。可能です。zipならwgetでもいいですし、gitクライアント設定済みAMIなら、git cloneでインストールや、git pullで更新する方法もあります。
Q. 作成したRDSに対して、DB管理者がSELECT,UPDATE等のSQLを発行しようと思うと別途作成したEC2からアクセスするしかないということでしょうか?
これまでのオンプレ環境のように、DBサーバに直接ログインしてSQL実行というのは完全にできないのでしょうか?
A. RDS自体に管理クライアントをインストールすることはできないので、EC2等から操作を実施することになります。
Q. オンデマンド、スポット、リザーブを組み合わせて使用するときの、買い方を教えてください。
A. 1年以上の利用期間が明確に決まっている場合はリザーブドインスタンスがよいです。
そうでない場合は、オンデマンドとスポットを利用します。スポットは特に、中断しても構わないワークロードに向いています。
Q. AWSを自習目的でSandbox的に使える環境やサービスをご存じでしたら教えてください。
A. AWSの提供しているセルフペースラボを利用できます。約10個程度、無料のコースもあります。
あるいは自身でAWSのアカウントを取得してもよいでしょう。多数の無料枠もありますし、コストのかかるサービスの場合は、コスト最適化を考える勉強にもなります。
Q. スポットインスタンスの中断とはOSからみてスリープやハイバネートになるのですか?シャットダウンになるのでしょうか?
A. 選択が可能です。削除、停止、ハイバネートが可能です
Q. EC2のインスタンスタイプ変更について、自分でメトリクスを見て使用率を確認して判断するしかないのでしょうか?(S3のインテリジェント階層化のような自動的なコスト最適化機能はないのでしょうか。)
A. 利用状況に応じて最液なリソースサイズをリコメンドしてくれるCompute Optimizerという機能があります。
Q. EBSを元のデータサイズより少ない容量に指定したい場合も、ストレージ画面からのサイズ変更で可能でしょうか。
A. 少ない容量には変更ができません。
Q. インスタンスストレージのデータはインスタンスを「終了」した時だけではなく、「停止」した時にも削除されるという認識で正しいでしょうか?
A. はい、削除されます。
Q. EBSボリュームのレプリケートは、利用時に設定しなくても自動的に作成されるものですか?
A. はい、自動で作成されます。
Q. S3ではリージョンを選択しないのに、バケット作成時にリージョン選択をするのは、なぜでしょうか。
A. バケットを配置するためのリージョンを選択する、とお考えください。
バケット一覧は、単に全てのリージョンにあるバケットを表示しているだけです。
Q. S3のストレージクラスは変更可能ですか?それもと削除、追加で実現することになるますか?
A. 変更可能です。オブジェクトの置き換えは不要です。
Q. 料金は予告なく改定されることはあるのでしょうか?また過去にも改定はありましたでしょうか?
A. 予告なく改訂されますが、これまでに値上げされたことはありません。過去に70回以上の値下げが行われています。
Q. S3上でtarなどの圧縮ファイルを解凍するといった操作や直接ファイル内容を更新する操作は可能でしょうか。
A. いずれもS3上で直接行うことはできません。S3からローカルにダウンロードして実施します
Q. S3に保存するオブジェクトの保存期間はユーザが指定できるのでしょうか?
A. 削除しなければ保存されています。ライフサイクルルールで削除するまでの保管日数を指定することもできます。
Q. S3の容量は無制限とのことですが、オブジェクトサイズ1つあたりのサイズ制限はあるのでしょうか?
A. オブジェクト1つあたり、5TBまでという制限があります
Q. S3単体でWebサーバーとして稼働できるということでしょうか?
A. はい、HTMLやCSS、JavaScriptや画像などを配信するWebサーバとして使えます。ただしPHPなどサーバーサイドの処理はできません。
Q. 大災害の際は東京リージョン全体が利用できない状態に陥る可能性があるかと思います。ビジネスインパクトの大きいシステムは複数のリージョンで冗長化しておくのが通例でしょうか。そもそも複数のリージョン間で冗長化することは可能なのでしょうか。
A. はい。マルチリージョンで考えます。可能です。方法についてはモジュール6、13で説明しますね。
Q. 可用性を上げる為に、AZを分けましょうということですが、EC2を作成するときに、AZを指定する事はできるのでしょうか。
A. 可能です。モジュール3,4,5でご説明しますね。
Q. S3のリージョンはグローバルしか選択できないようなのですが、東京リージョンも選択できるのでしょうか?
A. バケットを作成するときに、リージョン選択になります。
Q. アベイラビリティゾーンはDC群ということですが、EC2のオートリカバリはDC群でHA構成されて復旧するイメージでしょうか?
A. オートリカバリは、HW障害の際に、別のホストに自動載せ替えされます。対象範囲はAZですので、同じAZの空いているホストで復旧起動します。
皆さま、ご受講いただきまして、誠にありがとうございました!
トレノケートのAWS認定トレーニングでは、AWS社の厳格なテクニカルスキル及びティーチングスキルチェックに合格した認定トレーナーがコースを担当します。AWS初心者向けの研修や、AWS認定資格を目指す人向けの研修をご提供し、皆様のAWS知識修得のサポートをいたします。
・トレノケートのAWS研修(AWS認定トレーニング)はこちら
▼AWS初心者の方は、AWS Cloud Practitioner Essentialsから!
座学中心の研修で、AWSを初めて学ぶ方や、営業などで提案に関わる方におすすめです。
「AWS Certified Cloud Practitioner」資格取得を目指す方の基礎知識修得にも最適です。
→ AWS Cloud Practitioner Essentials 詳細・日程はこちらから