【问题标题】:Access multiple profiles from AWS SDK - Python从 AWS 开发工具包访问多个配置文件 - Python
【发布时间】:2022-01-22 02:42:06
【问题描述】:

我正在尝试访问保存在 aws 凭据文件中的不同配置文件的 S3 存储桶中的 csv 文件。如何在 python 中的 AWS SDK 中编写脚本以一次访问不同的配置文件。

类似的东西

import boto3

profile1 = boto3.<function>("profile_name1")
profile2 = boto3.<function>("profile_name2") 

bucket1 = profile1.resource("S3")
bucket2 = profile2.resource("S3")

【问题讨论】:

    标签: python amazon-web-services amazon-s3 aws-sdk aws-cli


    【解决方案1】:

    您可以通过如下所示的 3 种方式执行此操作 -

    方法 1:使用配置文件创建新会话

    dev = boto3.session.Session(profile_name='dev')
    

    方法2:在代码中更改默认会话的配置文件

    boto3.setup_default_session(profile_name='dev')
    

    方法 3:使用环境变量更改默认会话的配置文件

    $ AWS_PROFILE=dev
    >>> import boto3
    >>> s3dev = boto3.resource('s3')
    

    【讨论】:

      【解决方案2】:

      您可以通过以下方式为不同的配置文件创建会话,

      import boto3
      
      session1 = boto3.Session(profile_name='profile_name1')
      profile1_s3_client = session1.client('s3') // use this to access S3 for profile_name1
      
      session2 = boto3.Session(profile_name='profile_name2')
      profile2_s3_client = session2.client('s3') // use this to access S3 for profile_name2
      

      【讨论】:

      • 会话是否有超时时间?
      • @Pooja 就像 aws cli 没有任何超时期限一样,这些会话也没有超时。只要您在配置文件中有凭据,就可以使用这些会话。
      • 谢谢!这对我有用!
      【解决方案3】:

      您可以定义具有不同配置文件的会话,如下所述,其中对于每个配置文件,您将需要 access_key 并且在 IAM 用户编程访问的情况下不需要 secret_key. session_token

      profile1 = boto3.session.Session(
          profile_name='dev', 
          aws_access_key_id=access_key, 
          aws_secret_access_key=secret_key,
          aws_session_token=session_token
      )
      

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      • 2017-10-20
      • 2017-02-09
      • 2014-12-22
      • 1970-01-01
      相关资源
      最近更新 更多