0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSリソースをTerraform or CloudformationにImportする_フォルダ構成

Posted at

前提

全体の概略はこちらから

このページの概略

Terraform とClloudFormationによるImportで既存のインフラをIaC化する際の設計思想等々を記載します。

Terraform, CloudFormation共通

for_eacの採用

image.png

このように

  • NoProdアカウントにはdev, test, stage環境のリソースがある
  • Prodアカウントにはprod環境のリソースがある
  • 高価なリソースや一部のリソースは
    • NoProdアカウントにdev, test, stage環境を兼ねるリソースがある
    • Prodアカウントにprod環境のリソースがある

といった条件のものもとでIaC化を実施しています。
image.png

加えて、

  • dev, test, stage, prod環境がすべて同じコードで構築される
  • コードを格納しているフォルダとAWSアカウントの対応が分かりやすくする
  • (terraformに限りますが)tfstateファイルとAWSアカウントが1:1対応する

という条件を満たすため、環境ごとにfor_eachによるリソースの繰り返しを用いて対応しています。
image.png

環境の差分はmain.tf(ルートスタック)のみに記載されるようにする

上記に加えて、他プロジェクトへの転用も用意し塗るべく、AWSアカウント後ごとに分けたmain.tfとvariable.tfにのみ環境差分(リソース名, etc)が記載されるように設定しました。
※cloudformationのばあいはルートスタック
image.png

CloudFormationの注意点

一部リソースが対応していない

こちらの公式Doc.でImportしたいリソースが対応しているのか要確認です。

import時のリソースIDの種類と取得

コンソールからimportを行う場合、リソースの識別子を入力する必要があります。必要な識別子はARN, リソース名とまちまちなため要確認です。
さらにSubnetとRouteTableの関連付けIDなどはコンソールに表示されないため、aws-cliで確認が必要になります。
cluster.png

ネスト化された子スタックにImportは不可!

こちらの公式Doc.に以下の記載があり、3階層以上のネスト化されたスタックにImportするのは不可なようです
AWS CloudFormation は、resource import を使用して 1 つのレベルのネスト化のみをサポートします。つまり、子スタックにスタックをインポートしたり、子を持つスタックをインポートしたりすることはできません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?