AWS中Windows上的无服务器计算

时间:2016-12-15 03:59:27

标签: amazon-web-services aws-lambda serverless-framework

我需要通过“网络”提供一段代码。它非常适合具有HTTP API的AWS Lambda - 无状态,无副作用,相当CPU密集型功能,blob in,blob out。它是用C#/ .NET编写的,但它不是纯.NET,它使用UWP API ,因此需要Windows Server 2016。

AWS Lambdas only run on Linux hosts,甚至是C#。有没有办法以无服务器的方式在亚马逊云中部署这个部分 - 可能是Lambda以外的东西?我知道我可以使用EC2 VM,但这是无服务器架构的发明。

2 个答案:

答案 0 :(得分:4)

Lambda是AWS上无服务器计算的唯一选择,而Lambda函数仅在Linux机器上运行。

如果您需要在Windows计算机上运行无服务器功能,请尝试Azure Functions。这就是微软云中的Lambda等价物。我不确定它是否在Windows Server 2016计算机上运行并且找不到对该平台的任何引用,但我希望,作为一项全新的服务,它们使用自己的边缘技术。

要确认平台是否符合您的要求,请尝试以下功能:

using System.Management;
using System.Net;
using System.Threading.Tasks;    

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    // Get OS friendly name
    // http://stackoverflow.com/questions/577634/how-to-get-the-friendly-os-version-name
    var caption = (from x in new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem").Get().Cast<ManagementObject>()
                  select x.GetPropertyValue("Caption")).FirstOrDefault();
    string name = caption != null ? caption.ToString() : "Unknown";

    // the function response
    return req.CreateResponse(HttpStatusCode.OK, name);
}

答案 1 :(得分:-1)

我认为yoy可以通过CodeDeploy服务和AWS CodePipeline的组合实现这一目标。

参考这篇文章:

http://docs.aws.amazon.com/codedeploy/latest/userguide/getting-started-windows.html

了解如何通过CodeDeploy部署代码。稍后会看到这篇文章:

http://docs.aws.amazon.com/codepipeline/latest/userguide/getting-started-4.html

了解如何配置aws Pipline以调用Code Deploy,然后在创建的Windows机器上执行批处理作业(注意:您可能希望使用 S3而不是Github - 这可能与CodePipeline一起使用。

我会考虑通过脚本引导整个这样的配置 - 使用aws cli - 这样你可以轻松地清理你的资源:

:aws codepipeline delete-pipeline --name&#34; MyJob&#34;

当然,您可以通过aws Web控制台配置管道,并将管道配置为定期运行代码。