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

如何将Karate自动化框架与AWS DynamoDB建立连接?

在Karate测试框架中连接AWS DynamoDB的步骤

1. 添加必要依赖

如果使用Maven,在pom.xml中添加AWS SDK for DynamoDB的依赖:

<dependencies>
    <!-- Karate核心依赖 -->
    <dependency>
        <groupId>com.intuit.karate</groupId>
        <artifactId>karate-core</artifactId>
        <version>1.4.1</version>
        <scope>test</scope>
    </dependency>
    <!-- AWS DynamoDB SDK -->
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>dynamodb</artifactId>
        <version>2.20.0</version>
        <scope>test</scope>
    </dependency>
    <!-- AWS认证依赖 -->
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>credentials</artifactId>
        <version>2.20.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

2. 配置AWS认证

选择以下一种认证方式即可:

  • 环境变量:设置系统环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY
  • 本地凭证文件:在~/.aws/credentials文件中配置账号凭证
  • IAM角色:若测试运行在AWS云资源(EC2、EKS等)上,直接使用实例关联的IAM角色权限

如需在代码中显式指定凭证,可编写工具类:

import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;

public class DynamoDbUtils {
    public static DynamoDbClient getDynamoDbClient() {
        AwsBasicCredentials credentials = AwsBasicCredentials.create(
            "你的AccessKey", 
            "你的SecretKey"
        );
        return DynamoDbClient.builder()
            .region(Region.US_EAST_1) // 替换为你的AWS区域
            .credentialsProvider(StaticCredentialsProvider.create(credentials))
            .build();
    }
}

3. 在Karate Feature中操作DynamoDB

通过Karate的Java互操作性直接调用DynamoDB客户端,示例如下:

Feature: 测试DynamoDB连接与数据操作

  Background:
    * def DynamoDbUtils = Java.type('com.yourpackage.DynamoDbUtils')
    * def dbClient = DynamoDbUtils.getDynamoDbClient()

  Scenario: 查询指定表的数据
    * def GetItemRequest = Java.type('software.amazon.awssdk.services.dynamodb.model.GetItemRequest')
    * def getItemReq = GetItemRequest.builder()
        .tableName('你的目标表名')
        .key(Map.of('主键字段名', Map.of('S', '目标主键值')))
        .build()
    * def queryResult = dbClient.getItem(getItemReq)
    * print '查询结果:', queryResult.item()

  Scenario: 插入数据到DynamoDB表
    * def PutItemRequest = Java.type('software.amazon.awssdk.services.dynamodb.model.PutItemRequest')
    * def newItem = Map.of(
        '主键字段名', Map.of('S', 'new-test-id'),
        '数值字段', Map.of('N', '456'),
        '字符串字段', Map.of('S', '测试内容')
      )
    * def putItemReq = PutItemRequest.builder()
        .tableName('你的目标表名')
        .item(newItem)
        .build()
    * def putResult = dbClient.putItem(putItemReq)
    * match putResult.sdkHttpResponse().statusCode() == 200

4. 常见问题排查

  • 认证失败:检查凭证正确性、AWS区域匹配度,确保IAM账号拥有dynamodb:GetItem、dynamodb:PutItem等操作权限
  • 依赖冲突:用mvn dependency:tree排查版本冲突,保证AWS SDK版本统一
  • 连接超时:确认网络可访问DynamoDB端点,VPC环境下需配置VPC端点或NAT网关

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:32:32