
com.pulumi.aws.glue.Connection Maven / Gradle / Ivy
// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
package com.pulumi.aws.glue;
import com.pulumi.aws.Utilities;
import com.pulumi.aws.glue.ConnectionArgs;
import com.pulumi.aws.glue.inputs.ConnectionState;
import com.pulumi.aws.glue.outputs.ConnectionPhysicalConnectionRequirements;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Export;
import com.pulumi.core.annotations.ResourceType;
import com.pulumi.core.internal.Codegen;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import javax.annotation.Nullable;
/**
* Provides a Glue Connection resource.
*
* ## Example Usage
*
* ### Non-VPC Connection
*
* <!--Start PulumiCodeChooser -->
*
* {@code
* 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 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 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());
*
* }
* }
* }
*
* <!--End PulumiCodeChooser -->
*
* ### Non-VPC Connection with secret manager reference
*
* <!--Start PulumiCodeChooser -->
*
* {@code
* 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.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) {
* 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.applyValue(getSecretResult -> getSecretResult.name()))
* ))
* .build());
*
* }
* }
* }
*
* <!--End PulumiCodeChooser -->
*
* ### VPC Connection
*
* For more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/populate-add-connection.html#connection-JDBC-VPC).
*
* <!--Start PulumiCodeChooser -->
*
* {@code
* 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.ConnectionPhysicalConnectionRequirementsArgs;
* 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 Connection("example", ConnectionArgs.builder()
* .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")
* ))
* .physicalConnectionRequirements(ConnectionPhysicalConnectionRequirementsArgs.builder()
* .availabilityZone(exampleAwsSubnet.availabilityZone())
* .securityGroupIdLists(exampleAwsSecurityGroup.id())
* .subnetId(exampleAwsSubnet.id())
* .build())
* .build());
*
* }
* }
* }
*
* <!--End PulumiCodeChooser -->
*
* ### Connection using a custom connector
*
* <!--Start PulumiCodeChooser -->
*
* {@code
* 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.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) {
* // 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("CONNECTION_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("CONNECTION_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.applyValue(getSecretResult -> getSecretResult.name()))
* ))
* .matchCriterias(
* "Connection",
* example1.name())
* .build());
*
* }
* }
* }
*
* <!--End PulumiCodeChooser -->
*
* ### Azure Cosmos Connection
*
* For more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-azurecosmos).
*
* <!--Start PulumiCodeChooser -->
*
* {@code
* 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.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 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());
*
* }
* }
* }
*
* <!--End PulumiCodeChooser -->
*
* ### Azure SQL Connection
*
* For more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-azuresql).
*
* <!--Start PulumiCodeChooser -->
*
* {@code
* 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.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 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());
*
* }
* }
* }
*
* <!--End PulumiCodeChooser -->
*
* ### Google BigQuery Connection
*
* For more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-bigquery).
*
* <!--Start PulumiCodeChooser -->
*
* {@code
* 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.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 }{{@code
* public static void main(String[] args) }{{@code
* Pulumi.run(App::stack);
* }}{@code
*
* public static void stack(Context ctx) }{{@code
* 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("""
* }{{@code
* "type": "service_account",
* "project_id": "example-project",
* "private_key_id": "example-key",
* "private_key": "-----BEGIN RSA PRIVATE KEY-----\nREDACTED\n-----END RSA PRIVATE KEY-----",
* "client_email": "example-project}{@literal @}{@code 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"
* }}{@code
* """)
* .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());
*
* }}{@code
* }}{@code
* }
*
* <!--End PulumiCodeChooser -->
*
* ### OpenSearch Service Connection
*
* For more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-opensearch).
*
* <!--Start PulumiCodeChooser -->
*
* {@code
* 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.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 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());
*
* }
* }
* }
*
* <!--End PulumiCodeChooser -->
*
* ### Snowflake Connection
*
* For more information, see the [AWS Documentation](https://docs.aws.amazon.com/glue/latest/dg/connection-properties.html#connection-properties-snowflake).
*
* <!--Start PulumiCodeChooser -->
*
* {@code
* 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.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 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());
*
* }
* }
* }
*
* <!--End PulumiCodeChooser -->
*
* ## 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
* ```
*
*/
@ResourceType(type="aws:glue/connection:Connection")
public class Connection extends com.pulumi.resources.CustomResource {
/**
* ARN of the Glue Connection.
*
*/
@Export(name="arn", refs={String.class}, tree="[0]")
private Output arn;
/**
* @return ARN of the Glue Connection.
*
*/
public Output arn() {
return this.arn;
}
/**
* ID of the Data Catalog in which to create the connection. If none is supplied, the AWS account ID is used by default.
*
*/
@Export(name="catalogId", refs={String.class}, tree="[0]")
private Output catalogId;
/**
* @return ID of the Data Catalog in which to create the connection. If none is supplied, the AWS account ID is used by default.
*
*/
public Output catalogId() {
return this.catalogId;
}
/**
* 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).
*
* **Note:** Some connection types require the `SparkProperties` property with a JSON document that contains the actual connection properties. For specific examples, refer to Example Usage.
*
*/
@Export(name="connectionProperties", refs={Map.class,String.class}, tree="[0,1,1]")
private Output* @Nullable */ Map> connectionProperties;
/**
* @return 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).
*
* **Note:** Some connection types require the `SparkProperties` property with a JSON document that contains the actual connection properties. For specific examples, refer to Example Usage.
*
*/
public Output>> connectionProperties() {
return Codegen.optional(this.connectionProperties);
}
/**
* Type of the connection. Valid values: `AZURECOSMOS`, `AZURESQL`, `BIGQUERY`, `CUSTOM`, `JDBC`, `KAFKA`, `MARKETPLACE`, `MONGODB`, `NETWORK`, `OPENSEARCH`, `SNOWFLAKE`. Defaults to `JDBC`.
*
*/
@Export(name="connectionType", refs={String.class}, tree="[0]")
private Output* @Nullable */ String> connectionType;
/**
* @return Type of the connection. Valid values: `AZURECOSMOS`, `AZURESQL`, `BIGQUERY`, `CUSTOM`, `JDBC`, `KAFKA`, `MARKETPLACE`, `MONGODB`, `NETWORK`, `OPENSEARCH`, `SNOWFLAKE`. Defaults to `JDBC`.
*
*/
public Output> connectionType() {
return Codegen.optional(this.connectionType);
}
/**
* Description of the connection.
*
*/
@Export(name="description", refs={String.class}, tree="[0]")
private Output* @Nullable */ String> description;
/**
* @return Description of the connection.
*
*/
public Output> description() {
return Codegen.optional(this.description);
}
/**
* List of criteria that can be used in selecting this connection.
*
*/
@Export(name="matchCriterias", refs={List.class,String.class}, tree="[0,1]")
private Output* @Nullable */ List> matchCriterias;
/**
* @return List of criteria that can be used in selecting this connection.
*
*/
public Output>> matchCriterias() {
return Codegen.optional(this.matchCriterias);
}
/**
* Name of the connection.
*
* The following arguments are optional:
*
*/
@Export(name="name", refs={String.class}, tree="[0]")
private Output name;
/**
* @return Name of the connection.
*
* The following arguments are optional:
*
*/
public Output name() {
return this.name;
}
/**
* Map of physical connection requirements, such as VPC and SecurityGroup. See `physical_connection_requirements` Block for details.
*
*/
@Export(name="physicalConnectionRequirements", refs={ConnectionPhysicalConnectionRequirements.class}, tree="[0]")
private Output* @Nullable */ ConnectionPhysicalConnectionRequirements> physicalConnectionRequirements;
/**
* @return Map of physical connection requirements, such as VPC and SecurityGroup. See `physical_connection_requirements` Block for details.
*
*/
public Output> physicalConnectionRequirements() {
return Codegen.optional(this.physicalConnectionRequirements);
}
/**
* Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
*
*/
@Export(name="tags", refs={Map.class,String.class}, tree="[0,1,1]")
private Output* @Nullable */ Map> tags;
/**
* @return Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
*
*/
public Output>> tags() {
return Codegen.optional(this.tags);
}
/**
* A map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
*
* @deprecated
* Please use `tags` instead.
*
*/
@Deprecated /* Please use `tags` instead. */
@Export(name="tagsAll", refs={Map.class,String.class}, tree="[0,1,1]")
private Output
© 2015 - 2025 Weber Informatics LLC | Privacy Policy