如何在 C# 中使用 AWS Lambda 函数

本章将详细解释如何在 C# 中使用 AWS Lambda 函数。在这里,我们将使用 Visual Studio 编写代码并将其部署到 AWS Lambda。有关安装 Visual Studio 和将 AWS 工具包添加到 Visual Studio 的任何信息和帮助,请参阅本教程中的 简介一章。完成 Visual Studio 的安装后,请按照以下步骤操作。请参阅相应的屏幕截图以更好地理解-

步骤 1

打开您的 Visual Studio 并按照步骤创建新项目。点击 文件-> 新建-> 项目。

如何在 C# 中使用 AWS Lambda 函数  第1张

步骤 2

现在,将显示以下屏幕,您可以在其中选择 AWS Lambda for Visual C#。选择 AWS Lambda 项目 (.NET Core)。

如何在 C# 中使用 AWS Lambda 函数  第2张

如果需要,您可以更改名称,此处保留默认名称。点击 确定继续。

下一步将要求您选择一个 蓝图。

如何在 C# 中使用 AWS Lambda 函数  第3张

为此示例选择 空函数,然后单击 完成。它将创建一个新的项目结构,如下所示-

如何在 C# 中使用 AWS Lambda 函数  第4张

现在,选择 Function.cs,这是为 AWS Lambda 创建具有事件和上下文的处理程序的主文件。

Functions.cs 文件显示如下-

如何在 C# 中使用 AWS Lambda 函数  第5张

您可以使用下面给出的命令将输入​​和输出参数序列化为 AWS Lambda 函数。

 

 

[assembly: 
LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))] 

 

 

C# 的处理程序详细信息

处理程序显示如下-

 

 

public string FunctionHandler(string input, ILambdaContext context) {
   return input?.ToUpper();
} 

 

 

上面代码的各个组成部分解释如下-

FunctionHandler −这是 C# AWS Lambda 函数的起点。

字符串输入- 处理程序的参数 字符串输入 具有所有事件数据,例如 S3 对象、API 网关详细信息等。

ILambdaContext 上下文- ILamdaContext 是一个具有上下文详细信息的接口。它具有 lambda 函数名称、内存详细信息、超时详细信息等详细信息。

可以以同步和异步方式调用 Lambda 处理程序。如果以如上所示的同步方式调用,您可以拥有返回类型。如果是 async,则返回类型必须为 void。

现在,让我们部署 AWS Lambda C# 并对其进行测试。右键单击该项目并单击 发布到 AWS Lambda,如下所示-

如何在 C# 中使用 AWS Lambda 函数  第6张

 

如何在 C# 中使用 AWS Lambda 函数  第7张

填写 函数名称并点击 下一步。显示的下一个屏幕是 高级功能详细信息,如图所示-

如何在 C# 中使用 AWS Lambda 函数  第8张

输入 角色名称、内存和 超时。详情请注意,这里我们选择了现有角色创建并使用的内存为 128MB,超时为 10 秒。完成后,点击 上传以发布到 AWS Lambda 控制台。

如何在 C# 中使用 AWS Lambda 函数  第9张

上传 AWS Lambda 函数后,您可以看到以下屏幕。单击 调用以执行创建的 AWS Lambda 函数。目前,它显示错误,因为它需要按照编写的代码进行一些输入。

如何在 C# 中使用 AWS Lambda 函数  第10张

现在,让我们输入一些示例输入并再次 调用它。请注意,这里我们在输入框中输入了一些文本,并且在单击 invoke 时相同的内容在响应部分中以大写显示。日志输出显示如下-

如何在 C# 中使用 AWS Lambda 函数  第11张

现在,让我们还检查 AWS 控制台,看看是否在我们从 Visual Studio 部署函数时创建了该函数。

上面创建的 Lambda 函数是 aws lambda using csharp,同样显示在 AWS 控制台中,如下面的屏幕截图所示-

如何在 C# 中使用 AWS Lambda 函数  第12张

 

如何在 C# 中使用 AWS Lambda 函数  第13张 如何在 C# 中使用 AWS Lambda 函数  第14张

 

如何在 C# 中使用 AWS Lambda 函数  第15张

处理程序签名

Handler 是 AWS 执行的起点。处理程序的名称应定义为-

 

 

ASSEMBLY::TYPE::METHOD 

 

 

签名的细节解释如下-

ASSEMBLY-这是创建的应用程序的 .NET 程序集的名称。它基本上是创建项目的文件夹的名称。

TYPE-这是处理程序的名称。基本上就是namespace.classname。

METHOD-这是函数处理程序的名称。

处理程序签名的代码如下所示-

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Amazon.Lambda.Core;
// 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 AWSLambda3 {
   public class Function {
      /// <summary>
      /// A simple function that takes a string and does a ToUpper
      /// </summary>
      /// <param name="input"></param>
      /// <param name="context"></param>
      /// <returns></returns>
      public string FunctionHandler(string input, ILambdaContext context) {
         return input?.ToUpper();
      }
   }
} 

 

 

注意这里的程序集是 AWSLamda3,类型是namespace.classname,即 AWSLambda3.Function,方法是 FunctionHandler。因此,处理程序签名是 AWSLamda3::AWSLambda3.Function::FunctionHandler

C# 中的上下文对象

Context 对象提供有关 AWS 环境中运行时的有用信息。上下文对象中可用的属性如下表所示-

Sr.No 属性和描述
1

MemoryLimitInMB

这将提供为 AWS Lambda 函数配置的内存的详细信息

2

FunctionName

AWS Lambda 函数的名称

3

FunctionVersion

AWS Lambda 函数的版本

4

InvokedFunctionArn

ARN 用于调用此函数。

5

AwsRequestId

创建的 AWS 函数的 AWS 请求 ID

6

LogStreamName

Cloudwatch 日志流名称

7

LogGroupName

Cloudwatch 组名

8

ClientContext

与 AWS 移动开发工具包一起使用时有关客户端应用程序和设备的信息

9

Identity

与 AWS 移动开发工具包一起使用时有关亚马逊 cogbnito 身份的信息

10

RemainingTime

直到函数终止的剩余执行时间

11

Logger

与上下文关联的记录器

示例

在本节中,让我们用 C# 在 AWS Lambda 中测试上述一些属性。观察下面给出的示例代码-

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Amazon.Lambda.Core;
// 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 AWSLambda6 {
   public class Function {
      /// <summary>
      /// </summary>
      /// <param name="input"></param>
      /// <param name="context"></param>
      /// <returns></returns>
      public void FunctionHandler(ILambdaContext context) {
         LambdaLogger.Log("Function name: " + context.FunctionName+"\n");
         context.Logger.Log("RemainingTime: " + context.RemainingTime+"\n");
         LambdaLogger.Log("LogGroupName: " + context.LogGroupName+"\n");            
      }
   }
} 

 

 

在 C#中调用上述代码可以观察到的相关输出如下所示-

如何在 C# 中使用 AWS Lambda 函数  第16张

在 AWS Console中调用上述代码时可以观察到的相关输出如下所示-

如何在 C# 中使用 AWS Lambda 函数  第17张

使用 C# 进行日志记录

对于日志记录,您可以使用两个函数-

context.Logger.LogLambdaLogger.Log

观察此处显示的以下示例-

 

 

public void FunctionHandler(ILambdaContext context) {
   LambdaLogger.Log("Function name: " + context.FunctionName+"\n");
   context.Logger.Log("RemainingTime: " + context.RemainingTime+"\n");
   LambdaLogger.Log("LogGroupName: " + context.LogGroupName+"\n");            
} 

 

 

上面给出的代码的相应输出如下所示-

如何在 C# 中使用 AWS Lambda 函数  第18张

您可以从 CloudWatch 获取日志,如下所示-

如何在 C# 中使用 AWS Lambda 函数  第19张

C# 中 Lambda 函数的错误处理

本节讨论 C# 中的错误处理。对于错误处理, Exception 类必须扩展,如下面的示例所示-

示例

 

 

namespace example {            
   public class AccountAlreadyExistsException : Exception {
      public AccountAlreadyExistsException(String message) :
         base(message) {
      }
   }
} 
namespace example {
   public class Handler {
     public static void CreateAccount() {
       throw new AccountAlreadyExistsException("Error in AWS Lambda!");
     }
   }
} 

 

 

上面给出的代码的相应输出如下所示-

 

 

{
   "errorType": "LambdaException",
   "errorMessage": "Error in AWS Lambda!"
}

 

作为AWS顶级代理商,选择天.下.数.据的优势

1、专属客服协助注册AWS,或提供注册好的账号直接使用

2、支持收U等多币种支付代付,无额外服务费用

3、AWS多种产品类型,更高产品租赁权限

4、针对大客户,AWS专属折扣优惠

5、7x24小时专属客服,在线解答各种疑问

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo6@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram