You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java AWS Lambda SDK调用中配置代理

在AWS Java SDK v2中为LambdaClient配置代理

AWS SDK v2的LambdaClient依赖底层HTTP客户端处理网络请求,因此需要通过自定义HTTP客户端来配置代理,而非直接在LambdaClient.builder中设置。以下是两种可行的实现方式:

方法一:使用UrlConnectionHttpClient(默认依赖,无需额外引入)

这是SDK默认使用的轻量HTTP客户端,适合简单代理场景:

无认证代理配置

修改你的初始化代码如下:

import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.lambda.LambdaClient;
import java.net.InetSocketAddress;
import java.net.Proxy;

@PostConstruct
public void init() {
    // 替换为你的代理主机和端口
    Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy.example.com", 8080));

    // 创建带代理配置的HttpClient
    UrlConnectionHttpClient httpClient = UrlConnectionHttpClient.builder()
            .proxyConfiguration(proxyConfig -> proxyConfig.proxy(proxy))
            .build();

    // 构建LambdaClient并绑定自定义HttpClient
    lambdaClient = LambdaClient.builder()
            .region(Region.EU_SOUTH_1)
            .httpClient(httpClient)
            .build();
}

需要用户名密码认证的代理

如果代理要求身份验证,添加认证逻辑:

import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.lambda.LambdaClient;
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;

@PostConstruct
public void init() {
    String proxyHost = "proxy.example.com";
    int proxyPort = 8080;
    String proxyUser = "your-proxy-username";
    String proxyPass = "your-proxy-password";

    // 设置全局代理认证
    Authenticator.setDefault(new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            if (getRequestingHost().equals(proxyHost)) {
                return new PasswordAuthentication(proxyUser, proxyPass.toCharArray());
            }
            return null;
        }
    });

    // 配置代理
    Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
    UrlConnectionHttpClient httpClient = UrlConnectionHttpClient.builder()
            .proxyConfiguration(proxyConfig -> proxyConfig.proxy(proxy))
            .build();

    lambdaClient = LambdaClient.builder()
            .region(Region.EU_SOUTH_1)
            .httpClient(httpClient)
            .build();
}

方法二:使用ApacheHttpClient(更灵活,需额外依赖)

如果需要复杂网络配置(如连接池、HTTPS代理等),可以使用Apache HttpClient,先添加依赖:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>apache-client</artifactId>
    <version>2.21.10</version>
</dependency>

然后配置代理及认证:

import software.amazon.awssdk.http.apache.ApacheHttpClient;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.lambda.LambdaClient;
import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.auth.UsernamePasswordCredentials;
import org.apache.hc.core5.http.HttpHost;

@PostConstruct
public void init() {
    // 代理配置
    HttpHost proxy = new HttpHost("proxy.example.com", 8080, "http");

    // 代理认证(如果需要)
    BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();
    credentialsProvider.setCredentials(
            new org.apache.hc.core5.http.auth.AuthScope(proxy),
            new UsernamePasswordCredentials("your-proxy-username", "your-proxy-password".toCharArray())
    );

    // 创建Apache HttpClient实例
    ApacheHttpClient httpClient = ApacheHttpClient.builder()
            .httpClientBuilder(HttpClients.custom()
                    .setProxy(proxy)
                    .setDefaultCredentialsProvider(credentialsProvider))
            .build();

    lambdaClient = LambdaClient.builder()
            .region(Region.EU_SOUTH_1)
            .httpClient(httpClient)
            .build();
}

内容的提问来源于stack exchange,提问作者Alexander Argyriou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 06:48:46