기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
HTTP 클라이언트 사용자 지정
는 기본 구성 값과 함께 기본 HTTP 클라이언트를 AWS SDK for Go 사용합니다. 이러한 구성 값 중 일부를 변경할 수 있지만 기본 HTTP 클라이언트 및 전송은 처리량이 높고 지연 시간이 짧은 환경에서를 AWS SDK for Go 사용하는 고객을 위해 충분히 구성되지 않습니다. 구성 권장 사항은 특정 워크로드에 따라 다르FAQ므로 자세한 내용은 섹션을 참조하세요. 이 섹션에서는 사용자 지정 HTTP 클라이언트를 구성하고 해당 클라이언트를 사용하여 AWS SDK for Go 호출을 생성하는 방법을 설명합니다.
사용자 지정 HTTP 클라이언트를 생성하는 데 도움이 되도록이 섹션에서는 NewBuildableClient
사용자 지정하려는 항목을 정의해 보겠습니다.
구성 로드 중 재정의
LoadDefaultConfigLoadDefaultConfig
. 예를 들어를 클라이언트customClient
로 전달하려면 다음을 수행합니다.
cfg, err := config.LoadDefaultConfig(context.TODO(), config.WithHTTPClient(customClient))
제한 시간
요청 제한 시간으로를 구성할 BuildableHTTPClient
수 있습니다. 이 제한 시간에는 연결, 리디렉션 처리 및 전체 응답 본문 읽기 시간이 포함됩니다. 예를 들어 클라이언트 제한 시간을 수정하려면
import "github.com/aws/aws-sdk-go-v2/aws/transport/http" // ... httpClient := http.NewBuildableClient().WithTimeout(time.Second*5)
다이얼러
는 수정된 다이얼러BuildableHTTPClient
제공합니다. 다음 예제에서는 클라이언트 Dialer
설정을 구성하는 방법을 보여줍니다.
import awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" import "net" // ... httpClient := awshttp.NewBuildableClient().WithDialerOptions(func(d *net.Dialer) { d.KeepAlive = -1 d.Timeout = time.Millisecond*500 })
설정
Dialer.KeepAlive
이 설정은 활성 네트워크 연결의 연결 유지 기간을 나타냅니다.
연결 유지를 비활성화하려면 음수 값으로 설정합니다.
프로토콜 및 운영 체제에서 지원하는 경우 연결 유지를 활성화하려면 0으로 설정합니다.
연결 유지를 지원하지 않는 네트워크 프로토콜 또는 운영 체제는이 필드를 무시합니다. 기본적으로 TCP는 연결 유지를 활성화합니다.
참조: https://golang.org/pkg/net/#Dialer.KeepAlive
time.DurationKeepAlive
으로 설정합니다.
Dialer.Timeout
이 설정은 다이얼이 연결이 생성되기를 기다리는 최대 시간을 나타냅니다.
기본값은 30초입니다.
참조: https://golang.org/pkg/net/#Dialer.Timeout
time.DurationTimeout
으로 설정합니다.
운송
는 수정된 전송BuildableHTTPClient
제공합니다.
프록시 구성
인터넷에 직접 연결할 수 없는 경우 Go 지원 환경 변수(HTTP_PROXY
/HTTPS_PROXY
)를 사용하거나 사용자 지정 HTTP 클라이언트를 생성하여 프록시를 구성할 수 있습니다. 다음 예제에서는 프록시 엔드포인트PROXY_URL
로 사용하도록 클라이언트를 구성합니다.
import awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" import "net/http" // ... httpClient := awshttp.NewBuildableClient().WithTransportOptions(func(tr *http.Transport) { proxyURL, err := url.Parse("PROXY_URL") if err != nil { log.Fatal(err) } tr.Proxy = http.ProxyURL(proxyURL) })
기타 설정
다음은 HTTP 클라이언트를 조정하기 위해 수정할 수 있는 몇 가지 다른 Transport
설정입니다. 여기에 설명되지 않은 추가 설정은 전송
import awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" import "net/http" // ... httpClient := awshttp.NewBuildableClient().WithTransportOptions(func(tr *http.Transport) { tr.ExpectContinueTimeout = 0 tr.MaxIdleConns = 10 })
Transport.ExpectContinueTimeout
요청에 "Expect: 100-continue" 헤더가 있는 경우이 설정은 요청 헤더를 완전히 작성한 후 서버의 첫 번째 응답 헤더를 기다리는 최대 시간을 나타냅니다.이 시간에는 요청 헤더를 보내는 시간이 포함되지 않습니다. HTTP 클라이언트는이 제한 시간이 초과된 후 페이로드를 전송합니다.
기본값은 1초입니다.
제한 시간이 없는 경우 0으로 설정하고 기다리지 않고 요청 페이로드를 전송합니다. 한 가지 사용 사례는 나중에 표시된 함수에서 Amazon S3를 사용하는 것과 유사한 세션을 수행하는 프록시 또는 타사 서비스에 문제가 발생하는 경우입니다.
https://golang.org/pkg/net/http/#Transport.ExpectContinueTimeout
time.DurationExpectContinue
으로 설정합니다.
Transport.IdleConnTimeout
이 설정은 HTTP 요청 간에 유휴 네트워크 연결을 유지하는 최대 시간을 나타냅니다.
제한이 없는 경우 0으로 설정합니다.
참조: https://golang.org/pkg/net/http/#Transport.IdleConnTimeout
time.DurationIdleConnTimeout
으로 설정합니다.
Transport.MaxIdleConns
이 설정은 모든 호스트에서 유휴(연결 유지) 연결의 최대 수를 나타냅니다. 이 값을 늘리는 사용 사례 중 하나는 동일한 클라이언트에서 단기간에 많은 연결이 표시되는 경우입니다.
0은 제한이 없음을 의미합니다.
참조: https://golang.org/pkg/net/http/#Transport.MaxIdleConns
int로 설정합니다MaxIdleConns
.
Transport.MaxIdleConnsPerHost
이 설정은 호스트당 유지할 유휴(keep-alive) 연결의 최대 수를 나타냅니다. 이 값을 늘리는 사용 사례 중 하나는 동일한 클라이언트에서 단기간에 많은 연결이 표시되는 경우입니다.
기본값은 호스트당 두 개의 유휴 연결입니다.
DefaultMaxIdleConnsPerHost(2)를 사용하려면 0으로 설정합니다.
https://golang.org/pkg/net/http/#Transport.MaxIdleConnsPerHost
intMaxIdleConnsPerHost
로 설정합니다.
Transport.ResponseHeaderTimeout
이 설정은 클라이언트가 응답 헤더를 읽을 때까지 기다리는 최대 시간을 나타냅니다.
클라이언트가이 기간 내에 응답의 헤더를 읽을 수 없는 경우 제한 시간 오류와 함께 요청이 실패합니다.
장기 실행 Lambda 함수를 사용할 때는 Lambda 함수가 완료되거나 시간 초과될 때까지 작업이 응답 헤더를 반환하지 않으므로이 값을 신중하게 설정하세요. 그러나 ** InvokeAsync** API 작업에서이 옵션을 계속 사용할 수 있습니다.
기본값은 제한 시간이 없습니다. 영구적으로 기다립니다.
참조: https://golang.org/pkg/net/http/#Transport.ResponseHeaderTimeout
time.DurationResponseHeaderTimeout
으로 설정합니다.
Transport.TLSHandshakeTimeout
이 설정은 TLS 핸드셰이크가 완료될 때까지 대기하는 최대 시간을 나타냅니다.
기본값은 10초입니다.
0은 제한 시간이 없음을 의미합니다.
https://golang.org/pkg/net/http/#Transport.TLSHandshakeTimeout
time.DurationTLSHandshakeTimeout
으로 설정합니다.