我已经使用python和与AWS的连接设置了我的电脑。这已经使用s3_sample.py文件成功测试了,我必须使用文件中的凭据创建一个IAM用户帐户,该帐户适用于S3存储桶。
我的下一个任务是创建一个mqtt桥,并使用awslab - awslabs/mqtt-kinesis-bridge将一些数据放入kinesis的流中。 这似乎一切正常,除了我运行bridge.py时出错。错误是:
Could not find ACTIVE stream:my_first_stream error:Stream my_first_stream under account 673480824415 not found.
奇怪的是,这不是我在建议为此网桥设置的.boto文件中使用的帐户,这与我用于S3存储桶的凭据相同
[Credentials]
aws_access_key_id = AA1122BB
aws_secret_access_key = LlcKb61LTglis
在我看来,bridge.py有一个硬编码帐户,但我看不到它,我无法看到它指向.boto文件的凭据。 在此先感谢
答案 0 :(得分:1)
因此,找不到该帐户的Active流的问题由以下方法解决:
下一个问题源于MQTT的特定版本和我安装的python库paho-mqtt。桥接应用程序是使用MQTT 1.2.1的API编写的,使用了paho-mqtt 0.4.91。 可在其网站上下载的新版本具有与paho-mqtt库交互的不同方式,该库通过了额外的标记"对象on_connect回调。这会产生我遇到的错误,因为它不期待第五个参数。
您应该可以通过对bridge.py进行以下更改来解决此问题 104行目前看起来像这样: def on_connect(self,mqttc,userdata,msg): 只需在userdata之后添加标志,以便回调函数如下所示: def on_connect(self,mqttc,userdata,flags,msg):
这应解决传递的参数数量不正确的最终错误问题。
希望这有助于其他人,感谢您的努力。
答案 1 :(得分:0)
当你为aws服务调用python SDK时,有一行可以导入bridge.py
中aws服务的boto模块。
import boto
该设置指向凭据的.boto,默认情况下以boto定义。
以下是解释Boto Config:
boto配置文件是一个格式类似.ini配置文件的文本文件,它指定控制boto库行为的选项的值。在Unix / Linux系统中,在启动时,boto库在以下位置按以下顺序查找配置文件:
/etc/boto.cfg - for site-wide settings that all users on this machine will use
~/.boto - for user-specific settings
~/.aws/credentials - for credentials shared between SDKs
当然,您可以直接设置环境
export AWS_ACCESS_KEY_ID="Your AWS Access Key ID"
export AWS_SECRET_ACCESS_KEY="Your AWS Secret Access Key"