【问题标题】:AWS DynamoDB Requested resource not found未找到 AWS DynamoDB 请求的资源
【发布时间】:2015-10-11 04:12:02
【问题描述】:

我正在尝试将我的应用程序连接到 DynamoDB。我已经按照亚马逊推荐的方式设置了所有内容。但我仍然一遍又一遍地遇到同样的错误:

   7-21 11:02:29.856  10027-10081/com.amazonaws.cognito.sync.demo E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
    Process: com.amazonaws.cognito.sync.demo, PID: 10027
    java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:304)
            at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
            at java.util.concurrent.FutureTask.run(FutureTask.java:242)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)
     Caused by: com.amazonaws.services.dynamodbv2.model.ResourceNotFoundException: Requested resource not found (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ResourceNotFoundException; Request ID: GIONOKT7E3AMTC4PO19CPLON93VV4KQNSO5AEMVJF66Q9ASUAAJG)
            at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:710)
            at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:385)
            at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:196)
            at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:2930)
            at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.updateItem(AmazonDynamoDBClient.java:930)
            at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper$SaveObjectHandler.doUpdateItem(DynamoDBMapper.java:1173)
            at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper$2.executeLowLevelRequest(DynamoDBMapper.java:873)
            at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper$SaveObjectHandler.execute(DynamoDBMapper.java:1056)
            at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper.save(DynamoDBMapper.java:904)
            at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper.save(DynamoDBMapper.java:688)
            at com.amazonaws.cognito.sync.Utils.FriendsSyncManager.initalize_credentialprovider(FriendsSyncManager.java:43)
            at com.amazonaws.cognito.sync.ValU.FriendListActivity$SyncFriends.doInBackground(FriendListActivity.java:168)
            at com.amazonaws.cognito.sync.ValU.FriendListActivity$SyncFriends.doInBackground(FriendListActivity.java:160)
            at android.os.AsyncTask$2.call(AsyncTask.java:292)

有什么解决办法?

【问题讨论】:

  • 你的表存在吗?它的状态是什么(CREATING 或其他状态)?

标签: amazon-web-services amazon-dynamodb


【解决方案1】:

从docs 来看,要么您没有具有该名称的表,要么它处于创建状态。

我会仔细检查以确认该表确实存在于正确的区域,并且您正在使用可以访问它的访问密钥。

或者您可能选择了错误的地区。

【讨论】:

    【解决方案2】:

    如果您确定您已经在 DynamoDB 中创建了表,但仍然收到此错误。这意味着您的区域可能不正确。只需查看您的 AWS 门户的右上角,以及您的个人资料下拉菜单。另一个下拉菜单将为您提供选择您所在地区的选项。现在再次使用正确的区域执行该过程。

    希望这行得通。这对我有用。

    【讨论】:

    • 您好...检查//观看...您的答案,除了被视为评论。它做得不好。插入带有代码和参考的有效响应很有用。得出一个切实有效的解决方案。这个平台不仅仅是任何论坛。我们是世界上其他程序员和开发人员最大的帮助和支持中心。查看社区条款并了解如何发帖。
    【解决方案3】:

    因为这个问题与平台无关。对于任何从 .NET/C# 遇到同样问题的人...

    您可以在构造函数中使用 Endpoint 实例化您的客户端:

    AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials, Amazon.RegionEndpoint.USEast1 );
    

    我本以为这是从您的 AWS 配置文件中引入的,但似乎不是,尽管您可以执行类似的操作,其中配置文件是从您的 SharedCredentialsFile 导入的:

    new AmazonDynamoDBClient(credentials, profile.Region );
    

    【讨论】:

      【解决方案4】:

      如果使用 Spring boot,您可以通过应用程序属性配置区域:

      在 src/main/resources/application.yaml

      cloud:
        aws:
          region:
            static: eu-west-1
      

      【讨论】:

        【解决方案5】:

        连同@Yuliia Ashomok 的回答

        AWS C++ 开发工具包 1.7.25

        Aws::Client::ClientConfiguration clientConfig;
        clientConfig.region = Aws::Region::US_WEST_2;
        

        【讨论】:

          【解决方案6】:

          您需要检查几件事:

          在您的代码中检查您的凭据:

          private static String awsSecretKey = "your_secret_key"; //get it in AWS web UI
          private static String awsAccessKey = "your_access_key"; //get it in AWS web UI
          

          检查您的区域代码并设置正确的值:

          client.setRegion(Region.getRegion(Regions.US_EAST_1));
          

          您可以从 AWS Web 控制台获取此值。 Details

          检查您是否已经在您的区域下创建了 DynamoDB 表和索引。

          如果没有,请检查您的代码

          @DynamoDBTable(tableName = "Event")
          public class Event implements Serializable {
          
              public static final String CITY_INDEX = "City-Index";
              public static final String AWAY_TEAM_INDEX = "AwayTeam-Index";
          

          并从 AWS 控制台或以其他方式手动创建您的表(在我的情况下为 Event)和索引(在我的情况下为 City-Index、AwayTeam-Index)。请注意 - 表和索引名称以区分大小写。

          好样板 - https://github.com/aws-samples/lambda-java8-dynamodb

          【讨论】:

            【解决方案7】:

            您尝试连接的表似乎不存在。验证代码中的表名是否与您创建的表名一致。

            请注意,表名区分大小写。

            【讨论】:

              【解决方案8】:

              好吧,看来你需要添加:

              ddbClient.setRegion(Region.getRegion(Regions.EU_WEST_1));  
              // Add correct Region. In my case its EU_WEST_1
              

              在以下行之后:

              AmazonDynamoDBClient ddbClient = new AmazonDynamoDBClient(credentialsProvider);
              

              现在可以了。表已成功创建。 祝你有美好的一天,谢谢!

              【讨论】:

              • 看到这个的其他人请注意。您必须将 Dynamo 客户端上的区域设置为表的区域(通常所有客户端及其各自的资源都是如此,认为大多数客户端将默认为 US-EAST-1,我们始终建议仔细选择一个区域您的资源以及用于访问它们的客户)。
              • 谢谢!阻止我发疯,因为我正在关注文档,并且没有提及为客户设置区域。由于该地区是在证书中设置的,我认为它已经处理好了。请参阅此处的文档docs.aws.amazon.com/mobile/sdkforandroid/developerguide/…
              • 欢迎您的比特币钱包。这是我们找到的唯一线索!谢谢
              猜你喜欢
              • 1970-01-01
              • 2017-03-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多