AWS DevOps自分用攻略本作成中
スケーリング
Q:200以上のスレッド処理している際にパフォーマンス低下、対応策は?
A:各インスタンスにスクリプトを追加して、同時セッション数を検出、セッション数が5分で200を超えている場合は、インスタンスにAutoScalingグループの必要な容量を1つ増やす。
Q:コンプライアンス問題を自動的検出、修正する方法は?
A:コンプライアンス変更通知をSNSトピックに発行するCWatchEventルールを作成する。メッセージチャネルHTTPSエンドポイントをSNSトピックにサブスクライブする。非準拠のセキュリティ構成に対処するLambda関数を記述、SNSトピックにサブスクライブする。
Q:VPCで新しいAWSの機能をテストする場合の最短方法は?
A:開発リクエストに応じて、ステージングVPCでEC2を起動し、構成管理を使用してアプリをセットアップ。テストハーネスを実行してアプリの機能を確認して、SNSで開発チームに結果を通知。
Q:DynamoDBからLambdaでデータを読み取る、Lambdaはテストが成功したら開発者によってデプロイされる。
A:CodePipelineを使用してテストOKな後にパイプラインをトリガーするポストコミットフックを設定、CodeDeployを使用して、トラフィックの割合と間隔を指定するカナリアデプロイ構成を作成。
Q:Cforamtionスタックが削除された後にRDBのスナップショットが作成できるようにするには?
A:CFormationテンプレートの削除ポリシーを使用し、RDBのスナップショットが作成されるようにする。
Q:RDS MySQLに読み取り競合がある場合の最良アプローチは?
A:各AZで実行されているECacheインメモリーキャッシュをデプロイする。各AZにRDSリードレプリカを追加する。
Q:アプリログの長期保存が求められている、スタッフはすぐにログを表示させたい。現状はS3に1時間ごとにアーカイブされている、どのような方法で迅速に表示されるようにできる?
A:S3ライフサイクルポリシーを更新して、古いログをGlacier、サービスを使用もしくは作成してCWatchLogsエージェントを使用してアプリログをCWatchLogsにストリーミングする。
Q:OpsWorksでリモートリポジトリから新しいインスタンスごとにアプリとクックブックをデプロイしている。上司がQAで承認されていないコードで異なるアプリバージョンを提供しているインスタンスがあることに気づいた。なぜ?
A:チームの誰かがコードを別々のブランチにコミットし、OpsWorksが新しいインスタンスを起動した。
Q:AWSでカナリアテストをするためには?アプリはAutoScalingグループにデプロイする必要があり、ClassicLBを使う必要がある。
A:ブルーグリーン別にClassicLBとAutoScalingグループを作成し、Route53を使用し、CLBで加重Aレコードを作成する。
Q:サードパーティサプライとの注文を処理する単一EC2がある。注文はSQSキューから取得され、5minごとにバッチ処理、処理の遅延は1h以内というビジネス要件あり。週に3回アプリが失敗し、停止するので手動で再起動している。これの回復力を上げるためには?
A:AutoScaling起動設定を作成して、グループを最小値、最大値1の起動設定を使用する。
A:アプリを変更して、インスタンスIDのディメンションをもつかすたむCWatchメトリクスを送信する。メトリクスが10min間動作しない場合にCWatchアラームを作成し、EC2アクションを実行してインスタンスを終了する。
Q:サードパーティIDプロバイダのアカウントを持ったユーザーがDynamoDBから自分のデータのみアクセスさせることを実現したい場合
A:WebIDフェデレーションを利用して、アプリをFB、Amazon、GoogleなどのIDプロバイダに登録、一意のIDを取得
A:IAMロールを作成し、アプリがDynamoDBにアクセスできる条件を指定する
Q:ELB,EC2の構成でRDSのリードレプリカを用いている、この時のAutoRecoveryと費用効果の高いアーキテクチャは?
A:EC2でCPU使用率のCWatchメトリクスを作成し、AutoScalingポリシーをWebサーバに適用
A:RDSマルチAZ構成にする。
Q:AWS上のシステムのコンプライアンス評価のための監査に備えるためには?
A:IT運用管理
A:サードパーティの監査人によって作成されたレポートと認定を依頼する。
A:AWSに侵入テストのリクエストを送り、実行する。
Q:AutoScalingの設定で最小、最大、必要な容量をそれぞれ2に設定していたが、インスタンスタイプを変更する必要が生じた、その場合の策は?
A:起動構成のコピーを作成し、新しい軌道構成のインスタンスタイプを変更する。AutoScalingグループの最大と希望サイズを4に変更、新しいインスタンスが起動したらそれぞれ2に戻す。
Q:監査人はすべてのアカウントのログをみたい、ベストプラクティスは?
A:各アカウントでCloudTrailサービスを構成、ログをプライマリアカウントの単一のS3バケットに配信し、監査人はプライマリアカウントのそのバケットへのアクセスのみ許可されている。
Q:気密性の高いファイルを暗号化されたS3に保存されている、特定のADユーザーのみにアクセス許可を与えている。偶発的な変更を自動的に戻したい場合の最も迅速な方法は?
A:変更を元に戻すLambda、CloudTrailAPIでCloudWatchイベントをトリガーとする。
Q:AutoScaling構成で、ピーク時の応答時間が予想よりも長くなっている、改善点は?
A:AutoScalingグループの最大サーバ数を増やす
A:アプリのCloudWatchメトリクスにプッシュする、これには、処理しているリクエストの数や、待機しているリクエストの数などの情報が含まれている。
Q:複数の地域に同様の製品カタログが欲しい、すべてのデータはAuroraの中にある。コンプライアンス上、顧客情報や購入データは各地域で保持する必要がある。ベストプラクティスは?
A:製品カタログをAuroraリードレプリカ、顧客情報などは各リージョンのローカルAuroraインスタンスを使用する。
Q:Cformationで実行時まで使用できないプロパティに値を割り当てたい、組み込み関数で実行できることはわかっているが、テンプレートのどの部分で使用できるかがわからない。
CFormationのテンプレートで現在の組み込み関数をどのように使用できるか?