Powershell AWS 自动化管理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Powershell AWS 自动化管理相关的知识,希望对你有一定的参考价值。

昨天学习了基本的准备工作,利用PowerShell成功的链接了AWS。今天来看看如何使用PowerShell来管理AWS的服务。


EC2,S3,VPC,Security Group,RDS等等这些AWS最早提供的服务可以说是他最核心的骨架,豆子的目标是最后用PowerShell实现一个高可用的博客,比如这样的http://beanxyz.blog.51cto.com/5570417/1536312


来看看如何用PowerShell管理EC2相关的服务。EC2是AWS的虚拟机服务,当我们手动创建虚拟机的时候,我们需要使用模板(AMI文件),需要配置加密的key pair,需要配置安全组,VPC(如果不使用默认的话), 还需要给安全组配置对应的防火墙端口。


首先来看看EC2有多少条相关的命令,目前一共207个。

get-command *ec2* -Module awspowershell | measure


技术分享


要连接EC2的虚拟机,我们需要生成一个Pem文件,如何操作呢?

$Keypair=New-EC2KeyPair -KeyName mykeypair
$Keypair | gm


技术分享

查看一下私钥

$Keypair | fl

技术分享


导出为pem文件

$Keypair.KeyMaterial | Out-File -Encoding ascii mykeypair.pem

确认一下,可以看见我刚刚创建的已经在了

get-ec2keypair

技术分享



接下来的准备工作需要创建一个安全组,并配置相关的防火墙策略。


安全组的创建如下所示,这里我是直接在默认的Classic里面创建的,如果需要在EC2-VPC里面创建,需要指定对应的VPC的ID。


#Create Security Group and rule
New-EC2SecurityGroup -GroupName MyTestSecurityGroup -Description "EC2-Classic from PowerShell"

来确认一下,创建成功。可以看见InPermissions后面的{}是空的,这表明我们还没有配置任何的入站端口。

Get-EC2SecurityGroup -GroupName MyTestSecurityGroup

技术分享

登录AWS管理界面,确认真的是已经创建了。


技术分享


下面看看怎么配置对应的端口。这里我打算添加两条规则,一个允许SSH访问,一个允许RDP访问


$ip1=new-object Amazon.EC2.Model.IpPermission
$ip1.IpProtocol="tcp"
$ip1.FromPort=22
$ip1.ToPort="22"
$ip1.IpRange="0.0.0.0/0"
$ip2=New-Object Amazon.EC2.Model.IpPermission
$ip2.IpProtocol="tcp"
$ip2.FromPort=3389
$ip2.ToPort=3389
$ip2.IpRange.Add("0.0.0.0/0")
Grant-EC2SecurityGroupIngress -GroupName MyTestSecurityGroup -IpPermission @($ip1,$ip2)


执行命令以后,刷新界面发现已经更新了

技术分享

如果想撤销对应的规则,可以通过revoke来执行

Revoke-EC2SecurityGroupIngress -GroupName MyTestSecurityGroup -IpPermission @($ip1,$ip2)


接下来看看模板文件。AMI文件都有一个唯一的ID可以调用

技术分享

知道这个ID了,就可以找到对应的镜像


Get-EC2Image -ImageId ami-dc361ebf

技术分享



不过这个ID会根据版本更新不停的变化,怎么根据我们的需求来找呢?


比如说可以通过 Amazon.EC2.Mode.Filter这个对象来进行过滤

#Find an Image

Get-EC2Image -Owner amazon,self
$platform_values = New-Object ‘collections.generic.list[string]‘
$platform_values.add("windows")
$filter_platform = New-Object Amazon.EC2.Model.Filter -Property @{Name = "platform"; Values = $platform_values}
Get-EC2Image -Owner amazon, self -Filter $filter_platform


技术分享

如果直接用名字查询,不加参数出来的就都是windows系统

Get-EC2ImageByName

技术分享


当然也可以指定具体的名字

Get-EC2ImageByName -Name *ami*

技术分享


最后,我们看看实际的EC2 如何创建。


和GUI的配置一样,命令行里面指定私钥keypair,安全组,模板和虚拟机类型就行了

#Create EC2 instance
New-EC2Instance -ImageId ami-dc361ebf -MinCount 1 -MaxCount 1 -KeyName mykeypair -SecurityGroup MyTestSecurityGroup -InstanceType t2.micro


技术分享

通过reservationid来过滤确认一下

Get-EC2Instance -Filter (new-object Amazon.EC2.Model.Filter -Property @{Name="reservation-id";values="r-069ce2e012d6adf7e"}) | select -ExpandProperty instances

技术分享


在网页上也确认一下,成功创建。

技术分享

如果需要删除实例,可以执行


Remove-EC2Instance -InstanceId i-0bb1bc83486b933b1



这样一个基本的EC2操作就完成了,明天看看S3的相关配置。

本文出自 “麻婆豆腐” 博客,请务必保留此出处http://beanxyz.blog.51cto.com/5570417/1794196

以上是关于Powershell AWS 自动化管理的主要内容,如果未能解决你的问题,请参考以下文章

PowerShell 自动化管理 AWS- VPC

PowerShell AWS 自动化管理

Powershell AWS 自动化管理- ELB and Auto Scaling

AWS Lambda 自动化和 PowerShell

Powershell AWS 自动化管理 (11) - 创建一个高可用的WordPress博客(中)

PowerShell官方文档