【发布时间】:2013-12-22 12:55:23
【问题描述】:
我正在使用 amazon SDK 1.5.6 并尝试使用代理服务器初始化连接。
初始化成功,但是当我尝试使用 AmazonEC2Client 时它失败并显示以下内容
错误:
捕获的异常:状态代码:407,AWS 服务:AmazonEC2,AWS 请求 ID:空,AWS 错误代码:407 未经授权,AWS 错误消息: 无法解组错误响应(文件过早结束。)响应 状态码:407 错误码:407 未经授权的请求 ID:null
初始化代码:
protected AmazonEC2 initAmazonSDKClient(String endpoint) {
AWSCredentials awsCredentials =
new BasicAWSCredentials(_account.getAccessKey(), _account.getSecretKey());
ClientConfiguration config = getProxySettings();
AmazonEC2 ret = CloudServicesEC2Api.getAmazonEC2Client(awsCredentials, config);
ret.setEndpoint(endpoint);
_endPointToAmazonEC2Client.put(endpoint, ret);
return ret;
}
private ClientConfiguration getProxySettings() {
ClientConfiguration ret = new ClientConfiguration();
String host = _proxySettings.getServer();
if (!StringUtils.isNullOrEmpty(host )) {
ret.setProxyHost(host );
}
if (!StringUtils.isNullOrEmpty(_proxySettings.getPort())) {
ret.setProxyPort(Integer.valueOf(_proxySettings.getPort()));
}
String proxyUserName = _proxySettings.getUserName();
if (!StringUtils.isNullOrEmpty(proxyUserName)) {
ret.setProxyUsername(proxyUserName);
}
String proxyPassword = _proxySettings.getPassword();
if (!StringUtils.isNullOrEmpty(proxyPassword)) {
ret.setProxyPassword(proxyPassword);
}
ret.setProxyWorkstation(host );
ret.setProxyDomain(host );
return ret;
}
使用客户端并导致错误的代码:
private List<InstanceStatus> getStatusChecks(AmazonEC2 ec2Client, String[] hostIds) {
DescribeInstanceStatusRequest describeInstanceRequest =
new DescribeInstanceStatusRequest().withInstanceIds(hostIds);
DescribeInstanceStatusResult describeInstanceResult =
ec2Client.describeInstanceStatus(describeInstanceRequest);
return describeInstanceResult.getInstanceStatuses();
}
我知道根本原因是 NTLM 身份验证,我需要以某种方式配置 NTLM 主机和 NTLM 域,在我的代码示例中它的行:
ret.setProxyWorkstation(host );
ret.setProxyDomain(host );
我尝试了几个版本的工作站和域,我尝试将其留空,没有用...
请指教!
【问题讨论】:
标签: java proxy amazon-ec2 cloud