AWS DynamoDB 资源未发现异常

我在与 DynamoDB 的连接方面遇到了一个问题:

异常: 未找到请求的资源(服务: AmazonDynamoDB; 状态代码: 错误代码: ResourceNotFoundException; 请求 ID: . 。

但我有一个表和地区是正确的。

100866 次浏览

医生中,要么没有具有该名称的 Table,要么处于 CREATING 状态。

我将再次检查以验证表是否确实存在,在正确的区域中,以及 你用的是能打开它的密钥

如果 DynamoDB 表位于不同的区域,请确保在初始化 DynamoDB 之前将其设置为

AWS.config.update({region: "your-dynamoDB-region" });

这对我有用:)

我的问题是愚蠢的,但也许有人有相同的... 我最近更改了默认凭据的 aws (~/.aws/credentials) ,我在另一个帐户测试,忘记回滚到常规帐户的值。

如果您的资源类似于我的资源,并且到处都是,那么您可以在创建资源时定义 region _ name。

我对所有的实例化都这样做,因为它迫使我思考我要放置/调用的内容。

Resource (“ Dynamodb”,region _ name = ‘ us-east-2’)

始终确保执行下列操作之一:

  1. 正确的默认区域设置在所有服务器的 AWS CLI 配置文件中,也就是您正在使用的开发计算机。
  2. 最好的选择是始终在项目中的单独类/配置中显式地指定这些常量。总是在代码中导入它,并在 boto3调用中使用它。如果您要根据企业需求进行添加或更改,这将提供灵活性。

我在我的.NetCore 应用程序中遇到了这个问题。 下面为我修复了 Startup 类中的问题—— > ConfigureServices 方法

        services.AddDefaultAWSOptions(
new AWSOptions
{
Region = RegionEndpoint.GetBySystemName("eu-west-2")
});

我花了一天时间研究我的项目中的问题,现在我应该偿还人类的债务,减少一点宇宙的熵。 通常,此消息表示您的客户端无法到达数据库中的 一张桌子。 你应该检查下面的东西:

1. Your database is running
2. Your accessKey and secretKey are valid for the database
3. Your DB endpoint is valid and contains correct protocol ("http://" or "https://"), and correct hostname, and correct port
4. Your table was created in the database.
5. Your table was created in the database in the same region that you set as a parameter in credentials. Optional, because some
database environments (e.g. Testcontainers Dynalite) don't have an incorrect value for the region. And any nonempty region value will be correct

在我的案例中,问题是我不能在用 DynamoDB 替代 TestContainer 和 Dynalite 的测试中保存和加载表中的数据。我发现在我们的项目表中,通过 Spring 创建的组件标有@Component 注释。在测试中,我们使用延迟加载组件的全局设置来进行测试,所以我们的组件在默认情况下没有加载,因为没有人在测试中显式调用它。_ (ツ) _/

warning Lambda : lifecycleIteration=0 lambda handler returned an error: ResourceNotFoundException: Requested resource not found错误

我花了一个星期来解决这个问题。

因此它的根本原因和发现问题的步骤在下面的 Git 问题线程中提到并修复了它。

Https://github.com/soto-project/soto/issues/595