はじめに

AWS Support Automation Workflows とは

AWS Support Automation Workflows (SAW) とは、AWSサポートのエンジニアたちが作成した叡智の結晶です!!

AWS公式の製品ページ[1]では、以下のように紹介されています。

AWS サポート自動化ワークフローは、厳選された AWS Systems Manager セルフサービス自動化ランブックのコレクションです。これらのランブックは、お客様の問題を解決して得たベストプラクティスを基に、AWS サポートエンジニアリングによって作成されています。これにより、AWS リソースに関する一般的な問題のトラブルシューティング、診断、修正が可能になります。

AWSサポートのエンジニアたちによって作成されたランブックなので、安心して利用できますね!

今回は、そのランブックの中から AWSSupport-TroubleshootConnectivityToRDS を実際に使ってみましたので紹介していきます!

 

AWSSupport-TroubleshootConnectivityToRDS とは

EC2 インスタンス と RDS インスタンス 間の接続で、どこに問題かあるかを診断してくれるランブックです。

AWS公式ドキュメント[2]では、以下のように説明されています。

AWSSupport-TroubleshootConnectivityToRDS ランブックは、EC2 インスタンスと Amazon Relational Database Service インスタンスの間の接続の問題を診断します。このオートメーションにより、DB インスタンスが使用可能であることが確認され、関連付けられているセキュリティグループのルール、ネットワークアクセスコントロールリスト (ネットワーク ACL)、ルートテーブルの潜在的な接続の問題がチェックされます。

なお、このランブックでは参照と評価のみで、リソースへの変更は行われません。

検証内容

今回は、以下の状況でランブックを実行し、診断結果を確認してみます!

  1.  EC2 インスタンスにアタッチしているセキュリティグループのアウトバウンドルールをすべて削除する
  2.  RDS インスタンスにアタッチしているセキュリティグループのインバウンドルールをすべて削除する

前提条件

AWS SAW を利用する前提条件[3]として、実行する IAM ユーザまたは IAM ロールに以下の権限が必要です。

  • ssm:StartAutomationExecution
  • ssm:GetAutomationExecution
  • ssm:SendCommand

また、実行するランブックが EC2 インスタンス内でアクションを実行するものであれば、追加で以下を満たす必要があります。

  • EC2 インスタンス内に SSM Agent がインストールされ、実行されていること
  • EC2 インスタンスプロファイルに AmazonSsmManagedInstanceCore がアタッチされていること

※本記事で紹介する AWSSupport-TroubleshootConnectivityToRDS は、EC2 インスタンス内でアクションを実行しないランブックなので不要です。

共通手順

  1.  AWSマネジメントコンソールより「Systems Manager」へ移動する
  2.  左メニューの「変更管理ツール」から「ドキュメント」を押下する
  3.  検索窓に「AWSSupport-TroubleshootConnectivityToRDS」と入力し、検索する
  4.  検索結果の一覧から「AWSSupport-TroubleshootConnectivityToRDS」を押下する
  5.  右上の「オートメーションを実行する」を押下する
  6.  「Simple execution」を選択する
  7.  「Input parameters」で以下のように選択、入力し、「Execute」を押下する

※SourceInstance と DBInstanceIdentifier は、ご自身の環境にあわせて選択、入力してください。

1. EC2 インスタンスにアタッチしているセキュリティグループのアウトバウンドルールをすべて削除する

Failure details に「TrafficNotAllowedError – Please review security group(s) [‘sg-0806e2db892140810’] for rules allowing egress TCP traffic to port 3306.」という文言があります。

セキュリティグループのアウトバウンドルールに 3306 ポートへの許可設定があるかを確認して!という意味ですね。

2. RDS インスタンスにアタッチしているセキュリティグループのインバウンドルールをすべて削除する

Failure details に「TrafficNotAllowedError – Please review security group(s) [‘sg-0e479c2a6b876c2e6’] for rules allowing ingress TCP traffic from port 3306」という文言があります。

セキュリティグループのインバウンドルールに 3306 ポートへの許可設定があるかを確認して!という意味ですね。

どちらも正常だと・・・

Failure details にセキュリティグループに関する文言はなくなりました!

ルートテーブルのチェックでスクリプトエラーが表示されていますが、AWS側で作成されているスクリプトのため原因の追求まではできず・・・

機会があれば調査してみようと思います!

 

まとめ

AWS SAW の AWSSupport-TroubleshootConnectivityToRDS を実行することで、EC2 インスタンスと RDS インスタンス間の接続で問題がある箇所を簡単に診断できることを実行例を交えてご紹介しました。

AWS SAW には、調査に便利なランブックが多数あります!

トラブルに直面したときには調査に使えそうなランブックがないかを確認してみるのがよさそうですね!

参考ページ・ドキュメント

[1] AWS Support Automation Workflows (SAW)

https://aws.amazon.com/jp/premiumsupport/technology/saw/

[2] AWSSupport-TroubleshootConnectivityToRDS

https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshootconnectivitytords.html

[3] サポートオートメーションワークフロー(SAW)を使用したAWS環境の一般的な問題の診断

https://aws.amazon.com/jp/blogs/news/using-saw-to-diagnose-common-issues-in-your-aws-environment/