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                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="lambda-dotnet-dependencyinjection" Version="0.1.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add lambda-dotnet-dependencyinjection --version 0.1.0                
#r "nuget: lambda-dotnet-dependencyinjection, 0.1.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// 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 CI

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

  1. Obtain an API key from the Lambda Cloud Dashboard (requires a Lambda account).
  2. Pass the API key into a new instance of the LambdaCloudService class or use a configured HttpClient if advanced configuration (e.g., proxies) is required.
  3. 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.

  1. 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";
});
  1. 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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