[アップデート]AWS BackupでEC2のリストア時にEBSのカスタムボリューム設定が可能になりました
お久しぶりです。みなみです。
AWS Backupで、EC2リストア時にカスタムボリューム設定ができるようになったというアップデートがありました。これにより、AWS Backupからのリストア時にボリュームタイプやサイズを柔軟に変更できるようになります。
実際に試してみたので紹介します。
アップデート内容
今回のアップデートで、AWS BackupからEC2をリストアする際にEBSの設定変更を行うことが出来るようになりました。
具体的には以下のような設定が可能になっています:
- ボリュームタイプの変更: gp2からgp3、io1からio2への変更が可能
- ボリュームサイズの拡張: 元のサイズより大きなボリュームでリストア
- IOPS・スループットの調整: パフォーマンス要件に応じた最適化
- 暗号化設定の変更: 非暗号化バックアップを暗号化してリストア
- KMSキーの指定: クロスアカウント・クロスリージョンリストア対応
アップデート以前はどうだった?
AWS Backupでは、リストア時のボリューム設定において以下のような制限がありました
- 固定設定でのリストア:バックアップ時点のボリューム設定がそのまま適用
- 手動での再設定が必要:リストア後に手動でボリュームタイプやサイズを変更
そのためリストア時にEBSの設定変更が必要な場合は、AWS Backupのリストア機能ではなく、AMIからのインスタンスを起動するケースがほとんどでした。
試してみる
マネジメントコンソールからの復元
復旧ポイントから復元を行ってみましょう。
新たにストレージ(ボリューム)の設定が追加されていることが確認出来ますね。
AWS CLIからの復元
今回のアップデートによってstart-restore-jobコマンドのmetadataオプションのプロパティとしてBlockDeviceMappings
が指定出来るようになりました。
そのため、以下のようにリストアが可能となります。
aws backup start-restore-job \
--recovery-point-arn "arn:aws:backup:ap-northeast-1:123456789012:recovery-point:xxxxx" \
--metadata '{
"InstanceType": "t3.medium",
"KeyName": "my-key",
"SubnetId": "subnet-12345678",
"SecurityGroupIds": ["sg-12345678"],
"CpuOptions": {
"CoreCount": 1,
"ThreadsPerCore": 2
},
"Monitoring": {
"Enabled": true
},
"BlockDeviceMappings": [
{
"DeviceName": "/dev/xvda",
"Ebs": {
"VolumeType": "gp3",
"VolumeSize": 100,
"Iops": 3000,
"Throughput": 125,
"Encrypted": true,
"KmsKeyId": "arn:aws:kms:ap-northeast-1:123456789012:key/xxxxx",
"DeleteOnTermination": true
}
}
]
}' \
--iam-role-arn "arn:aws:iam::123456789012:role/service-role/AWSBackupDefaultServiceRole" \
--resource-type "EC2"
AWS Backupのリストア機能とAMIからの起動の比較
今回のアップデートで、AWS BackupのEC2のリストア時に設定できる項目が増えたものの、一部の機能はまだ対応しておりません。
AWS BackupでのリストアとAMIから起動の機能を比較した表が以下となります。
AWS Backupのリストアでも、CLIのみ対応している機能なども確認出来ますね。
設定カテゴリ | 設定項目 | AWS Backup復元 (マネコン) |
AWS Backup復元 (CLI) |
AMI起動 (マネコン・CLI) |
差異の詳細・備考 |
---|---|---|---|---|---|
基本設定 | インスタンスタイプ | ✅ | ✅ | ✅ | 同等の機能(InstanceType) |
キーペア | ❌ | ❌ | ✅ | AWS Backupは元のキーペアを自動使用、変更不可 | |
インスタンス数 | ❌ | ❌ | ✅ | AWS Backupは常に1インスタンス | |
名前とタグ | 🔶 | 🔶 | ✅ | AWS Backupは保護されたリソースからのタグのコピーのみ | |
認証・セキュリティ | IAMインスタンスプロファイル | 🔶 | ✅ | ✅ | マネコンは「IAMロールなし」「元のIAMロールで復元」のみ選択可能、CLIでは任意のIamInstanceProfileNameを設定可能 |
ドメイン結合 | ❌ | ❌ | ✅ | Active Directoryへの参加設定 | |
メタデータ(IMDS)設定 | ❌ | ✅ | ✅ | CLIではRequireIMDSv2で設定可能 | |
ネットワーク | VPC・サブネット | ✅ | ✅ | ✅ | 同等の機能(SubnetId) |
セキュリティグループ | ✅ | ✅ | ✅ | 同等の機能(SecurityGroupIds) | |
パブリックIP自動割り当て | ❌ | ✅ | ✅ | CLIではNetworkInterfaces内で設定可能 | |
複数ENI設定 | ❌ | ✅ | ✅ | CLIではNetworkInterfaces配列で対応 | |
ENI詳細設定 | ❌ | ✅ | ✅ | NetworkInterfacesで詳細設定可能 | |
ENA Express | ❌ | ✅ | ✅ | CLIではEnaSupportで設定可能 | |
ENA queues | ❌ | ❌ | ✅ | ネットワークキューの設定 | |
アイドル接続追跡タイムアウト | ❌ | ❌ | ✅ | Nitroインスタンス向け機能 | |
ストレージ | EBSボリューム設定 | ✅ | ✅ | ✅ | CLIではBlockDeviceMappingsで設定可能 |
ボリューム初期化レート | ❌ | ❌ | ✅ | 高速ボリューム初期化(100-300 MiB/秒) | |
EBS最適化 | ❌ | ✅ | ✅ | CLIではEbsOptimizedで設定可能 | |
ファイルシステム設定 | ❌ | ❌ | ✅ | EFS等のファイルシステムマウント | |
インスタンス設定 | CPUオプション | ❌ | ✅ | ✅ | CLIではCpuOptionsで設定可能 |
終了保護 | ✅ | ✅ | ✅ | CLIではDisableApiTerminationで設定可能 | |
停止保護 | ❌ | ❌ | ✅ | 誤った停止操作の防止 | |
休止機能 | ✅ | ✅ | ✅ | 同等の機能(HibernationOptions) | |
シャットダウン動作 | ✅ | ✅ | ✅ | 同等の機能(InstanceInitiatedShutdownBehavior) | |
T2/T3無制限 | ✅ | ✅ | ✅ | 同等の機能(CreditSpecification) | |
ホスト名設定 | ❌ | ❌ | ✅ | ホスト名タイプ、DNS設定 | |
運用・モニタリング | CloudWatch詳細モニタリング | ❌ | ✅ | ✅ | CLIではMonitoringで設定可能 |
自動復旧 | ❌ | ❌ | ✅ | インスタンス自動復旧機能 | |
プレイスメントグループ | ✅ | ✅ | ✅ | 同等の機能(Placement) | |
テナンシー | ✅ | ✅ | ✅ | 同等の機能(Placement内のTenancy指定) | |
購入・ライセンス | 購入オプション | ❌ | ✅ | ✅ | CLIではInstanceMarketOptionsで設定可能 |
ライセンス設定 | ❌ | ✅ | ✅ | CLIではLicenseSpecificationsで設定可能 | |
キャパシティ予約 | ❌ | ✅ | ✅ | CLIではCapacityReservationSpecificationで設定可能 | |
高度な機能 | Nitro Enclave | ❌ | ❌ | ✅ | 機密コンピューティング |
Elastic GPU | ❌ | ✅ | ✅ | CLIではElasticGpuSpecificationで設定可能 | |
Elastic Inference | ❌ | ❌ | ✅ | 機械学習推論アクセラレータ | |
インスタンス帯域幅設定 | ❌ | ❌ | ✅ | ネットワーク帯域幅制御 | |
RAM ディスク ID | ❌ | ✅ | ✅ | CLIではRamdiskIdで設定可能 | |
カーネル ID | ❌ | ✅ | ✅ | CLIではKernelIdで設定可能 | |
ユーザーデータ | ✅ | ✅ | ✅ | 同等の機能(UserData) | |
アーキテクチャ | ❌ | ✅ | ✅ | CLIではArchitectureで設定可能 | |
仮想化タイプ | ❌ | ✅ | ✅ | CLIではVirtualizationTypeで設定可能 | |
プラットフォーム | ❌ | ✅ | ✅ | CLIではPlatformで設定可能 | |
ルートデバイスタイプ | ❌ | ✅ | ✅ | CLIではRootDeviceTypeで設定可能 |
凡例:
- ✅:完全対応
- 🔶:制限的対応
- ❌:対応なし
使い分け
このようにあえて機能が絞られているのは、AWSの意図のようです。
例えばIAMロールについては保護対象リソースが元々使用していたのと同じインスタンスプロファイルを使用するか、インスタンスプロファイルを使用せずに起動するかを選択出来ます。
これはリストア時に誤った操作によって権限昇格が行われることを防ぐためとあります。
When configuring the restored instance, you can choose between using the same instance profile that the protected resource used originally or launching without an instance profile. This is to prevent the possibility of privilege escalations. You can update the instance profile for the restored instance using the Amazon EC2 console.
参考: https://docs.aws.amazon.com/aws-backup/latest/devguide/restoring-ec2.html#restoring-ec2-cli
AWS Backupのリストア機能はあくまでもリストアに特化しており、あえてシンプルにしていることが分かりますね。
最後に
今回のアップデートによってAWS BackupからEC2をリストアする際にEBSの設定変更を行うことが出来るようになり、リストア時の柔軟性が向上しました。
現状はAWS BackupからのリストアとAMIからの復元を比較すると機能が絞られています。
しかし設定出来る項目が敢えて絞られており、リストアに特化しているという点ではメリットかと思います。
そのため、運用によって使い分けを行うことが重要ですね!
本記事が皆様のバックアップ運用の改善にお役立ていただければ幸いです。
最新のアップデート情報もあわせてチェックしていただき、より効率的なAWS運用を実現していきましょう!