import * as core from "@terrascript/core"; export interface DnsOptionsArgs extends core.SchemaArgs { dnsRecordIpType?: string | core.StringOut; } export class DnsOptions extends core.Schema { @core.attr(String) public dnsRecordIpType?: string | core.StringOut; } export interface DnsEntryArgs extends core.SchemaArgs { dnsName: string | core.StringOut; hostedZoneId: string | core.StringOut; } export class DnsEntry extends core.Schema { @core.attr(String, { computed: true }) public dnsName!: string | core.StringOut; @core.attr(String, { computed: true }) public hostedZoneId!: string | core.StringOut; } export interface EndpointArgs extends core.ResourceArgs { /** * (Optional) Accept the VPC endpoint (the VPC endpoint and service need to be in the same AWS account) * . */ autoAccept?: boolean | core.BooleanOut; /** * (Optional) The DNS options for the endpoint. See dns_options below. */ dnsOptions?: DnsOptions; /** * (Optional) The IP address type for the endpoint. Valid values are `ipv4`, `dualstack`, and `ipv6`. */ ipAddressType?: string | core.StringOut; /** * (Optional) A policy to attach to the endpoint that controls access to the service. This is a JSON fo * rmatted string. Defaults to full access. All `Gateway` and some `Interface` endpoints support polici * es - see the [relevant AWS documentation](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpo * ints-access.html) for more details. For more information about building AWS IAM policy documents wit * h Terraform, see the [AWS IAM Policy Document Guide](https://learn.hashicorp.com/terraform/aws/iam-p * olicy). */ policy?: string | core.StringOut; /** * (Optional; AWS services and AWS Marketplace partner services only) Whether or not to associate a pri * vate hosted zone with the specified VPC. Applicable for endpoints of type `Interface`. */ privateDnsEnabled?: boolean | core.BooleanOut; /** * (Optional) One or more route table IDs. Applicable for endpoints of type `Gateway`. */ routeTableIds?: core.Array | core.ArrayOut; /** * (Optional) The ID of one or more security groups to associate with the network interface. Applicable * for endpoints of type `Interface`. */ securityGroupIds?: core.Array | core.ArrayOut; /** * (Required) The service name. For AWS services the service name is usually in the form `com.amazonaws * ..` (the SageMaker Notebook service is an exception to this rule, the service name * is in the form `aws.sagemaker..notebook`). */ serviceName: string | core.StringOut; /** * (Optional) The ID of one or more subnets in which to create a network interface for the endpoint. Ap * plicable for endpoints of type `GatewayLoadBalancer` and `Interface`. */ subnetIds?: core.Array | core.ArrayOut; /** * (Optional) A map of tags to assign to the resource. If configured with a provider [`default_tags` co * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co * nfiguration-block) present, tags with matching keys will overwrite those defined at the provider-lev * el. */ 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; /** * (Optional) The VPC endpoint type, `Gateway`, `GatewayLoadBalancer`, or `Interface`. Defaults to `Gat * eway`. */ vpcEndpointType?: string | core.StringOut; /** * (Required) The ID of the VPC in which the endpoint will be used. */ vpcId: string | core.StringOut; } export class Endpoint extends core.Resource { /** * The Amazon Resource Name (ARN) of the VPC endpoint. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Optional) Accept the VPC endpoint (the VPC endpoint and service need to be in the same AWS account) * . */ @core.attr(Boolean) public autoAccept?: boolean | core.BooleanOut; /** * The list of CIDR blocks for the exposed AWS service. Applicable for endpoints of type `Gateway`. */ @core.attr(String, { computed: true, kind: "array" }) public cidrBlocks!: core.Array | core.ArrayOut; /** * The DNS entries for the VPC Endpoint. Applicable for endpoints of type `Interface`. DNS blocks are d * ocumented below. */ @core.attr(DnsEntry, { computed: true, kind: "array" }) public dnsEntry!: core.Array | core.ArrayOut; /** * (Optional) The DNS options for the endpoint. See dns_options below. */ @core.attr(DnsOptions, { computed: true }) public dnsOptions?: DnsOptions; /** * The ID of the VPC endpoint. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Optional) The IP address type for the endpoint. Valid values are `ipv4`, `dualstack`, and `ipv6`. */ @core.attr(String, { computed: true }) public ipAddressType?: string | core.StringOut; /** * One or more network interfaces for the VPC Endpoint. Applicable for endpoints of type `Interface`. */ @core.attr(String, { computed: true, kind: "array" }) public networkInterfaceIds!: | core.Array | core.ArrayOut; /** * The ID of the AWS account that owns the VPC endpoint. */ @core.attr(String, { computed: true }) public ownerId!: string | core.StringOut; /** * (Optional) A policy to attach to the endpoint that controls access to the service. This is a JSON fo * rmatted string. Defaults to full access. All `Gateway` and some `Interface` endpoints support polici * es - see the [relevant AWS documentation](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpo * ints-access.html) for more details. For more information about building AWS IAM policy documents wit * h Terraform, see the [AWS IAM Policy Document Guide](https://learn.hashicorp.com/terraform/aws/iam-p * olicy). */ @core.attr(String, { computed: true }) public policy?: string | core.StringOut; /** * The prefix list ID of the exposed AWS service. Applicable for endpoints of type `Gateway`. */ @core.attr(String, { computed: true }) public prefixListId!: string | core.StringOut; /** * (Optional; AWS services and AWS Marketplace partner services only) Whether or not to associate a pri * vate hosted zone with the specified VPC. Applicable for endpoints of type `Interface`. */ @core.attr(Boolean) public privateDnsEnabled?: boolean | core.BooleanOut; /** * Whether or not the VPC Endpoint is being managed by its service - `true` or `false`. */ @core.attr(Boolean, { computed: true }) public requesterManaged!: boolean | core.BooleanOut; /** * (Optional) One or more route table IDs. Applicable for endpoints of type `Gateway`. */ @core.attr(String, { computed: true, kind: "array" }) public routeTableIds?: core.Array | core.ArrayOut; /** * (Optional) The ID of one or more security groups to associate with the network interface. Applicable * for endpoints of type `Interface`. */ @core.attr(String, { computed: true, kind: "array" }) public securityGroupIds?: core.Array | core.ArrayOut; /** * (Required) The service name. For AWS services the service name is usually in the form `com.amazonaws * ..` (the SageMaker Notebook service is an exception to this rule, the service name * is in the form `aws.sagemaker..notebook`). */ @core.attr(String) public serviceName!: string | core.StringOut; /** * The state of the VPC endpoint. */ @core.attr(String, { computed: true }) public state!: string | core.StringOut; /** * (Optional) The ID of one or more subnets in which to create a network interface for the endpoint. Ap * plicable for endpoints of type `GatewayLoadBalancer` and `Interface`. */ @core.attr(String, { computed: true, kind: "array" }) public subnetIds?: core.Array | core.ArrayOut; /** * (Optional) A map of tags to assign to the resource. If configured with a provider [`default_tags` co * nfiguration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-co * nfiguration-block) present, tags with matching keys will overwrite those defined at the provider-lev * el. */ @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; /** * (Optional) The VPC endpoint type, `Gateway`, `GatewayLoadBalancer`, or `Interface`. Defaults to `Gat * eway`. */ @core.attr(String) public vpcEndpointType?: string | core.StringOut; /** * (Required) The ID of the VPC in which the endpoint will be used. */ @core.attr(String) public vpcId!: string | core.StringOut; constructor(name: string, args?: EndpointArgs) { super(name, "aws_vpc_endpoint", args); } public override getNamespace(): string { return "aws_vpc"; } }