기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
HTTP 클라이언트 사용자 지정
AWS SDK for Go는 기본 구성 값과 함께 기본 HTTP 클라이언트를 사용합니다. 이러한 구성 값 중 일부를 변경할 수 있지만 기본 HTTP 클라이언트 및 전송은 처리량이 높고 지연 시간이 짧은 환경에서 AWS SDK for Go를 사용하는 고객을 위해 충분히 구성되지 않습니다. 구성 권장 사항은 특정 워크로드에 따라 다르므로 자세한 내용은 FAQ 섹션을 참조하세요. 이 섹션에서는 사용자 지정 HTTP 클라이언트를 구성하고 해당 클라이언트를 사용하여 AWS SDK for Go 직접 호출을 생성하는 방법을 설명합니다.
사용자 지정 HTTP 클라이언트를 생성하는 데 도움이 되도록 이 섹션에서는 NewBuildableClient
사용자 지정하려는 항목을 정의해 보겠습니다.
구성 로드 중 재정의
LoadDefaultConfigLoadDefaultConfig에 전달하여 사용자 지정 HTTP 클라이언트를 제공할 수 있습니다. 예를 들어 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
KeepAlive를 time.Duration으로 설정합니다.
Dialer.Timeout
이 설정은 다이얼이 연결이 생성되기를 기다리는 최대 시간을 나타냅니다.
기본값은 30초입니다.
https://golang.org/pkg/net/#Dialer.Timeout
Timeout를 time.Duration으로 설정합니다.
운송
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
ExpectContinue를 time.Duration으로 설정합니다.
Transport.IdleConnTimeout
이 설정은 유휴 네트워크 연결을 HTTP 요청 간에 유지하는 최대 시간을 나타냅니다.
제한이 없는 경우 0으로 설정합니다.
https://golang.org/pkg/net/http/#Transport.IdleConnTimeout
IdleConnTimeout를 time.Duration으로 설정합니다.
Transport.MaxIdleConns
이 설정은 모든 호스트에서 유휴(keep-alive) 연결의 최대 수를 나타냅니다. 이 값을 늘리는 한 가지 사용 사례는 동일한 클라이언트에서 단기간에 많은 연결이 표시되는 경우입니다.
0은 제한이 없음을 의미합니다.
https://golang.org/pkg/net/http/#Transport.MaxIdleConns
MaxIdleConns를 int로 설정합니다.
Transport.MaxIdleConnsPerHost
이 설정은 호스트당 유지할 유휴(keep-alive) 연결의 최대 수를 나타냅니다. 이 값을 늘리는 한 가지 사용 사례는 동일한 클라이언트에서 단기간에 많은 연결이 표시되는 경우입니다.
기본값은 호스트당 두 개의 유휴 연결입니다.
DefaultMaxIdleConnsPerHost를 사용하려면 0으로 설정합니다. (2)
https://golang.org/pkg/net/http/#Transport.MaxIdleConnsPerHost
MaxIdleConnsPerHost를 int로 설정합니다.
Transport.ResponseHeaderTimeout
이 설정은 클라이언트가 응답 헤더를 읽을 때까지 기다리는 최대 시간을 나타냅니다.
클라이언트가 이 기간 내에 응답의 헤더를 읽을 수 없는 경우 제한 시간 오류와 함께 요청이 실패합니다.
장기 실행 Lambda 함수를 사용할 때는 Lambda 함수가 완료되거나 시간 초과될 때까지 작업이 응답 헤더를 반환하지 않으므로 이 값을 신중하게 설정하세요. 그러나 ** InvokeAsync** API 작업에서 이 옵션을 계속 사용할 수 있습니다.
기본값은 제한 시간 없음이며 영구적으로 기다립니다.
https://golang.org/pkg/net/http/#Transport.ResponseHeaderTimeout
ResponseHeaderTimeout를 time.Duration으로 설정합니다.
Transport.TLSHandshakeTimeout
이 설정은 TLS 핸드셰이크가 완료될 때까지 대기하는 최대 시간을 나타냅니다.
기본값은 10초입니다.
0은 제한 시간이 없음을 의미합니다.
https://golang.org/pkg/net/http/#Transport.TLSHandshakeTimeout
TLSHandshakeTimeout를 time.Duration으로 설정합니다.