最近更新时间:2026-07-10 11:04:26
Go SDK 默认开启 DNS 缓存,每次 DNS 查询成功都会更新缓存,若遇到 DNS 服务器异常等导致查询失败,SDK 将自动使用缓存中的结果。
// 创建访问凭证,请将<AccessKeyID>与<SecretAccessKey>替换为实际值
cre := credentials.NewStaticCredentials("<AccessKeyID>", "<SecretAccessKey>", "")
// 创建KS3客户端,更多配置项请查看初始化文档
client := s3.New(&aws.Config{
Credentials: cre, // 访问凭证
Region: "BEIJING", // 访问地域
Endpoint: "ks3-cn-beijing.ksyuncs.com", // 访问域名
DisableDnsCache: false, // 禁用DNS缓存,false: 开启DNS缓存,true: 禁用DNS缓存
})1.由于DNS缓存功能在实现时会配置HTTPClient,若您已主动设置HTTPClient配置项,将优先使用您指定的配置,此时DisableDnsCache配置项将被忽略,DNS缓存功能也不会生效。
2.若您希望在自定义HTTPClient的同时仍启用DNS缓存功能,可通过设置http.Transport中的DialContext字段来实现。Go SDK提供了aws.DnsCacheTransportDialContext方法,该方法返回符合DialContext字段要求的函数类型。同时您可以使用aws.NewDnsResolver方法创建DNS缓存解析器,并可指定缓存中保留的DNS查询结果数量。
// 创建访问凭证,请将<AccessKeyID>与<SecretAccessKey>替换为实际值
cre := credentials.NewStaticCredentials("<AccessKeyID>", "<SecretAccessKey>", "")
// 自定义HTTP客户端
var httpClient = &http.Client{Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
DialContext: aws.DnsCacheTransportDialContext(&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
}, aws.NewDnsResolver(100)),
ForceAttemptHTTP2: true,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
}}
// 创建KS3客户端,更多配置项请查看初始化文档
client := s3.New(&aws.Config{
Credentials: cre, // 访问凭证
Region: "BEIJING", // 访问地域
Endpoint: "ks3-cn-beijing.ksyuncs.com", // 访问域名
HTTPClient: httpClient, // 自定义HTTP客户端
})
纯净模式
