Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么通过API在windows容器/任务中获取AWS凭据会超时?_C#_.net_Amazon Web Services_Containers_Credentials - Fatal编程技术网

C# 为什么通过API在windows容器/任务中获取AWS凭据会超时?

C# 为什么通过API在windows容器/任务中获取AWS凭据会超时?,c#,.net,amazon-web-services,containers,credentials,C#,.net,Amazon Web Services,Containers,Credentials,根据文档,您应该能够使用以下url从正在运行的任务(容器)中获取分配给taskdefinition的角色的凭据:“AWS_容器_凭据_相对_URI”,其中AWS_容器_凭据_相对_URI解析为url的一部分 在我的日志文件中,我可以看到它解析为: 但是调用API会导致超时。端点未侦听的原因可能是什么 容器正在运行windows-server-2019的ECS_优化映像 private static async Task<string> GetCredentials(Environm

根据文档,您应该能够使用以下url从正在运行的任务(容器)中获取分配给taskdefinition的角色的凭据:“AWS_容器_凭据_相对_URI”,其中AWS_容器_凭据_相对_URI解析为url的一部分

在我的日志文件中,我可以看到它解析为:

但是调用API会导致超时。端点未侦听的原因可能是什么

容器正在运行windows-server-2019的ECS_优化映像

private static async Task<string> GetCredentials(EnvironmentOptions opts)
{
    try
    {
        using (var httpClient = new HttpClient())
        {
                using (var request = new HttpRequestMessage(new HttpMethod("GET"), $"http://169.254.170.2{opts.CredentailsUrl}"))
                {
                    var response = await httpClient.SendAsync(request);
                    return await response.Content.ReadAsStringAsync();
                }
            }
        }
        catch (Exception ex)
        {
            return $"{ex.Message} {ex.StackTrace}";
        }
    }
在容器实例中,我从powershell运行以下两个命令:

Import-Module ECSTools
Initialize-ECSAgent -Cluster 'txp-dev-windows' -EnableTaskIAMRole -Version "latest"
这导致最后一行实际上从未继续(=挂起)

然后我在te AWS文档中发现了这一点:任务容器引导脚本的IAM角色 在容器可以访问容器实例上的凭据代理以获取凭据之前,必须使用所需的网络命令引导容器。

因此,我在容器程序启动时添加了引导脚本:

                string script = @"
$gateway = (Get-NetRoute | Where { $_.DestinationPrefix -eq '0.0.0.0/0' } | Sort-Object RouteMetric | Select NextHop).NextHop
$ifIndex = (Get-NetAdapter -InterfaceDescription 'Hyper-V Virtual Ethernet*' | Sort-Object | Select ifIndex).ifIndex
New-NetRoute -DestinationPrefix 169.254.170.2/32 -InterfaceIndex $ifIndex -NextHop $gateway
";
                using (PowerShell PowerShellInstance = PowerShell.Create())
                {
                    PowerShellInstance.AddScript(script);
                    PowerShellInstance.Invoke();
                }

但这并没有什么不同。

失败的确切原因尚不清楚。ECS集群的EC2实例配置不正确,这一定与此有关。它是手动创建的,初始化数据的powershell脚本将其连接到(空)群集。我必须这样做,因为集群创建向导只允许使用Server2016 AMI。但令我惊讶的是,今天它还允许使用服务器。使用向导执行此操作。容器代码开始工作。

如果您在容器中手动运行,如docker exec,并尝试调用webrequest凭据URL,会发生什么情况?此外,请检查是否有更新版本的ECS代理在主机实例上运行,因为有些版本已经过buggy@NHol不确定如何调用webrequest。如果我在PS上对实例执行类似“调用webrequest”的操作,我会发现:无法连接到远程服务器,根据AWS网站:“代理更新不适用于Windows容器实例”@Nhol。从容器实例中,我列出了正在运行的容器。这显示了要使用的url。这就是命令和结果:PS C:\Users\Administrator>docker exec 1b02ad086533 powershell-command Invoke webrequest Invoke webrequest:无法在第1行连接到远程服务器char:1+Invoke webrequest。。。
019-06-07T10:15:06Z - [INFO]:Runtime is already installed.
2019-06-07T10:15:06Z - [INFO]:Docker version 18.09.4, build c3516c43ef
2019-06-07T10:15:06Z - [INFO]:Configuring ECS Host...
2019-06-07T10:15:06Z - [INFO]:Checking Hyper-V Network adapter
2019-06-07T10:15:08Z - [INFO]:Default vEthernet adapter found for nat. Using this adapter.
2019-06-07T10:15:08Z - [INFO]:VMNetwork adapter found with mac: 00-15-5D-2B-E1-89
2019-06-07T10:15:08Z - [INFO]:Checking for network adatper with mac: 00-15-5D-2B-E1-89
2019-06-07T10:15:08Z - [INFO]:Network adapter found.
2019-06-07T10:15:08Z - [INFO]:Network adapter found with mac 00-15-5D-2B-E1-89 on interface 2
2019-06-07T10:15:08Z - [INFO]:Getting subnet info from docker...
2019-06-07T10:15:08Z - [INFO]:Docker subnet: 0.0.0.0/0
2019-06-07T10:15:08Z - [INFO]:Docker gateway:
WARNING: Waiting for service 'Docker Engine (docker)' to stop...
WARNING: Waiting for service 'Docker Engine (docker)' to stop...
WARNING: Waiting for service 'Docker Engine (docker)' to stop...
WARNING: Waiting for service 'Docker Engine (docker)' to stop...
WARNING: Waiting for service 'Docker Engine (docker)' to stop...
2019-06-07T10:15:22Z - [INFO]:Docker subnet: 172.31.16.0/20
2019-06-07T10:15:22Z - [INFO]:Docker gateway: 172.31.16.1
2019-06-07T10:15:24Z - [INFO]:Getting net ip address
2019-06-07T10:15:25Z - [INFO]:IP address not found.
Name                           Value
----                           -----
PrefixLength                   32
IPAddress                      169.254.170.2
InterfaceIndex                 2



2019-06-07T10:15:25Z - [INFO]:Creating new virtual network adapter ip...
New-NetIPAddress : Element not found.
At C:\Program Files\WindowsPowerShell\Modules\ECSTools\ECSTools.psm1:1370 char:28
+             $newIpOutput = New-NetIPAddress @IPAddrParams
+                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (MSFT_NetIPAddress:ROOT/StandardCimv2/MSFT_NetIPAddress) [New-NetIPAddress], CimException
    + FullyQualifiedErrorId : Windows System Error 1168,New-NetIPAddress

2019-06-07T10:15:25Z - [INFO]:Virtual network adapter ip created:
2019-06-07T10:15:25Z - [INFO]:Waiting for it to become available on the device...
                string script = @"
$gateway = (Get-NetRoute | Where { $_.DestinationPrefix -eq '0.0.0.0/0' } | Sort-Object RouteMetric | Select NextHop).NextHop
$ifIndex = (Get-NetAdapter -InterfaceDescription 'Hyper-V Virtual Ethernet*' | Sort-Object | Select ifIndex).ifIndex
New-NetRoute -DestinationPrefix 169.254.170.2/32 -InterfaceIndex $ifIndex -NextHop $gateway
";
                using (PowerShell PowerShellInstance = PowerShell.Create())
                {
                    PowerShellInstance.AddScript(script);
                    PowerShellInstance.Invoke();
                }