AWS クラウド

【Backup×EventBridge】Auroraのバックアップ失敗を検知する方法

2022年2月25日

こんにちは、yassanです。
今回は、Auroraのバックアップ失敗を検知する方法を紹介します。

RDSのバックアップ検知といえば、イベントサブスクリプションが広く知られていると思います。
ですが、AuroraのバックアップはRDSのイベントサブスクリプションで検知することができません。
これでは、万が一障害が起こってバックアップの取得に失敗したときに困ってしまいます。

そこで、もう一つAuroraの差分バックアップを検知するために、
AWS Backup と Amazon EventBridge を組み合わせて検知する方法があります。
この方法を使えば、Auroraの差分バックアップを取得することができますので、ぜひご参考ください。

Auroraの差分バックアップを検知する

Auroraインスタンスの作成とSNSの設定は完了している前提となります

ではまず、AWS Backup を使って Aurora のバックアップを設定します。
バックアッププラン・ルールを作成し、リソースをAuroraに限定しました。

バックアッププランは、バックアップジョブを実行するため、ルールやリソース管理する定義です。
バックアップルールは、バックアップの頻度やバックアップウィンドウなどの定義です。
いずれもデフォルトの設定で問題ありませんが、バックアップルールで頻度を高くしておくと、検証が速やかに行えます。

[特定のリソースタイプを含める]にチェックを入れて、
リソースタイプに[Aurora]を、クラスターIDには対象のAuroraクラスターを選択します。

これで、AWS BackupからAuroraのバックアップ設定が完了しました。

次に、通知を送るため、EventBridge の設定をします。
EventBridgeのルールを作成します。
EventBridgeのコンソールの左ペインから、ルールを選択します。

イベント一致パターンに、サービスごとの事前定義パターンを中に、
AWS > Backup > Backup Job State Change があるので、こちらを選択します。

ターゲットにEメールと連携済みのSNSトピックを選択します。

これで設定は完了です。
実際にAWS BackupでAuroraのバックアップを取得してみます。

今回はAuroraのバックアップを失敗させるために、わざとインスタンスを停止させます。

Auroraクラスターは停止状態だとバックアップの取得に失敗します。

しばらく待つと、バックアップが走ります。
すると、下記の内容のメールが飛んできました。

{
    "version":"0",
    "id":"xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "detail-type":"Backup Job State Change",
    "source":"aws.backup",
    "account":"xxxxxxxxxxx",
    "time":"2022-02-09T06:46:24Z",
    "region":"ap-northeast-1",
    "resources":[],
    "detail":{
        "backupJobId":"xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "backupVaultArn":"arn:aws:backup:ap-northeast-1:xxxxxxxxxxx:backup-vault:Default",
        "backupVaultName":"Default",
        "bytesTransferred":"0",
        "creationDate":"2022-02-09T05:00:00Z",
        "iamRoleArn":"arn:aws:iam::xxxxxxxxxxx:role/service-role/AWSBackupDefaultServiceRole",
        "resourceArn":"arn:aws:rds:ap-northeast-1:xxxxxxxxxxx:cluster:database-1",
        "resourceType":"Aurora",
        "state":"FAILED",
        "statusMessage":"Can't create a snapshot because the database cluster database-1 isn't currently in the available state.",
        "completionDate":"2022-02-09T06:37:56.276Z",
        "startBy":"2022-02-09T13:00:00Z",
        "percentDone":0.0,
        "createdBy":{
            "backupPlanId":"xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "backupPlanArn":"arn:aws:backup:ap-northeast-1:xxxxxxxxxxx:backup-plan:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "backupPlanVersion":"xxxxxxxxxx",
            "backupPlanRuleId":"xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
        }
    }
}

stateのところが"FAILED"になっており、statusMessageにスナップショットが作成できなかった内容が書いてますね。

このstateには何種類かあり、例えば"CREATED"はバックアップジョブが作成された状態、
"RUNNIG"はバックアップジョブがランしている状態など、いろいろあります。

EventBridgeのイベントパターンのJSONで指定することで、通知するイベントをフィルタリングできます。
詳しくは、下記の記事で紹介していますので、良ければご参考ください。

というわけで、Auroraのバックアップ失敗を検知する方法でした。

AWS学習におすすめの書籍

AWSについて、しっかりと基礎から学びたい、実践的なスキルを身につけたいと考えている方向けに、おすすめの書籍を紹介します。
これらの書籍は、実際にAWSエンジニアとして働く僕が参考にしている書籍です。

AWSエンジニア入門講座――学習ロードマップで体系的に学ぶ

AWSを使いこなすための前提となるITインフラの知識が足りない初学者にとって、どこからどのように学べばよいのかがわかりづらくなっています。そこで本書では、AWS学習サイト運営YouTuberである監修者自身が実サービスの導入で習得しながら体系化した「学習ロードマップ」に沿って、AWSのサービスとIT技術をやさしく解説していきます。

著者が作成した学習ロードマップに沿って、AWSやインフラストラクチャを体系的に学ぶことができます。
付属のロードマップの完成度が高く、学習に迷ったときや復習にも使えます。
これからAWSエンジニアを目指す方や、インフラストラクチャを基礎から学びたい方におすすめです。

Amazon Web Services 業務システム設計・移行ガイド

オンプレミス上に構築された業務システムをAWS上に移行するための「サービスの選定」「ネットワーク設計・構築」「サーバとデータの移し方」「運用・監視体制の構築」など。これまで多くの企業にAWSを導入し、コンサルティングフェーズから実際の設計・開発、運用フェーズまでの全行程に携わってきた著者陣のノウハウを凝縮して、一般的な企業にAWSを導入する際のベストプラクティスをお届けします。

実務を想定した様々なユースケースとそれに対するベストプラクティスを、設計構築から運用まで幅広くカバーして紹介しています。
タイトルからは移行に焦点を当てたように見えますが、僕としては移行に限らずエンタープライズとしてAWSを利用する上で知っておくべきことが記されていると思います。
より実践的な知識やノウハウを身に着けたい方、初学者から一皮むけたい方におすすめです。

-AWS, クラウド
-, ,