Skip to content

Commit 0d4abb9

Browse files
committed
Consume TMDS init function from ecs-agent module
1 parent c83389c commit 0d4abb9

File tree

12 files changed

+277
-70
lines changed

12 files changed

+277
-70
lines changed

agent/config/config.go

-3
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@ const (
4444
// AgentIntrospectionPort is used to serve the metadata about the agent and to query the tasks being managed by the agent.
4545
AgentIntrospectionPort = 51678
4646

47-
// AgentCredentialsPort is used to serve the credentials for tasks.
48-
AgentCredentialsPort = 51679
49-
5047
// AgentPrometheusExpositionPort is used to expose Prometheus metrics that can be scraped by a Prometheus server
5148
AgentPrometheusExpositionPort = 51680
5249

agent/config/config_unix.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323

2424
"github.com/aws/amazon-ecs-agent/agent/dockerclient"
2525
"github.com/aws/amazon-ecs-agent/agent/utils"
26+
"github.com/aws/amazon-ecs-agent/ecs-agent/tmds"
2627
)
2728

2829
const (
@@ -61,7 +62,7 @@ const (
6162
func DefaultConfig() Config {
6263
return Config{
6364
DockerEndpoint: "unix:///var/run/docker.sock",
64-
ReservedPorts: []uint16{SSHPort, DockerReservedPort, DockerReservedSSLPort, AgentIntrospectionPort, AgentCredentialsPort},
65+
ReservedPorts: []uint16{SSHPort, DockerReservedPort, DockerReservedSSLPort, AgentIntrospectionPort, tmds.Port},
6566
ReservedPortsUDP: []uint16{},
6667
DataDir: "/data/",
6768
DataDirOnHost: "/var/lib/ecs",

agent/config/config_windows.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525

2626
"github.com/aws/amazon-ecs-agent/agent/dockerclient"
2727
"github.com/aws/amazon-ecs-agent/agent/utils"
28+
"github.com/aws/amazon-ecs-agent/ecs-agent/tmds"
2829

2930
"github.com/cihub/seelog"
3031
"github.com/hectane/go-acl/api"
@@ -103,7 +104,7 @@ func DefaultConfig() Config {
103104
DockerReservedPort,
104105
DockerReservedSSLPort,
105106
AgentIntrospectionPort,
106-
AgentCredentialsPort,
107+
tmds.Port,
107108
rdpPort,
108109
rpcPort,
109110
smbPort,

agent/config/config_windows_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626

2727
"github.com/aws/amazon-ecs-agent/agent/dockerclient"
2828
"github.com/aws/amazon-ecs-agent/agent/ec2"
29+
"github.com/aws/amazon-ecs-agent/ecs-agent/tmds"
2930

3031
"github.com/hectane/go-acl/api"
3132
"github.com/stretchr/testify/assert"
@@ -83,7 +84,7 @@ func TestConfigIAMTaskRolesReserves80(t *testing.T) {
8384
DockerReservedPort,
8485
DockerReservedSSLPort,
8586
AgentIntrospectionPort,
86-
AgentCredentialsPort,
87+
tmds.Port,
8788
rdpPort,
8889
rpcPort,
8990
smbPort,

agent/go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ require (
1111
github.com/containernetworking/cni v0.8.1
1212
github.com/containernetworking/plugins v0.9.1
1313
github.com/deniswernert/udev v0.0.0-20170418162847-a12666f7b5a1
14-
github.com/didip/tollbooth v4.0.2+incompatible
1514
github.com/docker/docker v20.10.23+incompatible
1615
github.com/docker/go-connections v0.4.0
1716
github.com/docker/go-units v0.4.0
@@ -46,6 +45,7 @@ require (
4645
github.com/containerd/continuity v0.3.0 // indirect
4746
github.com/coreos/go-systemd/v22 v22.3.2 // indirect
4847
github.com/davecgh/go-spew v1.1.1 // indirect
48+
github.com/didip/tollbooth v4.0.2+incompatible // indirect
4949
github.com/docker/distribution v2.8.1+incompatible // indirect
5050
github.com/godbus/dbus/v5 v5.0.6 // indirect
5151
github.com/gogo/protobuf v1.3.2 // indirect

agent/handlers/introspection_server_setup.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
handlersutils "github.com/aws/amazon-ecs-agent/agent/handlers/utils"
2828
v1 "github.com/aws/amazon-ecs-agent/agent/handlers/v1"
2929
"github.com/aws/amazon-ecs-agent/agent/utils/retry"
30+
logginghandler "github.com/aws/amazon-ecs-agent/ecs-agent/tmds/logging"
3031
"github.com/cihub/seelog"
3132
)
3233

@@ -81,7 +82,7 @@ func introspectionServerSetup(containerInstanceArn *string, taskEngine handlersu
8182

8283
// Log all requests and then pass through to serverMux
8384
loggingServeMux := http.NewServeMux()
84-
loggingServeMux.Handle("/", LoggingHandler{serverMux})
85+
loggingServeMux.Handle("/", logginghandler.NewLoggingHandler(serverMux))
8586

8687
wTimeout := writeTimeout
8788
if cfg.EnableRuntimeStats.Enabled() {

agent/handlers/task_server_setup.go

+15-27
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,13 @@ package handlers
1616
import (
1717
"context"
1818
"net/http"
19-
"strconv"
2019
"time"
2120

2221
"github.com/aws/amazon-ecs-agent/agent/api"
2322
"github.com/aws/amazon-ecs-agent/agent/config"
2423
"github.com/aws/amazon-ecs-agent/agent/credentials"
2524
"github.com/aws/amazon-ecs-agent/agent/engine/dockerstate"
2625
agentAPITaskProtectionV1 "github.com/aws/amazon-ecs-agent/agent/handlers/agentapi/taskprotection/v1/handlers"
27-
handlersutils "github.com/aws/amazon-ecs-agent/agent/handlers/utils"
2826
v1 "github.com/aws/amazon-ecs-agent/agent/handlers/v1"
2927
v2 "github.com/aws/amazon-ecs-agent/agent/handlers/v2"
3028
v3 "github.com/aws/amazon-ecs-agent/agent/handlers/v3"
@@ -33,8 +31,8 @@ import (
3331
"github.com/aws/amazon-ecs-agent/agent/stats"
3432
"github.com/aws/amazon-ecs-agent/agent/utils/retry"
3533
auditinterface "github.com/aws/amazon-ecs-agent/ecs-agent/logger/audit"
34+
"github.com/aws/amazon-ecs-agent/ecs-agent/tmds"
3635
"github.com/cihub/seelog"
37-
"github.com/didip/tollbooth"
3836
"github.com/gorilla/mux"
3937
)
4038

@@ -61,7 +59,8 @@ func taskServerSetup(credentialsManager credentials.Manager,
6159
vpcID string,
6260
containerInstanceArn string,
6361
apiEndpoint string,
64-
acceptInsecureCert bool) *http.Server {
62+
acceptInsecureCert bool) (*http.Server, error) {
63+
6564
muxRouter := mux.NewRouter()
6665

6766
// Set this to false so that for request like "//v3//metadata/task"
@@ -79,28 +78,13 @@ func taskServerSetup(credentialsManager credentials.Manager,
7978

8079
agentAPIV1HandlersSetup(muxRouter, state, credentialsManager, cluster, region, apiEndpoint, acceptInsecureCert)
8180

82-
limiter := tollbooth.NewLimiter(float64(steadyStateRate), nil)
83-
limiter.SetOnLimitReached(handlersutils.LimitReachedHandler(auditLogger))
84-
limiter.SetBurst(burstRate)
85-
86-
// Log all requests and then pass through to muxRouter.
87-
loggingMuxRouter := mux.NewRouter()
88-
89-
// rootPath is a path for any traffic to this endpoint, "root" mux name will not be used.
90-
rootPath := "/" + handlersutils.ConstructMuxVar("root", handlersutils.AnythingRegEx)
91-
loggingMuxRouter.Handle(rootPath, tollbooth.LimitHandler(
92-
limiter, NewLoggingHandler(muxRouter)))
93-
94-
loggingMuxRouter.SkipClean(false)
95-
96-
server := http.Server{
97-
Addr: "127.0.0.1:" + strconv.Itoa(config.AgentCredentialsPort),
98-
Handler: loggingMuxRouter,
99-
ReadTimeout: readTimeout,
100-
WriteTimeout: writeTimeout,
101-
}
102-
103-
return &server
81+
return tmds.NewServer(auditLogger,
82+
tmds.WithRouter(muxRouter),
83+
tmds.WithListenAddress(tmds.AddressIPv4()),
84+
tmds.WithReadTimeout(readTimeout),
85+
tmds.WithWriteTimeout(writeTimeout),
86+
tmds.WithSteadyStateRate(float64(steadyStateRate)),
87+
tmds.WithBurstRate(burstRate))
10488
}
10589

10690
// v2HandlersSetup adds all handlers in v2 package to the mux router.
@@ -200,9 +184,13 @@ func ServeTaskHTTPEndpoint(
200184

201185
auditLogger := audit.NewAuditLog(containerInstanceArn, cfg, logger)
202186

203-
server := taskServerSetup(credentialsManager, auditLogger, state, ecsClient, cfg.Cluster, cfg.AWSRegion, statsEngine,
187+
server, err := taskServerSetup(credentialsManager, auditLogger, state, ecsClient, cfg.Cluster, cfg.AWSRegion, statsEngine,
204188
cfg.TaskMetadataSteadyStateRate, cfg.TaskMetadataBurstRate, availabilityZone, vpcID, containerInstanceArn, cfg.APIEndpoint,
205189
cfg.AcceptInsecureCert)
190+
if err != nil {
191+
seelog.Criticalf("Failed to set up Task Metadata Server: %v", err)
192+
return
193+
}
206194

207195
go func() {
208196
<-ctx.Done()

0 commit comments

Comments
 (0)