AWS Lambda .NET Core 2.1 AmazonEC2Client.DescribeInstancesAsync引发TaskCanceledException

时间:2018-08-07 15:21:16

标签: amazon-web-services amazon-ec2 .net-core aws-lambda

Lambda拥有所有适当的权利,它使用的是我在本地计算机上使用的配置文件,而该配置文件仅适用于该工作。

我正在使用最新版本的EC2软件包:

  • AWSSDK.EC2(3.3.57.2)

由于某种原因,AmazonEC2Client.DescribeInstancesAsync在Lambda中运行100秒后会抛出TaskCanceledException

代码如下:

var resp = Ec2Client.DescribeInstancesAsync(new DescribeInstancesRequest
{
    Filters = new List<Filter>
    {
        new Filter("iam-instance-profile.arn", new List<string> {"myCorrectRole"})
    }
}).Result;

有问题的TaskCanceledException位于引发的AggregateException中,其中包含一个Message = "A task was canceled"

1 个答案:

答案 0 :(得分:0)

我遇到了这个问题。

原来是由于Lambda在VPC中运行。

在VPC中运行时,lambda无法与SDK用于与EC2平台进行交互的公共端点进行对话。

在我的案例中,Lambda位于私有子网中,我希望它保留在那里,因此我在VPC内创建了一个公共子网,并在两个子网之间创建了NAT网关,而公共子网通过Internet网关路由出去

也可以使用VPC终端节点解决此问题,但前提是您要管理与VPC在同一区域内的AWS资源。