AWS Summit Tokyo 2018の聴いたセッションのメモ
聞いたセッションのメモ セッションだけ聞くなら会場ではなくストリーミング配信をみるのが快適ということに気がついてしまった。
オペレーションの最適化
- ベストプラクティスに基づく準備
- 適切なモニタリング
適切な運用
Well-Architected framework
- 課題
AWS Trusterd Advisor
- 運用上の優秀正
- 実現のための大原則
- クラウドで運用するためのもの
確認のための質問
Operation as codeの実践
- config,cloudwatc→lambdaで対処するオペレーションの自動化
- 注釈でドキュメンテーションをする.デプロイしたらplaybookなりが更新される
- 頻繁に小さく可逆な変更を加える。ワークロード側も変えられる設計にすべき
- 頻繁に運用手順を見直そう。定期的にGamedayを実施して手順をレビューする。効果があるか、効率化できるポイントを探す。
- 障害を予想する。机上演習Pre-mortemを実施する。障害シナリオとそのインパクトを理解。対応手順が効果的であることぉ確認、チームがそれらに詳しくなる。
- イベントと障害対応から学ぶ。うまくいった対応も塩お愛した対応も振り返る。イベントから学んだことをチームで共有する。ログを集めて、可視化しておこう。athenaとか 確認のための質問 運用がビジネスにどんな影響をあたえるのか、運用が客観的に回るっているのか。
- 運用における優先度を決める要因はなにか
どのようにアプリケーション
実際のお客様環境によくある課題
- メンテナンスの通知は受け取れているのか
- awS HEalth API & AWS Heallth Github repository
- aws-health-tools を使えばチャットツールやsNS通知に自動化できる
- 大体の連絡先の活用
- 合うぃ急の連絡先、操作の連絡先、セキュリティの連絡先
- 複数のアカウントをまとめて管理する
- 部門ごとやアプリケーションごとにアカウントを作っているけど、ガバナンスを聞かせられない。
- 請求統合をおこなっているけど、各アカウンとの利用状況が把握できない
- 請求統合されたアカウント感でRIを管理はいや
- AWS Oraganizationによえう請求統合がソリューション
- Masterアカウントにまとめて一括請求、ボリュームディスカウントもこれに適用
- AWS Organization
- 一括請求のみを有効化
- 複数のAWSアカウントに適用するポリシーを集中管理できる
- AWSのサービスへのアクセス制御
- AWSアカウントんお作成と管理の自動化
- AWS Config連携、AWSFirewall Manager連携、SingleSignOn連携
- Cost Explorer API
- Cost Explorer API, CustomReport
- csvだけでなく、jsonでも取れる
- aws-cost-explorer-report
- api使うとお金がかかる
- Reservide Instanceの共有拒否設定
- 本当は複数のアカウントでサイズ関係なくうまくばらすこともできるので、共有してほしい。
- それでも共有したくないなら、RI割引共有の設定で共有したくないなら設定できる
- AWSサポートは活用できているか
- 複数のアカウント感でナレッジが共有されず、何度もの同じことを聞く
- 社内で使っている課題管理システムと連携したい
- サポートの調査が思うように進まない
-
- サポート問い合わせの自動化や問題管理ツールとの連携
- サポート問い合わせのエクスポート
- Trusted Advisortとの自動連系
- case_life_cycle.html, trustedadvisor.html
- ビジネス以上でないと古ファンクションは使えない
サポート問い合わせのベストプラクティス
- 一つのお問い合わせで関連性のない複数の質問をしない
- 問い合わせ対象リソースの所有者が起票していることを確認する
- 適切な緊急度を設定
- 問いあわせ時には以下の内容を添付
事象の発生時間(タイムゾーン) 事象が発生したリソースの詳細(リージョン・リソースID・名前) 発生した事象の詳細: SdKやCLIのエラ=であればそのエラー出力 可能であればAWSのCLIのの場合は--debug
Well-Architectを使って準備し、Trusted Advisorを使って環境を見直しておこう
Fargate
コンテナのメリット - パッケージング - 配布 - イミュータブルインフラストラクチャ
アプリケーション開発に集中
1台のサーバでDockerコンテナを使うのは簡単だが、サーバが増えると大変
- ECS
Fatgateはインスタンス管理不要 Fargateの上にTaskが起動。EC2インスタンスを増やすことなく仮想サーバー側の管理が不要 Taskだけがスケールされる
Codecommit codebuld ECR Fargate ECK
コンテナ管理にひつようなもの サービスディスカバリ Route53,ALB ロギング、モニタにリング CloudWatch セキュリティ IAM VPC パラメータストア スケジューリング タスクプレースメント
サービスディスカバリ サービス同士が疎結合になるように構成するのがベストプラクティス、生存時間が短いので各サービスが自身が接続する先を見つける必要がある ECSではALBと連携 ALBをエンドポイントとしてつかう ECAサービスディスカバリの利用 名前解決で、ALBを使わずRoute53のDNA名で自動的に登録することができる
ロギングとモニタにリング コンテナのアプリは外でSTDOUTに出力する コンテナインスタンスとかリソースよりサービスを管理するのがよい
CloudWatch awslogsでCloudWathLogsに送信される 1つのTask内に2種類のコンテナを定義する アプリケーションコンテナ ロギング用のコンテナ 一次共有ボリュームにログを出力しロギングコンテナがcloudwatch logsに転送 ロギング処理を別コンテナにまかせる サイドカー構成
Fargateはコンテナにインスタンスの管理は不要でタスクのみ。
Fargateより、より細やかなECSクラスタ管理をつげんできる ECSクラスタの状態変化をリアルタイムに検出する 監視システムにEventログを保存してくらすたの 状態を可視化する 特定のタスクが落ちたときに気づける状態変化に気づける
EventStreamによるリアルタイムなイベント検知 ECSクラスタの状態変化を通知する Evento通知の到達性は少なくとも1回
セキュリティ アクセス権限の考え方 IAMロールポリシーを使ってクラスターに対する権限や アプリケーションの権限、どのタスクがどのAWSリスースにアクセスできるか タスク管理に関する権限 ECRからのイメージのpull Clone
Taskに関するセキュリティ Task単位でIAMロールを割り当て Task単位でSecurity Groupを割り当て
Taskでどのようにパスワードをわたすのか Parameter Store,Secrets Managerを使ってKMSに置いてTaskに設定されたIAMロールの権限に応じて秘密情報を取得
スケジューリングとタスクプレースメント 管理が必要となる2つのレイヤー - CountainerInstanceのスケーリング Fargateは考慮不要。 - Taskのスケーリング アプリケーションオートスケーリングを利用することでTaskのオートスケーリングを実現可能
EC2インスタンス使うときのスケールイン タスクの数が減る。→コンテナインスタンスを削除
Fargateのスケールイン
タスクのみがスケールインすればよい。
Target Trackingを利用したアプリケーションオートスケーリング メトリクスに対してターゲット値を設定 その値に近づくようにアプリケーションオートスケーリングが自動的にTaskを調整
Taksの配置を管理するには Taskga可動するために必要な条件は 必要なCPU、メモリ、ポートが割り当て可能化
どのようにTaskを配置したいのか 特定のAZに置く 特定のインスタンスタイプのみ
Task配置に関するロジック CPUメモリーポートとAZ、インスタンスタイプ、AMI ID 配置戦略を満たすか 最終的なTaskの配置場所を決定
タスク配置例
コンテナインスタンスのroll out タスクdefinitionの更新時に新しいAMI IDを利用してコンテナインスタンスに配置する制約をつける 1ホスト1コンテナ distinctinstqnce constaraint + event stream + lambda