func()

in internal/kms/sm.go [36:64]


func (smClient *secretManagerClient) GetSecretValue(ctx context.Context, request *kmssdk.GetSecretValueRequest) (*kmssdk.GetSecretValueResponseBody, error) {

	runtime := &teautil.RuntimeOptions{}
	runtime.Autoretry = tea.Bool(true)
	runtime.MaxAttempts = tea.Int(3)

	var ret = new(kmssdk.GetSecretValueResponse)
	var err error
	for i := 0; i < 3; i++ {
		ret, err = smClient.client.GetSecretValueWithOptions(request, runtime)
		if err != nil {
			if sdkErr, ok := err.(*tea.SDKError); ok {
				// throttling or unexpected errors
				if *sdkErr.StatusCode == 429 || *sdkErr.StatusCode >= 500 {
					time.Sleep(time.Duration(getWaitTimeExponential(i+1) * int64(time.Millisecond)))
					continue
				}
			}
		}
		break
	}
	if err != nil {
		if sdkErr, ok := err.(*tea.SDKError); ok {
			return nil, &model.ErrorResponse{StatusCode: *sdkErr.StatusCode, ErrorMsg: fmt.Sprintf("failed to get secret [%s]: %v", *request.SecretName, sdkErr.Error())}
		}
		return nil, err
	}
	return ret.Body, nil
}