All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.cloudshiftdev.awscdk.services.lakeformation.CfnDataLakeSettingsProps.kt Maven / Gradle / Ivy

There is a newer version: 0.10.0
Show newest version
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")

package io.cloudshiftdev.awscdk.services.lakeformation

import io.cloudshiftdev.awscdk.IResolvable
import io.cloudshiftdev.awscdk.common.CdkDslMarker
import io.cloudshiftdev.awscdk.common.CdkObject
import io.cloudshiftdev.awscdk.common.CdkObjectWrappers
import kotlin.Any
import kotlin.Boolean
import kotlin.String
import kotlin.Unit
import kotlin.collections.List

/**
 * Properties for defining a `CfnDataLakeSettings`.
 *
 * Example:
 *
 * ```
 * import io.cloudshiftdev.awscdk.*;
 * import io.cloudshiftdev.awscdk.services.glue.alpha.S3Table;
 * import io.cloudshiftdev.awscdk.services.glue.alpha.Database;
 * import io.cloudshiftdev.awscdk.services.glue.alpha.DataFormat;
 * import io.cloudshiftdev.awscdk.services.glue.alpha.Schema;
 * import io.cloudshiftdev.awscdk.services.lakeformation.CfnDataLakeSettings;
 * import io.cloudshiftdev.awscdk.services.lakeformation.CfnTag;
 * import io.cloudshiftdev.awscdk.services.lakeformation.CfnTagAssociation;
 * Stack stack;
 * String accountId;
 * String tagKey = "aws";
 * String[] tagValues = List.of("dev");
 * Database database = new Database(this, "Database");
 * S3Table table = S3Table.Builder.create(this, "Table")
 * .database(database)
 * .columns(List.of(Column.builder()
 * .name("col1")
 * .type(Schema.STRING)
 * .build(), Column.builder()
 * .name("col2")
 * .type(Schema.STRING)
 * .build()))
 * .dataFormat(DataFormat.CSV)
 * .build();
 * DefaultStackSynthesizer synthesizer = (DefaultStackSynthesizer)stack.getSynthesizer();
 * CfnDataLakeSettings.Builder.create(this, "DataLakeSettings")
 * .admins(List.of(DataLakePrincipalProperty.builder()
 * .dataLakePrincipalIdentifier(stack.formatArn(ArnComponents.builder()
 * .service("iam")
 * .resource("role")
 * .region("")
 * .account(accountId)
 * .resourceName("Admin")
 * .build()))
 * .build(), DataLakePrincipalProperty.builder()
 * // The CDK cloudformation execution role.
 * .dataLakePrincipalIdentifier(synthesizer.cloudFormationExecutionRoleArn.replace("${AWS::Partition}",
 * "aws"))
 * .build()))
 * .build();
 * CfnTag tag = CfnTag.Builder.create(this, "Tag")
 * .catalogId(accountId)
 * .tagKey(tagKey)
 * .tagValues(tagValues)
 * .build();
 * LFTagPairProperty lfTagPairProperty = LFTagPairProperty.builder()
 * .catalogId(accountId)
 * .tagKey(tagKey)
 * .tagValues(tagValues)
 * .build();
 * CfnTagAssociation tagAssociation = CfnTagAssociation.Builder.create(this, "TagAssociation")
 * .lfTags(List.of(lfTagPairProperty))
 * .resource(ResourceProperty.builder()
 * .tableWithColumns(TableWithColumnsResourceProperty.builder()
 * .databaseName(database.getDatabaseName())
 * .columnNames(List.of("col1", "col2"))
 * .catalogId(accountId)
 * .name(table.getTableName())
 * .build())
 * .build())
 * .build();
 * tagAssociation.node.addDependency(tag);
 * tagAssociation.node.addDependency(table);
 * ```
 *
 * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html)
 */
public interface CfnDataLakeSettingsProps {
  /**
   * A list of AWS Lake Formation principals.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-admins)
   */
  public fun admins(): Any? = unwrap(this).getAdmins()

  /**
   * Whether to allow Amazon EMR clusters or other third-party query engines to access data managed
   * by Lake Formation .
   *
   * If set to true, you allow Amazon EMR clusters or other third-party engines to access data in
   * Amazon S3 locations that are registered with Lake Formation .
   *
   * If false or null, no third-party query engines will be able to access data in Amazon S3
   * locations that are registered with Lake Formation.
   *
   * For more information, see [External data filtering
   * setting](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-LF-setup.html#external-data-filter)
   * .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-allowexternaldatafiltering)
   */
  public fun allowExternalDataFiltering(): Any? = unwrap(this).getAllowExternalDataFiltering()

  /**
   * Specifies whether query engines and applications can get credentials without IAM session tags
   * if the user has full table access.
   *
   * It provides query engines and applications performance benefits as well as simplifies data
   * access. Amazon EMR on Amazon EC2 is able to leverage this setting.
   *
   * For more information, see
   * [](https://docs.aws.amazon.com/lake-formation/latest/dg/using-cred-vending.html)
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-allowfulltableexternaldataaccess)
   */
  public fun allowFullTableExternalDataAccess(): Any? =
      unwrap(this).getAllowFullTableExternalDataAccess()

  /**
   * Lake Formation relies on a privileged process secured by Amazon EMR or the third party
   * integrator to tag the user's role while assuming it.
   *
   * Lake Formation will publish the acceptable key-value pair, for example key =
   * "LakeFormationTrustedCaller" and value = "TRUE" and the third party integrator must properly tag
   * the temporary security credentials that will be used to call Lake Formation 's administrative API
   * operations.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-authorizedsessiontagvaluelist)
   */
  public fun authorizedSessionTagValueList(): List =
      unwrap(this).getAuthorizedSessionTagValueList() ?: emptyList()

  /**
   * Specifies whether access control on a newly created database is managed by Lake Formation
   * permissions or exclusively by IAM permissions.
   *
   * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
   * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicates that the user's IAM permissions
   * determine the access to the database. This is referred to as the setting "Use only IAM access
   * control," and is to support backward compatibility with the AWS Glue permission model implemented
   * by IAM permissions.
   *
   * The only permitted values are an empty array or an array that contains a single JSON object
   * that grants `ALL` to `IAM_ALLOWED_PRINCIPALS` .
   *
   * For more information, see [Changing the default security settings for your data
   * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-createdatabasedefaultpermissions)
   */
  public fun createDatabaseDefaultPermissions(): Any? =
      unwrap(this).getCreateDatabaseDefaultPermissions()

  /**
   * Specifies whether access control on a newly created table is managed by Lake Formation
   * permissions or exclusively by IAM permissions.
   *
   * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
   * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicate that the user's IAM permissions
   * determine the access to the table. This is referred to as the setting "Use only IAM access
   * control," and is to support the backward compatibility with the AWS Glue permission model
   * implemented by IAM permissions.
   *
   * The only permitted values are an empty array or an array that contains a single JSON object
   * that grants `ALL` permissions to `IAM_ALLOWED_PRINCIPALS` .
   *
   * For more information, see [Changing the default security settings for your data
   * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-createtabledefaultpermissions)
   */
  public fun createTableDefaultPermissions(): Any? = unwrap(this).getCreateTableDefaultPermissions()

  /**
   * A list of the account IDs of AWS accounts with Amazon EMR clusters or third-party engines that
   * are allwed to perform data filtering.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-externaldatafilteringallowlist)
   */
  public fun externalDataFilteringAllowList(): Any? =
      unwrap(this).getExternalDataFilteringAllowList()

  /**
   * Specifies whether the data lake settings are updated by adding new values to the current
   * settings ( `APPEND` ) or by replacing the current settings with new settings ( `REPLACE` ).
   *
   *
   * If you choose `REPLACE` , your current data lake settings will be replaced with the new values
   * in your template.
   *
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-mutationtype)
   */
  public fun mutationType(): String? = unwrap(this).getMutationType()

  /**
   * A key-value map that provides an additional configuration on your data lake.
   *
   * `CrossAccountVersion` is the key you can configure in the `Parameters` field. Accepted values
   * for the `CrossAccountVersion` key are 1, 2, and 3.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-parameters)
   */
  public fun parameters(): Any? = unwrap(this).getParameters()

  /**
   * An array of UTF-8 strings.
   *
   * A list of the resource-owning account IDs that the caller's account can use to share their user
   * access details (user ARNs). The user ARNs can be logged in the resource owner's CloudTrail log.
   * You may want to specify this property when you are in a high-trust boundary, such as the same team
   * or company.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-trustedresourceowners)
   */
  public fun trustedResourceOwners(): List = unwrap(this).getTrustedResourceOwners() ?:
      emptyList()

  /**
   * A builder for [CfnDataLakeSettingsProps]
   */
  @CdkDslMarker
  public interface Builder {
    /**
     * @param admins A list of AWS Lake Formation principals.
     */
    public fun admins(admins: IResolvable)

    /**
     * @param admins A list of AWS Lake Formation principals.
     */
    public fun admins(admins: List)

    /**
     * @param admins A list of AWS Lake Formation principals.
     */
    public fun admins(vararg admins: Any)

    /**
     * @param allowExternalDataFiltering Whether to allow Amazon EMR clusters or other third-party
     * query engines to access data managed by Lake Formation .
     * If set to true, you allow Amazon EMR clusters or other third-party engines to access data in
     * Amazon S3 locations that are registered with Lake Formation .
     *
     * If false or null, no third-party query engines will be able to access data in Amazon S3
     * locations that are registered with Lake Formation.
     *
     * For more information, see [External data filtering
     * setting](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-LF-setup.html#external-data-filter)
     * .
     */
    public fun allowExternalDataFiltering(allowExternalDataFiltering: Boolean)

    /**
     * @param allowExternalDataFiltering Whether to allow Amazon EMR clusters or other third-party
     * query engines to access data managed by Lake Formation .
     * If set to true, you allow Amazon EMR clusters or other third-party engines to access data in
     * Amazon S3 locations that are registered with Lake Formation .
     *
     * If false or null, no third-party query engines will be able to access data in Amazon S3
     * locations that are registered with Lake Formation.
     *
     * For more information, see [External data filtering
     * setting](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-LF-setup.html#external-data-filter)
     * .
     */
    public fun allowExternalDataFiltering(allowExternalDataFiltering: IResolvable)

    /**
     * @param allowFullTableExternalDataAccess Specifies whether query engines and applications can
     * get credentials without IAM session tags if the user has full table access.
     * It provides query engines and applications performance benefits as well as simplifies data
     * access. Amazon EMR on Amazon EC2 is able to leverage this setting.
     *
     * For more information, see
     * [](https://docs.aws.amazon.com/lake-formation/latest/dg/using-cred-vending.html)
     */
    public fun allowFullTableExternalDataAccess(allowFullTableExternalDataAccess: Boolean)

    /**
     * @param allowFullTableExternalDataAccess Specifies whether query engines and applications can
     * get credentials without IAM session tags if the user has full table access.
     * It provides query engines and applications performance benefits as well as simplifies data
     * access. Amazon EMR on Amazon EC2 is able to leverage this setting.
     *
     * For more information, see
     * [](https://docs.aws.amazon.com/lake-formation/latest/dg/using-cred-vending.html)
     */
    public fun allowFullTableExternalDataAccess(allowFullTableExternalDataAccess: IResolvable)

    /**
     * @param authorizedSessionTagValueList Lake Formation relies on a privileged process secured by
     * Amazon EMR or the third party integrator to tag the user's role while assuming it.
     * Lake Formation will publish the acceptable key-value pair, for example key =
     * "LakeFormationTrustedCaller" and value = "TRUE" and the third party integrator must properly tag
     * the temporary security credentials that will be used to call Lake Formation 's administrative
     * API operations.
     */
    public fun authorizedSessionTagValueList(authorizedSessionTagValueList: List)

    /**
     * @param authorizedSessionTagValueList Lake Formation relies on a privileged process secured by
     * Amazon EMR or the third party integrator to tag the user's role while assuming it.
     * Lake Formation will publish the acceptable key-value pair, for example key =
     * "LakeFormationTrustedCaller" and value = "TRUE" and the third party integrator must properly tag
     * the temporary security credentials that will be used to call Lake Formation 's administrative
     * API operations.
     */
    public fun authorizedSessionTagValueList(vararg authorizedSessionTagValueList: String)

    /**
     * @param createDatabaseDefaultPermissions Specifies whether access control on a newly created
     * database is managed by Lake Formation permissions or exclusively by IAM permissions.
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicates that the user's IAM permissions
     * determine the access to the database. This is referred to as the setting "Use only IAM access
     * control," and is to support backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     */
    public fun createDatabaseDefaultPermissions(createDatabaseDefaultPermissions: IResolvable)

    /**
     * @param createDatabaseDefaultPermissions Specifies whether access control on a newly created
     * database is managed by Lake Formation permissions or exclusively by IAM permissions.
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicates that the user's IAM permissions
     * determine the access to the database. This is referred to as the setting "Use only IAM access
     * control," and is to support backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     */
    public fun createDatabaseDefaultPermissions(createDatabaseDefaultPermissions: List)

    /**
     * @param createDatabaseDefaultPermissions Specifies whether access control on a newly created
     * database is managed by Lake Formation permissions or exclusively by IAM permissions.
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicates that the user's IAM permissions
     * determine the access to the database. This is referred to as the setting "Use only IAM access
     * control," and is to support backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     */
    public fun createDatabaseDefaultPermissions(vararg createDatabaseDefaultPermissions: Any)

    /**
     * @param createTableDefaultPermissions Specifies whether access control on a newly created
     * table is managed by Lake Formation permissions or exclusively by IAM permissions.
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicate that the user's IAM permissions
     * determine the access to the table. This is referred to as the setting "Use only IAM access
     * control," and is to support the backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` permissions to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     */
    public fun createTableDefaultPermissions(createTableDefaultPermissions: IResolvable)

    /**
     * @param createTableDefaultPermissions Specifies whether access control on a newly created
     * table is managed by Lake Formation permissions or exclusively by IAM permissions.
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicate that the user's IAM permissions
     * determine the access to the table. This is referred to as the setting "Use only IAM access
     * control," and is to support the backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` permissions to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     */
    public fun createTableDefaultPermissions(createTableDefaultPermissions: List)

    /**
     * @param createTableDefaultPermissions Specifies whether access control on a newly created
     * table is managed by Lake Formation permissions or exclusively by IAM permissions.
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicate that the user's IAM permissions
     * determine the access to the table. This is referred to as the setting "Use only IAM access
     * control," and is to support the backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` permissions to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     */
    public fun createTableDefaultPermissions(vararg createTableDefaultPermissions: Any)

    /**
     * @param externalDataFilteringAllowList A list of the account IDs of AWS accounts with Amazon
     * EMR clusters or third-party engines that are allwed to perform data filtering.
     */
    public fun externalDataFilteringAllowList(externalDataFilteringAllowList: IResolvable)

    /**
     * @param externalDataFilteringAllowList A list of the account IDs of AWS accounts with Amazon
     * EMR clusters or third-party engines that are allwed to perform data filtering.
     */
    public fun externalDataFilteringAllowList(externalDataFilteringAllowList: List)

    /**
     * @param externalDataFilteringAllowList A list of the account IDs of AWS accounts with Amazon
     * EMR clusters or third-party engines that are allwed to perform data filtering.
     */
    public fun externalDataFilteringAllowList(vararg externalDataFilteringAllowList: Any)

    /**
     * @param mutationType Specifies whether the data lake settings are updated by adding new values
     * to the current settings ( `APPEND` ) or by replacing the current settings with new settings (
     * `REPLACE` ).
     *
     * If you choose `REPLACE` , your current data lake settings will be replaced with the new
     * values in your template.
     */
    public fun mutationType(mutationType: String)

    /**
     * @param parameters A key-value map that provides an additional configuration on your data
     * lake.
     * `CrossAccountVersion` is the key you can configure in the `Parameters` field. Accepted values
     * for the `CrossAccountVersion` key are 1, 2, and 3.
     */
    public fun parameters(parameters: Any)

    /**
     * @param trustedResourceOwners An array of UTF-8 strings.
     * A list of the resource-owning account IDs that the caller's account can use to share their
     * user access details (user ARNs). The user ARNs can be logged in the resource owner's CloudTrail
     * log. You may want to specify this property when you are in a high-trust boundary, such as the
     * same team or company.
     */
    public fun trustedResourceOwners(trustedResourceOwners: List)

    /**
     * @param trustedResourceOwners An array of UTF-8 strings.
     * A list of the resource-owning account IDs that the caller's account can use to share their
     * user access details (user ARNs). The user ARNs can be logged in the resource owner's CloudTrail
     * log. You may want to specify this property when you are in a high-trust boundary, such as the
     * same team or company.
     */
    public fun trustedResourceOwners(vararg trustedResourceOwners: String)
  }

  private class BuilderImpl : Builder {
    private val cdkBuilder:
        software.amazon.awscdk.services.lakeformation.CfnDataLakeSettingsProps.Builder =
        software.amazon.awscdk.services.lakeformation.CfnDataLakeSettingsProps.builder()

    /**
     * @param admins A list of AWS Lake Formation principals.
     */
    override fun admins(admins: IResolvable) {
      cdkBuilder.admins(admins.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param admins A list of AWS Lake Formation principals.
     */
    override fun admins(admins: List) {
      cdkBuilder.admins(admins.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param admins A list of AWS Lake Formation principals.
     */
    override fun admins(vararg admins: Any): Unit = admins(admins.toList())

    /**
     * @param allowExternalDataFiltering Whether to allow Amazon EMR clusters or other third-party
     * query engines to access data managed by Lake Formation .
     * If set to true, you allow Amazon EMR clusters or other third-party engines to access data in
     * Amazon S3 locations that are registered with Lake Formation .
     *
     * If false or null, no third-party query engines will be able to access data in Amazon S3
     * locations that are registered with Lake Formation.
     *
     * For more information, see [External data filtering
     * setting](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-LF-setup.html#external-data-filter)
     * .
     */
    override fun allowExternalDataFiltering(allowExternalDataFiltering: Boolean) {
      cdkBuilder.allowExternalDataFiltering(allowExternalDataFiltering)
    }

    /**
     * @param allowExternalDataFiltering Whether to allow Amazon EMR clusters or other third-party
     * query engines to access data managed by Lake Formation .
     * If set to true, you allow Amazon EMR clusters or other third-party engines to access data in
     * Amazon S3 locations that are registered with Lake Formation .
     *
     * If false or null, no third-party query engines will be able to access data in Amazon S3
     * locations that are registered with Lake Formation.
     *
     * For more information, see [External data filtering
     * setting](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-LF-setup.html#external-data-filter)
     * .
     */
    override fun allowExternalDataFiltering(allowExternalDataFiltering: IResolvable) {
      cdkBuilder.allowExternalDataFiltering(allowExternalDataFiltering.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param allowFullTableExternalDataAccess Specifies whether query engines and applications can
     * get credentials without IAM session tags if the user has full table access.
     * It provides query engines and applications performance benefits as well as simplifies data
     * access. Amazon EMR on Amazon EC2 is able to leverage this setting.
     *
     * For more information, see
     * [](https://docs.aws.amazon.com/lake-formation/latest/dg/using-cred-vending.html)
     */
    override fun allowFullTableExternalDataAccess(allowFullTableExternalDataAccess: Boolean) {
      cdkBuilder.allowFullTableExternalDataAccess(allowFullTableExternalDataAccess)
    }

    /**
     * @param allowFullTableExternalDataAccess Specifies whether query engines and applications can
     * get credentials without IAM session tags if the user has full table access.
     * It provides query engines and applications performance benefits as well as simplifies data
     * access. Amazon EMR on Amazon EC2 is able to leverage this setting.
     *
     * For more information, see
     * [](https://docs.aws.amazon.com/lake-formation/latest/dg/using-cred-vending.html)
     */
    override fun allowFullTableExternalDataAccess(allowFullTableExternalDataAccess: IResolvable) {
      cdkBuilder.allowFullTableExternalDataAccess(allowFullTableExternalDataAccess.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param authorizedSessionTagValueList Lake Formation relies on a privileged process secured by
     * Amazon EMR or the third party integrator to tag the user's role while assuming it.
     * Lake Formation will publish the acceptable key-value pair, for example key =
     * "LakeFormationTrustedCaller" and value = "TRUE" and the third party integrator must properly tag
     * the temporary security credentials that will be used to call Lake Formation 's administrative
     * API operations.
     */
    override fun authorizedSessionTagValueList(authorizedSessionTagValueList: List) {
      cdkBuilder.authorizedSessionTagValueList(authorizedSessionTagValueList)
    }

    /**
     * @param authorizedSessionTagValueList Lake Formation relies on a privileged process secured by
     * Amazon EMR or the third party integrator to tag the user's role while assuming it.
     * Lake Formation will publish the acceptable key-value pair, for example key =
     * "LakeFormationTrustedCaller" and value = "TRUE" and the third party integrator must properly tag
     * the temporary security credentials that will be used to call Lake Formation 's administrative
     * API operations.
     */
    override fun authorizedSessionTagValueList(vararg authorizedSessionTagValueList: String): Unit =
        authorizedSessionTagValueList(authorizedSessionTagValueList.toList())

    /**
     * @param createDatabaseDefaultPermissions Specifies whether access control on a newly created
     * database is managed by Lake Formation permissions or exclusively by IAM permissions.
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicates that the user's IAM permissions
     * determine the access to the database. This is referred to as the setting "Use only IAM access
     * control," and is to support backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     */
    override fun createDatabaseDefaultPermissions(createDatabaseDefaultPermissions: IResolvable) {
      cdkBuilder.createDatabaseDefaultPermissions(createDatabaseDefaultPermissions.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param createDatabaseDefaultPermissions Specifies whether access control on a newly created
     * database is managed by Lake Formation permissions or exclusively by IAM permissions.
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicates that the user's IAM permissions
     * determine the access to the database. This is referred to as the setting "Use only IAM access
     * control," and is to support backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     */
    override fun createDatabaseDefaultPermissions(createDatabaseDefaultPermissions: List) {
      cdkBuilder.createDatabaseDefaultPermissions(createDatabaseDefaultPermissions.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param createDatabaseDefaultPermissions Specifies whether access control on a newly created
     * database is managed by Lake Formation permissions or exclusively by IAM permissions.
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicates that the user's IAM permissions
     * determine the access to the database. This is referred to as the setting "Use only IAM access
     * control," and is to support backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     */
    override fun createDatabaseDefaultPermissions(vararg createDatabaseDefaultPermissions: Any):
        Unit = createDatabaseDefaultPermissions(createDatabaseDefaultPermissions.toList())

    /**
     * @param createTableDefaultPermissions Specifies whether access control on a newly created
     * table is managed by Lake Formation permissions or exclusively by IAM permissions.
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicate that the user's IAM permissions
     * determine the access to the table. This is referred to as the setting "Use only IAM access
     * control," and is to support the backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` permissions to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     */
    override fun createTableDefaultPermissions(createTableDefaultPermissions: IResolvable) {
      cdkBuilder.createTableDefaultPermissions(createTableDefaultPermissions.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param createTableDefaultPermissions Specifies whether access control on a newly created
     * table is managed by Lake Formation permissions or exclusively by IAM permissions.
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicate that the user's IAM permissions
     * determine the access to the table. This is referred to as the setting "Use only IAM access
     * control," and is to support the backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` permissions to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     */
    override fun createTableDefaultPermissions(createTableDefaultPermissions: List) {
      cdkBuilder.createTableDefaultPermissions(createTableDefaultPermissions.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param createTableDefaultPermissions Specifies whether access control on a newly created
     * table is managed by Lake Formation permissions or exclusively by IAM permissions.
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicate that the user's IAM permissions
     * determine the access to the table. This is referred to as the setting "Use only IAM access
     * control," and is to support the backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` permissions to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     */
    override fun createTableDefaultPermissions(vararg createTableDefaultPermissions: Any): Unit =
        createTableDefaultPermissions(createTableDefaultPermissions.toList())

    /**
     * @param externalDataFilteringAllowList A list of the account IDs of AWS accounts with Amazon
     * EMR clusters or third-party engines that are allwed to perform data filtering.
     */
    override fun externalDataFilteringAllowList(externalDataFilteringAllowList: IResolvable) {
      cdkBuilder.externalDataFilteringAllowList(externalDataFilteringAllowList.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param externalDataFilteringAllowList A list of the account IDs of AWS accounts with Amazon
     * EMR clusters or third-party engines that are allwed to perform data filtering.
     */
    override fun externalDataFilteringAllowList(externalDataFilteringAllowList: List) {
      cdkBuilder.externalDataFilteringAllowList(externalDataFilteringAllowList.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param externalDataFilteringAllowList A list of the account IDs of AWS accounts with Amazon
     * EMR clusters or third-party engines that are allwed to perform data filtering.
     */
    override fun externalDataFilteringAllowList(vararg externalDataFilteringAllowList: Any): Unit =
        externalDataFilteringAllowList(externalDataFilteringAllowList.toList())

    /**
     * @param mutationType Specifies whether the data lake settings are updated by adding new values
     * to the current settings ( `APPEND` ) or by replacing the current settings with new settings (
     * `REPLACE` ).
     *
     * If you choose `REPLACE` , your current data lake settings will be replaced with the new
     * values in your template.
     */
    override fun mutationType(mutationType: String) {
      cdkBuilder.mutationType(mutationType)
    }

    /**
     * @param parameters A key-value map that provides an additional configuration on your data
     * lake.
     * `CrossAccountVersion` is the key you can configure in the `Parameters` field. Accepted values
     * for the `CrossAccountVersion` key are 1, 2, and 3.
     */
    override fun parameters(parameters: Any) {
      cdkBuilder.parameters(parameters)
    }

    /**
     * @param trustedResourceOwners An array of UTF-8 strings.
     * A list of the resource-owning account IDs that the caller's account can use to share their
     * user access details (user ARNs). The user ARNs can be logged in the resource owner's CloudTrail
     * log. You may want to specify this property when you are in a high-trust boundary, such as the
     * same team or company.
     */
    override fun trustedResourceOwners(trustedResourceOwners: List) {
      cdkBuilder.trustedResourceOwners(trustedResourceOwners)
    }

    /**
     * @param trustedResourceOwners An array of UTF-8 strings.
     * A list of the resource-owning account IDs that the caller's account can use to share their
     * user access details (user ARNs). The user ARNs can be logged in the resource owner's CloudTrail
     * log. You may want to specify this property when you are in a high-trust boundary, such as the
     * same team or company.
     */
    override fun trustedResourceOwners(vararg trustedResourceOwners: String): Unit =
        trustedResourceOwners(trustedResourceOwners.toList())

    public fun build(): software.amazon.awscdk.services.lakeformation.CfnDataLakeSettingsProps =
        cdkBuilder.build()
  }

  private class Wrapper(
    cdkObject: software.amazon.awscdk.services.lakeformation.CfnDataLakeSettingsProps,
  ) : CdkObject(cdkObject),
      CfnDataLakeSettingsProps {
    /**
     * A list of AWS Lake Formation principals.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-admins)
     */
    override fun admins(): Any? = unwrap(this).getAdmins()

    /**
     * Whether to allow Amazon EMR clusters or other third-party query engines to access data
     * managed by Lake Formation .
     *
     * If set to true, you allow Amazon EMR clusters or other third-party engines to access data in
     * Amazon S3 locations that are registered with Lake Formation .
     *
     * If false or null, no third-party query engines will be able to access data in Amazon S3
     * locations that are registered with Lake Formation.
     *
     * For more information, see [External data filtering
     * setting](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-LF-setup.html#external-data-filter)
     * .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-allowexternaldatafiltering)
     */
    override fun allowExternalDataFiltering(): Any? = unwrap(this).getAllowExternalDataFiltering()

    /**
     * Specifies whether query engines and applications can get credentials without IAM session tags
     * if the user has full table access.
     *
     * It provides query engines and applications performance benefits as well as simplifies data
     * access. Amazon EMR on Amazon EC2 is able to leverage this setting.
     *
     * For more information, see
     * [](https://docs.aws.amazon.com/lake-formation/latest/dg/using-cred-vending.html)
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-allowfulltableexternaldataaccess)
     */
    override fun allowFullTableExternalDataAccess(): Any? =
        unwrap(this).getAllowFullTableExternalDataAccess()

    /**
     * Lake Formation relies on a privileged process secured by Amazon EMR or the third party
     * integrator to tag the user's role while assuming it.
     *
     * Lake Formation will publish the acceptable key-value pair, for example key =
     * "LakeFormationTrustedCaller" and value = "TRUE" and the third party integrator must properly tag
     * the temporary security credentials that will be used to call Lake Formation 's administrative
     * API operations.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-authorizedsessiontagvaluelist)
     */
    override fun authorizedSessionTagValueList(): List =
        unwrap(this).getAuthorizedSessionTagValueList() ?: emptyList()

    /**
     * Specifies whether access control on a newly created database is managed by Lake Formation
     * permissions or exclusively by IAM permissions.
     *
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicates that the user's IAM permissions
     * determine the access to the database. This is referred to as the setting "Use only IAM access
     * control," and is to support backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-createdatabasedefaultpermissions)
     */
    override fun createDatabaseDefaultPermissions(): Any? =
        unwrap(this).getCreateDatabaseDefaultPermissions()

    /**
     * Specifies whether access control on a newly created table is managed by Lake Formation
     * permissions or exclusively by IAM permissions.
     *
     * A null value indicates that the access is controlled by Lake Formation permissions. `ALL`
     * permissions assigned to `IAM_ALLOWED_PRINCIPALS` group indicate that the user's IAM permissions
     * determine the access to the table. This is referred to as the setting "Use only IAM access
     * control," and is to support the backward compatibility with the AWS Glue permission model
     * implemented by IAM permissions.
     *
     * The only permitted values are an empty array or an array that contains a single JSON object
     * that grants `ALL` permissions to `IAM_ALLOWED_PRINCIPALS` .
     *
     * For more information, see [Changing the default security settings for your data
     * lake](https://docs.aws.amazon.com/lake-formation/latest/dg/change-settings.html) .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-createtabledefaultpermissions)
     */
    override fun createTableDefaultPermissions(): Any? =
        unwrap(this).getCreateTableDefaultPermissions()

    /**
     * A list of the account IDs of AWS accounts with Amazon EMR clusters or third-party engines
     * that are allwed to perform data filtering.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-externaldatafilteringallowlist)
     */
    override fun externalDataFilteringAllowList(): Any? =
        unwrap(this).getExternalDataFilteringAllowList()

    /**
     * Specifies whether the data lake settings are updated by adding new values to the current
     * settings ( `APPEND` ) or by replacing the current settings with new settings ( `REPLACE` ).
     *
     *
     * If you choose `REPLACE` , your current data lake settings will be replaced with the new
     * values in your template.
     *
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-mutationtype)
     */
    override fun mutationType(): String? = unwrap(this).getMutationType()

    /**
     * A key-value map that provides an additional configuration on your data lake.
     *
     * `CrossAccountVersion` is the key you can configure in the `Parameters` field. Accepted values
     * for the `CrossAccountVersion` key are 1, 2, and 3.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-parameters)
     */
    override fun parameters(): Any? = unwrap(this).getParameters()

    /**
     * An array of UTF-8 strings.
     *
     * A list of the resource-owning account IDs that the caller's account can use to share their
     * user access details (user ARNs). The user ARNs can be logged in the resource owner's CloudTrail
     * log. You may want to specify this property when you are in a high-trust boundary, such as the
     * same team or company.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lakeformation-datalakesettings.html#cfn-lakeformation-datalakesettings-trustedresourceowners)
     */
    override fun trustedResourceOwners(): List = unwrap(this).getTrustedResourceOwners() ?:
        emptyList()
  }

  public companion object {
    public operator fun invoke(block: Builder.() -> Unit = {}): CfnDataLakeSettingsProps {
      val builderImpl = BuilderImpl()
      return Wrapper(builderImpl.apply(block).build())
    }

    internal
        fun wrap(cdkObject: software.amazon.awscdk.services.lakeformation.CfnDataLakeSettingsProps):
        CfnDataLakeSettingsProps = CdkObjectWrappers.wrap(cdkObject) as? CfnDataLakeSettingsProps ?:
        Wrapper(cdkObject)

    internal fun unwrap(wrapped: CfnDataLakeSettingsProps):
        software.amazon.awscdk.services.lakeformation.CfnDataLakeSettingsProps = (wrapped as
        CdkObject).cdkObject as
        software.amazon.awscdk.services.lakeformation.CfnDataLakeSettingsProps
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy