当前位置: 首页 > 知识库问答 >
问题:

无法从弹性Beanstalk连接到Amazon SimpleDB

华凡
2023-03-14

我有一个与Amazon SimpleDB通信的应用程序。在localhost上运行时,一切都运行得很好,我在localhost上将这个webapp部署到我的Tomcat实例中。

我在本地Tomcat和部署应用程序的弹性Beanstalk上都将AWS凭据指定为环境变量。

然而,在弹性Beanstalk上,我得到了一个自动异常(它是一个Spring引导应用程序),这是由以下原因引起的:

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证书,在本地和弹性豆茎,所以我不明白为什么它在第一种情况下工作,但在另一种情况下失败。有人能帮我一下吗?

共有1个答案

滑景胜
2023-03-14

您对用户有什么策略吗?一般来说,这意味着IAM策略不够好,您可以在这里阅读更多内容

您可以尝试添加:

{
   "Version": "2015-09-14",
   "Statement":[{
      "Effect":"Allow",
      "Action":"sdb:ListDomains",
      "Resource":"arn:aws:sdb:us-east-1:295923482971:domain/<youraccount>"
      }
   ]
}
 类似资料:
  • 我在AWS托管了一个站点。我已经为弹性Beanstalk创建了一个RDS DB实例。在我的laravel应用程序的config/database.php文件中,我将数据库连接配置为: 现在,当我尝试通过SSHing运行到EC2实例时,我得到以下错误: SQLState[HY000][1049]未知数据库“MydBindEntifier”(SQL:select*from) “mydbidentifi

  • 我试图使用docker容器创建一个弹性搜索安装。我只使用Elastic.io提供者的映像。 我不知道为什么,但logstash告诉我,他无法连接到带有此错误消息的ElasticSearch实例: 如果logstash真的得到了我的设置,有人能告诉我为什么他使用了一个坏的主机事件吗?

  • 我目前正在运行elastic search和kibana 7.0.0版,在我的项目中有一个docker compose文件 我能够连接到端口5601上的kibana(索引和搜索数据),以及端口9200上的弹性搜索。 我试图使用NEST连接到弹性这里是我的基本配置 当我通过NEST执行任何命令时,如ping、健康检查或搜索等,我检索到以下异常。这让我相信docker容器(linux容器)中存在一些与

  • 我有一个VPC,在不同的可用性区域(公共子网-2a和公共子网-2b)有两个公共子网(私有2a-EB-Instance,私有2b-EB-Instance),以及Elasticache的另外两个私有子网(私有2a-EB-Instance,私有2b-EB-Instance),这两个elasticache子网是我创建Elasticache集群时使用的子网组的一部分。 我已经为我的ElastiCache(r

  • 我得到以下错误消息: 我运行的是MySQL5.5,它是一个Java7应用程序。 为了使Java7 WAR文件运行,我在中有一个配置文件,参见http://qslack.com/2012/12/using-java-1-7-on-amazon-aws-elastific-beanstalk/ 因为我正在使用Spring(3.2.0)和Hibernate(4.1.9)建立DB连接。话虽如此,我确实尝试

  • 我试图使用Maven将一个简单的Jersey REST api部署到beanstalk。我用RDS在我的aws中创建了一个环境。我还公开了RDS,这样我就可以通过命令行使用“mysql-h-u xxxx-p”命令连接到它。下面是我的Hibernate配置。 然而,我得到以下信息:错误: 我需要什么东西来允许连接。RDS已经显示了一个群组,该群组应该允许我的应用程序与它对话。 知道吗?当我使用本地m