こんにちは、技術2課 長崎です。
入社してちょうど一か月が経ちました!出社日数は0日です!(このご時世なので、、、)
今回は、CloudFormationのリソースインポート機能を使って、既存のスタックに手動で作成したEC2インスタンスをインポートし、最後にスタックを削除します。 2019年11月に機能アップデートされて、触ってみようと思いながら今になってしまいました。。。
手動で作成した環境をCloudFormationで管理したい!となった時に便利な機能かもしれません。
では、やっていきます。
流れ
1.CloudFormationでEC2インスタンス作成。
↓
2.手動でEC2インスタンスを作成。
↓
3.手動作成のEC2インスタンスをスタックへインポート。
↓
4.スタックを削除し、リソースが全て削除されている事を確認。
手順
1.CloudFormationでEC2インスタンス作成
まず、下記テンプレートでEC2インスタンスを作成します。
※VPC等のNW周りは既に作成済みのものを使用します。
AWSTemplateFormatVersion: "2010-09-09" Description: EC2 template Parameters: KeypairName: Type: String Description: Enter the keypair name Resources: ##EC2 Instance EC201: Type: AWS::EC2::Instance Properties: AvailabilityZone: "ap-northeast-1a" ImageId: "ami-0f310fced6141e627" InstanceType: "t2.micro" KeyName: !Ref KeypairName SecurityGroupIds: - !ImportValue TEST01SGID SubnetId: !ImportValue SUBNETPRIVID Tags: - Key: Name Value: import-kensyo-instance-01
作成完了したものが以下です。
2.EC2インスタンス手動作成
次にEC2インスタンスをマネジメントコンソール上から作成します。
3.スタックへインポート
1.のテンプレートに手動で作成したリソースを追加します。
※インポートする際には、 DeletionPolicy
プロパティを Retain
とする必要があります。
EC202: Type: AWS::EC2::Instance DeletionPolicy: Retain Properties: AvailabilityZone: "ap-northeast-1a" ImageId: "ami-0f310fced6141e627" InstanceType: "t3a.nano" KeyName: !Ref KeypairName SecurityGroupIds: - !ImportValue TEST01SGID SubnetId: !ImportValue SUBNETPRIVID Tags: - Key: Name Value: import-kensyo-instance-02
CloudFormationのマネジメントコンソール上で、スタックアクション → 既存のリソースを使用(リソースをインポート)をクリック。
「次へ」をクリックして行きテンプレートの指定まで完了すると、下記画面が出ますのでインポートするリソースのIDを記載します。 今回はEC2インスタンスなので、instanceIDを記載します。
また、「次へ」をクリックして行き下記画面でインポートするリソース間違いなければ「リソースをインポート」をクリックします。
インポートが完了すると、[IMPORT_COMPLETE]になります。
リソースがインポートされました!
4.スタックの削除
最後にスタックを削除し、最初にCloudFormationで作成したEC2インスタンス及びインポートしたEC2インスタンスが削除される事を確認します。
まず、インポートしたリソースのテンプレートの DeletionPolicy
プロパティを Delete
に変更してスタックを更新します。
EC202: Type: AWS::EC2::Instance DeletionPolicy: Delete Properties: AvailabilityZone: "ap-northeast-1a" ImageId: "ami-0f310fced6141e627" InstanceType: "t3a.nano" KeyName: !Ref KeypairName SecurityGroupIds: - !ImportValue TEST01SGID SubnetId: !ImportValue SUBNETPRIVID Tags: - Key: Name Value: import-kensyo-instance-02
完了したら、スタックを削除します。
作成したリソースが全て削除された事を確認できました!
まとめ
簡単にですが、CloudFormationのリソースインポート機能を確認する事ができました。 私は過去管理が混在しているシステムを構築してしまい、どのリソースがCloudFormation作成でどれが手動作成なのかを運用チームへ引き継ぐのに苦労した記憶があります。あの時この機能があれば良かったのになと思いました。