in src/ssmclicommands/startsession.go [236:289]
func (s *StartSessionCommand) getStartSessionParams(log log.T, parameters map[string][]string) (string, string, string, error) {
//Fetch command token
uuid.SwitchFormat(uuid.CleanHyphen)
startSessionInput := ssm.StartSessionInput{
Target: ¶meters[INSTANCE_ID][0],
}
if parameters[DOCUMENT_NAME] != nil {
startSessionInput.DocumentName = ¶meters[DOCUMENT_NAME][0]
}
delete(parameters, INSTANCE_ID)
delete(parameters, DOCUMENT_NAME)
delete(parameters, REGION)
if parameters["parameters"] != nil && len(parameters["parameters"]) == 1 {
userParameters := make(map[string][]*string)
params := make(map[string][]string)
if err := jsonutil.Unmarshal(parameters[PARAMETERS][0], ¶ms); err != nil {
return "", "", "", fmt.Errorf("%v not valid input, get error: %v", PARAMETERS, err)
}
for k, v := range params {
values := make([]*string, len(v))
for index, element := range v {
value := element
values[index] = &value
}
userParameters[k] = values
}
startSessionInput.Parameters = userParameters
}
log.Infof("StartSession input parameters: %v", startSessionInput)
startSessionOutput, err := startSession(s, &startSessionInput)
if err != nil {
log.Errorf("StartSession Failed: %v", err)
return "", "", "", fmt.Errorf("start session failed with error: %v", err)
}
sessionId := startSessionOutput.SessionId
tokenValue := startSessionOutput.TokenValue
streamUrl := startSessionOutput.StreamUrl
if tokenValue == nil || sessionId == nil || streamUrl == nil {
return "", "", "", fmt.Errorf("token value or sessionId or streamUrl should not be empty. \n")
}
return *sessionId, *tokenValue, *streamUrl, err
}