
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
© 2015 - 2025 Weber Informatics LLC | Privacy Policy