in src/Amazon.AspNetCore.DataProtection.SSM/SSMXmlRepository.cs [141:177]
private async Task StoreElementAsync(XElement element, string friendlyName)
{
var parameterName = _parameterNamePrefix +
(friendlyName ??
element.Attribute("id")?.Value ??
Guid.NewGuid().ToString());
var elementValue = element.ToString();
var tier = GetParameterTier(elementValue);
_logger.LogInformation($"Using SSM parameter tier {tier} for DataProtection element {parameterName}");
try
{
var request = new PutParameterRequest
{
Name = parameterName,
Value = elementValue,
Type = ParameterType.SecureString,
Description = "ASP.NET Core DataProtection Key",
Tier = tier
};
if (!string.IsNullOrEmpty(_options.KMSKeyId))
{
request.KeyId = _options.KMSKeyId;
}
await _ssmClient.PutParameterAsync(request);
_logger.LogInformation($"Saved DataProtection key to SSM Parameter Store with parameter name {parameterName}");
}
catch (Exception e)
{
_logger.LogError($"Error saving DataProtection key to SSM Parameter Store with parameter name {parameterName}: {e.Message}");
throw;
}
}