背景:首先MSK就是配置一个AWS的托管 kafka,创建完成之后就交给开发进行使用,开发通常是从代码中,编写AWS的access_key 和secret_key进行调用。
但是开发在进行调用的时候,一直报错连接失败,其实问题很简单!
一、首先你要保证你的Key拥有足够的权限,在IAM账户配置:
配置一个AmazonMSKFullAccess 最为方便。
二、如果你的集群启用了安全性设置-访问控制方法,还需要添加新的权限:
启用安全性防护之后(公网模式默认启动),启动之后,你必须对集群内部的cluster要由权限,权限分为cluster、topic、group,傻逼得要死,直接写*,你要分开写的话参考: IAM access control - Amazon Managed Streaming for Apache Kafka
{"Version": "2012-10-17","Statement": [{"Sid": "VisualEditor0","Effect": "Allow","Action": "kafka-cluster:*","Resource": "*"}]
}
三、观察你的MSK集群是不是启用了加密:
如果启用了加密,代码在调用的时候,必须拥有KMS的权限 :
这个权限是迷惑的,权限根本不足,要自己写:
{"Version": "2012-10-17","Statement": [{"Sid": "VisualEditor0","Effect": "Allow","Action": "kms:*","Resource": "*"}]
}
加上这两个权限之后,搞定。