从 Java 使用 LocalStack 时获取 AmazonKinesisException 状态代码:502

Getting an AmazonKinesisException Status Code: 502 when using LocalStack from Java

我正在使用 LocalStack 编写集成测试来模拟我对 Kinesis 的调用。我已经创建了一个 Kinesis 客户端,但是当我尝试将记录放在 Kinesis 上时出现错误:

com.amazonaws.services.kinesis.model.AmazonKinesisException: null (Service: AmazonKinesis; Status Code: 502; Error Code: null; Request ID: null)

我试过使用以下方法禁用 CBOR 和证书检查:

System.setProperty(SDKGlobalConfiguration.DISABLE_CERT_CHECKING_SYSTEM_PROPERTY, "false");

System.setProperty(SDKGlobalConfiguration.AWS_CBOR_DISABLE_SYSTEM_PROPERTY, "true");

我是这样构建客户端的:

.withEndpointConfiguration(localstack.getEndpointConfiguration(LocalStackContainer.Service.KINESIS))
.withCredentials(localstack.getDefaultCredentialsProvider())
.build()

我每次都得到 502。 S3 一切正常,只是 Kinesis 服务给我带来了麻烦。有人见过这样的东西吗?

我在本地通过 localstack 连接 Kinesis 时遇到了类似的问题。我使用的是 v2 SDK java 库。

根本原因

默认情况下,kinesalite 不支持 CBOR,应将其禁用以使其 运行。互联网上充斥着禁用 CBOR 的标志,但其中 none 对我有用。

你必须做两件事:

  1. 设置环境变量AWS_CBOR_DISABLE=true告诉localstack停止使用
  2. 设置环境变量 aws.cborEnabled=false 以告知 AWS SDK 停止使用它。

在我的例子中,我被 software.amazon.awssdk.core.SdkSystemSetting

中提到的 SDK 标志卡住了