public static IDataProtectionBuilder PersistKeysToAWSSystemsManager()

in src/Amazon.AspNetCore.DataProtection.SSM/ExtensionMethods.cs [53:81]


        public static IDataProtectionBuilder PersistKeysToAWSSystemsManager(this IDataProtectionBuilder builder, string parameterNamePrefix, Action<PersistOptions> setupAction = null)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.Services.TryAddAWSService<IAmazonSimpleSystemsManagement>();

            builder.Services.AddSingleton<IConfigureOptions<KeyManagementOptions>>(services =>
            {
                var ssmOptions = new PersistOptions();
                setupAction?.Invoke(ssmOptions);

                var ssmClient = services.GetService<IAmazonSimpleSystemsManagement>();

                var loggerFactory = services.GetService<ILoggerFactory>() ?? NullLoggerFactory.Instance;
                return new ConfigureOptions<KeyManagementOptions>(options =>
                {
                    options.XmlRepository = new SSMXmlRepository(ssmClient, parameterNamePrefix, ssmOptions, loggerFactory);
                });
            });

#if NET9_0_OR_GREATER
            builder.Services.AddSingleton<IKeyManager, XmlDeletableKeyManager>();
#endif

            return builder;
        }