in src/Amazon.AspNetCore.DataProtection.SSM/SSMXmlRepository.cs [167:210]
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}", tier, parameterName);
try
{
var request = new PutParameterRequest
{
Name = parameterName,
Value = elementValue,
Type = ParameterType.SecureString,
Description = "ASP.NET Core DataProtection Key",
Tier = tier
};
if (_options.Tags?.Count > 0)
{
request.Tags = _options.Tags
.Select(tag => new Tag() { Key = tag.Key, Value = tag.Value })
.ToList();
}
if (!string.IsNullOrEmpty(_options.KMSKeyId))
{
request.KeyId = _options.KMSKeyId;
}
await _ssmClient.PutParameterAsync(request).ConfigureAwait(false);
_logger.LogInformation("Saved DataProtection key to SSM Parameter Store with parameter name {ParameterName}", parameterName);
}
catch (Exception e)
{
_logger.LogError(e, "Error saving DataProtection key to SSM Parameter Store with parameter name {ParameterName}: {ExceptionMessage}", parameterName, e.Message);
throw;
}
}