适用于 C# 的 AWS 注释框架输入参数

AWS Annotations Framework Input Parameters for C#

我无法获取使用 AWS 注释框架编写的 Lambda 函数来接受输入参数。这是我正在使用的文章:https://aws.amazon.com/blogs/developer/introducing-net-annotations-lambda-framework-preview/,但仅此而已。当我将函数发布到 Amazon 并测试单击“测试”按钮时,未填充输入参数。

这是我的功能:

[LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
        [LambdaFunction()]
        [HttpApi(LambdaHttpMethod.Get, "/add/{x}/{y}")]
        public int Add(int x, int y, ILambdaContext context)
        {
            context.Logger.LogInformation($"{x} plus {y} is {x + y}");
            return x + y;
        }

这是 AWS 测试工具中的事件 JSON

日志显示参数没有值:

2022-05-09T10:47:02.435Z 51291252-f7cb-4a1e-9f4a-f7aebdec6b02 info 0 plus 0 is 0

我以此为例,我实际上不需要计算器,但我确实需要从 Amazon Connect 联系流传递输入参数,我将传递如下参数:

我花了几天时间在谷歌上搜索和阅读文章,但到目前为止我还没有找到任何有用的东西,所以非常感谢收到任何帮助!

使用 HttpApi 属性将 Lambda 函数公开为通过某些 http 客户端调用的 REST API。 Amazon Connect 使用此处记录的自己的事件对象直接调用您的 Lambda 函数 https://docs.aws.amazon.com/connect/latest/adminguide/connect-lambda-functions.html#function-contact-flow。在 .NET 中,事件对象表示为来自 Amazon.Lambda.ConnectEvents NuGet 包的 Amazon.Lambda.ConnectEvents.ContactFlowEvent 类型。

目前 Amazon.Lambda.Annotations 支持分解 HTTP API 事件对象以遵循典型的 .NET REST 模式。我们还没有为 Connect 等其他类型的事件源这样做,尽管这是我们想要做的事情。

对于您的用例,您仍然可以使用 Amazon.Lambda.Annotations 来获取依赖项注入和同步 CloudFormation 模板功能,方法是仅使用 LambdaFunction 属性,然后让您的函数接收 Connect 事件对象。像这样。

[LambdaFunction()]
public IDictionary<string, string> ProcessConnectContactFlow(Amazon.Lambda.ConnectEvents.ContactFlowEvent contactFlowEvent)
{
    // Process the event

    var response = new Dictionary<string, string>()
    {
        { "Name", "CustomerName" },
        { "Address", "1234 Main Road" },
        { "CallerType", "Patient" }
    };

    return response;
}