Package com.pulumi.aws.glue
Class Connection
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.glue.Connection
-
public class Connection extends com.pulumi.resources.CustomResourceManages an AWS Glue Connection. ## Example Usage ### Non-VPC Connection
### Non-VPC Connection with secret manager referencepackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.glue.Connection; import com.pulumi.aws.glue.ConnectionArgs; import java.util.ArrayList; import java.util.Arrays; 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 Connection("example", ConnectionArgs.builder() .name("example") .connectionProperties(Map.ofEntries( Map.entry("JDBC_CONNECTION_URL", "jdbc:mysql://example.com/exampledatabase"), Map.entry("PASSWORD", "examplepassword"), Map.entry("USERNAME", "exampleusername") )) .build()); } }
### VPC Connection For more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/populate-add-connection.html#connection-JDBC-VPC).package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.secretsmanager.SecretsmanagerFunctions; import com.pulumi.aws.secretsmanager.inputs.GetSecretArgs; import com.pulumi.aws.glue.Connection; import com.pulumi.aws.glue.ConnectionArgs; import java.util.ArrayList; import java.util.Arrays; 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) { final var example = SecretsmanagerFunctions.getSecret(GetSecretArgs.builder() .name("example-secret") .build()); var exampleConnection = new Connection("exampleConnection", ConnectionArgs.builder() .name("example") .connectionProperties(Map.ofEntries( Map.entry("JDBC_CONNECTION_URL", "jdbc:mysql://example.com/exampledatabase"), Map.entry("SECRET_ID", example.name()) )) .build()); } }
### Connection using a custom connectorpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.glue.Connection; import com.pulumi.aws.glue.ConnectionArgs; import com.pulumi.aws.glue.inputs.ConnectionPhysicalConnectionRequirementsArgs; import java.util.ArrayList; import java.util.Arrays; 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 Connection("example", ConnectionArgs.builder() .physicalConnectionRequirements(ConnectionPhysicalConnectionRequirementsArgs.builder() .availabilityZone(exampleAwsSubnet.availabilityZone()) .securityGroupIdLists(exampleAwsSecurityGroup.id()) .subnetId(exampleAwsSubnet.id()) .build()) .name("example") .connectionProperties(Map.ofEntries( Map.entry("JDBC_CONNECTION_URL", String.format("jdbc:mysql://%s/exampledatabase", exampleAwsRdsCluster.endpoint())), Map.entry("PASSWORD", "examplepassword"), Map.entry("USERNAME", "exampleusername") )) .build()); } }
### Azure Cosmos Connection For more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-azurecosmos).package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.secretsmanager.SecretsmanagerFunctions; import com.pulumi.aws.secretsmanager.inputs.GetSecretArgs; import com.pulumi.aws.glue.Connection; import com.pulumi.aws.glue.ConnectionArgs; import java.util.ArrayList; import java.util.Arrays; 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) { // Define the custom connector using the connection_type of `CUSTOM` with the match_criteria of `template_connection` // Example here being a snowflake jdbc connector with a secret having user and password as keys final var example = SecretsmanagerFunctions.getSecret(GetSecretArgs.builder() .name("example-secret") .build()); var example1 = new Connection("example1", ConnectionArgs.builder() .name("example1") .connectionType("CUSTOM") .connectionProperties(Map.ofEntries( Map.entry("CONNECTOR_CLASS_NAME", "net.snowflake.client.jdbc.SnowflakeDriver"), Map.entry("CONNECTOR_TYPE", "Jdbc"), Map.entry("CONNECTOR_URL", "s3://example/snowflake-jdbc.jar"), Map.entry("JDBC_CONNECTION_URL", "[[\"default=jdbc:snowflake://example.com/?user=${user}&password=${password}\"],\",\"]") )) .matchCriterias("template-connection") .build()); // Reference the connector using match_criteria with the connector created above. var example2 = new Connection("example2", ConnectionArgs.builder() .name("example2") .connectionType("CUSTOM") .connectionProperties(Map.ofEntries( Map.entry("CONNECTOR_CLASS_NAME", "net.snowflake.client.jdbc.SnowflakeDriver"), Map.entry("CONNECTOR_TYPE", "Jdbc"), Map.entry("CONNECTOR_URL", "s3://example/snowflake-jdbc.jar"), Map.entry("JDBC_CONNECTION_URL", "jdbc:snowflake://example.com/?user=${user}&password=${password}"), Map.entry("SECRET_ID", example.name()) )) .matchCriterias( "Connection", example1.name()) .build()); } }
### Azure SQL Connection For more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-azuresql).package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.secretsmanager.Secret; import com.pulumi.aws.secretsmanager.SecretArgs; import com.pulumi.aws.secretsmanager.SecretVersion; import com.pulumi.aws.secretsmanager.SecretVersionArgs; import com.pulumi.aws.glue.Connection; import com.pulumi.aws.glue.ConnectionArgs; import static com.pulumi.codegen.internal.Serialization.*; import java.util.ArrayList; import java.util.Arrays; 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 Secret("example", SecretArgs.builder() .name("example-secret") .build()); var exampleSecretVersion = new SecretVersion("exampleSecretVersion", SecretVersionArgs.builder() .secretId(example.id()) .secretString(serializeJson( jsonObject( jsonProperty("username", "exampleusername"), jsonProperty("password", "examplepassword") ))) .build()); var exampleConnection = new Connection("exampleConnection", ConnectionArgs.builder() .name("example") .connectionType("AZURECOSMOS") .connectionProperties(Map.of("SparkProperties", example.name().applyValue(_name -> serializeJson( jsonObject( jsonProperty("secretId", _name), jsonProperty("spark.cosmos.accountEndpoint", "https://exampledbaccount.documents.azure.com:443/") ))))) .build()); } }
### Google BigQuery Connection For more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-bigquery).package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.secretsmanager.Secret; import com.pulumi.aws.secretsmanager.SecretArgs; import com.pulumi.aws.secretsmanager.SecretVersion; import com.pulumi.aws.secretsmanager.SecretVersionArgs; import com.pulumi.aws.glue.Connection; import com.pulumi.aws.glue.ConnectionArgs; import static com.pulumi.codegen.internal.Serialization.*; import java.util.ArrayList; import java.util.Arrays; 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 Secret("example", SecretArgs.builder() .name("example-secret") .build()); var exampleSecretVersion = new SecretVersion("exampleSecretVersion", SecretVersionArgs.builder() .secretId(example.id()) .secretString(serializeJson( jsonObject( jsonProperty("username", "exampleusername"), jsonProperty("password", "examplepassword") ))) .build()); var exampleConnection = new Connection("exampleConnection", ConnectionArgs.builder() .name("example") .connectionType("AZURECOSMOS") .connectionProperties(Map.of("SparkProperties", example.name().applyValue(_name -> serializeJson( jsonObject( jsonProperty("secretId", _name), jsonProperty("url", "jdbc:sqlserver:exampledbserver.database.windows.net:1433;database=exampledatabase") ))))) .build()); } }
### OpenSearch Service Connection For more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-opensearch).package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.secretsmanager.Secret; import com.pulumi.aws.secretsmanager.SecretArgs; import com.pulumi.aws.secretsmanager.SecretVersion; import com.pulumi.aws.secretsmanager.SecretVersionArgs; import com.pulumi.std.StdFunctions; import com.pulumi.std.inputs.Base64encodeArgs; import com.pulumi.aws.glue.Connection; import com.pulumi.aws.glue.ConnectionArgs; import static com.pulumi.codegen.internal.Serialization.*; import java.util.ArrayList; import java.util.Arrays; 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 Secret("example", SecretArgs.builder() .name("example-secret") .build()); var exampleSecretVersion = new SecretVersion("exampleSecretVersion", SecretVersionArgs.builder() .secretId(example.id()) .secretString(serializeJson( jsonObject( jsonProperty("credentials", StdFunctions.base64encode(Base64encodeArgs.builder() .input("""{\"type\": \"service_account\", \"project_id\": \"example-project\", \"private_key_id\": \"example-key\", \"private_key\": \"-----BEGIN RSA PRIVATE KEY-----\ REDACTED\ -----END RSA PRIVATE KEY-----\", \"client_email\": \"example-project@appspot.gserviceaccount.com\", \"client_id\": example-client\", \"auth_uri\": \"https://accounts.google.com/o/oauth2/auth\", \"token_uri\": \"https://oauth2.googleapis.com/token\", \"auth_provider_x509_cert_url\": \"https://www.googleapis.com/oauth2/v1/certs\", \"client_x509_cert_url\": \"https://www.googleapis.com/robot/v1/metadata/x509/example-project%%40appspot.gserviceaccount.com\", \"universe_domain\": \"googleapis.com\"}""") .build()).result()) ))) .build()); var exampleConnection = new Connection("exampleConnection", ConnectionArgs.builder() .name("example") .connectionType("BIGQUERY") .connectionProperties(Map.of("SparkProperties", example.name().applyValue(_name -> serializeJson( jsonObject( jsonProperty("secretId", _name) ))))) .build());}}
### Snowflake Connection For more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-snowflake).package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.secretsmanager.Secret; import com.pulumi.aws.secretsmanager.SecretArgs; import com.pulumi.aws.secretsmanager.SecretVersion; import com.pulumi.aws.secretsmanager.SecretVersionArgs; import com.pulumi.aws.glue.Connection; import com.pulumi.aws.glue.ConnectionArgs; import static com.pulumi.codegen.internal.Serialization.*; import java.util.ArrayList; import java.util.Arrays; 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 Secret("example", SecretArgs.builder() .name("example-secret") .build()); var exampleSecretVersion = new SecretVersion("exampleSecretVersion", SecretVersionArgs.builder() .secretId(example.id()) .secretString(serializeJson( jsonObject( jsonProperty("opensearch.net.http.auth.user", "exampleusername"), jsonProperty("opensearch.net.http.auth.pass", "examplepassword") ))) .build()); var exampleConnection = new Connection("exampleConnection", ConnectionArgs.builder() .name("example") .connectionType("OPENSEARCH") .connectionProperties(Map.of("SparkProperties", example.name().applyValue(_name -> serializeJson( jsonObject( jsonProperty("secretId", _name), jsonProperty("opensearch.nodes", "https://search-exampledomain-ixlmh4jieahrau3bfebcgp8cnm.us-east-1.es.amazonaws.com"), jsonProperty("opensearch.port", "443"), jsonProperty("opensearch.aws.sigv4.region", "us-east-1"), jsonProperty("opensearch.nodes.wan.only", "true"), jsonProperty("opensearch.aws.sigv4.enabled", "true") ))))) .build()); } }
### DynamoDB Connectionpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.secretsmanager.Secret; import com.pulumi.aws.secretsmanager.SecretArgs; import com.pulumi.aws.secretsmanager.SecretVersion; import com.pulumi.aws.secretsmanager.SecretVersionArgs; import com.pulumi.aws.glue.Connection; import com.pulumi.aws.glue.ConnectionArgs; import static com.pulumi.codegen.internal.Serialization.*; import java.util.ArrayList; import java.util.Arrays; 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 Secret("example", SecretArgs.builder() .name("example-secret") .build()); var exampleSecretVersion = new SecretVersion("exampleSecretVersion", SecretVersionArgs.builder() .secretId(example.id()) .secretString(serializeJson( jsonObject( jsonProperty("sfUser", "exampleusername"), jsonProperty("sfPassword", "examplepassword") ))) .build()); var exampleConnection = new Connection("exampleConnection", ConnectionArgs.builder() .name("example") .connectionType("SNOWFLAKE") .connectionProperties(Map.of("SparkProperties", example.name().applyValue(_name -> serializeJson( jsonObject( jsonProperty("secretId", _name), jsonProperty("sfRole", "EXAMPLEETLROLE"), jsonProperty("sfUrl", "exampleorg-exampleconnection.snowflakecomputing.com") ))))) .build()); } }
### MySQL Federated Connectionpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.glue.Connection; import com.pulumi.aws.glue.ConnectionArgs; import java.util.ArrayList; import java.util.Arrays; 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 test = new Connection("test", ConnectionArgs.builder() .name("example") .connectionType("DYNAMODB") .athenaProperties(Map.ofEntries( Map.entry("lambda_function_arn", "arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_athena_abcdefgh"), Map.entry("disable_spill_encryption", "false"), Map.entry("spill_bucket", "example-bucket") )) .build()); } }
## Import Using `pulumi import`, import Glue Connections using the `CATALOG-ID` (AWS account ID if not custom) and `NAME`. For example: ```sh $ pulumi import aws:glue/connection:Connection MyConnection 123456789012:MyConnection ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.glue.Connection; import com.pulumi.aws.glue.ConnectionArgs; import com.pulumi.aws.glue.inputs.ConnectionAuthenticationConfigurationArgs; import com.pulumi.aws.glue.inputs.ConnectionPhysicalConnectionRequirementsArgs; import java.util.ArrayList; import java.util.Arrays; 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 Connection("example", ConnectionArgs.builder() .authenticationConfiguration(ConnectionAuthenticationConfigurationArgs.builder() .authenticationType("BASIC") .secretArn(exampleAwsSecretsmanagerSecret.arn()) .build()) .physicalConnectionRequirements(ConnectionPhysicalConnectionRequirementsArgs.builder() .availabilityZone(exampleAwsSubnet.availabilityZone()) .securityGroupIdLists(exampleAwsSecurityGroup.id()) .subnetId(exampleAwsSubnet.id()) .build()) .name("athenafederatedcatalog_mysql") .connectionType("MYSQL") .athenaProperties(Map.ofEntries( Map.entry("lambda_function_arn", "arn:aws:lambda:us-east-1:123456789012:function:athenafederatedcatalog_mysql"), Map.entry("spill_bucket", exampleAwsS3Bucket.bucket()) )) .connectionProperties(Map.ofEntries( Map.entry("HOST", exampleAwsRdsCluster.endpoint()), Map.entry("PORT", exampleAwsRdsCluster.port()), Map.entry("DATABASE", exampleAwsRdsCluster.databaseName()) )) .build()); } }
-
-
Constructor Summary
Constructors Constructor Description Connection(java.lang.String name)Connection(java.lang.String name, ConnectionArgs args)Connection(java.lang.String name, ConnectionArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.lang.String>arn()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>athenaProperties()com.pulumi.core.Output<java.util.Optional<ConnectionAuthenticationConfiguration>>authenticationConfiguration()com.pulumi.core.Output<java.lang.String>catalogId()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>connectionProperties()com.pulumi.core.Output<java.util.Optional<java.lang.String>>connectionType()com.pulumi.core.Output<java.util.Optional<java.lang.String>>description()static Connectionget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, ConnectionState state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>>matchCriterias()com.pulumi.core.Output<java.lang.String>name()com.pulumi.core.Output<java.util.Optional<ConnectionPhysicalConnectionRequirements>>physicalConnectionRequirements()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>>tags()com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>>tagsAll()
-
-
-
Constructor Detail
-
Connection
public Connection(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
Connection
public Connection(java.lang.String name, @Nullable ConnectionArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
Connection
public Connection(java.lang.String name, @Nullable ConnectionArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- ARN of the Glue Connection.
-
athenaProperties
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> athenaProperties()
- Returns:
- Map of key-value pairs used as connection properties specific to the Athena compute environment.
-
authenticationConfiguration
public com.pulumi.core.Output<java.util.Optional<ConnectionAuthenticationConfiguration>> authenticationConfiguration()
- Returns:
- Configuration block for authentication options. See `authenticationConfiguration` below.
-
catalogId
public com.pulumi.core.Output<java.lang.String> catalogId()
- Returns:
- ID of the Data Catalog in which to create the connection. If none is supplied, the AWS account ID is used by default.
-
connectionProperties
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> connectionProperties()
- Returns:
- Map of key-value pairs used as parameters for this connection. For more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html).
-
connectionType
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> connectionType()
- Returns:
- Type of the connection. Valid values: `AZURECOSMOS`, `AZURESQL`, `BIGQUERY`, `CUSTOM`, `DYNAMODB`, `JDBC`, `KAFKA`, `MARKETPLACE`, `MONGODB`, `NETWORK`, `OPENSEARCH`, `SNOWFLAKE`. Defaults to `JDBC`. Some connection types require the `SparkProperties` property with a JSON document that contains the actual connection properties. For specific examples, refer to Example Usage.
-
description
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> description()
- Returns:
- Description of the connection.
-
matchCriterias
public com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> matchCriterias()
- Returns:
- List of criteria that can be used in selecting this connection.
-
name
public com.pulumi.core.Output<java.lang.String> name()
- Returns:
- Name of the connection. The following arguments are optional:
-
physicalConnectionRequirements
public com.pulumi.core.Output<java.util.Optional<ConnectionPhysicalConnectionRequirements>> physicalConnectionRequirements()
- Returns:
- Map of physical connection requirements, such as VPC and SecurityGroup. See `physicalConnectionRequirements` below.
-
region
public com.pulumi.core.Output<java.lang.String> region()
- Returns:
- Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> tags()
- Returns:
- Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
-
tagsAll
public com.pulumi.core.Output<java.util.Map<java.lang.String,java.lang.String>> tagsAll()
- Returns:
- Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
-
get
public static Connection get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable ConnectionState state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-