获取服务:AmazonKinesis;状态代码:502(使用 apache-flink 和 localstack Kinesis)

Mar*_*rco 2 error-code apache-flink localstack

我的本地设置包括local apache-flink(通过brew安装)并localstack运行Kinesis服务。

我的 docker-compose 有

  localstack:
    image: localstack/localstack:0.10.7
    environment:
      - SERVICES=kinesis
    ports:
      - "4568:4568"
Run Code Online (Sandbox Code Playgroud)

和我的 Kinesis 消费者:

kinesisConsumerConfig.setProperty(ConsumerConfigConstants.AWS_ACCESS_KEY_ID, "123");
kinesisConsumerConfig.setProperty(ConsumerConfigConstants.AWS_SECRET_ACCESS_KEY, "123");
kinesisConsumerConfig.setProperty(ConsumerConfigConstants.AWS_ENDPOINT, "http://localhost:4568");
Run Code Online (Sandbox Code Playgroud)

但是当我运行 Flink 程序时,出现以下错误:

引起原因:org.apache.flink.kinesis.shaded.com.amazonaws.services.kinesis.model.AmazonKinesisException:null(服务:AmazonKinesis;状态代码:502;错误代码:null;请求 ID:null)

仅在使用时才会发生localstack。如果我连接到我的 AWS 账户上的 Kinesis 流,它会完美运行。

fsi*_*tre 5

在将 FlinkKinesisConsumer 添加为源之前添加以下行:

System.setProperty("com.amazonaws.sdk.disableCbor", "true") System.setProperty("org.apache.flink.kinesis.shaded.com.amazonaws.sdk.disableCbor", "true")

这与导出 ENV 变量具有相同的效果,但将其放在代码中可以减少设置环境所花费的时间。