{EC2}Amazon Data Lifecycle Manager

Data Lifecycle Managerの対象
・EBSスナップショットの作成、保持、削除
・AMIの作成、保持、削除
・クロスアカウントのスナップショットコピー


AMIライフサイクルポリシーの動作を確認

 

-- 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. EC2インスタンス作成
aws ec2 run-instances  \
--image-id ami-0404778e217f54308 \
--instance-type t3.nano \
--key-name key1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=key1,Value=val1}]' 

 

-- 3. ロール作成

aws iam list-roles | grep AWSDataLifecycleManagerDefaultRoleForAMIManagement

aws dlm create-default-role \
--resource-type image


-- 4. ライフサイクルポリシーの作成


vim policyDetails.json
{
    "PolicyType": "IMAGE_MANAGEMENT",
    "ResourceTypes": [
        "INSTANCE"
    ],
    "TargetTags": [{
        "Key": "key1",
        "Value": "val1"
    }],
    "Schedules": [{
            "Name": "schedule01",
            "TagsToAdd": [{
                "Key": "key2",
                "Value": "val2"
            }],
            "CreateRule": {
                "Interval": 12,
                "IntervalUnit": "HOURS",
                "Times": [
                    "18:00"
                ]
            },
            "RetainRule":{
                "Count" : 1
            },
            "CopyTags": true
        }
    ],
    "Parameters" : {
        "NoReboot":true
    }
}

aws dlm create-lifecycle-policy \
--description dlm01 \
--state ENABLED \
--execution-role-arn arn:aws:iam::999999999999:role/AWSDataLifecycleManagerDefaultRoleForAMIManagement \
--policy-details file://policyDetails.json


-- 5. ライフサイクルポリシーの表示
aws dlm get-lifecycle-policies

aws dlm get-lifecycle-policy --policy-id policy-11111111111111111


1日程度動作確認
AMIとEBSスナップショットが最新の1個だけ残っていればOK

-- 6. クリーンアップ

-- ライフサイクルポリシーの削除
aws dlm get-lifecycle-policies

aws dlm delete-lifecycle-policy --policy-id policy-11111111111111111

-- ロールの削除
aws iam list-roles | grep AWSDataLifecycleManagerDefaultRoleForAMIManagement

aws iam detach-role-policy \
--role-name AWSDataLifecycleManagerDefaultRoleForAMIManagement \
--policy-arn arn:aws:iam::aws:policy/service-role/AWSDataLifecycleManagerServiceRoleForAMIManagement

aws iam delete-role --role-name AWSDataLifecycleManagerDefaultRoleForAMIManagement


-- EC2インスタンスの削除
aws ec2 describe-instances

aws ec2 terminate-instances \
--instance-ids i-11111111111111111


-- AMIの削除

aws ec2 describe-images --owners self

aws ec2 deregister-image  \
--image-id ami-11111111111111111


-- EBSスナップショットの削除
aws ec2 describe-snapshots --owner-ids self

aws ec2 delete-snapshot \
--snapshot-id snap-11111111111111111