What options did you give to the boundary dev
command on your AWS instance?
Boundary in dev mode runs with a very minimalistic configuration that only listens on localhost for everything by default, e.g.:
$ boundary dev
==> Boundary server configuration:
[...]
Controller Public Cluster Addr: 127.0.0.1:9201
[...]
Listener 1: tcp (addr: "127.0.0.1:9200", cors_allowed_headers: "[]", cors_allowed_origins: "[*]", cors_enabled: "true", max_request_duration: "1m30s", purpose: "api")
Listener 2: tcp (addr: "127.0.0.1:9201", max_request_duration: "1m30s", purpose: "cluster")
Listener 3: tcp (addr: "127.0.0.1:9202", max_request_duration: "1m30s", purpose: "proxy")
[...]
Worker Public Proxy Addr: 127.0.0.1:9202
[...]
{
"id": "jwepRLH8GY",
"source": "https://hashicorp.com/boundary/dev-controller/boundary-dev",
"specversion": "1.0",
"type": "system",
"data": {
"version": "v0.1",
"op": "worker.(Worker).createClientConn",
"data": {
"address": "127.0.0.1:9201",
"msg": "connected to controller"
}
},
"datacontentype": "text/plain",
"time": "2021-08-17T16:25:11.711083034-04:00"
}
What’s probably happening is the worker thread is running on localhost and reporting its address to the controller as such. The controller then passes that along to the client for proxy connections, but your client isn’t on the AWS instance so it can’t access that localhost-only worker.
You can add arguments to boundary dev
to make the controller and worker threads listen on all interfaces and advertise the public IP, like so:
$ boundary dev -controller-public-cluster-address=[public IP] -worker-public-address=[public IP] -api-listen-address=0.0.0.0 -cluster-listen-address=0.0.0.0 -proxy-listen-address=0.0.0.0
==> Boundary server configuration:
[...]
Controller Public Cluster Addr: [public IP]:9201
[...]
Listener 1: tcp (addr: "0.0.0.0:9200", cors_allowed_headers: "[]", cors_allowed_origins: "[*]", cors_enabled: "true", max_request_duration: "1m30s", purpose: "api")
Listener 2: tcp (addr: "0.0.0.0:9201", max_request_duration: "1m30s", purpose: "cluster")
Listener 3: tcp (addr: "0.0.0.0:9202", max_request_duration: "1m30s", purpose: "proxy")
[...]
Worker Public Proxy Addr: [public IP]:9202
[...]
{
"id": "r81iL3aKo1",
"source": "https://hashicorp.com/boundary/dev-controller/boundary-dev",
"specversion": "1.0",
"type": "system",
"data": {
"version": "v0.1",
"op": "worker.(Worker).createClientConn",
"data": {
"address": "0.0.0.0:9201",
"msg": "connected to controller"
}
},
"datacontentype": "text/plain",
"time": "2021-08-17T16:36:26.958596943-04:00"
}
Then worker connections from the clients on your local laptop should work.