code: func userDataConfig(ec2Client ec2.EC2MetadataClient) Config {
  	type userDataParser struct {
  		Config Config `json:"ECSAgentConfiguration"`
  	}
  
  	parsedUserData := userDataParser{
  		Config: Config{},
  	}
  
  	userData, err := ec2Client.GetUserData()
  	if err != nil {
  		seelog.Warnf("Unable to fetch user data: %v", err)
  		// Unable to read userdata from instance metadata. Just
  		// return early
  		return parsedUserData.Config
  	}
  	// In the future, if we want to support base64 encoded config,
  	// we'd need to add logic to decode the string here.
  	err = json.Unmarshal([]byte(userData), &parsedUserData)
  	if err != nil {
  		seelog.Debugf("Non-json user data, skip merging into agent config: %v", err)
  		// Unable to parse userdata as a valid JSON. Return the
  		// empty config
  		return Config{}
  	}
  
  	return parsedUserData.Config
  }
docs: // userDataConfig reads configuration JSON from instance's userdata. It doesn't
  // return any error as it's entirely optional to configure the ECS agent using
  // this method.
  // Example:
  // {"ECSAgentConfiguration":{"Cluster":"default"}}