You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus HTTP Lambda项目DynamoDB相关application.yml配置不识别问题

问题根因

1. 配置无法识别的原因

Quarkus 提供的 quarkus.dynamodb.* 系列配置项,是由官方扩展 quarkus-amazon-dynamodb 负责解析加载的,你当前只引入了原生 AWS SDK 的 dynamodb 依赖,没有引入 Quarkus 对应的 DynamoDB 扩展,所以 Quarkus 无法识别这些配置前缀,会抛出未识别配置的警告。
你能通过 @ConfigProperty 读取到配置是因为 Quarkus 全局配置系统会加载所有配置文件中的键值,只是这些配置没有对应扩展处理,无法自动注入到 DynamoDB 客户端中。

2. 安全令牌无效报错的原因

你手动构建 DynamoDbClient 时,没有配置 endpointOverride 指向本地 http://localhost:8000 地址,也没有传入静态凭证,客户端会默认请求公网 AWS DynamoDB 服务,你配置的本地测试凭证对公网 AWS 服务无效,因此返回400错误。

解决方案
  1. 在 pom.xml 中新增 Quarkus DynamoDB 扩展依赖:
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-amazon-dynamodb</artifactId>
</dependency>
  1. 修改业务代码,删除手动构建 DynamoDbClient 的逻辑,直接通过 CDI 注入 Quarkus 扩展自动初始化好的客户端,扩展会自动读取你 application.yml 中的所有配置完成初始化:
package com.dteam.service;

import com.dteam.model.Account;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable;
import software.amazon.awssdk.enhanced.dynamodb.TableSchema;

import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import javax.transaction.Transactional;

@Transactional
@ApplicationScoped
public class AccountService {

    // 直接注入Quarkus自动初始化好的增强客户端
    @Inject
    DynamoDbEnhancedClient enhancedClient;

    public void createNewAccount() {
        Account acc = new Account();
        acc.setEmail("example@mail.com");
        acc.setFirstName("Peter");
        acc.setLastName("Peterson");

        DynamoDbTable<Account> accTable = enhancedClient.table("Account", TableSchema.fromBean(Account.class));
        accTable.putItem(acc);
    }

}

内容的提问来源于stack exchange,提问作者pavlee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:54:02