@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
    @Bean
    @ConditionalOnMissingBean(name = "amazonDynamoDbSamlRegisteredServiceMetadataClient")
    public DynamoDbClient amazonDynamoDbSamlRegisteredServiceMetadataClient(
        final CasConfigurationProperties casProperties) throws Exception {
        val dynamoDbProperties = casProperties.getAuthn().getSamlIdp().getMetadata().getDynamoDb();
        val factory = new AmazonDynamoDbClientFactory();
        val client = factory.createAmazonDynamoDb(dynamoDbProperties);
        if (!dynamoDbProperties.isPreventTableCreationOnStartup()) {
            val attributes = List.of(AttributeDefinition.builder()
                .attributeName(SamlRegisteredServiceMetadataColumns.NAME.getColumnName())
                .attributeType(ScalarAttributeType.S)
                .build());
            val schema = List.of(KeySchemaElement.builder()
                .attributeName(SamlRegisteredServiceMetadataColumns.NAME.getColumnName())
                .keyType(KeyType.HASH)
                .build());
            DynamoDbTableUtils.createTable(client, dynamoDbProperties,
                dynamoDbProperties.getTableName(), dynamoDbProperties.isDropTablesOnStartup(),
                attributes, schema);
        }
        return client;
    }
This is {@link SamlIdPDynamoDbIdPMetadataConfiguration}.

@author Misagh Moayyed
@since 7.2.0
support/cas-server-support-saml-idp-metadata-dynamodb/src/main/java/org/apereo/cas/config/SamlIdPDynamoDbRegisteredServiceMetadataConfiguration.java