System Operations on AWS – Managing Storage (Windows)教程
创建一个名叫Processor的EC2实例,登陆到CommandHost实例,通过AWS CLI对Processor实例的EBS卷做snapshot,设置周期性snapshot的计划任务,
登陆到Processor实例,通过AWS CLI上传并管理日志文件到S3存储桶
1.1 创建一个S3的桶
1.2 创建一个IAM策略
1.3 创建一个IAM角色
1.4 创建一个安全组
1.5 创建一个EC2实例
2.1 连接到CommandHost实例
2.2 创建一个初始化snapshot
2.2.1 获得Processor实例的描述
1
|
aws ec2 describe-instances --filter 'Name=tag:Name,Values=Processor' |
2.2.2 只显示该实例EBS卷的Id
1
|
aws ec2 describe-instances --filter 'Name=tag:Name,Values=Processor' --query 'Reservations[0].Instances[0].BlockDeviceMappings[0].Ebs.{VolumeId:VolumeId}' |
2.2.3 只显示该实例InstanceId
1
|
aws ec2 describe-instances --filters 'Name=tag:Name,Values=Processor' --query 'Reservations[0].Instances[0].InstanceId' |
2.2.4 停止该实例
1
|
aws ec2 stop-instances --instance-ids i-3bc0b3fc |
2.2.5 检查该实例停止状态
1
|
aws ec2 describe-instance-status --instance-id i-3bc0b3fc |
2.2.6 创建一个snapshot
1
|
aws ec2 create-snapshot --volume-id vol-09e651ff |
2.2.7 检查该snapshot状态
1
|
aws ec2 describe-snapshots --snapshot-id snap-fa894fa9 |
2.2.8 重新启动Processor实例
1
|
aws ec2 start-instances --instance-ids i-3bc0b3fc |
2.2.9 检查该实例启动状态
1
|
aws ec2 describe-instance-status --instance-id i-3bc0b3fc |
2.3 创建一个周期性snapshot的计划任务
2.3.1 检查当前Region
1
|
type C:\Users\Administrator\.aws\config |
2.3.2 创建用于计划任务的脚本文件c:\temp\backup.bat,内容如下:
1
|
aws ec2 create-snapshot --volume-id vol-09e651ff --region us-west-2 >c:\temp\output.txt 2>&1 |
2.3.3 创建执行计划任务的用户
1
|
net user backupuser passw0rd! /ADD |
2.3.4 给该用户赋予执行脚本的权限
1
|
c:\temp\ntrights +R SeBatchLogonRight -u backupuser |
2.3.5 创建一个计划任务
1
|
schtasks /create /sc MINUTE /mo 1 /tn "Volume Backup Task" /ru backupuser /rp passw0rd! /tr c:\temp\backup.bat |
2.3.6 等待几分钟,检查新的snapshots是否被创建
1
|
aws ec2 describe-snapshots --filters "Name=volume-id,Values=vol-09e651ff" |
2.4 保留最后两个snapshots
2.4.1 删除之前创建的计划任务
1
|
schtasks /Delete /tn "Volume Backup Task" |
2.4.2 检查当前所有snapshots的数量
1
|
aws ec2 describe-snapshots --filters "Name=volume-id,Values=vol-09e651ff" --query 'Snapshots[*].SnapshotId' |
2.4.3 执行snapshotter.ps1
1
|
c:\temp\snapshotter.ps1 us-west-2 |
2.4.4 再次检查当前snapshots的数量
1
|
aws ec2 describe-snapshots --filters "Name=volume-id,Values=vol-09e651ff" --query 'Snapshots[*].SnapshotId' |
3.1 移动日志文件到S3
3.1.1 登录到Processor实例
3.1.2 配置AWS CLI
1
2
3
4
5
|
PS C:\Users\Administrator> aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: us-west-2 Default output format [None]: |
3.1.3 下载loggen.ps1
1
|
(New-Object System.Net.WebClient).DownloadFile( "https://d2lrzjb0vjvpn5.cloudfront.net/sys-ops/v2.4/lab-3-storage-windows/static/loggen.ps1" , "c:\temp\loggen.ps1" ) |
3.2.1 运行loggen.ps1
1
|
c:\temp\loggen.ps1 |
3.2.2 打开一个新的PowerShell窗口,并切换到c:\temp
1
|
cd \temp |
3.2.3 移动一个log文件到之前创建的S3存储桶中
1
|
aws s3 mv timestamp.log "s3://s3-bucket-edward/logfiles/timestamp-$(Get-Date -Format 'M-d-yyyy-h:m:s')" |
3.2.4 再次执行该命令
1
|
aws s3 mv timestamp.log "s3://s3-bucket-edward/logfiles/timestamp-$(Get-Date -Format 'M-d-yyyy-h:m:s')" |
3.2.5 列出该S3存储桶里的内容
1
|
aws s3 ls s3: //s3-bucket-edward |
3.2.6 列出所有以/logfiles/打头的对象
1
|
aws s3 ls s3: //s3-bucket-edward/logfiles/ |
3.2.7 移动文件到/logfiles/archive/位置
1
|
aws s3 mv s3: //s3-bucket-edward/logfiles/<file-name> s3://s3-bucket-edward/logfiles/archive/<file-name> |
3.2.8 检查是否移动到该位置
1
|
aws s3 ls s3: //s3-bucket-edward/logfiles/ |
4 同步文件(从Processor实例到S3存储桶)
4.1 下载sample文件,并解压缩
1
|
(New-Object System.Net.WebClient).DownloadFile( "https://d2lrzjb0vjvpn5.cloudfront.net/sys-ops/v2.4/lab-3-storage-windows/static/files.zip" , "c:\temp\files.zip" ) |
4.2 在该存储桶上开启版本控制
1
|
aws s3api put-bucket-versioning --bucket s3-bucket-edward --versioning-configuration Status=Enabled |
4.3 同步文件到S3存储桶
1
|
aws s3 sync files s3: //s3-bucket-edward/files/ |
4.4 删除file1.txt
1
|
del files\file1.txt |
4.5 同步文件,删除掉源目录中没有的文件
1
|
aws s3 sync files s3: //s3-bucket-edward/files/ --delete |
4.6 确认文件已从S3存储桶中删除
1
|
aws s3 ls s3: //s3-bucket-edward/files/ |
4.7 列出S3存储桶中file1.txt的各个版本
1
|
aws s3api list- object -versions --bucket s3-bucket-edward --prefix files/file1.txt |
4.8 还原上个版本中的file1.txt到本地系统
1
|
aws s3api get - object --bucket s3-bucket-edward --key files/file1.txt --version-id <version-id> files/file1.txt |
4.9 确认文件已还原到本地
1
|
dir files |
4.10 重新同步文件到S3存储桶
1
|
aws s3 sync files s3: //s3-bucket-edward/files/ |
4.11 确认该文件已经被还原到S3存储桶
1
|
aws s3 ls s3: //s3-bucket-edward/files/ |