使用 c# 的 Lambda 函数无法调用外部 HTTPS API

Lambda Function using c# cannot invoke external HTTPS APIs

我正在尝试从用 c# 编写的 AWS lambda 函数调用外部 API。 Lamda 函数以 No VPC 方式部署。我从 Alexa skill 调用这个函数。该代码适用于 http 请求,但不适用于 https.

下面的代码在我使用 http://www.google.com 时有效。

但是,如果我将 http 替换为 https,则会在云监视中收到错误消息:

"Process exited before completing request."

连catch中写的log都没有被cloud watch记录下来

public class Function
{
    public const string INVOCATION_NAME = "bingo";

    public async Task<SkillResponse> FunctionHandler(SkillRequest input, ILambdaContext context)
    {
        var requestType = input.GetRequestType();
        if (requestType == typeof(IntentRequest))
        {
            string response = "";
            IntentRequest request = input.Request as IntentRequest;
            response += $"About {request.Intent.Slots["carmodel"].Value}";
            
            try
            {
                using (var httpClient = new HttpClient())
                {
                    Console.WriteLine("Trying to access internet"); 
                    //var resp=httpClient.GetAsync("http://www.google.com").Result // this works perfect!                   
                    var resp = httpClient.GetAsync("https://www.google.com").Result; // this throws error
                    Console.WriteLine("Call was successful");
                }                
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception from main function " + ex.Message);
                Console.WriteLine(ex.InnerException.Message);
                Console.WriteLine(ex.StackTrace);

            }            
            return MakeSkillResponse(response, true);
        }
        else
        {
            return MakeSkillResponse(
                    $"I don't know how to handle this intent. Please say something like Alexa, ask {INVOCATION_NAME} about Tesla.",
                    true);
        }
    }

    private SkillResponse MakeSkillResponse(string outputSpeech, bool shouldEndSession,
        string repromptText = "Just say, tell me about car models to learn more. To exit, say, exit.")
    {
        var response = new ResponseBody
        {
            ShouldEndSession = shouldEndSession,
            OutputSpeech = new PlainTextOutputSpeech { Text = outputSpeech }
        };

        if (repromptText != null)
        {
            response.Reprompt = new Reprompt() { OutputSpeech = new PlainTextOutputSpeech() { Text = repromptText } };
        }

        var skillResponse = new SkillResponse
        {
            Response = response,
            Version = "1.0"
        };
        return skillResponse;
    }
}

问题已通过更新库版本解决。

System.Net.Http v4.3.4 与 dotnet 核心不完全兼容 v1

所以出站 http 调用有效,但 https 调用无效。更改 System.net.http 的版本解决了问题。