【发布时间】:2021-10-19 11:27:13
【问题描述】:
我有一个 PowerShell 脚本,它在 ValidateService 或 CodeDeploy 中运行。下面是几行代码,我得到错误:
$instancePrivateIp = Invoke-RestMethod http://169.254.169.254/latest/meta-data/local-ipv4
# $instancePrivateIp --> 20.12.xx.yyy
# $instancePrivateIp.GetType() -->
# IsPublic IsSerial Name BaseType
# -------- -------- ---- --------
# True True String System.Object
$uri = "http://{0}:8080/api/2.0/GetVersion" -f $instancePrivateIp
$response = Invoke-WebRequest -URI $uri
$statusCode = $response | Select-Object -Expand StatusCode
...
...
当 CodeDeploy 执行此脚本时,我得到 (401) Unauthorized。以下是完整的消息:
[stdout]Invoke-WebRequest : The remote server returned an error: (401) Unauthorized.
[stdout]At C:\ProgramData\Amazon\CodeDeploy\7f9ade01-914b-44d7-9f7a-030e7aefe75e\d-T4EL
[stdout]8RNVB\deployment-archive\scripts\verify_deployment.ps1:12 char:25
[stdout]+ $response = Invoke-WebRequest -URI $uri
[stdout]+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
[stdout] + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:Htt
[stdout] pWebRequest) [Invoke-WebRequest], WebException
[stdout] + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShe
[stdout] ll.Commands.InvokeWebRequestCommand
而如果我在同一台 EC2 机器上手动执行此脚本,它会给我 200 响应。我尝试添加一些睡眠并点击该 API 15 分钟,但我一直得到 401。谁能帮帮我。
谢谢。
【问题讨论】:
-
你能告诉我们
$instancePrivateIp和$instancePrivateIp.GetType()的值吗? -
@Theo 我现在已经在问题中添加了它。
-
谢谢,我觉得很好。你确定要
http而不是https吗? -
是的,它是
http。
标签: powershell amazon-ec2 aws-code-deploy