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

时间:2019-06-10 03:59:07

标签: java amazon-kinesis atlassian-localstack

我正在使用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()```

I get a 502 every time.  Everything works fine for S3, it's just the Kinesis service that's giving me trouble.   Has anyone seen anything like this?

1 个答案:

答案 0 :(得分:0)

在本地通过本地堆栈连接Kinesis时遇到了类似的问题。我正在使用v2 SDK Java库。

根本原因

默认情况下,kinesalite不支持CBOR,应禁用它才能使其运行。互联网上充斥着禁用CBOR的标志,但它们都不对我有用。

您必须做两件事:

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

就我而言,我被software.amazon.awssdk.core.SdkSystemSetting

中引用的SDK标志所困扰