我需要通过“网络”提供一段代码。它非常适合具有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,但这是无服务器架构的发明。
答案 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控制台配置管道,并将管道配置为定期运行代码。