特定のAWSアカウントにのみAMIを共有し、再現環境を構築して検証する方法

特定のAWSアカウントにのみAMIを共有し、再現環境を構築して検証する方法

こんにちは。エンジニアの土居です。最近はSRE業務も担当しています。

今回は、ある環境でなんらかの問題が発生し、対処方法を試行錯誤したいもののあまりその場の環境を汚したく無い場合に、検証用の特定アカウントに再現環境を構築する方法をご案内いたします。

再現環境の構築方法

AMI(Amazon Machine Image)は公開することなく、特定アカウントのみに対して共有することができます。その機能を利用し、検証用アカウントへ共有したAMIから復元することで再現環境を構築します。

再現したい環境のAMI作成

あらかじめ、再現したい環境のAMIを作成しておきます。
手順は以下をご参考ください。 https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html

今回はこちらのAMIから再現環境を構築します。

検証用AWSアカウントへのAMI共有設定

今回の肝となるのがこちらの設定です。
必要な情報は検証用AWSアカウントのアカウントIDのみで、そちらを再現したいAMIに対して許可する形になります。

一覧より共有したいAMIを選択し、「Permissions」 タブから「Edit」を選択します。

「AWS Account Number」 に検証用アカウントのアカウントIDを入力し、「Add Permissions」 をクリックします。
それ以外はそのままで問題ありませんが、「This Image is currently:」 が「Private」 となっていることは念の為確認しておきましょう。

リストにアカウントIDが追加されていることを確認し、「Save」をクリックします。

対象AMIの「Permissions」 タブにアカウントIDが表示されています。
これで設定完了です。

共有先の検証用アカウントでAMIが利用できることを確認

最後に、設定した通りにAMIが共有されているかを確認します。

共有されたAMIが利用可能となっています。
また、「Source」には共有元のアカウントIDが表示されています。

再現環境で検証

共有されたAMIから復元し、再現環境を構築できます。
対処案を自由に試し、解決策が確定したら実際の環境に適用しましょう。

まとめ

いかがでしたでしょうか? ちなみに、筆者は定常業務であるライブラリアップデートを行った際、うまく最新バージョンのkernelがインストール・有効化されないといった問題が発生し、ステージング環境ではあるもののその場ではあまり色々と試したくなく、今回の方法で再現環境を用意して色々と検証し、解決することができました。

公式ドキュメント

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/sharingamis-explicit.html