【发布时间】:2015-04-21 08:09:24
【问题描述】:
以下是我使用 API 在 AWS 中创建 VPC 的代码,但出现错误。
代码:
CreateAccessKeyRequest key = new CreateAccessKeyRequest();
BasicAWSCredentials cred = new BasicAWSCredentials("", "");
key.setRequestCredentials(cred);
AmazonEC2 ec2 = new AmazonEC2Client();
System.out.println("Creating VPC.....\n");
CreateVpcRequest newVPC = new CreateVpcRequest("In");
newVPC.setRequestCredentials(key.getRequestCredentials());
String cidrBlock = "192.168.1.70/28";
newVPC.setCidrBlock(cidrBlock);
newVPC.setInstanceTenancy(Tenancy.Default);
AmazonIdentityManagementClient client = new AmazonIdentityManagementClient(cred);
CreateVpcResult res = ec2.createVpc(newVPC);
Vpc vp = res.getVpc();
vp.setIsDefault(true);
String vpcId = vp.getVpcId();
System.out.println("Created VPC" + vpcId);
错误:
Exception in thread "main" com.amazonaws.AmazonClientException: Unable to load AWS credentials from any provider in the chain
at com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:117)
at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.java:10540)
at com.amazonaws.services.ec2.AmazonEC2Client.createVpc(AmazonEC2Client.java:5709)
at CreateUserRequest.main(CreateUserRequest.java:29)
【问题讨论】:
-
错误信息抱怨缺少凭据,而你这样做
new BasicAWSCredentials("", "")? -
我在 BasicAWSCredentials 类中硬编码了凭证,仍然是同样的错误。
-
这里为什么需要
CreateAccessKeyRequest对象?为什么不直接使用BasicAWSCredentials对象呢?或者更好的是,为什么不从您的代码中删除所有凭据处理,并使用凭据配置文件或环境变量(根据Providing AWS Credentials in the AWS SDK for Java)? -
当然我只使用 BasicAWSCredentials 类,得到同样的错误。
-
下面的回答对你有帮助吗?
标签: java amazon-web-services aws-java-sdk