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

时间:2018-11-23 10:52:09

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

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

2 个答案:

答案 0 :(得分:1)

由于您是“ Mono and .NET生态系统”的新手,,我强烈建议您使用C5:C52

Sub remplissageTab() Dim rng As Range Dim cell As Range Set rng = Sheets("Câbles").Range("C5:C52") For Each txtBox In clcTxt For Each cell In rng cell.Value = CInt(txtBox) Next cell Next txtBox Unload Me End Sub 生态系统能够部署一个独立的环境,这是大多数云服务(例如AWS Lambda)所必需的(如您在提供的指南中所读)。

使用Visual Studio 2017时,您可以直接启动.NET Core项目,nuget上有可用的模板包。

更多信息,请参见AWS docs

答案 1 :(得分:1)

实际上,该指南确实适用,但是我必须先安装dotnet-clisee 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

Function.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>