Upgrade to Pro — share decks privately, control downloads, hide ads and more …

運用を効率化するためのAWS Systems Manager Automationの紹介

運用を効率化するためのAWS Systems Manager Automationの紹介

AWS SSM AutomationはAWSのサービスでのメンテナンス、デプロイ、修復に関する一般的なタスクをあらかじめ定義されたワークフローを使用することで実行できます。どのようなことができるか、どのようなシチュエーションで役立つかといった点について解説します。

Avatar for Naohisa Takahashi

Naohisa Takahashi

January 24, 2023
Tweet

Other Decks in Technology

Transcript

  1. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. AWS Systems Manager Automation Naohisa Takahashi Sr. Cloud Support Engineer
  2. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. AWS Amazon S3, Amazon CloudFront SME(Subject Matter Expert) Web AWS Japan AWS AWS AWS • Amazon S3 • Amazon Athena
  3. © 2022, Amazon Web Services, Inc. or its affiliates. Agenda

    • AWS Systems Manager とは? • オートメーションについて • ランブックの実行方法 • AWS Support • 3
  4. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. AWS System Manager 4
  5. © 2022, Amazon Web Services, Inc. or its affiliates. AWS

    Systems Manager(AWS SSM) とは? AWS Systems Manager は、 AWS クラウド で実行されるアプリケーションとインフラストラクチャの管理に役立つ一連の機能です。 アプリケーションとリソースの管理、オペレーション上の問題の検出と解決にかかる時間が短縮されるほか、 AWS リソースを大規模かつ安全に管理できるようになります。 • グループ化:アプリケーションのリソース群をグループ化 • 可視化:アプリケーション運用上の洞察を可視化 多数のAWSリソースを1つのコンソールで • 対応:安全性の高いAWSのベストプラクティスで対応 5 AWS Systems Manager
  6. © 2022, Amazon Web Services, Inc. or its affiliates. AWS

    Systems Manager とは? • 運用管理 § Explorer § OpsCenter § Incident Manager 6 • 変更管理 § オートメーション § Change Manager § メンテナンスウィンドウ • アプリケーション管理 § Application Manager § AppConfig § パラメータストア • ノード管理 § Fleet Manager § セッションマネージャー § パッチマネージャー
  7. © 2022, Amazon Web Services, Inc. or its affiliates. 運用管理

    • エクスプローラー AWS リソースに関する情報の報告に使用するカスタマイズ可能なオペレーションダッシュボード • OpsCenter AWS リソースに関連する運用作業項目 (OpsItems) を表示、調査、解決できる機能を提供 • CloudWatchダッシュボード CloudWatch コンソールで作成したカスタマイズ可能なダッシュボードを表示 • インシデントマネージャー アプリケーションに影響を与えるインシデントを、緩和したり復旧したりできるように設計されたインシデ ント管理コンソール 7
  8. © 2022, Amazon Web Services, Inc. or its affiliates. アプリケーション管理

    • アプリケーションマネージャー アプリケーションを登録して複数の AWS のサービスと Systems Manager の機能のオペレーション情報を 1 つの AWS Management Console に集約 • AppConfig アプリケーション設定を作成、管理し、迅速にデプロイ • パラメータストア 設定データ管理と機密管理のための安全な階層型ストレージを提供 8
  9. © 2022, Amazon Web Services, Inc. or its affiliates. ノード管理(1)

    • フリートマネージャー AWS SSMで管理するマネージドノードの一覧を表示します • コンプライアンス マネージドノードのフリートをスキャンし、パッチコンプライアンスと設定の不整合を調べる • インベントリ マネージドノードからメタデータを収集し、可視化する 9
  10. © 2022, Amazon Web Services, Inc. or its affiliates. ノード管理(2)

    • ハイブリッドアクティベーション ハイブリッド環境でサーバー、エッジデバイス、仮想マシン (VM) をマネージドノードとして設定する • セッションマネージャー ブラウザ ベースのシェル、または AWS CLI を使用してコマンドラインでサーバーを操作する 10
  11. © 2022, Amazon Web Services, Inc. or its affiliates. ノード管理(3)

    • Run Command マネージドノードに対してコマンドを実行する • ステートマネージャー マネージドノードおよび他の AWS リソースを定義された状態に保つプロセスを自動化する • パッチマネージャー セキュリティ関連のアップデートと他のタイプのアップデートの両方でマネージドノードにパッチを適用す るプロセスを自動化する • ディストリビューター ソフトウェアをパッケージ化してマネージドノードに公開する 11
  12. © 2022, Amazon Web Services, Inc. or its affiliates. 変更管理

    • オートメーション ランブックを使用してリソースへのオペレーションや管理タスクを自動化する • Change Manager 運用上の変更をリクエスト、承認、実装、および報告するための変更管理フレームワーク • Change Calendar 指定したアクションが AWS アカウント で実行できるまたはできない日付と時刻の範囲を設定 • メンテナンスウィンドウ オペレーティングシステムのパッチ適用、ドライバーの更新、ソフトウェアやパッチのインストールなど、 ノードに対して破壊的になり得るアクションを実行するスケジュールを定義 12
  13. © 2022, Amazon Web Services, Inc. or its affiliates. この機能もAWS

    SSM • セッションマネージャによるEC2インスタンスへの接続 13
  14. © 2022, Amazon Web Services, Inc. or its affiliates. この機能もAWS

    SSM • EC2インスタンス内のSSM Agentからエンドポイントに対してアウトバウンドの通信を行い、ポーリング している • SSHのように EC2インスタンスへのインバウンドの通信を許可する必要はない 14 VPC SSM API Endpoint EC2 instance SSM Agent
  15. © 2022, Amazon Web Services, Inc. or its affiliates. マネージドノード

    • マネージドノードとはAWS SSMで管理するために設定された EC2 インスタンスなどのノード • EC2インスタンスをマネージドノードにするには以下の前提条件を 満たす必要がある § SSM エージェントがインストールされ実行中である § SSM エージェントが AWS Systems Manager のエンドポイントに接続可能 § 対象の EC2 インスタンスに適切な IAM ロールがアタッチされている § インスタンスメタデータサービス(IMDS)に接続可能である 15
  16. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. 16
  17. © 2022, Amazon Web Services, Inc. or its affiliates. SSM

    オートメーションとは 17 • AWSクラウド上のリソースに対するオペレーションや管理タスクを 自動化する • 事前に定型的な作業をランブックとして定義し、手動あるいは自動 的に実行する Task Runbook Automation Users AWS Cloud 例えば手動で行っていた操作を Runbookとして定義する Runbookを実行することで 同様の操作を何度も実行できる
  18. © 2022, Amazon Web Services, Inc. or its affiliates. SSM

    オートメーションのメリット 18 • 複雑なオペレーションや管理タスクをコードとして定義し、自動化 できる • コンソールから、複数のアカウントとリージョンにわたって、リ ソースに対してオートメーションを実行できる • IAMポリシーによってランブックへのアクセス制御ができる • レート制御機能によって同時実行数やエラー数のしきい値を設定で き、大規模な実行も想定されている • オートメーション実行時のパラメータの制約をランブックで定義 • Amazon EventBridge と統合されており、イベントからランブック をトリガーできる
  19. © 2022, Amazon Web Services, Inc. or its affiliates. Amazon所有のランブック

    19 • 個別のAWSアカウントのリソースである自己所有のランブック以外 に最初から提供されているAmazon所有のランブックが存在する • よくある管理タスクやトラブルシューティングなどの操作が定義さ れている • ランブック(ドキュメント)の一覧の画面で「 Amazonが所有」の タブを選択することで表示される
  20. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. 20
  21. © 2022, Amazon Web Services, Inc. or its affiliates. AWS

    CLIでのSSM Automationの実行 28 $ aws ssm start-automation-execution \ --document-name "AWSSupport-TroubleshootECSContainerInstance" \ --document-version "\$DEFAULT" \ --parameters '{ClusterName":["test-cluster"],"InstanceId":["i-00xxxxxxxxxxxxxxx"]}’ \ --region ap-northeast-1 { "AutomationExecutionId": "16f05075-5c91-4fb8-bad0-bac787eb39d6" } $ aws ssm get-automation-execution \ --automation-execution-id "16f05075-5c91-4fb8-bad0-bac787eb39d6” \ --region ap-northeast-1
  22. © 2022, Amazon Web Services, Inc. or its affiliates. AWS

    CLIでのSSM Automationの実行 29
  23. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. AWS Support 30
  24. © 2022, Amazon Web Services, Inc. or its affiliates. AWSSupport-TroubleshootManagedInstance

    • SSMのマネージドノードとなっていないEC2インスタンスのトラブ ルシューティングをする。 • セキュリティグループ、ネットワークACL、VPCエンドポイント、 ルートテーブルといったVPCの設定、EC2インスタンスにアタッチ されたIAMロールをチェックする。 • EC2インスタンス内部の問題をトラブルシュートするための SSM Agent troubleshooting kit の情報を出力する。(実行は手動) • 以下の記事にある問題について自動的にトラブルシューティングす る。 [Connection Lost] ステータスの Systems Manager のマネージドインスタンスをトラブルシューティング する方法を教えてください。 https://aws.amazon.com/jp/premiumsupport/knowledge-center/ssm-connection-lost-status/ 31
  25. © 2022, Amazon Web Services, Inc. or its affiliates. •

    EC2インスタンスにSSHで接続できない場合のトラブルシューティ ングを行う。 • EC2Rescueを使用して一般的な問題の特定と修正を行う。 • 対象のインスタンスがマネージドインスタンスでなくてもオフライ ンモードによるトラブルシューティングが可能。 • 以下の記事にある問題について自動的にトラブルシューティングす る。 SSH を使用して EC2 インスタンスに接続しようとすると、エラーが発生します。AWSSupport- TroubleshootSSH オートメーションワークフローを使用して、SSH 接続の問題をトラブルシューティング する方法を教えてください。 https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-ssh-errors-automation-workflow/ AWSSupport-TroubleshootSSH 32
  26. © 2022, Amazon Web Services, Inc. or its affiliates. •

    EC2インスタンスでOSのパスワードやSSHキーを紛失した場合に再 設定を行う。 • AWSSupport-StartEC2RescueWorkflowのワークフローを呼び出し ている。(EC2Rescueを使用して再設定している) • Windowsではパスワードを有効化したAMIを作成する。AMIから手 動で復元。 • LinuxではSSHキーのペアを生成してインスタンスに設定する。ク ライアントで使用する秘密鍵はSecureStringとしてSSMパラメータ ストアに保存される。 AWSSupport-ResetAccess 33
  27. © 2022, Amazon Web Services, Inc. or its affiliates. AWSSupport-UpgradeWindowsAWSDrivers

    • WindowsのEC2インスタンスのドライバーをアップグレードする。 • 自動的にバックアップとしてAMIを取得し、AWS PV、ENA、NVMe ドライバーをアップグレードする。 • SSMエージェントを使用しないオフラインアップグレードも可能。 • 以下のドキュメントでも紹介されている。 最新世代のインスタンスタイプへの移行 https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/migrating-latest-types.html (代替案) AWS Systems Manager を使用した AWS PV、ENA、NVMe ドライバーのアップグレード https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/migrating-latest-types.html#auto- upgrade 34
  28. © 2022, Amazon Web Services, Inc. or its affiliates. •

    VPCを設定したLambda関数のインターネットアクセスについての トラブルシューティングを行う。 • VPCを設定したLambda関数からインターネットにアクセスするに はNATゲートウェイ、NATインスタンスを経由する必要がある。 • 以下の記事にある問題について自動的にトラブルシューティングす る。 AWS Systems Manager Λ࢖༻ͯ͠ Amazon VPC ʹ͋Δ AWS Lambda ؔ਺ͷΠϯλʔωοτΞΫηεͷ ໰୊ΛτϥϒϧγϡʔςΟϯά͢Δʹ͸Ͳ͏͢Ε͹Α͍Ͱ͔͢? https://aws.amazon.com/jp/premiumsupport/knowledge-center/ssm-troubleshoot-lambda-internet- access/ AWSSupport-TroubleshootLambdaInternetAccess 35
  29. © 2022, Amazon Web Services, Inc. or its affiliates. AWSSupport-TroubleshootLambdaInternetAccess

    36 Region VPC Private subnet Public subnet Availability Zone A Private subnet Public subnet Availability Zone B Internet gateway NAT gateway Lambda function Lambda function
  30. © 2022, Amazon Web Services, Inc. or its affiliates. •

    S3のイベント通知でLambda関数を呼び出すことができない場合の トラブルシューティングと設定の修正を行う。 • トラブルシューティングのみで設定を変更しないことも可能。 • 以下の記事にある問題について自動的にトラブルシューティングす る。 Amazon S3 Πϕϯτ௨஌͕ Lambda ؔ਺Λݺͼग़͞ͳ͍ͷ͸ͳͥͰ͔͢? https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-configure-s3-event- notification/ Lambda 関数を呼び出す Amazon S3 イベント通知を作成するときに「Unable to validate the following destination configurations (以下の送信先設定を検証できません)」というエラーが表示されるのはなぜで すか? https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-invoke-error-s3-bucket- permission/ AWSSupport-RemediateLambdaS3Event 37
  31. © 2022, Amazon Web Services, Inc. or its affiliates. •

    任意の IPv4 または IPv6 ターゲット IP アドレスに対して継続的に ping、MTR、traceroute、tracetcp テストを実行する。 • 複数のIPアドレスが指定可能。 • EC2インスタンスが起動してコマンドが実行され、テストの結果は Amazon CloudWatch Logs に保存される。 • リソースはAWSSupport-TerminateIPMonitoringFromVPCで削除す る。 • 以下の日本語の記事があります。 Πϯλʔωοτήʔτ΢ΣΠ·ͨ͸ NAT ήʔτ΢ΣΠܦ༝Ͱ AWS ͔ΒΦϯϓϨϛεωοτϫʔΫ΁ͷύ έοτଛࣦͱϨΠςϯγʔΛϞχλϦϯά͢Δํ๏Λڭ͍͑ͯͩ͘͞ɻ https://aws.amazon.com/jp/premiumsupport/knowledge-center/vpc-packet-loss-latency-gateway/ AWSSupport-SetupIPMonitoringFromVPC 38
  32. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. 39
  33. © 2022, Amazon Web Services, Inc. or its affiliates. ランブックとは

    40 • 事前に定義された実行可能なタスクをランブックという • (ランブックはかつてSSMドキュメントと呼ばれていた) • 実行時にパラメータの指定が可能 • ランブックは JSON や YAML を使用して記述する • AWS SSMのコンソールからドキュメントビルダーを使用すると、 JSON または YAML を直接編集しなくても、ランブックを作成、変 更できる
  34. © 2022, Amazon Web Services, Inc. or its affiliates. SSM

    オートメーションのランブック 41
  35. © 2022, Amazon Web Services, Inc. or its affiliates. Runbookで使用可能なオートメーションのアクション

    42 • 具体的なリソースへの処理を行うアクション § aws:executeAwsApi § aws:executeScript § aws:runCommand • ステップの処理の流れを制御するアクション § aws:branch § aws:sleep § aws:approve § aws:waitForAwsResourceProperty
  36. © 2022, Amazon Web Services, Inc. or its affiliates. aws:executeAwsApi

    43 • AWS API オペレーションの呼び出しと実行をする • AWS のサービスのほとんどの API が実行可能 • S3 の GetObject オペレーションなどのストリーミング API オペ レーションはサポートされていない • 最大実行時間は 25 秒間 • 入力として、サービス、API オペレーション、API オペレーション の入力(パラメータ)を設定する
  37. © 2022, Amazon Web Services, Inc. or its affiliates. aws:executeScript

    44 • Python または PowerShell スクリプトを実行する • 使用可能なランタイム言語は以下 § Python 3.6 § Python 3.7 § Python 3.8 § PowerShell Core 6.0 (dotnetcore2.1) § PowerShell 7.0 (dotnetcore3.1) • 最大実行時間は 600 秒 (10 分) 間
  38. © 2022, Amazon Web Services, Inc. or its affiliates. aws:runCommand

    45 • マネージドノード上でコマンドを実行する • SSM Run Command を使用してEC2インスタンス内でコマンドを実 行する • コマンドの実行対象のインスタンスはマネージドノードである必要 がある
  39. © 2022, Amazon Web Services, Inc. or its affiliates. ステップの処理の流れを制御するアクション

    46 • aws:branch 条件の評価結果に応じて、別のステップにジャンプする。一般的なプログラミング言語のCase文に近い。 • aws:sleep 指定した時間、オートメーションの実行を停止し、遅延する。 • aws:approve 手動承認のためにオートメーションを一時停止する。Amazon SNS を使用して承認者に通知する。 • aws:waitForAwsResourceProperty AWS リソースの状態またはイベントの状態をアサートする。 例えば、EC2インスタンスを起動してから、runningになるまで待つといったことができる。
  40. © 2022, Amazon Web Services, Inc. or its affiliates. ©

    2022, Amazon Web Services, Inc. or its affiliates. AWS Well-Architected Framework 47
  41. © 2022, Amazon Web Services, Inc. or its affiliates. AWS

    Well-Architected Framework 「運用上の優秀性」の5つの設計原則 • 運用をコードとして実行する 定型的な運用タスクをオートメーションのランブックとして事前定義し、実行する • 小規模かつ可逆的な変更を頻繁に行う ランブックでリソースへの変更を行う場合は、大きな変更を一度に行うのではなく細かな単位で(ロール バックも実装する) • 運用手順を頻繁に改善する 実態に合わせてランブックの見直しを行う • 障害を予想する トラブルシューティング用のランブックをあらかじめ作成することを検討する(AWS所有のランブックも 利用) • 運用上の障害すべてから学ぶ 運用上のイベントと障害からフィードバックしてランブックを修正する 48
  42. © 2022, Amazon Web Services, Inc. or its affiliates. Thank

    you! © 2022, Amazon Web Services, Inc. or its affiliates.