UNPKG

@cdktf/provider-google

Version:

Prebuilt google Provider for Terraform CDK (cdktf)

369 lines (368 loc) 19.1 kB
/** * 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; }; }