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

com.pulumi.aws.lakeformation.kotlin.DataLakeSettings.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.aws.lakeformation.kotlin

import com.pulumi.aws.lakeformation.kotlin.outputs.DataLakeSettingsCreateDatabaseDefaultPermission
import com.pulumi.aws.lakeformation.kotlin.outputs.DataLakeSettingsCreateTableDefaultPermission
import com.pulumi.core.Output
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import com.pulumi.aws.lakeformation.kotlin.outputs.DataLakeSettingsCreateDatabaseDefaultPermission.Companion.toKotlin as dataLakeSettingsCreateDatabaseDefaultPermissionToKotlin
import com.pulumi.aws.lakeformation.kotlin.outputs.DataLakeSettingsCreateTableDefaultPermission.Companion.toKotlin as dataLakeSettingsCreateTableDefaultPermissionToKotlin

/**
 * Builder for [DataLakeSettings].
 */
@PulumiTagMarker
public class DataLakeSettingsResourceBuilder internal constructor() {
    public var name: String? = null

    public var args: DataLakeSettingsArgs = DataLakeSettingsArgs()

    public var opts: CustomResourceOptions = CustomResourceOptions()

    /**
     * @param name The _unique_ name of the resulting resource.
     */
    public fun name(`value`: String) {
        this.name = value
    }

    /**
     * @param block The arguments to use to populate this resource's properties.
     */
    public suspend fun args(block: suspend DataLakeSettingsArgsBuilder.() -> Unit) {
        val builder = DataLakeSettingsArgsBuilder()
        block(builder)
        this.args = builder.build()
    }

    /**
     * @param block A bag of options that control this resource's behavior.
     */
    public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
        this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
    }

    internal fun build(): DataLakeSettings {
        val builtJavaResource = com.pulumi.aws.lakeformation.DataLakeSettings(
            this.name,
            this.args.toJava(),
            this.opts.toJava(),
        )
        return DataLakeSettings(builtJavaResource)
    }
}

/**
 * Manages Lake Formation principals designated as data lake administrators and lists of principal permission entries for default create database and default create table permissions.
 * > **NOTE:** Lake Formation introduces fine-grained access control for data in your data lake. Part of the changes include the `IAMAllowedPrincipals` principal in order to make Lake Formation backwards compatible with existing IAM and Glue permissions. 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) and [Upgrading AWS Glue Data Permissions to the AWS Lake Formation Model](https://docs.aws.amazon.com/lake-formation/latest/dg/upgrade-glue-lake-formation.html).
 * ## Example Usage
 * ### Data Lake Admins
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const example = new aws.lakeformation.DataLakeSettings("example", {admins: [
 *     test.arn,
 *     testAwsIamRole.arn,
 * ]});
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * example = aws.lakeformation.DataLakeSettings("example", admins=[
 *     test["arn"],
 *     test_aws_iam_role["arn"],
 * ])
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Aws.LakeFormation.DataLakeSettings("example", new()
 *     {
 *         Admins = new[]
 *         {
 *             test.Arn,
 *             testAwsIamRole.Arn,
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := lakeformation.NewDataLakeSettings(ctx, "example", &lakeformation.DataLakeSettingsArgs{
 * 			Admins: pulumi.StringArray{
 * 				test.Arn,
 * 				testAwsIamRole.Arn,
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.lakeformation.DataLakeSettings;
 * import com.pulumi.aws.lakeformation.DataLakeSettingsArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var example = new DataLakeSettings("example", DataLakeSettingsArgs.builder()
 *             .admins(
 *                 test.arn(),
 *                 testAwsIamRole.arn())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: aws:lakeformation:DataLakeSettings
 *     properties:
 *       admins:
 *         - ${test.arn}
 *         - ${testAwsIamRole.arn}
 * ```
 * 
 * ### Create Default Permissions
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const example = new aws.lakeformation.DataLakeSettings("example", {
 *     admins: [
 *         test.arn,
 *         testAwsIamRole.arn,
 *     ],
 *     createDatabaseDefaultPermissions: [{
 *         permissions: [
 *             "SELECT",
 *             "ALTER",
 *             "DROP",
 *         ],
 *         principal: test.arn,
 *     }],
 *     createTableDefaultPermissions: [{
 *         permissions: ["ALL"],
 *         principal: testAwsIamRole.arn,
 *     }],
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * example = aws.lakeformation.DataLakeSettings("example",
 *     admins=[
 *         test["arn"],
 *         test_aws_iam_role["arn"],
 *     ],
 *     create_database_default_permissions=[{
 *         "permissions": [
 *             "SELECT",
 *             "ALTER",
 *             "DROP",
 *         ],
 *         "principal": test["arn"],
 *     }],
 *     create_table_default_permissions=[{
 *         "permissions": ["ALL"],
 *         "principal": test_aws_iam_role["arn"],
 *     }])
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Aws.LakeFormation.DataLakeSettings("example", new()
 *     {
 *         Admins = new[]
 *         {
 *             test.Arn,
 *             testAwsIamRole.Arn,
 *         },
 *         CreateDatabaseDefaultPermissions = new[]
 *         {
 *             new Aws.LakeFormation.Inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs
 *             {
 *                 Permissions = new[]
 *                 {
 *                     "SELECT",
 *                     "ALTER",
 *                     "DROP",
 *                 },
 *                 Principal = test.Arn,
 *             },
 *         },
 *         CreateTableDefaultPermissions = new[]
 *         {
 *             new Aws.LakeFormation.Inputs.DataLakeSettingsCreateTableDefaultPermissionArgs
 *             {
 *                 Permissions = new[]
 *                 {
 *                     "ALL",
 *                 },
 *                 Principal = testAwsIamRole.Arn,
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := lakeformation.NewDataLakeSettings(ctx, "example", &lakeformation.DataLakeSettingsArgs{
 * 			Admins: pulumi.StringArray{
 * 				test.Arn,
 * 				testAwsIamRole.Arn,
 * 			},
 * 			CreateDatabaseDefaultPermissions: lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArray{
 * 				&lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArgs{
 * 					Permissions: pulumi.StringArray{
 * 						pulumi.String("SELECT"),
 * 						pulumi.String("ALTER"),
 * 						pulumi.String("DROP"),
 * 					},
 * 					Principal: pulumi.Any(test.Arn),
 * 				},
 * 			},
 * 			CreateTableDefaultPermissions: lakeformation.DataLakeSettingsCreateTableDefaultPermissionArray{
 * 				&lakeformation.DataLakeSettingsCreateTableDefaultPermissionArgs{
 * 					Permissions: pulumi.StringArray{
 * 						pulumi.String("ALL"),
 * 					},
 * 					Principal: pulumi.Any(testAwsIamRole.Arn),
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.lakeformation.DataLakeSettings;
 * import com.pulumi.aws.lakeformation.DataLakeSettingsArgs;
 * import com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs;
 * import com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateTableDefaultPermissionArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var example = new DataLakeSettings("example", DataLakeSettingsArgs.builder()
 *             .admins(
 *                 test.arn(),
 *                 testAwsIamRole.arn())
 *             .createDatabaseDefaultPermissions(DataLakeSettingsCreateDatabaseDefaultPermissionArgs.builder()
 *                 .permissions(
 *                     "SELECT",
 *                     "ALTER",
 *                     "DROP")
 *                 .principal(test.arn())
 *                 .build())
 *             .createTableDefaultPermissions(DataLakeSettingsCreateTableDefaultPermissionArgs.builder()
 *                 .permissions("ALL")
 *                 .principal(testAwsIamRole.arn())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: aws:lakeformation:DataLakeSettings
 *     properties:
 *       admins:
 *         - ${test.arn}
 *         - ${testAwsIamRole.arn}
 *       createDatabaseDefaultPermissions:
 *         - permissions:
 *             - SELECT
 *             - ALTER
 *             - DROP
 *           principal: ${test.arn}
 *       createTableDefaultPermissions:
 *         - permissions:
 *             - ALL
 *           principal: ${testAwsIamRole.arn}
 * ```
 * 
 * ### Enable EMR access to LakeFormation resources
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const example = new aws.lakeformation.DataLakeSettings("example", {
 *     admins: [
 *         test.arn,
 *         testAwsIamRole.arn,
 *     ],
 *     createDatabaseDefaultPermissions: [{
 *         permissions: [
 *             "SELECT",
 *             "ALTER",
 *             "DROP",
 *         ],
 *         principal: test.arn,
 *     }],
 *     createTableDefaultPermissions: [{
 *         permissions: ["ALL"],
 *         principal: testAwsIamRole.arn,
 *     }],
 *     allowExternalDataFiltering: true,
 *     externalDataFilteringAllowLists: [
 *         current.accountId,
 *         thirdParty.accountId,
 *     ],
 *     authorizedSessionTagValueLists: ["Amazon EMR"],
 *     allowFullTableExternalDataAccess: true,
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * example = aws.lakeformation.DataLakeSettings("example",
 *     admins=[
 *         test["arn"],
 *         test_aws_iam_role["arn"],
 *     ],
 *     create_database_default_permissions=[{
 *         "permissions": [
 *             "SELECT",
 *             "ALTER",
 *             "DROP",
 *         ],
 *         "principal": test["arn"],
 *     }],
 *     create_table_default_permissions=[{
 *         "permissions": ["ALL"],
 *         "principal": test_aws_iam_role["arn"],
 *     }],
 *     allow_external_data_filtering=True,
 *     external_data_filtering_allow_lists=[
 *         current["accountId"],
 *         third_party["accountId"],
 *     ],
 *     authorized_session_tag_value_lists=["Amazon EMR"],
 *     allow_full_table_external_data_access=True)
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Aws.LakeFormation.DataLakeSettings("example", new()
 *     {
 *         Admins = new[]
 *         {
 *             test.Arn,
 *             testAwsIamRole.Arn,
 *         },
 *         CreateDatabaseDefaultPermissions = new[]
 *         {
 *             new Aws.LakeFormation.Inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs
 *             {
 *                 Permissions = new[]
 *                 {
 *                     "SELECT",
 *                     "ALTER",
 *                     "DROP",
 *                 },
 *                 Principal = test.Arn,
 *             },
 *         },
 *         CreateTableDefaultPermissions = new[]
 *         {
 *             new Aws.LakeFormation.Inputs.DataLakeSettingsCreateTableDefaultPermissionArgs
 *             {
 *                 Permissions = new[]
 *                 {
 *                     "ALL",
 *                 },
 *                 Principal = testAwsIamRole.Arn,
 *             },
 *         },
 *         AllowExternalDataFiltering = true,
 *         ExternalDataFilteringAllowLists = new[]
 *         {
 *             current.AccountId,
 *             thirdParty.AccountId,
 *         },
 *         AuthorizedSessionTagValueLists = new[]
 *         {
 *             "Amazon EMR",
 *         },
 *         AllowFullTableExternalDataAccess = true,
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := lakeformation.NewDataLakeSettings(ctx, "example", &lakeformation.DataLakeSettingsArgs{
 * 			Admins: pulumi.StringArray{
 * 				test.Arn,
 * 				testAwsIamRole.Arn,
 * 			},
 * 			CreateDatabaseDefaultPermissions: lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArray{
 * 				&lakeformation.DataLakeSettingsCreateDatabaseDefaultPermissionArgs{
 * 					Permissions: pulumi.StringArray{
 * 						pulumi.String("SELECT"),
 * 						pulumi.String("ALTER"),
 * 						pulumi.String("DROP"),
 * 					},
 * 					Principal: pulumi.Any(test.Arn),
 * 				},
 * 			},
 * 			CreateTableDefaultPermissions: lakeformation.DataLakeSettingsCreateTableDefaultPermissionArray{
 * 				&lakeformation.DataLakeSettingsCreateTableDefaultPermissionArgs{
 * 					Permissions: pulumi.StringArray{
 * 						pulumi.String("ALL"),
 * 					},
 * 					Principal: pulumi.Any(testAwsIamRole.Arn),
 * 				},
 * 			},
 * 			AllowExternalDataFiltering: pulumi.Bool(true),
 * 			ExternalDataFilteringAllowLists: pulumi.StringArray{
 * 				current.AccountId,
 * 				thirdParty.AccountId,
 * 			},
 * 			AuthorizedSessionTagValueLists: pulumi.StringArray{
 * 				pulumi.String("Amazon EMR"),
 * 			},
 * 			AllowFullTableExternalDataAccess: pulumi.Bool(true),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.lakeformation.DataLakeSettings;
 * import com.pulumi.aws.lakeformation.DataLakeSettingsArgs;
 * import com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateDatabaseDefaultPermissionArgs;
 * import com.pulumi.aws.lakeformation.inputs.DataLakeSettingsCreateTableDefaultPermissionArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var example = new DataLakeSettings("example", DataLakeSettingsArgs.builder()
 *             .admins(
 *                 test.arn(),
 *                 testAwsIamRole.arn())
 *             .createDatabaseDefaultPermissions(DataLakeSettingsCreateDatabaseDefaultPermissionArgs.builder()
 *                 .permissions(
 *                     "SELECT",
 *                     "ALTER",
 *                     "DROP")
 *                 .principal(test.arn())
 *                 .build())
 *             .createTableDefaultPermissions(DataLakeSettingsCreateTableDefaultPermissionArgs.builder()
 *                 .permissions("ALL")
 *                 .principal(testAwsIamRole.arn())
 *                 .build())
 *             .allowExternalDataFiltering(true)
 *             .externalDataFilteringAllowLists(
 *                 current.accountId(),
 *                 thirdParty.accountId())
 *             .authorizedSessionTagValueLists("Amazon EMR")
 *             .allowFullTableExternalDataAccess(true)
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: aws:lakeformation:DataLakeSettings
 *     properties:
 *       admins:
 *         - ${test.arn}
 *         - ${testAwsIamRole.arn}
 *       createDatabaseDefaultPermissions:
 *         - permissions:
 *             - SELECT
 *             - ALTER
 *             - DROP
 *           principal: ${test.arn}
 *       createTableDefaultPermissions:
 *         - permissions:
 *             - ALL
 *           principal: ${testAwsIamRole.arn}
 *       allowExternalDataFiltering: true
 *       externalDataFilteringAllowLists:
 *         - ${current.accountId}
 *         - ${thirdParty.accountId}
 *       authorizedSessionTagValueLists:
 *         - Amazon EMR
 *       allowFullTableExternalDataAccess: true
 * ```
 * 
 * ### Change Cross Account Version
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const example = new aws.lakeformation.DataLakeSettings("example", {parameters: {
 *     CROSS_ACCOUNT_VERSION: "3",
 * }});
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * example = aws.lakeformation.DataLakeSettings("example", parameters={
 *     "CROSS_ACCOUNT_VERSION": "3",
 * })
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Aws.LakeFormation.DataLakeSettings("example", new()
 *     {
 *         Parameters =
 *         {
 *             { "CROSS_ACCOUNT_VERSION", "3" },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lakeformation"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := lakeformation.NewDataLakeSettings(ctx, "example", &lakeformation.DataLakeSettingsArgs{
 * 			Parameters: pulumi.StringMap{
 * 				"CROSS_ACCOUNT_VERSION": pulumi.String("3"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.lakeformation.DataLakeSettings;
 * import com.pulumi.aws.lakeformation.DataLakeSettingsArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var example = new DataLakeSettings("example", DataLakeSettingsArgs.builder()
 *             .parameters(Map.of("CROSS_ACCOUNT_VERSION", "3"))
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: aws:lakeformation:DataLakeSettings
 *     properties:
 *       parameters:
 *         CROSS_ACCOUNT_VERSION: '3'
 * ```
 * 
 */
public class DataLakeSettings internal constructor(
    override val javaResource: com.pulumi.aws.lakeformation.DataLakeSettings,
) : KotlinCustomResource(javaResource, DataLakeSettingsMapper) {
    /**
     * Set of ARNs of AWS Lake Formation principals (IAM users or roles).
     */
    public val admins: Output>
        get() = javaResource.admins().applyValue({ args0 -> args0.map({ args0 -> args0 }) })

    /**
     * Whether to allow Amazon EMR clusters to access data managed by Lake Formation.
     */
    public val allowExternalDataFiltering: Output?
        get() = javaResource.allowExternalDataFiltering().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * Whether to allow a third-party query engine to get data access credentials without session tags when a caller has full data access permissions.
     */
    public val allowFullTableExternalDataAccess: Output?
        get() = javaResource.allowFullTableExternalDataAccess().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * 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.
     */
    public val authorizedSessionTagValueLists: Output>
        get() = javaResource.authorizedSessionTagValueLists().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            })
        })

    /**
     * Identifier for the Data Catalog. By default, the account ID.
     */
    public val catalogId: Output?
        get() = javaResource.catalogId().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })

    /**
     * Up to three configuration blocks of principal permissions for default create database permissions. Detailed below.
     */
    public val createDatabaseDefaultPermissions:
        Output>
        get() = javaResource.createDatabaseDefaultPermissions().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> dataLakeSettingsCreateDatabaseDefaultPermissionToKotlin(args0) })
            })
        })

    /**
     * Up to three configuration blocks of principal permissions for default create table permissions. Detailed below.
     */
    public val createTableDefaultPermissions:
        Output>
        get() = javaResource.createTableDefaultPermissions().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 -> dataLakeSettingsCreateTableDefaultPermissionToKotlin(args0) })
            })
        })

    /**
     * A list of the account IDs of Amazon Web Services accounts with Amazon EMR clusters that are to perform data filtering.
     */
    public val externalDataFilteringAllowLists: Output>
        get() = javaResource.externalDataFilteringAllowLists().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            })
        })

    /**
     * Key-value map of additional configuration. Valid values for the `CROSS_ACCOUNT_VERSION` key are `"1"`, `"2"`, `"3"`, or `"4"`. `SET_CONTEXT` is also returned with a value of `TRUE`. In a fresh account, prior to configuring, `CROSS_ACCOUNT_VERSION` is `"1"`. Destroying this resource sets the `CROSS_ACCOUNT_VERSION` to `"1"`.
     */
    public val parameters: Output>
        get() = javaResource.parameters().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.key.to(args0.value)
            }).toMap()
        })

    /**
     * Set of ARNs of AWS Lake Formation principals (IAM users or roles) with only view access to the resources.
     */
    public val readOnlyAdmins: Output>
        get() = javaResource.readOnlyAdmins().applyValue({ args0 -> args0.map({ args0 -> args0 }) })

    /**
     * List of the resource-owning account IDs that the caller's account can use to share their user access details (user ARNs).
     * > **NOTE:** Although optional, not including `admins`, `create_database_default_permissions`, `create_table_default_permissions`, `parameters`, and/or `trusted_resource_owners` results in the setting being cleared.
     */
    public val trustedResourceOwners: Output>
        get() = javaResource.trustedResourceOwners().applyValue({ args0 -> args0.map({ args0 -> args0 }) })
}

public object DataLakeSettingsMapper : ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.aws.lakeformation.DataLakeSettings::class == javaResource::class

    override fun map(javaResource: Resource): DataLakeSettings = DataLakeSettings(
        javaResource as
            com.pulumi.aws.lakeformation.DataLakeSettings,
    )
}

/**
 * @see [DataLakeSettings].
 * @param name The _unique_ name of the resulting resource.
 * @param block Builder for [DataLakeSettings].
 */
public suspend fun dataLakeSettings(
    name: String,
    block: suspend DataLakeSettingsResourceBuilder.() -> Unit,
): DataLakeSettings {
    val builder = DataLakeSettingsResourceBuilder()
    builder.name(name)
    block(builder)
    return builder.build()
}

/**
 * @see [DataLakeSettings].
 * @param name The _unique_ name of the resulting resource.
 */
public fun dataLakeSettings(name: String): DataLakeSettings {
    val builder = DataLakeSettingsResourceBuilder()
    builder.name(name)
    return builder.build()
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy