🔑

【AWS Backup】クロスリージョンバックアップ時のキーペア設定の注意点

2024/07/25に公開

災害発生時の対応やデータの冗長性・信頼性のため、リソースを複数のリージョンでバックアップしたい場合があると思います。その際、AWS Backup を使ってインスタンスを起動する際に注意したいことがあります。🧐

今回、リージョンをまたいだバックアップから復元したインスタンスに対して SSH 接続できない問題に遭遇したので、記録しました。🗒️

クロスリージョンバックアップについて

AWS Backup の機能には、他のリージョンを指定してバックアップのコピーを作成するオプションがあります。これを使用することで、リージョンをまたいでリソースのバックアップを作成できます。

【AWS Backup でバックアッププランを作成する画面】

バックアップの復元について

バックアップが作成されると、AWS Backup の 「バックアップボールト」から復旧ポイントを選択し、リソースを復元することができます。

例えば、EC2 インスタンスの場合、インスタンスタイプやサブネットなどを指定して復元させます。

【AWS Backup で EC2 インスタンスを復元する画面】

(問題)復元したインスタンスに SSH 接続できない

EC2 インスタンスにログインしたいとき、いくつか方法があります。

私は、AWS Systems Manager (SSM)の機能である、セッションマネージャーを使って接続することが多いのですが、このとき、なぜか接続することができませんでした。

この原因を調査するために、SSH 接続でインスタンスにログインしようとしたのですが、そういえば、復元時にキーペアを設定した覚えがない・・・。どうやって接続すればいいのか・・・🤨

(原因)復元時はバックアップ元のキーペアが設定されたままになる

キーペアとは、SSH 接続するときに用いる公開鍵と秘密鍵のことですが、
通常、AMI からインスタンスを起動する際、事前に登録しておいたキーペアをインスタンス起動時に設定することができます。

【AMI を選択して EC2 インスタンスを作成する画面】

ところが、AWS Backup からインスタンスを復元する際、キーペア設定の項目がありません。

【AWS Backup で EC2 インスタンスを復元する画面】

調べたところ、どうやらバックアップには元の EC2 と同じキーペアが設定されており、同じリージョンでバックアップおよび復元する場合は問題なく SSH 接続できます。

ただ、キーペアはリージョン固有なので、リージョンをまたいで共有することはできません。

つまり、今回のようにリージョンをまたいでバックアップを行うとき、復元時はバックアップ元のキーペアが設定されたままになっていることに注意が必要です。

(対策)別リージョンで復元したインスタンスに SSH 接続するには?

AWS 経験が浅い自分でも対応できそうな方法を検討しました(他にも方法はあるかと思います)。

方法1:復元したインスタンスから AMI を取得し、AMI から起動する

復元したインスタンスからイメージを作成して、新たに AMI を取得します。この AMI を使ってインスタンスを起動する際に、リージョンに事前に登録しておいたキーペアを設定することができます。

【インスタンスからイメージ(AMI)を作成する画面】

【AMI からインスタンスを起動する画面】

方法2:復元時にユーザーデータから公開鍵を設定する

復元時にユーザーデータを記述できるので、新しいキーペアの公開鍵を設定すれば SSH 接続可能になります。

#!/bin/bash
echo "your-public-key" >> ~/.ssh/authorized_keys

【AWS Backup で EC2 インスタンスを復元する画面】

終わりに

AMI から起動する時はキーペアを設定する項目があるのに、backup の復元時は項目がないことに困惑しました。
ただ、そもそも AWS Backup からの復元は、その対象が EC2 インスタンスに限らないので、仕組みに汎用性を持たせていることが関係しているのかもしれません。今回は少し勉強になりました。📚

(おまけ)AMI からの起動と AWS Backup からの復元の違い

AMI からの起動:  
- EC2 インスタンスの完全なスナップショットを提供。
- オペレーティングシステム、アプリケーション、データ、設定を含む。
- 新しいインスタンスを起動して復元。

AWS Backup からの復元:  
- 複数の AWS リソースのバックアップと復元を管理。
- EC2, EBS, RDS, DynamoDB などをサポート。
- 元の状態にリソースを復元。

違い:
- AMI は EC2 インスタンス専用、AWS Backup は複数リソース対応。
- AMI は新しいインスタンス起動、AWS Backup は元のリソースの復元。
レスキューナウテックブログ

Discussion