Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
处理实例用户数据
与实例用户数据配合使用时,请注意以下内容:
-
用户数据必须采用 base64 编码。Amazon EC2 控制台可以为您执行 base64 编码或接受 base64 编码的输入。
-
用户数据在进行 base64 编码之前的原始格式的大小限制为 16 KB。长度为 n 的字符串在进行 base64 编码之后的大小为 ceil(n/3)*4。
-
在检索用户数据时,必须对其进行 base64 解码。如果您使用实例元数据或控制台检索数据,则会自动对数据进行解码。
-
用户数据会被视为非透明数据;您提供什么数据您就会得到什么数据。由实例对其进行解释。
-
如果您停止实例,修改用户数据,然后启动实例,则在启动实例时,不会自动运行更新后的用户数据。不过,您可以配置设置,这样更新后的用户数据脚本在您启动实例时运行一次,或者在每次重启或启动实例时运行。
启动时指定实例用户数据
您可在启动实例时指定用户数据。您可以指定用户数据在启动时运行一次,或者在每次重新引导或启动实例时运行。有关更多信息,请参阅启动时在 Windows 实例上运行命令。
修改实例用户数据
如果根卷是 EBS 卷,则可以修改处于停止状态的实例的用户数据。有关更多信息,请参阅查看和更新实例用户数据。
检索实例用户数据
本部分中的示例使用 IMDS 的 IPv4 地址:169.254.169.254
。如果要通过 IPv6 地址检索 EC2 实例的实例元数据,请确保启用并改用 IPv6 地址:fd00:ec2::254
。IMDS 的 IPv6 地址与 IMDSv2 命令兼容。IPv6 地址仅可在 基于 Nitro 系统构建的实例 上访问。
要从正在运行的实例中检索用户数据,请使用以下 URI。
http://169.254.169.254/latest/user-data
请求用户数据时,按原样返回数据 (内容类型 application/octet-stream
)。
该示例返回以逗号分隔文本形式提供的用户数据。
- IMDSv2
-
PS C:\>
[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\>
Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/user-data
1234,john,reboot,true | 4512,richard, | 173,,,
- IMDSv1
-
PS C:\>
Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
-Method PUT -Uri http://169.254.169.254/latest/api/token} -Method GET -uri http://169.254.169.254/latest/user-data
1234,john,reboot,true | 4512,richard, | 173,,,
该示例返回以脚本形式提供的用户数据。
- IMDSv2
-
PS C:\>
[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token
PS C:\>
Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -Method GET -Uri http://169.254.169.254/latest/user-data
<powershell>
$file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm")
New-Item $file -ItemType file
</powershell>
<persist>true</persist>
- IMDSv1
-
PS C:\>
Invoke-RestMethod -uri http://169.254.169.254/latest/user-data
<powershell>
$file = $env:SystemRoot + "\Temp\" + (Get-Date).ToString("MM-dd-yy-hh-mm")
New-Item $file -ItemType file
</powershell>
<persist>true</persist>
要从您自己的计算机检索实例的用户数据,请参阅 用户数据和 Tools for Windows PowerShell。