获取 ClientError:调用 Publish 操作时发生错误 (ForbiddenException):Forbidden?

问题描述 投票:0回答:1

我对 AWS boto3 和访问密钥的工作原理感到困惑。

我已经设置了一个具有超级用户和编程访问权限的 IAM 用户。我在 aws configure 中输入了访问密钥和访问密钥。

在我的 python 脚本中,我: 导入boto3 iot = boto3.client('iot-data');

...稍后我就有了这样的代码:

    response = iot.publish(
         topic='/sbs/devicedata/flow',
         payload=data
    )

iot.publish 导致错误:

ClientError:调用发布操作时发生错误(ForbiddenException):请求中包含的安全令牌无效。

我验证我在创建用户帐户时生成的 aws 配置文件中是否拥有访问密钥和秘密密钥。

也许我缺少访问密钥如何与 boto3 绑定关联的?我猜 boto3 从配置文件中获取关键信息。但那些不应该是有效的吗?

谢谢你。

amazon-web-services boto3
1个回答
0
投票

要解决任何此类身份验证错误,您应该检查所有凭据来源。如果是 boto3,您可以在此页面上看到检查凭据的顺序。

在问题中描述的简单情况下,应检查以下位置:

  • 环境变量
  • 共享凭证文件 (~/.aws/credentials)
  • AWS 配置文件 (~/.aws/config)
  • Boto2 配置文件(/etc/boto.cfg 和 ~/.boto)

关于安全令牌,重要的是要知道它现在已在会话令牌中重命名,您只能在较旧的软件或库中看到它。同样重要的是要知道安全令牌或会话令牌是临时令牌,会在一段时间后过期,更新它们可以解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.