import * as core from "@terrascript/core"; export interface LogsArgs extends core.SchemaArgs { audit?: string | core.StringOut; general?: boolean | core.BooleanOut; } export class Logs extends core.Schema { @core.attr(String) public audit?: string | core.StringOut; @core.attr(Boolean) public general?: boolean | core.BooleanOut; } export interface LdapServerMetadataArgs extends core.SchemaArgs { hosts?: core.Array | core.ArrayOut; roleBase?: string | core.StringOut; roleName?: string | core.StringOut; roleSearchMatching?: string | core.StringOut; roleSearchSubtree?: boolean | core.BooleanOut; serviceAccountPassword?: string | core.StringOut; serviceAccountUsername?: string | core.StringOut; userBase?: string | core.StringOut; userRoleName?: string | core.StringOut; userSearchMatching?: string | core.StringOut; userSearchSubtree?: boolean | core.BooleanOut; } export class LdapServerMetadata extends core.Schema { @core.attr(String, { kind: "array" }) public hosts?: core.Array | core.ArrayOut; @core.attr(String) public roleBase?: string | core.StringOut; @core.attr(String) public roleName?: string | core.StringOut; @core.attr(String) public roleSearchMatching?: string | core.StringOut; @core.attr(Boolean) public roleSearchSubtree?: boolean | core.BooleanOut; @core.attr(String) public serviceAccountPassword?: string | core.StringOut; @core.attr(String) public serviceAccountUsername?: string | core.StringOut; @core.attr(String) public userBase?: string | core.StringOut; @core.attr(String) public userRoleName?: string | core.StringOut; @core.attr(String) public userSearchMatching?: string | core.StringOut; @core.attr(Boolean) public userSearchSubtree?: boolean | core.BooleanOut; } export interface EncryptionOptionsArgs extends core.SchemaArgs { kmsKeyId?: string | core.StringOut; useAwsOwnedKey?: boolean | core.BooleanOut; } export class EncryptionOptions extends core.Schema { @core.attr(String, { computed: true }) public kmsKeyId?: string | core.StringOut; @core.attr(Boolean) public useAwsOwnedKey?: boolean | core.BooleanOut; } export interface UserArgs extends core.SchemaArgs { consoleAccess?: boolean | core.BooleanOut; groups?: core.Array | core.ArrayOut; password: string | core.StringOut; username: string | core.StringOut; } export class User extends core.Schema { @core.attr(Boolean) public consoleAccess?: boolean | core.BooleanOut; @core.attr(String, { kind: "array" }) public groups?: core.Array | core.ArrayOut; @core.attr(String) public password!: string | core.StringOut; @core.attr(String) public username!: string | core.StringOut; } export interface InstancesArgs extends core.SchemaArgs { consoleUrl: string | core.StringOut; endpoints: core.Array | core.ArrayOut; ipAddress: string | core.StringOut; } export class Instances extends core.Schema { @core.attr(String, { computed: true }) public consoleUrl!: string | core.StringOut; @core.attr(String, { computed: true, kind: "array" }) public endpoints!: core.Array | core.ArrayOut; @core.attr(String, { computed: true }) public ipAddress!: string | core.StringOut; } export interface MaintenanceWindowStartTimeArgs extends core.SchemaArgs { dayOfWeek: string | core.StringOut; timeOfDay: string | core.StringOut; timeZone: string | core.StringOut; } export class MaintenanceWindowStartTime extends core.Schema { @core.attr(String) public dayOfWeek!: string | core.StringOut; @core.attr(String) public timeOfDay!: string | core.StringOut; @core.attr(String) public timeZone!: string | core.StringOut; } export interface ConfigurationArgs extends core.SchemaArgs { id?: string | core.StringOut; revision?: number | core.NumberOut; } export class Configuration extends core.Schema { @core.attr(String, { computed: true }) public id?: string | core.StringOut; @core.attr(Number, { computed: true }) public revision?: number | core.NumberOut; } export interface BrokerArgs extends core.ResourceArgs { /** * (Optional) Specifies whether any broker modifications are applied immediately, or during the next ma * intenance window. Default is `false`. */ applyImmediately?: boolean | core.BooleanOut; /** * (Optional) Authentication strategy used to secure the broker. Valid values are `simple` and `ldap`. * ldap` is not supported for `engine_type` `RabbitMQ`. */ authenticationStrategy?: string | core.StringOut; /** * (Optional) Whether to automatically upgrade to new minor versions of brokers as Amazon MQ makes rele * ases available. */ autoMinorVersionUpgrade?: boolean | core.BooleanOut; /** * (Required) Name of the broker. */ brokerName: string | core.StringOut; /** * (Optional) Configuration block for broker configuration. Applies to `engine_type` of `ActiveMQ` only * . Detailed below. */ configuration?: Configuration; /** * (Optional) Deployment mode of the broker. Valid values are `SINGLE_INSTANCE`, `ACTIVE_STANDBY_MULTI_ * AZ`, and `CLUSTER_MULTI_AZ`. Default is `SINGLE_INSTANCE`. */ deploymentMode?: string | core.StringOut; /** * (Optional) Configuration block containing encryption options. Detailed below. */ encryptionOptions?: EncryptionOptions; /** * (Required) Type of broker engine. Valid values are `ActiveMQ` and `RabbitMQ`. */ engineType: string | core.StringOut; /** * (Required) Version of the broker engine. See the [AmazonMQ Broker Engine docs](https://docs.aws.amaz * on.com/amazon-mq/latest/developer-guide/broker-engine.html) for supported versions. For example, `5. * 15.0`. */ engineVersion: string | core.StringOut; /** * (Required) Broker's instance type. For example, `mq.t3.micro`, `mq.m5.large`. */ hostInstanceType: string | core.StringOut; /** * (Optional) Configuration block for the LDAP server used to authenticate and authorize connections to * the broker. Not supported for `engine_type` `RabbitMQ`. Detailed below. (Currently, AWS may not pro * cess changes to LDAP server metadata.) */ ldapServerMetadata?: LdapServerMetadata; /** * (Optional) Configuration block for the logging configuration of the broker. Detailed below. */ logs?: Logs; /** * (Optional) Configuration block for the maintenance window start time. Detailed below. */ maintenanceWindowStartTime?: MaintenanceWindowStartTime; /** * (Optional) Whether to enable connections from applications outside of the VPC that hosts the broker' * s subnets. */ publiclyAccessible?: boolean | core.BooleanOut; /** * (Optional) List of security group IDs assigned to the broker. */ securityGroups?: core.Array | core.ArrayOut; /** * (Optional) Storage type of the broker. For `engine_type` `ActiveMQ`, the valid values are `efs` and * ebs`, and the AWS-default is `efs`. For `engine_type` `RabbitMQ`, only `ebs` is supported. When usi * ng `ebs`, only the `mq.m5` broker instance type family is supported. */ storageType?: string | core.StringOut; /** * (Optional) List of subnet IDs in which to launch the broker. A `SINGLE_INSTANCE` deployment requires * one subnet. An `ACTIVE_STANDBY_MULTI_AZ` deployment requires multiple subnets. */ subnetIds?: core.Array | core.ArrayOut; /** * (Optional) Map of tags to assign to the broker. If configured with a provider [`default_tags` config * uration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-config * uration-block) present, tags with matching keys will overwrite those defined at the provider-level. */ tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ tagsAll?: core.Map | core.MapOut; /** * (Required) Configuration block for broker users. For `engine_type` of `RabbitMQ`, Amazon MQ does not * return broker users preventing this resource from making user updates and drift detection. Detailed * below. */ user: core.Array | core.ArrayOut; } export class Broker extends core.Resource { /** * (Optional) Specifies whether any broker modifications are applied immediately, or during the next ma * intenance window. Default is `false`. */ @core.attr(Boolean) public applyImmediately?: boolean | core.BooleanOut; /** * ARN of the broker. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) Authentication strategy used to secure the broker. Valid values are `simple` and `ldap`. * ldap` is not supported for `engine_type` `RabbitMQ`. */ @core.attr(String, { computed: true }) public authenticationStrategy?: string | core.StringOut; /** * (Optional) Whether to automatically upgrade to new minor versions of brokers as Amazon MQ makes rele * ases available. */ @core.attr(Boolean) public autoMinorVersionUpgrade?: boolean | core.BooleanOut; /** * (Required) Name of the broker. */ @core.attr(String) public brokerName!: string | core.StringOut; /** * (Optional) Configuration block for broker configuration. Applies to `engine_type` of `ActiveMQ` only * . Detailed below. */ @core.attr(Configuration, { computed: true }) public configuration?: Configuration; /** * (Optional) Deployment mode of the broker. Valid values are `SINGLE_INSTANCE`, `ACTIVE_STANDBY_MULTI_ * AZ`, and `CLUSTER_MULTI_AZ`. Default is `SINGLE_INSTANCE`. */ @core.attr(String) public deploymentMode?: string | core.StringOut; /** * (Optional) Configuration block containing encryption options. Detailed below. */ @core.attr(EncryptionOptions) public encryptionOptions?: EncryptionOptions; /** * (Required) Type of broker engine. Valid values are `ActiveMQ` and `RabbitMQ`. */ @core.attr(String) public engineType!: string | core.StringOut; /** * (Required) Version of the broker engine. See the [AmazonMQ Broker Engine docs](https://docs.aws.amaz * on.com/amazon-mq/latest/developer-guide/broker-engine.html) for supported versions. For example, `5. * 15.0`. */ @core.attr(String) public engineVersion!: string | core.StringOut; /** * (Required) Broker's instance type. For example, `mq.t3.micro`, `mq.m5.large`. */ @core.attr(String) public hostInstanceType!: string | core.StringOut; /** * (Optional) The Configuration ID. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * List of information about allocated brokers (both active & standby). */ @core.attr(Instances, { computed: true, kind: "array" }) public instances!: core.Array | core.ArrayOut; /** * (Optional) Configuration block for the LDAP server used to authenticate and authorize connections to * the broker. Not supported for `engine_type` `RabbitMQ`. Detailed below. (Currently, AWS may not pro * cess changes to LDAP server metadata.) */ @core.attr(LdapServerMetadata) public ldapServerMetadata?: LdapServerMetadata; /** * (Optional) Configuration block for the logging configuration of the broker. Detailed below. */ @core.attr(Logs) public logs?: Logs; /** * (Optional) Configuration block for the maintenance window start time. Detailed below. */ @core.attr(MaintenanceWindowStartTime, { computed: true }) public maintenanceWindowStartTime?: MaintenanceWindowStartTime; /** * (Optional) Whether to enable connections from applications outside of the VPC that hosts the broker' * s subnets. */ @core.attr(Boolean) public publiclyAccessible?: boolean | core.BooleanOut; /** * (Optional) List of security group IDs assigned to the broker. */ @core.attr(String, { kind: "array" }) public securityGroups?: core.Array | core.ArrayOut; /** * (Optional) Storage type of the broker. For `engine_type` `ActiveMQ`, the valid values are `efs` and * ebs`, and the AWS-default is `efs`. For `engine_type` `RabbitMQ`, only `ebs` is supported. When usi * ng `ebs`, only the `mq.m5` broker instance type family is supported. */ @core.attr(String, { computed: true }) public storageType?: string | core.StringOut; /** * (Optional) List of subnet IDs in which to launch the broker. A `SINGLE_INSTANCE` deployment requires * one subnet. An `ACTIVE_STANDBY_MULTI_AZ` deployment requires multiple subnets. */ @core.attr(String, { computed: true, kind: "array" }) public subnetIds?: core.Array | core.ArrayOut; /** * (Optional) Map of tags to assign to the broker. If configured with a provider [`default_tags` config * uration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-config * uration-block) present, tags with matching keys will overwrite those defined at the provider-level. */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; /** * (Required) Configuration block for broker users. For `engine_type` of `RabbitMQ`, Amazon MQ does not * return broker users preventing this resource from making user updates and drift detection. Detailed * below. */ @core.attr(User, { kind: "array" }) public user!: core.Array | core.ArrayOut; constructor(name: string, args?: BrokerArgs) { super(name, "aws_mq_broker", args); } public override getNamespace(): string { return "aws_mq"; } }