Amazon web services AWS Lambda.NET Core 2.1 AmazonEC2Client.DescribeInstancesAsync抛出TaskCanceledException

Amazon web services AWS Lambda.NET Core 2.1 AmazonEC2Client.DescribeInstancesAsync抛出TaskCanceledException,amazon-web-services,amazon-ec2,.net-core,aws-lambda,Amazon Web Services,Amazon Ec2,.net Core,Aws Lambda,Lambda拥有所有适当的权限,它使用我在本地机器上使用的配置文件,该配置文件仅适用于该作业 我正在使用当前最新版本的EC2软件包: AWSSDK.EC2(3.3.57.2) 出于某种原因,AmazonEC2Client.descripbeinstancesasync在Lambda中运行100秒后抛出一个TaskCanceledException 代码如下所示: var resp = Ec2Client.DescribeInstancesAsync(new DescribeInstances

Lambda拥有所有适当的权限,它使用我在本地机器上使用的配置文件,该配置文件仅适用于该作业

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

  • AWSSDK.EC2(3.3.57.2)
出于某种原因,
AmazonEC2Client.descripbeinstancesasync
在Lambda中运行100秒后抛出一个
TaskCanceledException

代码如下所示:

var resp = Ec2Client.DescribeInstancesAsync(new DescribeInstancesRequest
{
    Filters = new List<Filter>
    {
        new Filter("iam-instance-profile.arn", new List<string> {"myCorrectRole"})
    }
}).Result;
var resp=Ec2Client.DescribeInstancesSync(新的DescribeInstancesRequest
{
过滤器=新列表
{
新过滤器(“iam instance profile.arn”,新列表{“myCorrectRole”})
}
}).结果;
问题中的
TaskCanceledException
在抛出的
aggregateeexception
中找到,并包含一条
Message=“a task was canceled”
我遇到了这个问题

原来是因为Lambda在VPC中运行

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

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


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

异步任务耗时太长,因此会出现此异常。当我异步调用另一个Lambda函数从数据库中获取数据时发生了这种情况,执行100秒后出现了同样的异常。不确定是否有办法延长等待时间longer@caldazar奇怪的是,在我的本地机器上,这只需要一秒钟,只有30个EC2实例,嗯,这很奇怪。您是否有一些安全组设置会阻止Lambda访问EC2实例?您是否将Lambda发布到VPC中,如果是,请检查子网的权限/路由,以确保它可以到达EC2端点。@NormJohanson发现这是VPC问题。谢谢你们两位的帮助。