func getRegionAndProfileAWSSession()

in cmd/main.go [316:356]


func getRegionAndProfileAWSSession(regionName *string, profileName *string) (*session.Session, error) {
	sessOpts := session.Options{SharedConfigState: session.SharedConfigEnable}
	if regionName != nil {
		sessOpts.Config.Region = regionName
	}

	if profileName != nil {
		sessOpts.Profile = *profileName
		if sessOpts.Config.Region == nil {
			if profileRegion, err := getProfileRegion(*profileName); err != nil {
				log.Println(err)
			} else {
				sessOpts.Config.Region = &profileRegion
			}
		}
	}

	sess := session.Must(session.NewSessionWithOptions(sessOpts))
	if sess.Config.Region != nil && *sess.Config.Region != "" {
		return sess, nil
	}
	if defaultProfileRegion, err := getProfileRegion(defaultProfile); err == nil {
		sess.Config.Region = &defaultProfileRegion
		return sess, nil
	}

	if defaultRegion, ok := os.LookupEnv(defaultRegionEnvVar); ok && defaultRegion != "" {
		sess.Config.Region = &defaultRegion
		return sess, nil
	}

	errorMsg := "Unable to find a region in the usual places: \n"
	errorMsg = errorMsg + "\t - --region flag\n"
	errorMsg = errorMsg + fmt.Sprintf("\t - %s environment variable\n", awsRegionEnvVar)
	if profileName != nil {
		errorMsg = errorMsg + fmt.Sprintf("\t - profile region in %s\n", awsConfigFile)
	}
	errorMsg = errorMsg + fmt.Sprintf("\t - default profile region in %s\n", awsConfigFile)
	errorMsg = errorMsg + fmt.Sprintf("\t - %s environment variable\n", defaultRegionEnvVar)
	return sess, fmt.Errorf(errorMsg)
}