Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在没有AWS Vault的情况下使用boto3?_Python_Amazon Web Services_Boto3_Boto - Fatal编程技术网

Python 如何在没有AWS Vault的情况下使用boto3?

Python 如何在没有AWS Vault的情况下使用boto3?,python,amazon-web-services,boto3,boto,Python,Amazon Web Services,Boto3,Boto,我有以下在Python中工作的方法: def connect_s3_boto3(): try: os.environ['AWS_PROFILE'] = "a9e" s3 = boto3.resource('s3') return s3 except: raise 问题是使用~/.aws/config工作: [profile home] aws_access_key_id=ID aws_secret_access_k

我有以下在Python中工作的方法:

def connect_s3_boto3():
    try:
        os.environ['AWS_PROFILE'] = "a9e"
        s3 = boto3.resource('s3')
        return s3
    except:
        raise
问题是使用
~/.aws/config
工作:

[profile home]
aws_access_key_id=ID
aws_secret_access_key=SECRET
[profile a9e]
region=eu-west-1
role_arn=DAROLE
source_profile=home

所以,我有一系列的疑问。在要使用该方法的生产环境中,我需要设置AWS Vault?没有其他选择吗?例如,对在Amazon EC2实例上运行的代码使用
IAM_角色
,如
boto2

  • 创建一个IAM角色并分配适当的权限
  • 将角色与Amazon EC2实例关联
  • 实例上运行的任何调用AWS SDK的代码都将自动获取与角色关联的凭据
  • 无需在配置/凭据文件中放置访问密钥、密钥或角色
见:


如果您在非EC2计算机上运行代码,则需要在config/credentials文件中输入。这将至少涉及与IAM用户关联的访问密钥和密钥。如果您希望使用IAM角色,那么代码需要使用这些凭据
AssumeRole()

我以前在Python代码中使用过bot3,它可以正常工作。只要使用该代码的资源(例如:Lambda)具有正确的角色。因此,对于上面的示例,如果在Lambda中运行该脚本,它将失败-除非您给Lambda一个使用S3的角色。@Joe在这种情况下,我的意思是在Jenkins的基础结构中,每X次运行脚本,而不是Lambda函数。那么,您如何分配该角色呢?如果您在EC2实例上运行脚本(例如,Jenkins安装在EC2上并运行脚本),那么该EC2实例应该有一个分配给它的角色,该角色具有读取/写入S3的正确权限。您可以在IAM下的AWS控制台中创建角色和权限。然后,您可以在控制台内的EC2仪表板中将角色分配给EC2实例。感谢您的回答@JohnRotenstein