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;
}