はじめに
以前、LinuxのEC2インスタンスのバックアップから、ファイルリストアをする方法を記事にしました。
今回はそれをCFnでテンプレート化しました。
概要
CloudFormation実行時に、リストアしたいファイルを含むスナップショットIDを指定します。
するとリストアしたボリュームをアタッチしたEC2インスタンスが起動します。
EC2インスタンスがあるVPCやサブネット、SSHで接続可能としたセキュリティグループなどは作成済みの想定です。
CloudFormationテンプレート
以前、Windows Server用に作ったテンプレートとほぼ同じ内容になります。
Defaultの部分は、リストア用にあらかじめ作ったリソースを設定している想定です。
create_linuxForFileRestore.yaml
AWSTemplateFormatVersion: '2010-09-09'
Description: CloudFormation template to create a Linux EC2 instance for File Restore
Parameters:
# Restore Configuration
SnapshotId:
Type: String
# EC2 Environment Configuration
VPCID:
Type: AWS::EC2::VPC::Id
Default: "vpc-xxxxxxxxxx"
Description: The VPC ID where the instance will be created
SubnetId:
Type: AWS::EC2::Subnet::Id
Default: "subnet-xxxxxxxxxx"
Description: The Subnet ID where the instance will be created
SecurityGroups:
Type: List<AWS::EC2::SecurityGroup::Id>
Default: "sg-xxxxxxxxxx"
Description: Security Groups for the instance
AvailabilityZone:
Type: String
Default: "xx-xxxxx-xx"
Description: The Availability Zone for the instance
KeyName:
Type: AWS::EC2::KeyPair::KeyName
Default: "xxxxxxxxxx"
Description: The name of the existing EC2 KeyPair to enable RDP access
ImageId:
Type: String
Default: "ami-xxxxxxxxxx"
Description: Windows Server 2022 EC2 image for File Restore
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: "Restore Configuration"
Parameters:
- SnapshotId
- Label:
default: "EC2 Environment Configuration"
Parameters:
- VPCID
- SubnetId
- SecurityGroups
- AvailabilityZone
- KeyName
- ImageId
Resources:
RestoreVolume:
Type: AWS::EC2::Volume
Properties:
AvailabilityZone: !Ref AvailabilityZone
SnapshotId: !Ref SnapshotId
DeletionPolicy: Delete
EC2Instance:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref ImageId
InstanceType: t2.micro
KeyName: !Ref KeyName
AvailabilityZone: !Ref AvailabilityZone
NetworkInterfaces:
- AssociatePublicIpAddress: "true"
DeleteOnTermination: true
DeviceIndex: "0"
SubnetId: !Ref SubnetId
GroupSet: !Ref SecurityGroups
Volumes:
- Device: "/dev/xvdba"
VolumeId: !GetAtt RestoreVolume.VolumeId
UserData:
Fn::Base64: !Sub |
#!/bin/bash
mkdir /data
sudo xfs_admin -U generate /dev/xvdba1
sudo mount /dev/xvdba1 /data
DeletionPolicy: Delete
DependsOn: RestoreVolume
実行
CloudFormationテンプレートを指定し、パラメータにSnapshotIdを指定して実行すると、以下のようなインスタンスが起動します。
ファイルをサルベージしたあと、CloudFormationスタックを削除すれば、EC2インスタンスもボリュームも削除されます。
おわりに
以前Windows Serverで行っていたものを、Linuxでも作ってみました。
AWSではWindowsよりLinuxの方が使われると思いますので、こちらの方が使われるかもしれません。
この記事がどなたかのお役に立てれば幸いです。