我有一个与Amazon SimpleDB进行通信的应用程序。在本地主机上运行时,一切正常,我将此webapp部署到Tomcat实例。无法从Elastic Beanstalk连接到Amazon SimpleDB
我在我的本地Tomcat以及部署应用程序的Elastic Beanstalk上指定了AWS凭据作为环境变量。
然而,在弹性魔豆,我得到一个自动装配异常(这是一个春天启动的应用程序),这是由以下原因造成的:
Caused by: com.amazonaws.AmazonServiceException: User (arn:aws:sts::295923482971:assumed-role/aws-elasticbeanstalk-ec2-role/i-b35eef66) does not have permission to perform (sdb:ListDomains) on resource (arn:aws:sdb:us-east-1:295923482971:domain/). Contact account owner. (Service: AmazonSimpleDB; Status Code: 403; Error Code: AuthorizationFailure; Request ID: a20f4ed9-a54d-ec13-2886-b5d31cce3778)
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1088)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:735)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:461)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:296)
at com.amazonaws.services.simpledb.AmazonSimpleDBClient.invoke(AmazonSimpleDBClient.java:1021)
at com.amazonaws.services.simpledb.AmazonSimpleDBClient.listDomains(AmazonSimpleDBClient.java:708)
at com.amazonaws.services.simpledb.AmazonSimpleDBClient.listDomains(AmazonSimpleDBClient.java:974)
at com.berrycloud.paypal.service.impl.SimpleDBServiceImpl.init(SimpleDBServiceImpl.java:53)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at
这种情况出现,我自动装配类的启动过程中下面的代码:
@PostConstruct
private void init() {
log.debug("Setting database client endpoint: {}", endpoint);
client.setEndpoint(endpoint);
// check if the domain exists
log.debug("Listing existing domains...");
final List<String> tableNames = client.listDomains().getDomainNames();
if (!tableNames.contains(domain)) {
// if not, create it
log.debug("Creating domain {}", domain);
client.createDomain(new CreateDomainRequest(domain));
}
}
我使用的是相同的AWS凭据在本地和弹性魔豆,所以我不明白为什么它在第一种情况下工作,但在其他失败。有人可以帮我吗?
但如果用户与我正在使用的凭据相关的不具备此策略,那么首先它不会在本地主机上正常工作?因为我能够从我的本地机器使用这些凭据连接到SimpleDB ... – Smajl
正确的,我看到..我不知道,我没有安装重现,但也许内部aws服务,还有其他检查 –