Este projeto é um exemplo simples de como integrar o AWS Systems Manager Parameter Store com uma API ASP.NET Core, utilizando a biblioteca Amazon.Extensions.Configuration.SystemsManager
.
- .NET 8
- AWS Systems Manager (SSM)
Amazon.Extensions.Configuration.SystemsManager
NuGet 3.0.0- Swagger
ParameterStoreController.cs
: Controller com um endpoint que demonstra como acessar os valores do Parameter Store de diferentes formas.AwsParameterCommon.cs
: Classe de configuração com os parâmetros mapeados.Program.cs
: Configuração do SSM provider e injeção de dependência das opções.
Adicione o pacote via NuGet:
dotnet add package Amazon.Extensions.Configuration.SystemsManager
var enviroment = builder.Environment.EnvironmentName.ToLower();
builder.Configuration.AddSystemsManager($"/{enviroment}/ssm", TimeSpan.FromSeconds(5));
Isso adiciona o Systems Manager como uma fonte de configuração, com polling automático a cada 5 segundos. O prefixo da chave é baseado no ambiente (Ex:
Development/ssm
,Production/ssm
, etc).
builder.Services.Configure<AwsParameterCommon>(builder.Configuration.GetSection("Settings"));
A seção
Settings
é mapeada diretamente da configuração carregada do Parameter Store.
Exemplo de parâmetro no SSM:
Name: /development/ssm/Settings/ConnectionString
Type: String
Value: Server=mydb;Database=main;
O endpoint /api/v1/parameterstore/connection-string
retorna os valores usando quatro abordagens distintas:
return Ok(new
{
fromOption = _settings.ConnectionString,
fromConfig = value,
fromOptionMonitor = _settingsOptionsMonitor.ConnectionString,
fromOptionSnapshot = _settingsOptionsSnapshot.ConnectionString,
});
Abordagem | Interface usada | Reflete mudanças no SSM? | Observações |
---|---|---|---|
fromOption |
IOptions<T> |
❌ Não | Carregado na inicialização |
fromConfig |
IConfiguration |
✅ Sim | Leitura direta do provider |
fromOptionMonitor |
IOptionsMonitor<T> |
✅ Sim | Escuta mudanças em tempo real |
fromOptionSnapshot |
IOptionsSnapshot<T> |
✅ Na próxima requisição | Escopo por request, útil em serviços scoped |
{
"fromOption": "Server=mydb;Database=main;",
"fromConfig": "Server=mydb;Database=main;",
"fromOptionMonitor": "Server=mydb;Database=main;",
"fromOptionSnapshot": "Server=mydb;Database=main;"
}
Certifique-se de que a aplicação tenha permissão no IAM para acessar os parâmetros no SSM:
{
"Effect": "Allow",
"Action": [
"ssm:GetParametersByPath",
"ssm:GetParameters",
"ssm:GetParameter"
],
"Resource": "arn:aws:ssm:REGIAO:ID_DA_CONTA:parameter/development/ssm/*"
}
dotnet run
Acesse: https://localhost:5001/swagger
- Amazon.Extensions.Configuration.SystemsManager - GitHub
- Documentação oficial da AWS – Parameter Store
- Options Pattern em ASP.NET Core