lambda-dotnet-dependencyinjection
0.1.0
dotnet add package lambda-dotnet-dependencyinjection --version 0.1.0
NuGet\Install-Package lambda-dotnet-dependencyinjection -Version 0.1.0
<PackageReference Include="lambda-dotnet-dependencyinjection" Version="0.1.0" />
paket add lambda-dotnet-dependencyinjection --version 0.1.0
#r "nuget: lambda-dotnet-dependencyinjection, 0.1.0"
// Install lambda-dotnet-dependencyinjection as a Cake Addin #addin nuget:?package=lambda-dotnet-dependencyinjection&version=0.1.0 // Install lambda-dotnet-dependencyinjection as a Cake Tool #tool nuget:?package=lambda-dotnet-dependencyinjection&version=0.1.0
lambda-dotnet
A .NET library for interacting with the Lambda API.
Installation
Install the library via NuGet:
dotnet add package lambda-dotnet
Extensions
Install optional library extensions for more functionality, depending on your use case.
Dependency Injection
Integrate lambda-dotnet and your DI container of choice. Install the extension library via NuGet:
dotnet add package lambda-dotnet-dependencyinjection
Usage
- Obtain an API key from the Lambda Cloud Dashboard (requires a Lambda account).
- Pass the API key into a new instance of the
LambdaCloudService
class or use a configuredHttpClient
if advanced configuration (e.g., proxies) is required. - Use the methods available on
LambdaCloudService
to interact with the Lambda Cloud API.
Initialization
The library can be initialized in three ways:
Basic Initialization
Pass in your API key directly:
var lambdaCloud = new LambdaCloudService("YOUR_LAMBDA_API_KEY");
Advanced Initialization
Use an existing HttpClient
, ensuring that BaseAddress
and an Authorization
header have been set:
var httpClient = new HttpClient
{
BaseAddress = new Uri("https://cloud.lambdalabs.com/api/v1/"),
Timeout = TimeSpan.FromSeconds(5)
};
httpClient.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", "YOUR_LAMBDA_API_KEY");
var lambdaCloud = new LambdaCloudService(httpClient);
Dependency Injection
If you've installed the appropriate extension library.
- Register
LambdaCloudService
with your dependency container:
services.AddLambdaCloudHttpClient(options =>
{
options.BaseUrl = new Uri("https://cloud.lambdalabs.com/api/v1/");
options.ApiKey = "YOUR_LAMBDA_API_KEY";
});
- Inject
ILambdaCloudService
where needed:
public class MyClass
{
private readonly ILambdaCloudService lambdaCloud;
public MyClass(ILambdaCloudService lambdaCloud)
{
this.lambdaCloud = lambdaCloud;
}
}
List Instances
To list your running instances:
var instances = await lambdaCloud.Instances.GetAllAsync();
To retrieve the details of an instance:
var instanceId = ...
var instance = await lambdaCloud.Instances.GetAsync(instanceId);
List Instance Types
To list the instance types offered by Lambda Cloud and explore their specs as well as their region-specific availability:
var instanceTypeAvailabilities = lambdaCloud.Instances.GetAllTypeAvailabilityAsync();
var instanceTypesToLaunch = instanceTypeAvailabilities
.Where(x => x.Type.Specifications.GpuCount >= 4)
.Where(x => x.RegionsWithCapacity.Any())
.Select(x => x.Type)
Launching Instances
You can launch an instance in the following way:
var options = new LambdaCloudInstanceLaunchOptions()
{
RegionName = "us-east-1",
TypeName = "gpu_1x_a100_sxm4",
KeyNames = [
"my-ssh-key"
],
Quantity = 1
}
var instance = await lambdaCloud.Instances.LaunchAsync(options);
Restarting or Terminating Instances
To restart one or more running instances:
var instances = ...
var options = new LambdaCloudInstanceRestartOptions()
{
Ids = [ instances[0].Id, instances[1].Id, ... ]
}
var restartedInstances = await lambdaCloud.RestartAsync(options);
To terminate one or more running instances:
var instances = ...
var options = new LambdaCloudInstanceTerminateOptions()
{
Ids = [ instances[0].Id, instances[1].Id, ... ]
}
var terminatedInstances = await lambdaCloud.TerminateAsync(options);
List SSH Keys
To list the SSH keys saved in your account:
var keys = await lambdaCloud.Keys.GetAllAsync();
Adding or Generating a SSH Key
To add an existing SSH key to your account:
var options = new LambdaCloudKeyAddOrGenerateOptions()
{
Name = "my-existing-key",
PublicKey = "<YOUR_PUBLIC_KEY_HERE>"
}
var key = await lambdaCloud.Keys.AddOrGenerateAsync(options);
To generate a new SSH key pair:
var options =
new LambdaCloudKeyAddOrGenerateOptions()
{
Name = "my-generated-key",
PublicKey = null // Omit the public key
}
var key = await lambdaCloud.Keys.AddOrGenerateAsync(options);
// Make sure to save the private key returned to you.
await File.WriteAllTextAsync(
"my-generated-key.pem",
key.PrivateKey);
Deleting an SSH Key
To delete an SSH key from your account:
var key = ...
await lambdaCloud.Keys.DeleteAsync(key.Id);
Listing Filesystems
To list your persistent storage filesystems:
var filesystems = await lambdaCloud.Filesystems.GetAllAsync();
Documentation
Refer to the Usage section above for a quick start, or consult the inline documentation while working in your IDE. For detailed information about the underlying API endpoints, parameters, and expected responses, refer to Lambda's Cloud API documentation as well as their Cloud API reference.
Contributing
Contributions are welcome! To contribute, fork the repository, create a new branch, and submit a pull request with your changes. Please make sure all tests pass before submitting.
License
This project is licensed under the MIT license. See license.txt
for full details.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.1 is compatible. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- lambda-dotnet (>= 0.1.0)
- Microsoft.Extensions.Http (>= 9.0.0)
-
net6.0
- lambda-dotnet (>= 0.1.0)
- Microsoft.Extensions.Http (>= 9.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.1.0 | 45 | 11/26/2024 |