Skip to main content

Scaleway Provider

Scaleway .NET 10.0

Overview​

The Scaleway provider integrates with Scaleway Secret Manager, a European cloud-native secret storage service. It communicates via Scaleway's REST API using HttpClient -- no SDK dependency required.

Key Benefits:

  • GDPR-compliant European data residency (fr-par, nl-ams)
  • Competitive pricing with generous free tier
  • Simple API key authentication
  • Fully managed encryption

Installation​

Terminal
dotnet add package SecretsManager
dotnet add package SecretsManager.Scaleway

Configuration​

Options Reference​

OptionTypeRequiredDefaultDescription
RegionstringYes""Scaleway region: fr-par, nl-ams or pl-waw
ProjectIdstringYes""Scaleway project UUID
AccessKeystringYes""Scaleway access key (SCWXXXXXXXXXXXXXXXXX)
SecretKeystringYes""Scaleway secret key, sent as the X-Auth-Token header

All four options are validated at startup: ScalewayOptions.Validate() reports each missing one by name.

Fluent API​

Program.cs
var provider = new SecretProviderBuilder()
.WithScaleway(options =>
{
options.Region = "fr-par";
options.ProjectId = "your-project-uuid";
options.AccessKey = "your-access-key";
options.SecretKey = "your-secret-key";
})
.Build();

Environment Variables​

Terminal
export SECRETS_PROVIDER=scaleway
export SECRETS_SCALEWAY_REGION=fr-par
export SECRETS_SCALEWAY_PROJECTID=your-project-uuid
export SECRETS_SCALEWAY_ACCESSKEY=your-access-key
export SECRETS_SCALEWAY_SECRETKEY=your-secret-key

YAML Configuration​

secretstore.yaml
provider:
scaleway:
region: fr-par
project:
id: your-project-uuid
access:
key: your-access-key
secret:
key: your-secret-key

Dependency Injection (IOptions<T>)​

Bind the same settings from appsettings.json through the DI container:

var provider = new SecretProviderBuilder()
.ConfigureScaleway(configuration)
.Build();
{
"SecretsManager": {
"Scaleway": {
"Region": "fr-par",
"ProjectId": "your-project-uuid",
"AccessKey": "your-access-key",
"SecretKey": "your-secret-key"
}
}
}

This reads from the SecretsManager:Scaleway section and validates all options.

Authentication​

Scaleway uses API key-based authentication. You'll need:

  1. An Access Key (SCWXXXXXXXXXXXXXXXXX)
  2. A Secret Key (UUID format)
  3. A Project ID (UUID format)

Generate these from the Scaleway Console under IAM > API Keys.

tip

Store your Scaleway credentials in environment variables rather than hardcoding them. Use a different API key per environment for better access control.

Usage​

// Standard ISecretProvider operations work identically
var secret = await provider.GetSecretAsync("my-secret");
await provider.PutSecretAsync("new-secret", "secret-value");
var versions = await provider.GetSecretVersionsAsync("my-secret");
await provider.DeleteSecretAsync("old-secret");