From e9b9a150fa9050d280919f109042eb9646b5f8f3 Mon Sep 17 00:00:00 2001 From: David Schumann Date: Tue, 29 Aug 2023 10:32:20 +0200 Subject: [PATCH] fix: ec2 detection not working with imdsv2 --- .../CalicoWindows/libs/calico/calico.psm1 | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) 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")