Scaleway Provider
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
| Option | Type | Required | Default | Description |
|---|---|---|---|---|
Region | string | Yes | "" | Scaleway region: fr-par, nl-ams or pl-waw |
ProjectId | string | Yes | "" | Scaleway project UUID |
AccessKey | string | Yes | "" | Scaleway access key (SCWXXXXXXXXXXXXXXXXX) |
SecretKey | string | Yes | "" | 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:
- An Access Key (SCWXXXXXXXXXXXXXXXXX)
- A Secret Key (UUID format)
- 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");