【问题标题】:Programmatically establish boto3 sessions with AWS SSO使用 AWS SSO 以编程方式建立 boto3 会话
【发布时间】:2022-04-26 08:44:28
【问题描述】:

我正在尝试与boto3.session.Session(profile_name='foo') 建立boto3 会话,但收到UnauthorizedSSOTokenError 错误:

botocore.exceptions.UnauthorizedSSOTokenError:与此配置文件关联的 SSO 会话已过期或无效。要刷新此 SSO 会话,请使用相应的配置文件运行 aws sso login。

我尝试使用subprocess.run("aws sso login --profile foo") 登录,但这会打开我的网络浏览器并提示手动确认。

如果您使用 AWS SSO,有什么方法可以以编程方式建立boto3 会话?

也就是说,有什么办法可以避免人工确认?

【问题讨论】:

  • AFAIK,不,不适用于 AWS SSO。您需要使用 SSO 之外的密钥创建 IAM 用户(或在附加了实例配置文件的 ec2 实例上运行您的代码)。

标签: python-3.x amazon-web-services boto3 boto


【解决方案1】:

只有boto3,没有。正如您已经发现的那样,您需要使用 CLI 来使用 AWS SSO 解决方案。

您可以按照步骤here 使用 AWS SSO 设置 AWS CLI。这将打开一个浏览器供您手动确认。我的建议是您将 SSO session duration 增加到 12 小时。实际上,您每天登录一次,然后在一天的剩余时间里都很好。这是安全性和便利性的最佳组合。不推荐创建 IAM 角色或完全自动化登录等其他解决方案。

【讨论】:

  • 这个问题是关于boto3,而不是AWS CLI
  • 你不能用 boto3 到达那里。我会更新答案以明确说明。
【解决方案2】:

这是一个指向我发现的 Gist 的链接,无论如何它都会对你有所帮助,但它仍然会打开一个网络浏览器,但取决于你的身份验证提供者的登录过程,你应该能够使用 python 请求通过网络浏览器调用来填充你的方式库。

https://gist.github.com/jcalvento/92861eb7ebda3fa064f3fbbb71acba41

【讨论】:

    【解决方案3】:

    @coin graham 的回答现在已经过时了。如何通过boto3建立sso会话请参考to this example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 1970-01-01
      • 2022-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多