AWS Backupを使うと、VSS(Volume Shadow Copy)オプションを有効にしてEC2バックアップ(AMI)を取得可能です。今回は色々と試してみた際の手順をご紹介します。
※今回はwindows serverを対象にします!
※VSSを利用すると一時的にディスクI/Oを保留してくれるため、EC2を停止しなくても、整合性がとれたバックアップが可能です。
では早速!
全体概要
AWS公式サイトによる手順は次の通りですが、うーん、若干わかりにくいです。
VSS実行のための要件はざっくりと次の通りです。
- systems managerのrun commandが使えること。
- ec2にvss関係のエージェントが必要。
- ec2に一部ロール設定が必要。
- ec2にaws powershell toolsが必要。
aws backupのバックアップが開始されると、systems managerのrun command経由で、EC2に対してvss命令が発行されて、静止点バックアップが取得できるような流れです。また公式サイトに記載はありませんがaws powershell toolsが必要です(ただしaws提供のamiから起動していれば既に入っているとのこと)。
プロキシ設定が必要な場合もあります。
該当ec2がプロキシ配下だとaws powershell toolsのためのプロキシ設定も必要です。systems managerのプロキシ設定とは別に、個別のプロキシ設定があったりと、プロキシ配下でec2を運用している場合は、毎回悩まされます・・・。全部os環境変数のhttp_proxyとかに統一してくれれば楽なのに・・・・。
設定していきます
全部の設定を本ページで載せているわけではありませんが、ポイントを絞って試した際のポイントを書いていきますね。
run commandが使えること。
EC2内にssm agentが存在し、ssm agentがAWSと通信できている状態ならOKです。詳細は以下の記事で触れていますが、ssm agentと通信できていれば、systems agentの「フリートマネージャ―」に表示されます。
ここまでいければ、Run Commandも動くはずです。なお、Backup時は「AWSEC2-CreateVssSnapshot」が呼び出されます。
vssエージェントのインストール
続いて、systems managerのRun Commandを使って、VSS実行に必要なエージェント(パッケージ)をインストールします。ドキュメントタイプ「AWS-ConfigureAWSPackage」を選択し、該当のEC2に対して発行します。
画面キャプチャはありませんが、コマンドパラメータのNameは「AwsVssComponents」を設定します。所要時間は1分程度です。完了後、コマンドログを確認すると以下のようにありました。
Successfully installed arn:aws:ssm:::package/AwsVssComponents 1.3.2.0
また、インストール後にEC2内のWindowsサービスで「Ec2VssSoftwareProvider」が動作しています。動いてない場合は一度再起動したほうが良いでしょう。
参考までに載せておきますが、このエージェントが入っていないとAWSからBackup(VSS有)を実行した場合に、次のようなエラーが表示されます。
failed to run commands: exit status 1
ec2-vss-agent.exe is not installed. To install, run command AWS-ConfigureAWSPackage with package AwsVssComponents
EC2にロール設定
EC2のロールに次が必要です。
- AmazonSSMManagedInstanceCore
- タグ作成等(JSONは後述)
なお、最初の「AmazonSSMManagedInstanceCore」についてはsystems managerの管理下になるための設定で既にあるかもしれません。
タグ作成等のJSONは次の通りです。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:CreateTags",
"Resource": [
"arn:aws:ec2:*::snapshot/*",
"arn:aws:ec2:*::image/*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:CreateSnapshot",
"ec2:CreateImage",
"ec2:DescribeImages"
],
"Resource": "*"
}
]
}
aws powershell tools
VSSのドキュメント部分には書かれていませんが、「AWS PowerShell」も必要です。(基本的にAWS提供のAMIであれば、含まれている)。こちらが入ってなかったり未設定だと、次のようなエラーが表示されます。
Error: Unable to locate AWS PowerShell tools that are necessary for tagging.
Please ensure that AWS PowerShell tools are installed
公式サイトによるインストールマニュアルは次の通り。
powershell 5.0以降であればinstall moduleを利用し、以前であればインストーラパッケージを使えばOKです。また、aws powershell toolsのプロキシ設定も必要です(環境変数などで設定、詳細は割愛します・・・)。
VSS有効のバックアップ取得
必要な設定は終えたため、実際にバックアップを取得してみます。
※AWS Backupの細かい説明は割愛します。
AWS Backupのバックアッププランの設定項目より「アドバンスドバックアップ設定」を選択し、Windows VSSにチェックを入れておきます。
あとはバックアップの実行タイミングを待ちます。
・・・・
さて、AWS Backupによってバックアップ(AMI)生成された後、実際にVSS対応のバックアップが動作したのか確認してきます。以下のことがわかりました。
- AWS BackupからVSS結果はわからない。
- Systems managerのRun Command履歴に「AWSEC2-CreateVssSnapshot」が「成功」として存在する。
- EC2にタグ「AppConsistent」が設定されている。
- WindowsイベントログにVSS動作ログが記録されている。
ここまで、プロキシ設定などでトライ&エラーでしたが、無事に動作したようです。これでOS整合性のバックアップのために、わざわざEC2を停止(電源OFF)をしなくてもOKということになります。
結果確認の補足事項を以下に残しておきます。
Windowsイベントログは次のように記録されます。
EC2のタグは次のように付与されますが、EC2が動作してVSSが実行された時のみです。停止状態である場合は付与されません。また、準備時にタグ関係のロール設定を実施しましたが、このタグ設定のためだったわけですね。
また、VSSが失敗したり、バックアップグループにVSS非対応のEC2がいても、AWS Backup自体は問題なく「成功」としてカウントされます。ただし、Systems managerのコマンド履歴は以下のように「成功」「失敗」が混在することになります。
まとめ
AWS BackupサービスのVSSを利用したバックアップについてご紹介しました。EC2に対してエージェントインストールやプロキシ設定などの前提条件はありますが、EC2がrunning状態において、静止点でのバックアップが取得できるのは強い味方です。
最後までご覧いただきありがとうございました!
コメント