.net - 如何使用 Mono 为 AWS Lambda 函数创建 .NET 函数代码 zip 文件?

标签 .net amazon-web-services mono aws-lambda

我是 Mono 和 .NET 生态系统的新手,并且 the official guide似乎不适用。

最佳答案

实际上该指南确实适用,但我必须先安装 dotnet-cli ( see how ),它在 OS X 上没有随 Mono 发行版一起提供。

此外,我还需要函数 zip 文件本身,而不是创建函数的能力,这当然不是通常或推荐的工作流程。

从 docker 容器构建这样的 zip:

FROM mono
RUN curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin
COPY src /src
WORKDIR /src
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT 1
RUN /root/.dotnet/dotnet publish LambdaTest/LambdaTest.csproj
RUN zip -r -j dotnet.zip LambdaTest/bin/Debug/netcoreapp2.1/publish/

文件结构:

src/LambdaTest
├── Function.cs
└── LambdaTest.csproj

函数.cs

    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 dotnet
    {
        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();
            }
        }
    }

LambdaTest.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
    <AWSProjectType>Lambda</AWSProjectType>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Amazon.Lambda.Core" Version="1.0.0" />
    <PackageReference Include="Amazon.Lambda.Serialization.Json" Version="1.4.0" />
  </ItemGroup>

</Project>

关于.net - 如何使用 Mono 为 AWS Lambda 函数创建 .NET 函数代码 zip 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53445281/

相关文章:

.net - 处理数千个连接的最佳方式

asp.net - 如何获得 ASP.NET 请求的完整、有序的调用堆栈?

c# - 如何使用 microsoft.interop.word 从 word 文件中读取项目符号列表?

django - 请求通过 Zappa 部署在 AWS Lambda 中的 Django 应用程序花费的时间太长

mysql - AWS EC2 mysql root密码问题

amazon-web-services - 运行 aws s3 cp --recursive 命令时 AWS CodeBuild 失败

c# - 使用 Fody 的 Mono 支持将 dll 嵌入到 exe 中

c# - 从 C# 而不是 C++ 调用时,非托管库函数失败

macos - MonoDevelop - 在 Mac 上使用 Subversion 1.7

c# - 在 C# 中快速使用位图