Я пытаюсь настроить базовую функцию .NET Core 2.1 Lambda, которая может получать доступ к частным веб-API VPC, а также к общедоступным веб-API Интернета.Однако, как только функция связана с VPC, она больше не может получить доступ к общедоступному Интернету.
Я попробовал следующее (основываясь на этом руководстве YouTube ):
- Создана новая частная подсеть с блоком CIDR 172.18.10.0/24.
- Создан новый шлюз NAT и связан с общедоступной подсетью, которая уже включена в таблицу маршрутов с интернет-шлюзом в 0.0.0.0 / 0 и создала новый EIP для шлюза NAT.
- Создала новую таблицу маршрутов, добавила пункт назначения 0.0.0.0/0 к шлюзу NAT и связала таблицу маршрутов с вновь созданной частной подсетью.
В функции Lambda:
- Добавлена функция в VPC.
- Добавлена функция во вновь созданной частной подсети.
- Добавленагруппа безопасности со следующими параметрами: входящий порт 0 - 65535, исходящие порты, все назначения, 0.0.0.0/0.
. Вот лямбда-функция, которую я тестирую:
using System.Net.Http;
using System.Net;
using System;
using Amazon.Lambda.Core;
using Amazon.Lambda.SQSEvents;
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
namespace MyFunction
{
public class Function
{
public void FunctionHandler(SQSEvent sqsEvent, ILambdaContext context)
{
using (HttpClient client = new HttpClient())
{
Console.WriteLine($"Sending HTTP request.");
HttpResponseMessage response = client.GetAsync($"http://dummy.restapiexample.com/api/v1/employee/18677").Result;
Console.WriteLine($"Response received.");
var content = response.Content.ReadAsStringAsync().Result;
Console.WriteLine($"Response content: {content}");
}
}
}
}
Когдавызывая эту функциювывод будет следующим:
Sending HTTP request.
One or more errors occurred. (Resource temporarily unavailable): AggregateException
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at MyFunction.Function.FunctionHandler(SQSEvent sqsEvent, ILambdaContext context)
in C:\__temp__\basic_lambda_func\Function.cs:line 20 at System.
Когда лямбда-функция отсутствует на VPC, она работает нормально.Есть идеи, что может вызвать проблемы на VPC?