以下の記事で、ヘルスチェックを行う方法について記述しました。
また、Virtuosoが停止した際の再起動のためのコマンドを以下に記述しました。
今回は、Amazon SNSを用いた通知に合わせて、Virtuosoを再起動してみます。
EC2インスタンスにsudo rm -rf /usr/local/var/lib/virtuoso/db/virtuoso.lck && ...のようなコマンドを送信するには、SSM(AWS Systems Manager)に関する設定が必要でした。
IAMロールとポリシー#
IAMロールを新規に作成して、AmazonSSMFullAccessというポリシーを許可しました。はじめ、AmazonSSMManagedInstanceCoreというポリシーを許可していましたが、後述するlambda実行時に以下のようなエラーが発生して、うまく動作させることができませんでした。
EC2インスタンスの「IAMロールを変更」から、作成したIAMロールを選択して更新しました。
AWS SAM: lamda関数の作成#
AWS SAMを用いました。以下でのプロジェクトを作成します。
hello_world/app.pyを以下のように作成しました。instance_idの部分には、要修正です。
また、hello_word/requirements.txtにboto3を追記しました。
ローカルでのテストは以下で行います。デフォルト以外のprofileを使用する場合には、xxxxに適切なプロファイル名を与えます。
AWS SAM: template.yamlの更新#
SNSの通知に合わせて、lambda関数が実行されるように、template.yamlを修正します。
「既存のSNSトピックのARN」は適切なものに修正してください。また、先に示したlambda関数を格納するフォルダ名をhello_wordからvirtuoso_restartに変更しています。
AWS SAM: デプロイ#
デプロイは以下で行います。
まとめ#
SSM(AWS Systems Manager)の利用が初めてだったので、エラーを解消させるまで時間がかかりましたが、便利な機能だと思いました。
他の方の参考になりましたら幸いです。