概要
この記事では、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 :