@@ -31,6 +31,7 @@ import (
3131 "github.com/aws/amazon-ecs-agent/agent/dockerclient/dockerapi"
3232 "github.com/aws/amazon-ecs-agent/agent/taskresource"
3333 "github.com/aws/amazon-ecs-agent/agent/utils/loader"
34+ apicontainerrestart "github.com/aws/amazon-ecs-agent/ecs-agent/api/container/restart"
3435 apicontainerstatus "github.com/aws/amazon-ecs-agent/ecs-agent/api/container/status"
3536 "github.com/aws/amazon-ecs-agent/ecs-agent/api/ecs"
3637 apitaskstatus "github.com/aws/amazon-ecs-agent/ecs-agent/api/task/status"
@@ -360,12 +361,6 @@ func (m *manager) CreateInstanceTask(cfg *config.Config) (*apitask.Task, error)
360361 containerRunning := apicontainerstatus .ContainerRunning
361362 dockerHostConfig := dockercontainer.HostConfig {
362363 NetworkMode : apitask .HostNetworkMode ,
363- // do not restart relay if it's stopped manually.
364- // the default value of 0 for MaximumRetryCount means that we will not enforce a maximum count
365- RestartPolicy : dockercontainer.RestartPolicy {
366- Name : "on-failure" ,
367- MaximumRetryCount : 0 ,
368- },
369364 }
370365 rawHostConfig , err := json .Marshal (& dockerHostConfig )
371366 if err != nil {
@@ -402,6 +397,12 @@ func (m *manager) CreateInstanceTask(cfg *config.Config) (*apitask.Task, error)
402397 TransitionDependenciesMap : make (map [apicontainerstatus.ContainerStatus ]apicontainer.TransitionDependencySet ),
403398 Essential : true ,
404399 SteadyStateStatusUnsafe : & containerRunning ,
400+ // Restart Relay if it exits or crashes
401+ // RestartAttemptPeriod value 60 ensures it has run for atleast 60 seconds and prevents a crash/restart loop
402+ RestartPolicy : & apicontainerrestart.RestartPolicy {
403+ Enabled : true ,
404+ RestartAttemptPeriod : 60 ,
405+ },
405406 DockerConfig : apicontainer.DockerConfig {
406407 Config : aws .String (rawConfig ),
407408 HostConfig : aws .String (string (rawHostConfig )),
0 commit comments