2016-12-15 13 views
6

Ich habe ein Stück Code, den ich über das "Net" zur Verfügung stellen muss. Es ist perfekt für ein AWS Lambda mit einer HTTP-API an der Spitze - eine zustandslose, nebenwirkungsfreie, eher CPU-intensive Funktion, Blob in, Blob Out. Es geschrieben in C# /. NET, aber es ist nicht rein .NET, macht es die Verwendung des UWP API, erfordert daher Windows Server 2016.Serverless compute unter Windows in AWS

AWS Lambdas only run on Linux hosts, auch C# Einsen. Gibt es eine Möglichkeit, dieses Stück serverlos in der Amazon Cloud einzusetzen - vielleicht etwas anderes als ein Lambda? Ich weiß, dass ich mit einer EC2-VM arbeiten kann, aber das ist die Art von Dingen, für die serverlose Architektur erfunden wurde.

Antwort

4

Lambda ist die einzige Option für serverloses Computing auf AWS und Lambda-Funktionen, die nur auf Linux-Maschinen ausgeführt werden.

Wenn Sie serverbasierte Funktionen auf einer Windows-Maschine ausführen müssen, versuchen Sie Azure Functions. Das ist das Äquivalent von Lambda in der Microsoft Cloud. Ich bin nicht sicher, ob es in einem Windows Server 2016-Computer ausgeführt wird und keinen Verweis auf die Plattform finden konnte, aber ich würde erwarten, dass sie als brandneuen Dienst ihre eigene Spitzentechnologie verwenden.

Um zu bestätigen, ob die Plattform ist, was Sie brauchen, versuchen Sie diese Funktion:

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

Ich denke yoy dies über Kombination von CodeDeploy Service und AWS CodePipeline erreichen können.

Siehe diesen Artikel:

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

lernen, wie man Code über CodeDeploy zu implementieren. siehe weiter unten in diesem Artikel:

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

zu erfahren, wie Sie aws Pipline konfigurieren-Code bereitstellen rufen und später ausführen Batch-Job auf erstellt Windows-Rechner (Anmerkung: Sie wahrscheinlich S3 statt Github verwenden möchten - was mit CodePipeline möglich ist.

ich ganze solche Konfiguration per Skript Bootstrap hielte - mit aws cli - diese Weise können Sie leicht wie dies Ihre Ressourcen aufzuräumen können:

: aws codepipeline löschen-Pipeline --name "MyJob"

Natürlich können Sie die Pipeline über die aws-Webkonsole konfigurieren und die Pipeline so konfigurieren, dass der Code regelmäßig ausgeführt wird.

+1

CodeDeploy bedeutet EC2-Instanzen, oder? Ich bin auf Serverless. –

+0

ok .. aber bedenken Sie, was Lambda wirklich tut .. es ist nicht Ausführen des Codes in der Luft .. es muss auch einige ec2 verwenden – walkeros

+1

Richtig, aber das wird nicht mehr mein Anliegen sein :) Ich will nicht meine ausgeben Zeit, um die Infrastruktur zu erhalten. Außerdem möchte ich mit dem CPU-Zyklus bezahlen, nicht mit der Betriebszeit. –

Verwandte Themen