0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LinuxのEC2のファイルリストアをするCloudFormationテンプレート

Posted at

はじめに

以前、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を指定して実行すると、以下のようなインスタンスが起動します。

image.png

ファイルをサルベージしたあと、CloudFormationスタックを削除すれば、EC2インスタンスもボリュームも削除されます。

おわりに

以前Windows Serverで行っていたものを、Linuxでも作ってみました。
AWSではWindowsよりLinuxの方が使われると思いますので、こちらの方が使われるかもしれません。
この記事がどなたかのお役に立てれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?