func()

in agent/session/plugin/config/profile.go [241:286]


func (cp *Profile) GetClient(ctx *cli.Context) (*sdk.Client, error) {
	config := sdk.NewConfig()
	// get UserAgent from env
	config.UserAgent = os.Getenv("ALIYUN_USER_AGENT")

	if cp.RetryCount > 0 {
		// when use --retry-count, enable auto retry
		config.WithAutoRetry(true)
		config.WithMaxRetryTime(cp.RetryCount)
	}
	var client *sdk.Client
	var err error
	switch cp.Mode {
	case AK:
		client, err = cp.GetClientByAK(config)
	case StsToken:
		client, err = cp.GetClientBySts(config)
	case RamRoleArn:
		client, err = cp.GetClientByRoleArn(config)
	case EcsRamRole:
		client, err = cp.GetClientByEcsRamRole(config)
	case RsaKeyPair:
		client, err = cp.GetClientByPrivateKey(config)
	case RamRoleArnWithEcs:
		client, err = cp.GetClientByRamRoleArnWithEcs(config)
	case External:
		return cp.GetClientByExternal(config, ctx)
	case CredentialsURI:
		return cp.GetClientByCredentialsURI(config, ctx)
	default:
		client, err = nil, fmt.Errorf("unexcepted certificate mode: %s", cp.Mode)
	}

	if client != nil {
		if cp.ReadTimeout > 0 {
			client.SetReadTimeout(time.Duration(cp.ReadTimeout) * time.Second)
		}
		if cp.ConnectTimeout > 0 {
			client.SetConnectTimeout(time.Duration(cp.ConnectTimeout) * time.Second)
		}
		if SkipSecureVerify(ctx.Flags()).IsAssigned() {
			client.SetHTTPSInsecure(true)
		}
	}
	return client, err
}