AWSのリバースエンジニアリングをAWSエキスパートが解説!CloudFormation スタックへの既存リソースインポートテクニックを紹介😎

AWSのリバースエンジニアリングをAWSエキスパートが解説!CloudFormation スタックへの既存リソースインポートテクニックを紹介😎

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

こんにちは!

今回は、 AWS CloudFormation の新機能として追加された、スタックへの既存リソースのインポート方法について紹介します。

既存の AWS 環境のリバースエンジニアリング作業に有用なテクニックですので、ぜひ最後までご覧ください。

想定する読者

  • AWS CloudFormation に既存リソースをインポートする方法を知りたいヒト
  • 手動で作成したリソースをAWS CloudFormation で管理したいヒト

はじめに

2019年11月15日、AWS リソースを自動で構築するサービス「AWS CloudFormation」で、既存リソースをインポートできる新機能が搭載されたとのアナウンスがありました。(参照:新機能 – CloudFormation スタックへの既存リソースのインポート | Amazon Web Services ブログ

このアップデートにより、CloudFormation 以外で作成したリソース(例えば管理コンソールから手動で構築したリソース)であっても、CloudFormation 管理へのスムーズな移行が可能になります。

本記事では、そんな CloudFormation の新機能を利用し、CloudFormation スタックに既存リソースをインポートするテクニックを紹介します。

AWS CloudFormation とは

CloudFormation とは、YAML や JSON などのフォーマットで、AWS リソースを自動で構築できるサービスです。AWSの代表的な Code As Infla ツールですね。

リソース情報を CloudFormation テンプレートに記述することで、それらをひとつの CloudFormation スタック(タスクのような概念)として一括管理できるのがメリットです。リソースを管理コンソールから構築するなどの作業が不要となり再現性の高いインフラ構築を可能にし、ステージング等のマルチ環境の構築、クロスアカウント運用などで力を発揮します。

AWS CloudFormation の特徴

  • AWS リソースを事前定義したコンフィグファイルに則り自動構築
  • マルチアカウント・マルチリージョン管理が効率的に可能
  • AWS リソースだけでなく、サードパーティーやプライベートのリソース管理も可能(一部制限有)

AWS CloudFormation の既存リソースインポート機能

先述の通り、CloudFormation では、アップデートにより既存リソースをスタックにインポートできるようになりました。アップデートによってできるようになった事柄について、Amazon は次の内容をあげています。

・既存リソースをインポートしながら新規のスタックを作成する。
・すでに作成済みのスタックに既存リソースをインポートする。
・スタック間でリソースの移行をする。
・検出されたドリフトを修復する。
・親スタックから子スタックを削除した後、別の親からインポートし直すことで、 ネストされたスタックのリファクタリングを行う。

新機能 – CloudFormation スタックへの既存リソースのインポート | Amazon Web Services ブログ

CloudFormation では、緊急の場合などに CloudFormation を使わずに AWS Command Line Interface(CLI)や手動でリソースを作成せざるを得ないことがあります。アップデート前では、AWS CloudFormation 外で作成したリソースを AWS CloudFormation の管理下に置く場合、リソースの再作成が必要でした。

今回のアップデートにより、外部リソースの削除・再作成をしなくても、既存のリソースを AWS CloudFormation 管理に取り込むことができるようになりました

AWS CloudFormation を操作

ここからは、実際に CloudFormation を操作し、既存リソースをスタックにインポートする方法を紹介します。

まずは CloudFormation のコンソール画面にログインします。

出典:AWS CloudFormation

左メニューの「スタック」を選択し、スタックの管理画面に移ります。

画面右の「スタックの作成」>「既存のリソースを使用(リソースをインポート)」を選択すると、既存のリソースを新規の CloudFormation スタックへインポートできます。

出典:AWS CloudFormation

「既存のリソースを使用(リソースをインポート)」 を選択すると、次の画面に移ります。

下記画面に表示された文に目を通したら、「次へ」ボタンを選択します。

出典:AWS CloudFormation

スタックのテンプレートを選択します。テンプレートソースは、以下の2通りの方法で指定できます。

  • Amazon S3 URL を記入
  • テンプレートファイルをアップロード

今回は、Amazon S3 URL を記入する方法で指定しました。入力が完了したら、「次へ」を選択します。

出典:AWS CloudFormation

次に、インポートするリソースの識別子の値を入力します。入力が終わったら「次へ」ボタンを選択します。

出典:AWS CloudFormation

スタックの詳細を指定します。

スタックの名前を指定し、パラメータを確認したら、「次へ」ボタンを選択してください。

出典:AWS CloudFormation

最後に「概要をインポート」画面で、スタックのテンプレートやリソースなどを確認します。修正したい箇所があれば、右上の「編集」ボタンから内容を変更してください。

問題がなければ、画面最下部にある「スタックを作成」ボタンを選択します。

出典:AWS CloudFormation

正常に処理が完了すれば、既存リソースを含んだスタックが新たに作成されます。

出典:AWS CloudFormation

まとめ

以上、 CloudFormation スタックへの既存リソースのインポート方法について紹介しました。効率的なリソース管理を実現できる上に操作方法も簡単ですので、ぜひ積極的に取り入れてみてください。

AWS の開発引き継ぎ・運用等は、お気軽にお問い合わせください。