https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/resource-import-new-stack.html
https://dev.classmethod.jp/articles/cloudformation-launches-resource-import/
インポートする各リソースには、DeletionPolicy 属性が必要です。
AWS CloudFormation は、テンプレート設定がリソースプロパティの実際の設定と一致しているかどうかをチェックしません。
インポートが完了した後、後続のスタックオペレーションを実行する前に、インポートされたリソースでドリフト検出を実行することをお勧めします。
ドリフト検出により、テンプレート設定が実際の設定と一致することが保証されます。
※既存リソースインポートの場合もテンプレートの作成は必要
-- 1. コマンド等のインストール
-- 1.1 aws cli version 2 インストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
-- 2. RDSインスタンス作成
aws rds create-db-instance \
--db-instance-identifier mysql01 \
--allocated-storage 20 \
--db-instance-class db.t3.micro \
--engine mysql \
--master-username root \
--master-user-password 'password' \
--no-multi-az \
--engine-version 8.0.27 \
--storage-type gp2 \
--no-publicly-accessible \
--no-enable-performance-insights \
--no-auto-minor-version-upgrade
-- 3. テンプレートファイル作成
AWSTemplateFormatVersion: "2010-09-09"
Description: Provision RDS
Resources:
RDS:
Type: AWS::RDS::DBInstance
Properties:
DBInstanceIdentifier: mysql01
Engine: MySQL
EngineVersion: 8.0.27
DBInstanceClass: db.t3.micro
AllocatedStorage: 20
StorageType: gp2
MasterUsername: root
MasterUserPassword: 'password'
PubliclyAccessible: false
MultiAZ: false
AutoMinorVersionUpgrade: false
EnablePerformanceInsights : false
BackupRetentionPeriod: 1
Tags:
- Key: Name
Value: mysql01
DeletionPolicy: Delete
aws cloudformation validate-template \
--template-body file://a.yaml
aws cloudformation get-template-summary \
--template-body file://a.yaml
-- 4. 既存のリソースからのスタックの作成
vim resourcesToImport.txt
[
{
"ResourceType":"AWS::RDS::DBInstance",
"LogicalResourceId":"RDS",
"ResourceIdentifier": {
"DBInstanceIdentifier":"mysql01"
}
}
]
aws cloudformation create-change-set \
--stack-name stack01 \
--change-set-name cs01 \
--change-set-type IMPORT \
--resources-to-import file://resourcesToImport.txt \
--template-body file://a.yaml
aws cloudformation list-change-sets \
--stack-name stack01
aws cloudformation describe-change-set \
--change-set-name cs01 \
--stack-name stack01
aws cloudformation execute-change-set \
--change-set-name cs01 \
--stack-name stack01
-- 5. ドリフト検出
aws cloudformation detect-stack-drift \
--stack-name stack01
aws cloudformation describe-stack-drift-detection-status \
--stack-drift-detection-id 11111111-2222-3333-4444-555555555555
aws cloudformation describe-stack-resource-drifts \
--stack-name stack01
ドリフトが検出された場合、テンプレート設定を修正するか、リソースを直接更新します。
-- 6. スタック一覧
aws cloudformation describe-stacks \
--stack-name stack01
-- 7. スタックリソース一覧
aws cloudformation describe-stack-resources \
--stack-name stack01
-- 8. テンプレート確認
aws cloudformation get-template-summary \
--stack-name stack01
aws cloudformation get-template \
--stack-name stack01
-- 9. クリーンアップ
-- スタック削除
aws cloudformation delete-stack \
--stack-name stack01