Boto3는 botocore의 Config 객체를 통해 명시적 프록시 정책을 받습니다:

import boto3
from botocore.config import Config

network = Config(proxies={
    'http': 'http://proxy.example:8080',
    'https': 'http://proxy.example:8080',
})
s3 = boto3.client('s3', config=network)

맵의 키가 대상 프로토콜을 선택합니다. 값은 프록시 엔드포인트를 설명합니다. 이 예제는 HTTP와 HTTPS 서비스 요청을 모두 하나의 HTTP 포워드 프록시로 보냅니다. 프록시 계정 없이 허용된 공용 AWS 엔드포인트를 시험하려면 HTTP 프록시 목록의 HTTP 항목이 그 두 URL을 제공할 수 있습니다.

https:// 값은 대신 클라이언트로부터 TLS 연결을 받는 프록시 리스너가 필요합니다. HTTPS 키에 맞추기 위해 값의 스킴을 바꾸지 마세요.

Config.proxies는 해당 클라이언트에 대해 HTTP_PROXY 및 HTTPS_PROXY 환경 변수의 프록시 선택을 덮어씁니다. 다른 클라이언트는 자체 Config 객체로 생성할 수 있으며, 이 객체를 생성해도 프로세스 전체 환경 변수는 바뀌지 않습니다.

애플리케이션에 통합할 때 리전과 재시도 정책 같은 다른 필수 클라이언트 옵션을 유지하세요. AWS 자격 증명은 애플리케이션의 일반 자격 증명 구성에 그대로 남습니다. EndpointCreator나 botocore의 다른 비공개 메서드를 수정할 필요는 없습니다.

HTTPS 프록시로의 TLS 연결에는 Config에 proxy_ca_bundle과 proxy_client_cert 같은 proxies_config 옵션도 있습니다. 이는 프록시 연결에서 신뢰와 클라이언트 인증서 인증에 관한 것입니다. AWS 서비스 엔드포인트 선택이나 AWS API 요청 서명과는 별개입니다.

관련 글