当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 适用于 PowerShell 的 AWS 工具

作者:精品下载站 日期:2024-12-14 13:25:05 浏览:15 分类:玩电脑

适用于 PowerShell 的 AWS 工具


[玩转系统] 适用于 PowerShell 的 AWS 工具

本文将连接名为“AWS”和“PowerShell”的两个点。在五到十分钟内,您将确切地了解如何使用 PowerShell 连接到 AWS 并管理服务。

主题是:

  • 如何安装 AWS PowerShell 模块
  • 如何验证您与 AWS 的 PowerShell 会话
  • 配置 AWS PowerShell 脚本的目标区域
  • 为 AWS 运行一些示例 PowerShell 脚本

我们走吧!

安装 AWS PowerShell 模块

AWS PowerShell 模块可从此处作为独立下载:https://aws.amazon.com/powershell/。由于下载内容包括整个 AWS API 包,其中 AWS Tools for PowerShell 只是其中的子组件,因此我不建议安装此包:

[玩转系统] 适用于 PowerShell 的 AWS 工具

AWS Tools for PowerShell 更简单的安装方法是直接从 PowerShell Gallery 获取它:

Install-Module AWSPowerShell

这是一个相当大的软件包,因此请留出足够的时间进行安装。

安装后,您可以检查该模块在本地是否可用:

PS C:\Skrubbeltrang > Get-Module -ListAvailable *AWS*

Directory: C:\Program Files\WindowsPowerShell\Modules

ModuleType Version    Name                                ExportedCommands

---------- -------    ----                                ----------------

Binary     3.3.522.0  AWSPowerShell                       {Clear-AWSHistory, Set-AWSHistoryConfiguration, Initialize-AWSDefaultConfiguration, Clear-AWSDefaultConfiguration...}

要继续使用 AWS 模块,您可以使用以下命令导入它:

Import-Module AWSPowerShell

您现在已准备好开始在 PowerShell 中执行 AWS 命令。

使用 PowerShell 连接到 AWS

要以编程方式访问 AWS,您需要使用访问密钥进行身份验证。AWS 访问密钥由两部分组成:访问密钥 ID 和秘密访问关键。您可以按照以下步骤在 AWS 控制台中生成它们:

首先登录 IAM 控制台并选择我的安全凭证:

[玩转系统] 适用于 PowerShell 的 AWS 工具

展开访问密钥并生成新的访问密钥:

[玩转系统] 适用于 PowerShell 的 AWS 工具

确保获取 AWS 访问密钥的两个部分:访问密钥 ID 和秘密访问密钥。关闭对话框后您将无法再次访问它!

您现在可以使用访问密钥 ID 和秘密访问密钥通过 Set-AWSCredential 命令在本地计算机上建立配置文件:

Set-AWSCredential -AccessKey AKIAITRASVDO2JZFXHJA -SecretKey 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 -StoreAS default

提示!如果您存储名称为“default”的配置文件,并且未指定其他配置文件,您的 AWS PowerShell 会话将自动使用此配置文件。

设置配置文件后,您可以使用 Get-AWSCredential 命令查看它:

PS C:\Skrubbeltrang> Get-AWSCredential -ListProfileDetail

ProfileName StoreTypeName         ProfileLocation
----------- -------------         ---------------
default     NetSDKCredentialsFile

现在,所有 AWS 命令都将使用默认凭证进行身份验证,除非您使用 ProfileName 参数指定显式配置文件。

您可以使用 Set-AWSCredential 命令在当前会话中激活另一个配置文件,但对于大多数简单的设置,隐式使用默认配置文件就可以正常工作

配置文件凭证存储在 AppData\Local\AWSToolkit\RegisteredAccounts.json 中。这些凭据受 Windows 数据保护 API (DPAPI) 保护,这意味着它们受 Windows 用户凭据的保护并锁定到当前计算机(Windows 用户配置文件所在的计算机)。这有两个重要的后果 - 理解并记住这一点可以在安排 AWS 任务时减少大量故障排除

  • 您必须使用运行它的同一 Windows 帐户生成 AWS 配置文件(要将作业安排为服务,您必须以调度服务器上的服务帐户身份登录才能生成 AWS 配置文件)
  • 您无法将凭据复制到新计算机(要将脚本移动到新计算机,您必须在新计算机上生成新配置文件)

配置您的目标区域

我们开始编写脚本之前的最后一步是配置正确的目标区域。

AWS Tools for PowerShell 必须知道要定位的区域,以避免出现以下错误消息:

Get-EC2Instance : No region specified or obtained from persisted/shell defaults.
At line:1 char:1
+ Get-EC2Instance
+ ~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Amazon.PowerShe...2InstanceCmdlet:GetEC2InstanceCmdlet)
	[Get-EC2Instance], InvalidOperationException
    + FullyQualifiedErrorId : InvalidOperationException,Amazon.PowerShell.Cmdlets.EC2.GetEC2InstanceCmdlet

可以使用 Region 参数为各个命令设置会话的目标区域。

提示!如果您在同一区域中设置了大部分资源,则可以使用 Set-DefaultRegion 命令设置默认区域。

该区域必须设置为第二列中的值之一:

AWS API 区域

US East (Ohio)

美国东部2

US East (N. Virginia)

美国东部1

US West (N. California)

美国西1号

US West (Oregon)

美国西2号

Asia Pacific (Hong Kong)

ap-东-1

Asia Pacific (Mumbai)

ap-南-1

Asia Pacific (Seoul)

ap-东北-2

Asia Pacific (Singapore)

ap-东南-1

Asia Pacific (Sydney)

ap-东南-2

Asia Pacific (Tokyo)

ap-东北-1

Canada (Central)

ca-中央-1

China (Beijing)

cn-north-1

China (Ningxia)

cn-西北-1

EU (Frankfurt)

欧盟中央-1

EU (Ireland)

欧盟-西-1

EU (London)

欧盟-西-2

EU (Paris)

欧盟-西-3

EU (Stockholm)

欧盟-north-1

South America (São Paulo)

萨东-1

AWS GovCloud (US-East)

us-gov-east-1

AWS GovCloud (US)

us-gov-west-1

要将默认区域设置为法兰克福,请使用以下命令:

Set-DefaultAWSRegion eu-central-1

示例 AWS PowerShell 脚本

准备好适用于 PowerShell 的 AWS 工具、成功连接到 AWS 并配置默认区域后,让我们开始一些实际工作。

以下脚本假定您已完成前面部分中的步骤。

使用 PowerShell 列出虚拟机

Get-EC2Instance 是获取有关 EC2 实例的一些信息的命令。每个 EC2 实例对象都有一个 Instances 属性,其中包含有关虚拟机的各种详细信息:

PS C:\Skrubbeltrang> Get-EC2Instance | % { $_.Instances }

InstanceId          InstanceType Platform PrivateIpAddress PublicIpAddress SecurityGroups           SubnetId        VpcId
----------          ------------ -------- ---------------- --------------- --------------           --------        -----
i-0890b237aef43fe98 t2.medium    Windows  172.31.24.41                     {launch-wizard-5}        subnet-658e141e vpc-dd677ab4
i-01093ec32631a7be4 t2.micro     Windows  172.31.24.43                     {Lab, RDP + Debug}       subnet-658e141e vpc-dd677ab4
i-04cb999d8be5e7009 t2.medium    Windows  172.31.24.45                     {Lab, RDP + Debug}       subnet-658e141e vpc-dd677ab4
i-0b5d9c29a93907b19 t2.medium    Windows  172.31.24.47                     {Lab, RDP + Debug}       subnet-658e141e vpc-dd677ab4

您可能会注意到缺少一条重要信息。要获取嵌入在名称标签中的 EC2 实例名称,请使用以下代码行:

Get-EC2Instance | Select-Object -ExpandProperty Instances | ForEach-Object {
  $Name = (Get-EC2Instance $_.InstanceID | Select-Object -ExpandProperty Instances | Select-Object Tag).Tag
  Write-Host $_.InstanceID `t $Name.Value
}

这些行将生成类似于以下内容的输出,您可以在其中看到名称标签引用的 InstanceID:

i-0890b237aef43fe98      ManagementServer
i-01093ec32631a7be4      Window 2008 R2
i-04cb999d8be5e7009      TokenSnatcher_Test
i-0b5d9c29a93907b19      E365M_DC

使用 PowerShell 启动和停止虚拟机

要启动您的 EC2 实例之一,请使用 Start-EC2Instance 命令并提供 EC2 实例的 InstanceID:

Start-EC2Instance 'i-0b5d9c29a93907b19'

要停止同一实例,请使用 Stop-EC2Instance 命令:

Stop-EC2Instance 'i-0b5d9c29a93907b19'

提示!在您的 AWS 资源上智能地使用标签,以便支持使用 PowerShell 脚本轻松定位对象。

使用 PowerShell 更改 EC2 实例类型

要更改虚拟机的硬件大小,您必须更改 EC2 实例的 InstanceType 属性。

这可以通过以下命令来完成:

Edit-EC2InstanceAttribute -InstanceId "i-0b5d9c29a93907b19" -Attribute "instanceType" -Value t2.large

您可以在此处找到可用实例类型的列表。

使用 PowerShell 监控和分析 AWS 性能和利用率指标

您的 AWS 基础设施的性能会被持续记录,并且数据点可通过 CloudWatch 服务获得。绩效指标具有以下保留性:

  • 1 分钟数据点可保留 15 天
  • 5 分钟数据点可保留 63 天
  • 1 小时数据点可保留 455 天

要从 CloudWatch 检索数据点,请使用命令 Get-CWMetricStatistics。它有相当多的参数,说明服务、指标、实例、时间范围、采样间隔、统计信息类型等。

以下脚本将向您显示上周给定 EC2 实例的 CPU 最大利用率和平均利用率,采样间隔为一小时:

$EndDate = Get-Date
$StartDate = $EndDate.AddDays(-7)
$Data = Get-CWMetricStatistics -Namespace "AWS/EC2" -MetricName "CPUUtilization" -Dimension @{"Name"="InstanceId";"Value"="i-0b5d9c29a93907b19"}  -UtcStartTime $StartDate -UtcEndTime $EndDate -Period 3600 -Statistic @("Maximum","Average")
$Data.Datapoints | Sort-Object TimeStamp | ft TimeStamp,Maximum,Average

输出可能类似于以下内容:

Timestamp                      Maximum          Average
---------                      -------          -------
6/18/2019 9:25:00 PM  25.5833333333339 6.16080740020377
6/18/2019 10:25:00 PM 20.7499999999997 6.10591329381619
6/18/2019 11:25:00 PM 19.9166666666664 6.13058102559353
6/19/2019 12:25:00 AM 21.3333333333336 6.17326186286314
6/19/2019 1:25:00 AM   20.916666666667 6.24051318267419
6/19/2019 2:25:00 AM  21.2711864406783 6.28474653453121
6/19/2019 3:25:00 AM  21.3114754098361 6.20924137877804
6/19/2019 4:25:00 AM  34.2500000000003 7.36355198975024
6/19/2019 5:25:00 AM  15.8333333333333 5.50554050507857
6/19/2019 6:25:00 AM  15.9166666666685 5.61130445185392
6/19/2019 7:25:00 AM  15.7500000000012 5.59249444290078
6/19/2019 8:25:00 AM  15.9322033898299  5.5448249513754
6/19/2019 9:25:00 AM  16.1666666666648 5.58090750517117
6/19/2019 10:25:00 AM 15.8333333333333 5.60937220215495
6/19/2019 11:25:00 AM 16.2711864406755 5.63883138834862
6/19/2019 12:25:00 PM 15.7377049180334 5.67969883609644
6/19/2019 1:25:00 PM  16.0833333333327 5.66284731869962
6/19/2019 2:25:00 PM  16.0833333333327 5.72660577012132
6/19/2019 3:25:00 PM  16.4166666666673 5.90379812293539
6/19/2019 4:25:00 PM  16.3559322033892 5.85187860825541
6/19/2019 5:25:00 PM  16.3559322033892 5.87568884875428
6/19/2019 6:25:00 PM  16.1475409836072 5.91534994288534
6/19/2019 7:25:00 PM  16.4999999999994 6.00194768608566
6/19/2019 8:25:00 PM  15.8196721311469 5.72859706399924
6/19/2019 9:25:00 PM  16.0000000000006 5.64684750393632
6/19/2019 10:25:00 PM 16.0000000000006 5.66860933592664
6/19/2019 11:25:00 PM 16.0833333333327 5.63785503689294
6/20/2019 12:25:00 AM 16.6949152542379 5.84837802167267
6/20/2019 1:25:00 AM  16.0833333333327 5.82561166682107
6/20/2019 2:25:00 AM             16.25 5.86659527337838
6/20/2019 3:25:00 AM  16.7796610169485  6.0002469821864
6/20/2019 4:25:00 AM   38.135593220339 7.15940268901859
6/20/2019 5:25:00 AM             16.25 5.92659959556663
6/20/2019 6:25:00 AM  16.0655737704906 5.95945015590751
...

使用 PowerShell 从 CloudWatch 获取和处理性能数据可以帮助您获得标准控制台无法提供的见解。

概括

我希望你能感觉到这些点已经联系在一起,或者至少变得更近了一些。使用 PowerShell 管理 AWS 可以为您节省大量时间(和金钱)。

使用 PowerShell 实现 AWS 自动化可以帮助您标准化新 AWS 资源的配置、在已知空闲期间关闭服务器、分析性能以确定是否需要扩大或缩小规模等等。

充分掌握适用于 PowerShell 的 AWS 工具后,除了缺乏想象力之外,没有什么会阻碍您!

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯