---
id: "aws-ec2-instance-connect-endpoint"
type: "component"
kind: "bastion-host"
provider: "aws"
category: "security"
aliases: "EIC Endpoint"
docs: "https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-using-eice.html"
url: "https://localhost:3000/catalogue/components/aws-ec2-instance-connect-endpoint"
---

# EC2 Instance Connect Endpoint

An in-VPC tunnel for SSH and RDP to instances that have no public IP address.

| | |
|---|---|
| Provider | [aws](https://localhost:3000/catalogue?provider=aws) |
| Kind | [Bastion host](https://localhost:3000/catalogue/kinds/bastion-host) |
| Category | Security |
| Official docs | [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-using-eice.html](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-using-eice.html) |
| Also known as | EIC Endpoint |

## Properties

| property | type | values | required | kind default | this component |
|---|---|---|---|---|---|
| `clientIpPreservation` | boolean | — | no | false | inherited |
| `iamAuthorized` | boolean | — | no | true | inherited |
| `internetGatewayRequired` | boolean | — | no | false | inherited |
| `ipAddressType` | enum | `ipv4`, `dualstack`, `ipv6` | no | — | inherited |
| `justInTimeAccess` | boolean | — | no | false | inherited |
| `managed` | boolean | — | no | false | **true** |
| `mfaRequired` | boolean | — | no | — | inherited |
| `protocols` | enum | `ssh`, `rdp`, `both` | no | — | **"both"** |
| `publicIp` | boolean | — | no | — | **false** |
| `sessionRecording` | boolean | — | no | — | inherited |

Bold values are the ones this component pins.

## Rules that apply · 0

No rule selects this kind or its category.

## Other products of the same kind · 17

- [Bastionhost](https://localhost:3000/catalogue/components/alibaba-bastionhost.md) `alibaba-bastionhost` — alibabacloud
- [AWS Systems Manager Session Manager](https://localhost:3000/catalogue/components/aws-ssm-session-manager.md) `aws-ssm-session-manager` — aws
- [AWS Verified Access](https://localhost:3000/catalogue/components/aws-verified-access.md) `aws-verified-access` — aws
- [Azure Bastion](https://localhost:3000/catalogue/components/azure-bastion.md) `azure-bastion` — azure
- [Microsoft Entra Private Access](https://localhost:3000/catalogue/components/azure-entra-private-access.md) `azure-entra-private-access` — azure
- [Cloudflare Access](https://localhost:3000/catalogue/components/cloudflare-access.md) `cloudflare-access` — cloudflare
- [Cloudflare One RDP](https://localhost:3000/catalogue/components/cloudflare-rdp.md) `cloudflare-rdp` — cloudflare
- [Generic bastion host](https://localhost:3000/catalogue/components/bastion-host.md) `bastion-host` — default
- [HashiCorp Boundary](https://localhost:3000/catalogue/components/boundary.md) `boundary` — default
- [ContainerSSH](https://localhost:3000/catalogue/components/containerssh.md) `containerssh` — default
- [Paralus](https://localhost:3000/catalogue/components/paralus.md) `paralus` — default
- [Pomerium](https://localhost:3000/catalogue/components/pomerium.md) `pomerium` — default
- [OpenSSH jump host](https://localhost:3000/catalogue/components/ssh-jump-host.md) `ssh-jump-host` — default
- [Teleport](https://localhost:3000/catalogue/components/teleport.md) `teleport` — default
- [Chrome Enterprise Premium](https://localhost:3000/catalogue/components/google-chrome-enterprise-premium.md) `google-chrome-enterprise-premium` — gcp
- [Identity-Aware Proxy](https://localhost:3000/catalogue/components/google-identity-aware-proxy.md) `google-identity-aware-proxy` — gcp
- [Bastion](https://localhost:3000/catalogue/components/oci-bastion.md) `oci-bastion` — oci

## Use it in a design

```yaml
nodes:
  - { id: "aws-ec2-instance-connect-endpoint", component: "aws-ec2-instance-connect-endpoint" }
```

## Source (`component` YAML, verbatim)

```yaml
# yaml-language-server: $schema=../../schema/component.schema.json
# EC2 Instance Connect Endpoint: a jump point inside a VPC subnet that tunnels SSH and RDP to
# instances that have no public IPv4 address ("Connect to an Amazon EC2 instance using EC2 Instance
# Connect Endpoint"). Every connection needs an IAM permission, and client IP preservation is off by
# default, so the endpoint's network interface is the client IP ("Create an EC2 Instance Connect Endpoint").
schemaVersion: "1"
type: "component"
id: "aws-ec2-instance-connect-endpoint"
kind: "bastion-host"
provider: "aws"
docs: "https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-using-eice.html"
aliases: ["EIC Endpoint"]
defaults:
  managed: true
  protocols: "both"
  publicIp: false
properties:
  clientIpPreservation:
    type: "boolean"
    default: false
  ipAddressType:
    type: "enum"
    values: ["ipv4", "dualstack", "ipv6"]
  internetGatewayRequired:
    type: "boolean"
    default: false
  iamAuthorized:
    type: "boolean"
    default: true
```

Human page: https://localhost:3000/catalogue/components/aws-ec2-instance-connect-endpoint
