@cdktf/provider-google
Version:
Prebuilt google Provider for Terraform CDK (cdktf)
369 lines (368 loc) • 19.1 kB
TypeScript
/**
* Copyright (c) HashiCorp, Inc.
* SPDX-License-Identifier: MPL-2.0
*/
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface PubsubTopicConfig extends cdktf.TerraformMetaArguments {
/**
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#id PubsubTopic#id}
*
* Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
* If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
*/
readonly id?: string;
/**
* The resource name of the Cloud KMS CryptoKey to be used to protect access
* to messages published on this topic. Your project's PubSub service account
* ('service-{{PROJECT_NUMBER}}@gcp-sa-pubsub.iam.gserviceaccount.com') must have
* 'roles/cloudkms.cryptoKeyEncrypterDecrypter' to use this feature.
* The expected format is 'projects/* /locations/* /keyRings/* /cryptoKeys/*'
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#kms_key_name PubsubTopic#kms_key_name}
*
* Note: The above comment contained a comment block ending sequence (* followed by /). We have introduced a space between to prevent syntax errors. Please ignore the space.
*/
readonly kmsKeyName?: string;
/**
* A set of key/value label pairs to assign to this Topic.
*
*
* **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
* Please refer to the field 'effective_labels' for all of the labels present on the resource.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#labels PubsubTopic#labels}
*/
readonly labels?: {
[key: string]: string;
};
/**
* Indicates the minimum duration to retain a message after it is published
* to the topic. If this field is set, messages published to the topic in
* the last messageRetentionDuration are always available to subscribers.
* For instance, it allows any attached subscription to seek to a timestamp
* that is up to messageRetentionDuration in the past. If this field is not
* set, message retention is controlled by settings on individual subscriptions.
* The rotation period has the format of a decimal number, followed by the
* letter 's' (seconds). Cannot be more than 31 days or less than 10 minutes.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#message_retention_duration PubsubTopic#message_retention_duration}
*/
readonly messageRetentionDuration?: string;
/**
* Name of the topic.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#name PubsubTopic#name}
*/
readonly name: string;
/**
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#project PubsubTopic#project}
*/
readonly project?: string;
/**
* ingestion_data_source_settings block
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#ingestion_data_source_settings PubsubTopic#ingestion_data_source_settings}
*/
readonly ingestionDataSourceSettings?: PubsubTopicIngestionDataSourceSettings;
/**
* message_storage_policy block
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#message_storage_policy PubsubTopic#message_storage_policy}
*/
readonly messageStoragePolicy?: PubsubTopicMessageStoragePolicy;
/**
* schema_settings block
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#schema_settings PubsubTopic#schema_settings}
*/
readonly schemaSettings?: PubsubTopicSchemaSettings;
/**
* timeouts block
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#timeouts PubsubTopic#timeouts}
*/
readonly timeouts?: PubsubTopicTimeouts;
}
export interface PubsubTopicIngestionDataSourceSettingsAwsKinesis {
/**
* AWS role ARN to be used for Federated Identity authentication with
* Kinesis. Check the Pub/Sub docs for how to set up this role and the
* required permissions that need to be attached to it.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#aws_role_arn PubsubTopic#aws_role_arn}
*/
readonly awsRoleArn: string;
/**
* The Kinesis consumer ARN to used for ingestion in
* Enhanced Fan-Out mode. The consumer must be already
* created and ready to be used.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#consumer_arn PubsubTopic#consumer_arn}
*/
readonly consumerArn: string;
/**
* The GCP service account to be used for Federated Identity authentication
* with Kinesis (via a 'AssumeRoleWithWebIdentity' call for the provided
* role). The 'awsRoleArn' must be set up with 'accounts.google.com:sub'
* equals to this service account number.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#gcp_service_account PubsubTopic#gcp_service_account}
*/
readonly gcpServiceAccount: string;
/**
* The Kinesis stream ARN to ingest data from.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#stream_arn PubsubTopic#stream_arn}
*/
readonly streamArn: string;
}
export declare function pubsubTopicIngestionDataSourceSettingsAwsKinesisToTerraform(struct?: PubsubTopicIngestionDataSourceSettingsAwsKinesisOutputReference | PubsubTopicIngestionDataSourceSettingsAwsKinesis): any;
export declare function pubsubTopicIngestionDataSourceSettingsAwsKinesisToHclTerraform(struct?: PubsubTopicIngestionDataSourceSettingsAwsKinesisOutputReference | PubsubTopicIngestionDataSourceSettingsAwsKinesis): any;
export declare class PubsubTopicIngestionDataSourceSettingsAwsKinesisOutputReference extends cdktf.ComplexObject {
private isEmptyObject;
/**
* @param terraformResource The parent resource
* @param terraformAttribute The attribute on the parent resource this class is referencing
*/
constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
get internalValue(): PubsubTopicIngestionDataSourceSettingsAwsKinesis | undefined;
set internalValue(value: PubsubTopicIngestionDataSourceSettingsAwsKinesis | undefined);
private _awsRoleArn?;
get awsRoleArn(): string;
set awsRoleArn(value: string);
get awsRoleArnInput(): string | undefined;
private _consumerArn?;
get consumerArn(): string;
set consumerArn(value: string);
get consumerArnInput(): string | undefined;
private _gcpServiceAccount?;
get gcpServiceAccount(): string;
set gcpServiceAccount(value: string);
get gcpServiceAccountInput(): string | undefined;
private _streamArn?;
get streamArn(): string;
set streamArn(value: string);
get streamArnInput(): string | undefined;
}
export interface PubsubTopicIngestionDataSourceSettings {
/**
* aws_kinesis block
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#aws_kinesis PubsubTopic#aws_kinesis}
*/
readonly awsKinesis?: PubsubTopicIngestionDataSourceSettingsAwsKinesis;
}
export declare function pubsubTopicIngestionDataSourceSettingsToTerraform(struct?: PubsubTopicIngestionDataSourceSettingsOutputReference | PubsubTopicIngestionDataSourceSettings): any;
export declare function pubsubTopicIngestionDataSourceSettingsToHclTerraform(struct?: PubsubTopicIngestionDataSourceSettingsOutputReference | PubsubTopicIngestionDataSourceSettings): any;
export declare class PubsubTopicIngestionDataSourceSettingsOutputReference extends cdktf.ComplexObject {
private isEmptyObject;
/**
* @param terraformResource The parent resource
* @param terraformAttribute The attribute on the parent resource this class is referencing
*/
constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
get internalValue(): PubsubTopicIngestionDataSourceSettings | undefined;
set internalValue(value: PubsubTopicIngestionDataSourceSettings | undefined);
private _awsKinesis;
get awsKinesis(): PubsubTopicIngestionDataSourceSettingsAwsKinesisOutputReference;
putAwsKinesis(value: PubsubTopicIngestionDataSourceSettingsAwsKinesis): void;
resetAwsKinesis(): void;
get awsKinesisInput(): PubsubTopicIngestionDataSourceSettingsAwsKinesis | undefined;
}
export interface PubsubTopicMessageStoragePolicy {
/**
* A list of IDs of GCP regions where messages that are published to
* the topic may be persisted in storage. Messages published by
* publishers running in non-allowed GCP regions (or running outside
* of GCP altogether) will be routed for storage in one of the
* allowed regions. An empty list means that no regions are allowed,
* and is not a valid configuration.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#allowed_persistence_regions PubsubTopic#allowed_persistence_regions}
*/
readonly allowedPersistenceRegions: string[];
}
export declare function pubsubTopicMessageStoragePolicyToTerraform(struct?: PubsubTopicMessageStoragePolicyOutputReference | PubsubTopicMessageStoragePolicy): any;
export declare function pubsubTopicMessageStoragePolicyToHclTerraform(struct?: PubsubTopicMessageStoragePolicyOutputReference | PubsubTopicMessageStoragePolicy): any;
export declare class PubsubTopicMessageStoragePolicyOutputReference extends cdktf.ComplexObject {
private isEmptyObject;
/**
* @param terraformResource The parent resource
* @param terraformAttribute The attribute on the parent resource this class is referencing
*/
constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
get internalValue(): PubsubTopicMessageStoragePolicy | undefined;
set internalValue(value: PubsubTopicMessageStoragePolicy | undefined);
private _allowedPersistenceRegions?;
get allowedPersistenceRegions(): string[];
set allowedPersistenceRegions(value: string[]);
get allowedPersistenceRegionsInput(): string[] | undefined;
}
export interface PubsubTopicSchemaSettings {
/**
* The encoding of messages validated against schema. Default value: "ENCODING_UNSPECIFIED" Possible values: ["ENCODING_UNSPECIFIED", "JSON", "BINARY"]
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#encoding PubsubTopic#encoding}
*/
readonly encoding?: string;
/**
* The name of the schema that messages published should be
* validated against. Format is projects/{project}/schemas/{schema}.
* The value of this field will be _deleted-schema_
* if the schema has been deleted.
*
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#schema PubsubTopic#schema}
*/
readonly schema: string;
}
export declare function pubsubTopicSchemaSettingsToTerraform(struct?: PubsubTopicSchemaSettingsOutputReference | PubsubTopicSchemaSettings): any;
export declare function pubsubTopicSchemaSettingsToHclTerraform(struct?: PubsubTopicSchemaSettingsOutputReference | PubsubTopicSchemaSettings): any;
export declare class PubsubTopicSchemaSettingsOutputReference extends cdktf.ComplexObject {
private isEmptyObject;
/**
* @param terraformResource The parent resource
* @param terraformAttribute The attribute on the parent resource this class is referencing
*/
constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
get internalValue(): PubsubTopicSchemaSettings | undefined;
set internalValue(value: PubsubTopicSchemaSettings | undefined);
private _encoding?;
get encoding(): string;
set encoding(value: string);
resetEncoding(): void;
get encodingInput(): string | undefined;
private _schema?;
get schema(): string;
set schema(value: string);
get schemaInput(): string | undefined;
}
export interface PubsubTopicTimeouts {
/**
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#create PubsubTopic#create}
*/
readonly create?: string;
/**
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#delete PubsubTopic#delete}
*/
readonly delete?: string;
/**
* Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#update PubsubTopic#update}
*/
readonly update?: string;
}
export declare function pubsubTopicTimeoutsToTerraform(struct?: PubsubTopicTimeouts | cdktf.IResolvable): any;
export declare function pubsubTopicTimeoutsToHclTerraform(struct?: PubsubTopicTimeouts | cdktf.IResolvable): any;
export declare class PubsubTopicTimeoutsOutputReference extends cdktf.ComplexObject {
private isEmptyObject;
private resolvableValue?;
/**
* @param terraformResource The parent resource
* @param terraformAttribute The attribute on the parent resource this class is referencing
*/
constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
get internalValue(): PubsubTopicTimeouts | cdktf.IResolvable | undefined;
set internalValue(value: PubsubTopicTimeouts | cdktf.IResolvable | undefined);
private _create?;
get create(): string;
set create(value: string);
resetCreate(): void;
get createInput(): string | undefined;
private _delete?;
get delete(): string;
set delete(value: string);
resetDelete(): void;
get deleteInput(): string | undefined;
private _update?;
get update(): string;
set update(value: string);
resetUpdate(): void;
get updateInput(): string | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic google_pubsub_topic}
*/
export declare class PubsubTopic extends cdktf.TerraformResource {
static readonly tfResourceType = "google_pubsub_topic";
/**
* Generates CDKTF code for importing a PubsubTopic resource upon running "cdktf plan <stack-name>"
* @param scope The scope in which to define this construct
* @param importToId The construct id used in the generated config for the PubsubTopic to import
* @param importFromId The id of the existing PubsubTopic that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic#import import section} in the documentation of this resource for the id to use
* @param provider? Optional instance of the provider where the PubsubTopic to import is found
*/
static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
/**
* Create a new {@link https://registry.terraform.io/providers/hashicorp/google/6.4.0/docs/resources/pubsub_topic google_pubsub_topic} Resource
*
* @param scope The scope in which to define this construct
* @param id The scoped construct ID. Must be unique amongst siblings in the same scope
* @param options PubsubTopicConfig
*/
constructor(scope: Construct, id: string, config: PubsubTopicConfig);
private _effectiveLabels;
get effectiveLabels(): cdktf.StringMap;
private _id?;
get id(): string;
set id(value: string);
resetId(): void;
get idInput(): string | undefined;
private _kmsKeyName?;
get kmsKeyName(): string;
set kmsKeyName(value: string);
resetKmsKeyName(): void;
get kmsKeyNameInput(): string | undefined;
private _labels?;
get labels(): {
[key: string]: string;
};
set labels(value: {
[key: string]: string;
});
resetLabels(): void;
get labelsInput(): {
[key: string]: string;
} | undefined;
private _messageRetentionDuration?;
get messageRetentionDuration(): string;
set messageRetentionDuration(value: string);
resetMessageRetentionDuration(): void;
get messageRetentionDurationInput(): string | undefined;
private _name?;
get name(): string;
set name(value: string);
get nameInput(): string | undefined;
private _project?;
get project(): string;
set project(value: string);
resetProject(): void;
get projectInput(): string | undefined;
private _terraformLabels;
get terraformLabels(): cdktf.StringMap;
private _ingestionDataSourceSettings;
get ingestionDataSourceSettings(): PubsubTopicIngestionDataSourceSettingsOutputReference;
putIngestionDataSourceSettings(value: PubsubTopicIngestionDataSourceSettings): void;
resetIngestionDataSourceSettings(): void;
get ingestionDataSourceSettingsInput(): PubsubTopicIngestionDataSourceSettings | undefined;
private _messageStoragePolicy;
get messageStoragePolicy(): PubsubTopicMessageStoragePolicyOutputReference;
putMessageStoragePolicy(value: PubsubTopicMessageStoragePolicy): void;
resetMessageStoragePolicy(): void;
get messageStoragePolicyInput(): PubsubTopicMessageStoragePolicy | undefined;
private _schemaSettings;
get schemaSettings(): PubsubTopicSchemaSettingsOutputReference;
putSchemaSettings(value: PubsubTopicSchemaSettings): void;
resetSchemaSettings(): void;
get schemaSettingsInput(): PubsubTopicSchemaSettings | undefined;
private _timeouts;
get timeouts(): PubsubTopicTimeoutsOutputReference;
putTimeouts(value: PubsubTopicTimeouts): void;
resetTimeouts(): void;
get timeoutsInput(): cdktf.IResolvable | PubsubTopicTimeouts | undefined;
protected synthesizeAttributes(): {
[name: string]: any;
};
protected synthesizeHclAttributes(): {
[name: string]: any;
};
}