private async Task StoreElementAsync()

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