CloudFormation リソースインポート

比べてわかるIaCの選びかた本を買って積読になっていたので読書(その2)

1.DeletionPolicy

DeletionPolicyのRetain(保持)を使ってみました。Retainの動きとしては、スタックでEC2を作成する時にDeletionPolicyを付けておくと、そのスタックを削除しても、EC2はスキップされて(削除されず)、スタックだけが削除される。

上記の機能を使って以下のことやってみた。EC2にDeletionPolicyを付けてスタックを作成し、その後にスタックを削除。既存リソース(EC2)を使って別のスタックへインポートするとともに Elastic IPアドレスをEC2に割り当てする。
①EC2にDeletionPolicyを付けてスタックを作成
②項番①で作成したスタックを削除
③「既存のリソースを使用(リソースをインポート)」を使用して、別のスタックにインポートするとともに Elastic IPアドレスを割り当て

2.ハマった点

別のスタックにインポートする時に、Elastic IPアドレスを割り当てにハマってしまった。ググっても「Type:AWS :: EC2 :: EIPAssociation」と出てくる。CloudFormation上ではサポートされてないと出てくる。

公式サイトを見ると、インポートをサポートする AWS リソース一覧があったので解決ができた。以下はそのコード。
https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/resource-import-supported-resources.html

AWSTemplateFormatVersion: '2010-09-09'
Mappings: 
 RegionMap: 
   ap-northeast-1:
     hvm: "ami-0620ef8a9087d83df"
Resources: 
 Ec2Instance:
   Type: "AWS::EC2::Instance"
   DeletionPolicy : Retain
   Properties:
     ImageId: !FindInMap [RegionMap, !Ref 'AWS::Region', hvm]
     InstanceType: t2.micro
 IPAssoc:
   Type: "AWS::EC2::EIP"
   DeletionPolicy : Retain
   Properties:
     InstanceId: !Ref Ec2Instance


この記事が気に入ったらサポートをしてみませんか?