Python 设置自定义boto配置文件,而不是boto3的默认配置文件

Python 设置自定义boto配置文件,而不是boto3的默认配置文件,python,ubuntu,boto3,Python,Ubuntu,Boto3,我没有任何选项可以使用boto3设置自定义配置文件位置。我可以使用默认位置的凭据 我的使用案例是,有不同的IAM用户,并且有不同的凭据集,因此每个用户都应该能够在不更改默认配置的情况下使用自己的凭据 有什么想法吗?这是完全可行的。您可以通过分配一些通过boto3.Session对象传递的关键字参数来实现这一点,例如 import boto3 session = boto3.Session( aws_access_key_id="AAAA", aws_secret_access_k

我没有任何选项可以使用boto3设置自定义配置文件位置。我可以使用默认位置的凭据

我的使用案例是,有不同的IAM用户,并且有不同的凭据集,因此每个用户都应该能够在不更改默认配置的情况下使用自己的凭据


有什么想法吗?

这是完全可行的。您可以通过分配一些通过
boto3.Session
对象传递的关键字参数来实现这一点,例如

import boto3
session = boto3.Session(
    aws_access_key_id="AAAA",
    aws_secret_access_key="BBBBB",
    region_name="mordor"
)
然后,只需正常使用会话对象即可:

s3_object = session.resource('s3') # or whatever
因此,您需要做的就是用所需的凭据(从自定义配置文件填充)填充一些python数据结构,并将它们传递到该
boto3.Session
对象中。

我相信这将有助于:


您可以为不同的用户设置不同的凭据。

只需使用python模块
configparser

示例将显示如何检查RDS实例的状态,并将您的aws凭据文件存储在它可以工作的任何位置

import configparser
import boto3

class CheckStatus():

    rds_instance_name = 'rds_instnace_name'
    aws_config_file = 'aws_config.ini'

    def __init__(self, aws_config):

        self.aws_config = aws_config
        self.client = boto3.client('rds', region_name=self.aws_config['default']['region'],
                                   aws_access_key_id=self.aws_config['default']['aws_access_key_id'],
                                   aws_secret_access_key=self.aws_config['default']['aws_secret_access_key'])

    def check_rds_status(self):
        current_status = None

        response = self.client.describe_db_instances(
            DBInstanceIdentifier=self.rds_instance_name)
        current_status = response['DBInstances'][0]['DBInstanceStatus']
        print(current_status)


def get_config():
    aws_config = configparser.ConfigParser()
    aws_config.read(CheckStatus.aws_config_file)
    return aws_config

obj = CheckStatus(get_config())

obj.check_rds_status()

我想在boto3中使用类似于我们在boto2中使用的东西,boto.config.load\u credential\u file('file\u name')使用:aws配置文件。。。