我使用AWS控制台开发了一个AWS Lambda函数。这个函数的URL是https://mi7ark5tunresgw25fdjstovuq0woylg.lambda-url.us-west-1.on.aws/。
可以使用AWS控制台测试此功能。
用于测试的输入JSON是:
{
"Body": "Q0FDREJBQUItOEFBQi00QUFFLTlBQUUtNkFBQUFBQWNkM2U5"
}
函数返回一个JSON响应。
下面是Lambda函数的C#代码:
public APIGatewayHttpApiV2ProxyResponse FunctionHandler(APIGatewayHttpApiV2ProxyRequest oldKey, ILambdaContext context)
{
JsonSerializerOptions option = new JsonSerializerOptions();
if (oldKey.Body.Length != 48) return (new APIGatewayHttpApiV2ProxyResponse
{
StatusCode = (int)HttpStatusCode.NotAcceptable,
Body = JsonSerializer.Serialize<string>(string.Empty, option),
});
string newKey = string.Empty;
dcLicense.Extend(oldKey.Body, out newKey);
return (new APIGatewayHttpApiV2ProxyResponse
{
StatusCode = (int)HttpStatusCode.OK,
Body = JsonSerializer.Serialize<string>(newKey, option),
});
}
我希望从.NET Framework 4.8应用程序调用此函数并获取输出字符串。
有简单的示例代码吗?
1条答案
按热度按时间a14dhokn1#
如果你想在公共互联网上触发Lambda函数,我假设你已经创建了一个(可公开访问的)函数URL,你可以通过从.NET Framework应用程序发出HTTP请求来轻松实现这一点。
当Lambda函数通过Function URL触发时,传入的请求是传递给Lambda的JSON对象。该对象包含各种细节,如HTTP方法、查询字符串值、请求体等。这就是定义
APIGatewayHttpApiV2ProxyRequest
对象将包含的内容,您已经配置了Lambda来接受。APIGatewayHttpApiV2ProxyRequest
对象作为测试事件。您的测试事件(或者您稍微错误地称为“输入JSON”)本质上是一个APIGatewayHttpApiV2ProxyRequest
对象,其Body
设置为Q0F...
。但是,在API网关控制台之外,我们无法手动创建测试事件。相反,AWS会将请求Map到Lambda接受的事件。
由于您只使用来自
APIGatewayHttpApiV2ProxyRequest
(oldKey.Body
)的Body
,因此我们需要做的就是将Q0F...
传递给API Gateway。然后,这将被Map以创建上面定义的确切的测试事件--一个Body
设置为Q0F...
的请求对象。注意,其他字段,比如header,也会相应地设置,但是因为你不使用它们,所以我们不需要为HTTP请求设置它们。
这将工作: