import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Resource for managing an AWS RDS (Relational Database) zero-ETL integration. You can refer to the [User Guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.setting-up.html). * * ## Example Usage * * ### Basic Usage * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const example = new aws.redshiftserverless.Namespace("example", {namespaceName: "redshift-example"}); * const exampleWorkgroup = new aws.redshiftserverless.Workgroup("example", { * configParameters: [{ * parameterKey: "enable_case_sensitive_identifier", * parameterValue: "true", * }], * namespaceName: example.namespaceName, * workgroupName: "example-workspace", * baseCapacity: 8, * publiclyAccessible: false, * subnetIds: [ * example1.id, * example2.id, * example3.id, * ], * }); * const exampleIntegration = new aws.rds.Integration("example", { * integrationName: "example", * sourceArn: exampleAwsRdsCluster.arn, * targetArn: example.arn, * }, { * ignoreChanges: ["kmsKeyId"], * }); * ``` * * ### Use own KMS key * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as aws from "@pulumi/aws"; * * const current = aws.getCallerIdentity({}); * const keyPolicy = current.then(current => aws.iam.getPolicyDocument({ * statements: [ * { * principals: [{ * type: "AWS", * identifiers: [`arn:aws:iam::${current.accountId}:root`], * }], * actions: ["kms:*"], * resources: ["*"], * }, * { * principals: [{ * type: "Service", * identifiers: ["redshift.amazonaws.com"], * }], * actions: ["kms:CreateGrant"], * resources: ["*"], * }, * ], * })); * const example = new aws.kms.Key("example", { * deletionWindowInDays: 10, * policy: keyPolicy.then(keyPolicy => keyPolicy.json), * }); * const exampleIntegration = new aws.rds.Integration("example", { * integrationName: "example", * sourceArn: exampleAwsRdsCluster.arn, * targetArn: exampleAwsRedshiftserverlessNamespace.arn, * kmsKeyId: example.arn, * additionalEncryptionContext: { * example: "test", * }, * }); * ``` * * ## Import * * ### Identity Schema * * #### Required * * - `arn` (String) ARN of the RDS integration. * * Using `pulumi import`, import RDS (Relational Database) Integration using the `arn`. For example: * * ```sh * $ pulumi import aws:rds/integration:Integration example arn:aws:rds:us-west-2:123456789012:integration:abcdefgh-0000-1111-2222-123456789012 * ``` */ export declare class Integration extends pulumi.CustomResource { /** * Get an existing Integration resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input, state?: IntegrationState, opts?: pulumi.CustomResourceOptions): Integration; /** * Returns true if the given object is an instance of Integration. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is Integration; /** * Set of non-secret key–value pairs that contains additional contextual information about the data. For more information, see the [User Guide](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context). You can only include this parameter if you specify the `kmsKeyId` parameter. */ readonly additionalEncryptionContext: pulumi.Output<{ [key: string]: string; } | undefined>; /** * ARN of the Integration. */ readonly arn: pulumi.Output; /** * Data filters for the integration. These filters determine which tables from the source database are sent to the target Amazon Redshift data warehouse. The value should match the syntax from the AWS CLI which includes an `include:` or `exclude:` prefix before a filter expression. Multiple expressions are separated by a comma. See the [Amazon RDS data filtering guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.filtering.html) for additional details. */ readonly dataFilter: pulumi.Output; /** * Identifier of the Integration. This value can be used when creating the target database to [receive results of zero-ETL integrations](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html#r_CREATE_DATABASE-integration). */ readonly integrationIdentifier: pulumi.Output; /** * Name of the integration. */ readonly integrationName: pulumi.Output; /** * KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, RDS uses a default AWS owned key. If you use the default AWS owned key, you should ignore `kmsKeyId` parameter by using `lifecycle` parameter to avoid unintended change after the first creation. */ readonly kmsKeyId: pulumi.Output; /** * 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. */ readonly region: pulumi.Output; /** * ARN of the database to use as the source for replication. */ readonly sourceArn: pulumi.Output; /** * 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. */ readonly tags: pulumi.Output<{ [key: string]: string; } | undefined>; /** * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. */ readonly tagsAll: pulumi.Output<{ [key: string]: string; }>; /** * ARN of the Redshift data warehouse to use as the target for replication. * * The following arguments are optional: */ readonly targetArn: pulumi.Output; readonly timeouts: pulumi.Output; /** * Create a Integration resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: IntegrationArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering Integration resources. */ export interface IntegrationState { /** * Set of non-secret key–value pairs that contains additional contextual information about the data. For more information, see the [User Guide](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context). You can only include this parameter if you specify the `kmsKeyId` parameter. */ additionalEncryptionContext?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; /** * ARN of the Integration. */ arn?: pulumi.Input; /** * Data filters for the integration. These filters determine which tables from the source database are sent to the target Amazon Redshift data warehouse. The value should match the syntax from the AWS CLI which includes an `include:` or `exclude:` prefix before a filter expression. Multiple expressions are separated by a comma. See the [Amazon RDS data filtering guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.filtering.html) for additional details. */ dataFilter?: pulumi.Input; /** * Identifier of the Integration. This value can be used when creating the target database to [receive results of zero-ETL integrations](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html#r_CREATE_DATABASE-integration). */ integrationIdentifier?: pulumi.Input; /** * Name of the integration. */ integrationName?: pulumi.Input; /** * KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, RDS uses a default AWS owned key. If you use the default AWS owned key, you should ignore `kmsKeyId` parameter by using `lifecycle` parameter to avoid unintended change after the first creation. */ kmsKeyId?: pulumi.Input; /** * 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. */ region?: pulumi.Input; /** * ARN of the database to use as the source for replication. */ sourceArn?: pulumi.Input; /** * 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. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; /** * Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. */ tagsAll?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; /** * ARN of the Redshift data warehouse to use as the target for replication. * * The following arguments are optional: */ targetArn?: pulumi.Input; timeouts?: pulumi.Input; } /** * The set of arguments for constructing a Integration resource. */ export interface IntegrationArgs { /** * Set of non-secret key–value pairs that contains additional contextual information about the data. For more information, see the [User Guide](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context). You can only include this parameter if you specify the `kmsKeyId` parameter. */ additionalEncryptionContext?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; /** * Data filters for the integration. These filters determine which tables from the source database are sent to the target Amazon Redshift data warehouse. The value should match the syntax from the AWS CLI which includes an `include:` or `exclude:` prefix before a filter expression. Multiple expressions are separated by a comma. See the [Amazon RDS data filtering guide](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/zero-etl.filtering.html) for additional details. */ dataFilter?: pulumi.Input; /** * Name of the integration. */ integrationName: pulumi.Input; /** * KMS key identifier for the key to use to encrypt the integration. If you don't specify an encryption key, RDS uses a default AWS owned key. If you use the default AWS owned key, you should ignore `kmsKeyId` parameter by using `lifecycle` parameter to avoid unintended change after the first creation. */ kmsKeyId?: pulumi.Input; /** * 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. */ region?: pulumi.Input; /** * ARN of the database to use as the source for replication. */ sourceArn: pulumi.Input; /** * 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. */ tags?: pulumi.Input<{ [key: string]: pulumi.Input; } | undefined>; /** * ARN of the Redshift data warehouse to use as the target for replication. * * The following arguments are optional: */ targetArn: pulumi.Input; timeouts?: pulumi.Input; } //# sourceMappingURL=integration.d.ts.map