[アップデート] AWS Config が AWS Backup のリソースの記録をサポートしました

AWS Backup によるバックアップ取得を大量に行っている環境では Config の記録によるコスト増に注意してください

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンバンハ、千葉(幸)です。

AWS Config により記録可能なリソースに AWS Backup 関連のリソースが追加されました。

ちょこちょこ追加されますね。料金には注意しましょう。

何がサポートされたのか

AWS Config レコーダーでは指定したリソースの設定状況をモニタリングできます。リソースに設定変更が加わった場合に、タイムライン上でその変更内容や関連 CloudTrail イベントを参照する、といったことが可能です。

今回のアップデートにより AWS Backup のリソースが記録対象としてサポートされました。対象のリソースは以下です。

リソースタイプ 概要
AWS::Backup::BackupPlan バックアップ取得のルールや対象を定義するもの
AWS::Backup::BackupSelection バックアップ対象や使用するロールを定義するもの
AWS::Backup::BackupVault 取得したバックアップを管理する器
AWS::Backup::RecoveryPoint 取得されたバックアップ

図で表すと、以下の矢印で指し示している箇所が該当します。

図の左側中段の「バックアップルール」の内訳は、より上位の「バックアッププラン」の記録に内包されています。実質的にはすべての AWS Backup リソースが記録対象になっているということですね。

過去に AWS Backup の関連リソースを図解したことがありますので、あわせてご参照ください。

やってみた

AWS Config による記録が有効になっている状態で AWS Backup の復旧ポイントを作成し、リソースタイムラインで参照できることを確認してみます。

Config レコーダーの設定

AWS Config の設定画面から、記録対象のリソースを定義できます。以下の例では、サポートされているすべてのリソースを記録対象としていることを表します。

AWS_Config_Console_recorder

↑この状態であれば、今回のようにサポートされるリソースが追加された場合に自動で記録対象に追加してくれています。

特定のリソースタイプだけを記録対象としたい場合は、編集画面から変更できます。以下の画面から対象のリソースタイプを選択可能です。

AWS_Config_Console_recorder2

リソースタイプがプルダウンから選択可能なため、今回であれば AWS Backup 関連のリソースを追加しましょう。

AWS_Config_Console_resourcetype

AWS Config の記録対象としてサポートされているリソースの一覧は以下から確認可能です。

AWS Backup リカバリーポイントの作成

AWS Backup ではバックアッププランに基づいた自動的なバックアップ取得も実現できますが、今回はオンデマンドバックアップによる手動でのリカバリーポイント作成を行います。

AWS Backup のダッシュボードより、「オンデマンドバックアップを作成」を押下します。

AWS_Backup_Ondemand

対象や設定を適宜選択の上、オンデマンドバックアップを作成します。

AWS_Backup_Ondemand-8513849

昔は即時実行できたような気がするのですが、いまは「 1 時間以内に開始」という扱いになっているようです。 1 時間内のどこかでバックアップジョブが実行されますので、気長に待ちます。

今回は 10 分程で実行され、正常に完了しました。EC2 を対象に実行したため、リカバリーポイントの実体は AMI であることが確認できます。

AWS_Backup

リソースタイムラインでの確認

AWS Config のリソースから以下を選択しフィルタリングします。

  • ソースカテゴリ: AWS リソース
  • リソースタイプ:AWS Backup RecoveryPoint

AWS_Config_Console_Resource

↑対応するリソースが表示されるのですが、リソース識別子の末尾が省略されているためにどれがどれか判別しづらいです。

リカバリーポイントのリソース識別子は以下の構文となっているため、これを直接指定してフィルタリングをかけます。

backup-vault:<バックアップボールト名>:recovery-point:[<リカバリーポイント ARN>]

今回の例では以下となります。

backup-vault:Default:recovery-point:[arn:aws:ec2:ap-northeast-1::image/ami-046afc62879cd54c1]

単一の結果が得られたため、リソースタイムラインを確認します。

AWS_Config_Console_timeline

新規作成された際のイベントが確認できます。

AWS_Config_Console_timeline-8516108

設定項目は以下のように確認できます。

{
  "version": "1.3",
  "accountId": "000000000000",
  "configurationItemCaptureTime": "2021-08-09T13:17:15.198Z",
  "configurationItemStatus": "ResourceDiscovered",
  "configurationStateId": "1628515035198",
  "configurationItemMD5Hash": "",
  "arn": "arn:aws:ec2:ap-northeast-1::image/ami-046afc62879cd54c1",
  "resourceType": "AWS::Backup::RecoveryPoint",
  "resourceId": "backup-vault:Default:recovery-point:[arn:aws:ec2:ap-northeast-1::image/ami-046afc62879cd54c1]",
  "resourceName": "image/ami-046afc62879cd54c1",
  "awsRegion": "ap-northeast-1",
  "availabilityZone": "Regional",
  "tags": {},
  "relatedEvents": [],
  "relationships": [],
  "configuration": {
    "RecoveryPointArn": "arn:aws:ec2:ap-northeast-1::image/ami-046afc62879cd54c1",
    "BackupVaultName": "Default",
    "BackupVaultArn": "arn:aws:backup:ap-northeast-1:000000000000:backup-vault:Default",
    "ResourceArn": "arn:aws:ec2:ap-northeast-1:000000000000:instance/i-047875da17caa9cc2",
    "ResourceType": "EC2",
    "IamRoleArn": "arn:aws:iam::000000000000:role/service-role/AWSBackupDefaultServiceRole",
    "Status": "COMPLETED",
    "CreationDate": "2021-08-09T13:03:33.421Z",
    "CompletionDate": "2021-08-09T13:16:53.916Z",
    "BackupSizeInBytes": 8589934592,
    "IsEncrypted": false
  },
  "supplementaryConfiguration": {}
}

今後このリカバリーポイントに設定変更を加えたり削除したりすれば、リソースタイムラインに新たなイベントとして記録されることになります。

終わりに

AWS Config の記録対象に AWS Backup のリソースが追加された、というアップデートでした。

後から設定状況を追跡できるようなるべく記録対象に設定しておきたいですね。とは言え、リカバリーポイントは作成/削除が頻繁にあるリソースであるため料金は気にしておきましょう。

AWS Config の記録にかかる料金は以下の通りです。

AWS アカウントに記録された設定項目あたり 0.003USD

100 個のリカバリーポイントが作成され、やがて世代管理により削除される、となればそれだけで Config の料金として 0.6 USD かかります。規模によっては無視できない金額になってくるかと思いますので、あえて記録対象から除外するのもアリだと考えます。

記録するにせよしないにせよ、料金の発生については意識しておきましょう。

以上、 チバユキ (@batchicchi) がお送りしました。