public async Task FunctionHandler()

in sample-apps/ec2-spot/src/ec2spot/Function.cs [26:57]


        public async Task<string> FunctionHandler(Dictionary<string, string> input, ILambdaContext context)
        {
          // More AMI IDs: aws.amazon.com/amazon-linux-2/release-notes/
          // us-east-2  HVM  EBS-Backed  64-bit  Amazon Linux 2
          string ami = "ami-09d9edae5eb90d556";
          string sg = "default";
          // docs.aws.amazon.com/sdkfornet/v3/apidocs/items/EC2/TInstanceType.html
          InstanceType type = InstanceType.T3aNano;
          string price = "0.003";
          int count = 1;
          var requestSpotInstances = await RequestSpotInstance(ami, sg, type, price, count);
          var spotRequestId = requestSpotInstances.SpotInstanceRequests[0].SpotInstanceRequestId;
          Console.WriteLine(spotRequestId);

          string instanceId;
          while (true)
          {
            SpotInstanceRequest spotRequest = await GetSpotRequest(spotRequestId);
            Console.WriteLine(spotRequest.State);
            if (spotRequest.State == SpotInstanceState.Active) {
              instanceId = spotRequest.InstanceId;
              break;
            }
          }
          var cancelRequest = CancelSpotRequest(spotRequestId);
          var terminateRequest = TerminateSpotInstance(instanceId);

          await Task.WhenAll(cancelRequest, terminateRequest);

          Console.WriteLine("Complete");
          return spotRequestId;
        }