EventBridgeを使用して自動EBSスナップショットを作成してみた。
概要
この記事では、EventBridgeを使用して自動EBSスナップショットを作成してみました。ここでは、既存のEBSボリュームのスナップショットを5分ごとに取得するEventBridgeスケジュールベースのルールを作成しました。
作成するリソース:
- EBS Volume
- IAM Role
- EventBridge rule
やってみた
IAMロールの作成
- EventBridgeがEBSボリュームのスナップショットを取得できるようにするIAMロールを作成しておきます。
- 以下のポリシーを含むjson [policy.json] ファイルを作成しておきます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CloudWatchEventsBuiltInTargetExecutionAccess", "Effect": "Allow", "Action": [ "ec2:CreateSnapshot" ], "Resource": [ "*" ] } ] }
- 次のコマンドを使用して、上記のjsonファイルでIAMポリシーを作成しておきます。
//Create an IAM Policy aws iam create-policy --policy-name EventBridge-Invoke-EBS-Volume --policy-document file://policy.json //Output { "Policy": { "PolicyName": "EventBridge-Invoke-EBS-Volume", "PolicyId": ".............", "Arn": "arn:aws:iam::xxxxxxxxxxxxx:policy/EventBridge-Invoke-EBS-Volume", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2022-07-23T13:50:18+00:00", "UpdateDate": "2022-07-23T13:50:18+00:00" } }
- 次のassumeRoleポリシーを含むjsonファイルを作成しておきます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- 上記のポリシーでIAMロールを作成しておきます。
//create an IAM role aws iam create-role --role-name "EventBridge-EBS-role" --assume-role-policy-document file://assumeRole.json //Output { "Role": { "Path": "/", "RoleName": "EventBridge-EBS-role", "RoleId": "..........", "Arn": "arn:aws:iam::xxxxxxxxxxxx:role/EventBridge-EBS-role", "CreateDate": "2022-07-23T13:53:40+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }
- 上記で作成したIAMポリシーをIAMロールにアタッチしておきます。
//Attach IAM Policy to IAM role. aws iam attach-role-policy \ --role-name EventBridge-EBS-role \ --policy-arn 'arn:aws:iam::xxxxxxxxxxxx:policy/EventBridge-Invoke-EBS-Volume'
EBSボリュームの作成
- EC2 コンソールのナビゲーションペインで [Volumes]を選択しておきます。
- [Create volume]をクリックしておきます。
- 次の設定でEBSボリュームを作成しておきます。
- Volume type : General Purpose SSD(gp2)
- Size : 10GiB
- 他の設定はデフォルトのままにします。
ルールの作成
- EventBridge コンソールのナビゲーションペインで [Rules] を選択しておきます。
- [Create rule]をクリックしておきます。
- ルール名を入力し、[Schedule]としてルールタイプを選択しておきます。
- 次の設定でスケジュールを定義しておきます。
- Schedule pattern : A schedule that runs at a regular rate.
- Rate expression:
- Value :5
- Unit : Minutes
- ターゲットの詳細を入力しておきます。
- Target types: AWS service
- Target : EBS Create Snapshot
- Volume ID: 以前に作成したEBSボリュームのボリュームIDを入力しておきます。
- Execution role: 前の手順で作成したIAMロールを選択しておきます。
- コンソールで、ルールが作成されていることをみることができます。
確認する
- EC2 コンソールのナビゲーションペインで [Snapshots]を選択しておきます。
- ここでは、スナップショットが5分ごとに取得されていることが確認できます。
まとめ
EventBridgeを使用して自動EBSスナップショットを作成してみました。cron式を使用してスケジュールベースのルールを作成することもできます。
Reference :