private async Task StoreElementAsync()

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;
            }
        }