diff --git a/node/windows-packaging/CalicoWindows/libs/calico/calico.psm1 b/node/windows-packaging/CalicoWindows/libs/calico/calico.psm1 index 54062754ea8..5d1a3640461 100644 --- a/node/windows-packaging/CalicoWindows/libs/calico/calico.psm1 +++ b/node/windows-packaging/CalicoWindows/libs/calico/calico.psm1 @@ -477,9 +477,20 @@ function Get-PlatformType() # EC2 $restError = $null Try { - $awsNodeName=Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/local-hostname -ErrorAction Ignore + $awsNodeName = Invoke-RestMethod -uri http://169.254.169.254/latest/meta-data/local-hostname -ErrorAction Ignore } Catch { - $restError = $_ + if ($_.Exception.Response.StatusCode.value__ -eq 401) { + # IMDSv2 + Try { + $token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/api/token -ErrorAction Ignore + $awsNodeName = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token" = $token} -uri http://169.254.169.254/latest/meta-data/local-hostname -ErrorAction Ignore + } + Catch { + $restError = $_ + } + } else { + $restError = $_ + } } if ($restError -eq $null) { return ("ec2")