この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
どーもsutoです。
2021年2月3日にCloudWatchにAWS Backupメトリクスとイベントが使えるようになったとのことで実際に確認してみました。
これまではAWS BackupのSNSトピックを使って通知を行うには、下記リンクのように
- AWS CLI を使用してBackupイベントの通知をVaultに設定
- バックアップJobのstateで通知の有無をフィルタリングする場合は、SNSのサブスクリプションフィルターポリシーの設定
が必要でした。
今後はAWSコンソールでもCloudWatchイベントやアラーム作成ができるので通知設定の手間が解消されそうですね。
参考
AWS Backupで利用できるイベント、メトリクスの種類はこちらでご確認ください。
実際にやってみた
今回は、検証として以下の設定を行い、メトリクスと通知の確認をしてみます。
- AWS Backup設定を作成(Cfnテンプレートを使用)、EC2のバックアップ取得
- CloudWatchイベントでJobのstate変化時にSNSトピックに通知
Backup設定の作成
以下のテンプレートを用いてAWS BackupのVault、Plan、Rule、Resource、必要なIAMロールを設定します。
AWSTemplateFormatVersion: '2010-09-09'
Description: AWS Backup Setting
Parameters:
MyBackupName:
Description: Backup plan name
Type: String
Default: 'backup'
Cron:
Description: type the cron.
Type: String
Default: cron(0 19 * * ? *)
TagKey:
Description: TagKey for backup
Type: String
Default: 'backup'
TagValue:
Description: TagValue for backup
Type: String
Default: 'True'
Resources:
BackupVault:
Type: "AWS::Backup::BackupVault"
Properties:
BackupVaultName: !Sub ${MyBackupName}-vault
BackupPlan:
Type: AWS::Backup::BackupPlan
Properties:
BackupPlan:
BackupPlanName: !Ref MyBackupName
BackupPlanRule:
- RuleName: !Sub ${MyBackupName}-rule
TargetBackupVault: !Ref BackupVault
ScheduleExpression: !Ref Cron
CompletionWindowMinutes: 720
StartWindowMinutes: 60
Lifecycle:
DeleteAfterDays: 14
BackupSelection:
Type: AWS::Backup::BackupSelection
Properties:
BackupPlanId: !Ref BackupPlan
BackupSelection:
SelectionName: !Ref MyBackupName
IamRoleArn: !GetAtt BackupIAMrole.Arn
ListOfTags:
- ConditionType: "STRINGEQUALS"
ConditionKey: !Ref TagKey
ConditionValue: !Ref TagValue
BackupIAMrole:
Type: AWS::IAM::Role
Properties:
RoleName: AWSBackupDefaultServiceRole
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action: sts:AssumeRole
Principal:
Service: backup.amazonaws.com
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup
- arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForRestores
Path: "/service-role/"
あとはバックアップ対象のEC2に上記のタグ(backup : True)を付与します。
CloudWatchイベントの作成
コンソールでCloudWatch→イベント→ルールの画面を開き、以下のようにルールを作成してみます。ターゲットにはあらかじめ自分のメールをサブスクリプションに設定したSNSトピックを指定しています。
これで設定完了です。ではメールの内容を見てみましょう。
ジョブのstate「CREATED」「RUNNING」「COMPLETED」の計3通がメールで受信されていました。
次にCloudWatchメトリクスを確認してみます。
通知された3つのstate変化がメトリクスでも取得されています。
特定のジョブstateのみを通知させるために
運用業務の場面では、「Failedのときのみ通知させたい」というような需要があるかと思いますので、今回はジョブが”COMPLETED”のイベントのみを通知させるようにCloudWatchイベントルールを変更してみようと思います。
先ほど作成したルールを選択し、カスタムイベントパターンとして以下のように編集を行い保存します。
このように”detail”のstateに条件を加えることで、COMPLETEDのときのみ通知がくるようになりました。
他の条件についても、メール本文内のjsonにある「"Key":"Value"」で複数のフィルタリングができます。
まとめ
バックアップ設定が正常に動作しているか監視するのにCloudWatchのメトリクスやイベントを使えるようになったのはありがたいですね。 監視や運用保守の業務の方々に参考になれば幸いです。