1

我已经用 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 文件的凭据。提前致谢

4

2 回答 2

1

因此,找不到帐户的活动流的问题通过以下方式解决:

  1. 确保您连接到 US-EAST-1 数据中心,因为这是 bridge.py 的默认数据中心
  2. 创建您的流,您只需要 1 个分片

下一个问题源于MQTT的具体版本和我安装的python库paho-mqtt。桥应用程序是使用 MQTT 1.2.1 的 API 编写的,并考虑了 paho-mqtt 0.4.91。可在其网站上下载的新版本具有与 paho-mqtt 库交互的不同方式,该库将额外的“标志”对象传递给 on_connect 回调。这会产生我遇到的错误,因为它不期望第 5 个参数。

您应该能够通过对 bridge.py 进行以下更改来修复它 第 104 行当前看起来像这样: def on_connect(self, mqttc, userdata, msg): 只需在 userdata 之后添加标志,以便回调函数看起来像这样: def on_connect(self, mqttc, userdata,flags, msg):

这应该解决传递的参数数量不正确的最终错误问题。

希望这对其他人有所帮助,感谢您的努力。

于 2015-01-20T10:06:52.407 回答
0

当您为 aws 服务调用 python SDK 时,有一行代码用于导入 aws 服务的 boto 模块bridge.py

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"
于 2015-01-01T23:00:27.783 回答