Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

管理 Windows 实例配置

利用 Amazon EC2 Systems Manager,您可以管理运行中的 Windows 实例的配置。您可以创建描述配置任务 (例如,安装软件) 的 Systems Manager 文档,然后将该文档与一个或多个运行中的 Windows 实例关联。实例上的配置代理负责处理文档并按指定方式配置实例。

从实例解除 Systems Manager 文档的关联不会更改实例的配置。要在解除文档的关联后更改实例的配置,您必须创建描述配置任务 (例如,卸载软件) 的新文档,然后将该文档与实例关联。

若要仅在实例启动时运行脚本,请考虑改用用户数据执行。有关更多信息,请参阅 用户数据执行

有关更复杂的自动方案,请考虑改用 AWS CloudFormation 或 AWS OpsWorks。有关更多信息,请参阅 AWS CloudFormation 用户指南AWS OpsWorks 用户指南

先决条件

  • EC2Config 服务可处理 Systems Manager 文档并按照指定配置该实例。将最新版本的 EC2Config 服务下载并安装到要配置的每台服务器上。有关更多信息,请参阅 安装最新版的 EC2Config

  • SSM Config 和 Run Command 具有相同的限制、先决条件和 IAM 权限要求。按照 Amazon EC2 Systems Manager 用户指南 中的设置 Systems Manager 中所述准备您的环境。

限制

  • 仅 Windows 实例支持 SSM Config。

  • 在以下区域提供 SSM Config。

向 IAM 用户授予对 SSM Config 的访问权限

由于 EC2Config 服务在本地系统账户中运行,因此 Systems Manager 文档通过 Windows 实例上的管理权限运行。如果用户有权执行任何预定义的 Systems Manager 文档,则该用户也具有实例的管理员访问权。合理地委派对 SSM Config 和 EC2 Run Command 的访问权限。如果您创建自己的 Systems Manager 文档,这一点会变得非常重要。Amazon Web Services 不提供有关如何创建安全 Systems Manager 文档的指导。您自行承担创建 Systems Manager 文档和委派对 Run Command 操作的访问权限的风险。作为最佳安全做法,建议您为安全性较低的任务创建低级别 Systems Manager 文档,并向非管理员委派访问权限。

创建 JSON 文件

打开文本编辑器,添加 Systems Manager 文档的 JSON 内容,然后以 .json 为文件扩展名保存该文件。

有关 Systems Manager 文档的 JSON 结构的更多信息,请参阅 Amazon EC2 Systems Manager 用户指南 中的 Systems Manager 文档

示例:安装应用程序

以下 JSON 描述了要安装在实例上的应用程序。对于每个应用程序,使用 source 指定其 .msi 文件的 URL。

Copy
{ "schemaVersion": "1.0", "description": "Example instance configuration tasks", "runtimeConfig": { "aws:applications": { "properties": [ { "action": "Install", "source": "http://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-5.6.22.0.msi" }, { "action": "Install", "source": "https://www.python.org/ftp/python/2.7.9/python-2.7.9.msi" }, { "action": "Install", "source": "http://download.winzip.com/winzip190-64.msi", "parameters": "INSTALLDIR=\"C:\\Program Files\\WinZipXX\"" } ] } } }

示例:安装 PowerShell 模块并运行命令

以下 JSON 描述了要安装在您的实例上的 PowerShell 模块。对于每个模块,source 指定该模块的 URL,runCommand 指定要运行的 PowerShell 命令。

Copy
{ "schemaVersion": "1.0", "description": "Example instance configuration tasks", "runtimeConfig": { "aws:psModule": { "properties": [ { "description": "Example to install windows update PS module and install all .NET 4 updates.", "source": "https://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc/file/41459/43/PSWindowsUpdate.zip", "runCommand": "Get-WUInstall -ServiceID 9482f4b4-e343-43b6-b170-9a65bc822c77 -Title \".NET Framework 4\" -AcceptAll" }, { "description": "Example to install chocolatey package provider and use it to install 7zip and GoogleChrome.", "runCommand": [ "$url = 'https://chocolatey.org/install.ps1'" , "iex ((new-object net.webclient).DownloadString($url))", "choco install -y 7zip", "choco install -y GoogleChrome" ] } ] } } }

示例:加入 AWS 域

有关使用 SSM Config 将 Windows 实例加入目录的信息,请参阅将 Windows 实例加入 AWS Directory Service 域

示例:将数据发送到 Amazon CloudWatch

有关使用 SSM Config 将数据发送到 Amazon CloudWatch 的信息,请参阅使用 Systems Manager State Manager

创建 Systems Manager 文档

要创建文档,请指定您创建的 JSON 文件。

Windows PowerShell 工具

使用下面的 New-SSMDocument 命令为文档命名并使其可用。

Copy
PS C:\> $contents = Get-Content -Raw my-custom-config.json | Out-String PS C:\> New-SSMDocument -Content $contents -Name "my-custom-config" -DocumentType "Command"

AWS CLI

使用下面的 create-document 命令为文档命名并使其可用。

Copy
aws ssm create-document --content file://my-custom-config.json --name "my-custom-config"

将 Systems Manager 文档与实例关联

将您创建的文档与 Windows 实例相关联。一个实例一次只能与一个文档关联。如果将一个文档与一个已有关联文档的实例关联,新文档会替换现有文档。

Windows PowerShell 工具

使用下面的 New-SSMAssociation 命令可将您的文档与 Windows 实例关联。

Copy
PS C:\> New-SSMAssociation -InstanceId i-1a2b3c4d -Name "my-custom-config"

AWS CLI

使用下面的 create-association 命令可将您的文档与 Windows 实例关联。

Copy
aws ssm create-association --instance-id i-1a2b3c4d --name "my-custom-config"

手动应用配置

如果需要确保实例按其关联的 Systems Manager 文档中的指定内容进行配置,可在实例上运行 ec2config-cli 工具,如下所示:

Copy
ec2config-cli --apply-configuration

请注意,您可以使用 Windows 任务计划程序定期运行 ec2config-cli,以确保实例保持其配置。

通过在 C:\Program Files\Amazon\Ec2ConfigService 目录中检查 ec2config-cli 可验证其是否已安装。如果没有 ec2config-cli,通过安装最新版本的 EC2Config 服务,您就可以获得它。有关更多信息,请参阅 安装最新版的 EC2Config

解除 Systems Manager 文档与实例的关联

Systems Manager 文档在创建后不能更新。要为您的实例关联不同的文档,可以删除现有关联,然后将新文档与实例关联。请注意,终止实例不会自动解除关联文档的关联。

Windows PowerShell 工具

使用下面的 Remove-SSMAssociation 命令可解除文档与 Windows 实例的关联。

Copy
PS C:\> Remove-SSMAssociation -InstanceId i-1a2b3c4d -Name "my-custom-config"

AWS CLI

使用下面的 delete-association 命令可解除文档与 Windows 实例的关联。

Copy
aws ssm delete-association --instance-id i-1a2b3c4d --name "my-custom-config"

删除 Systems Manager 文档

用完 Systems Manager 文档后可以将其删除。必须先解除该文档与所关联的任意实例的关联,然后才能删除该文档。

Windows PowerShell 工具

使用下面的 Remove-SSMDocument 命令可删除您的文档。

Copy
PS C:\> Remove-SSMDocument -Name "my-custom-config"

AWS CLI

使用下面的 delete-document 命令可删除您的文档。

Copy
aws ssm delete-document --name "my-custom-config"

故障排除

以下信息可帮助您通过 SSM Config 解决问题。

Log4net 日志记录

EC2Config 服务使用 Apache log4net 将信息记录在以下文件中。这些文件中的信息可帮助您排查问题。

  • C:\Windows\System32\winevt\Logs\EC2ConfigService.evtx

  • C:\Program Files\Amazon\Ec2ConfigService\Logs

  • C:\Windows\System32\config\systemprofile\AppData\Local\Amazon\Ec2Config\Logs\Ec2ConfigPluginFramework.txt

您可通过更新 log4net.config 文件来启用延长日志记录。默认情况下,该配置文件位于 C:\Program Files\Amazon\Ec2ConfigService\ 目录中。

有关更多信息,请参阅 Apache log4net 手册 - 配置。有关 log4net 配置的示例,请参阅 Apache log4net 配置示例

Windows 事件日志

EC2Config 服务还会在名为 Ec2ConfigService 的 Windows 事件日志中记录信息。

您可通过从提升的 PowerShell 提示符下执行以下命令来将此事件日志中的信息提取到日志文件:

Copy
PS C:\> Get-EventLog Ec2ConfigService | Sort-Object Index | Format-Table Message -AutoSize -Wrap | Out-File -Width 240 "C:\Program Files\Amazon\Ec2ConfigService\Logs\PluginFramework.txt"

如果要在启用调试的情况下将 Windows 事件记录到日志文件,您必须更新 log4net.config 文件 root 元素,如下所示:

<root> 
    <level value="DEBUG"/>
    <appender-ref ref="RollingFileAppender"/> 
    <appender-ref ref="EventLogAppender"/> 
</root>

EC2 控制台系统日志

EC2 控制台系统日志中的以下输出表示 EC2Config 服务无法连接到 SSM Config 终端节点。这些问题指明了与授权和 IAM 角色权限相关的问题,如以下输出消息中所指出:

Info: EC2Config configuration status:3;region:us-east-1;iam:0;authz:0 The output can
help you troubleshoot the cause of the failure: configuration status:3: The calls to SSM
failed. Ensure that you have granted the required IAM permissions to IAM users. SSM also
requires an Internet connection from your instance.
iam:0: The instance was not launched with an IAM role. You cannot download documents
if there is no IAM role/credentials associated with the instance.
authz:0: The instance is not authorized to access SSM. This happens if you launched
the instance without an IAM role, or if the role associated with your instance does not
have the necessary permissions to access the service.

可以使用 describe-association (AWS CLI) 命令或 Get-SSMAssociation (Windows PowerShell 工具) 命令检查关联的状态,从而排查文档执行失败的特定原因。