介绍
boto3在使用Python控制各种AWS资源时使用,但是有多种类型的切换凭证的方法,并且优先级顺序容易混淆,因此我也对其进行了回顾。这使得在AWS环境之间轻松切换。
boto3凭证搜索顺序
boto3按以下顺序搜索和使用凭据:
在下面,请阅读YOUR_ACCESS_KEY和YOUR_SECRET_KEY以及您自己环境的值。
1.将凭据
作为参数传递给boto.client()方法
1 2 3 4 5 6 7 | import boto3 client = boto3.client( 's3', aws_access_key_id=YOUR_ACCESS_KEY, aws_secret_access_key=YOUR_SECRET_KEY, ) |
这是一种在调用boto3.client时传递要显式使用的环境的凭据信息的方法。
最好避免在代码中写入原始值,例如通过环境变量获取实际值。
2.创建会话对象时将凭据
作为参数传递
1 2 3 4 5 6 | import boto3 session = boto3.Session( aws_access_key_id=YOUR_ACCESS_KEY, aws_secret_access_key=YOUR_SECRET_KEY, ) |
与
1相似,它是一种在创建boto3.Session时传递要明确使用的环境的凭据信息的方法。
3.环境变量
1 2 | export AWS_ACCESS_KEY_ID=YOUR_AWS_ACCESS_KEY_ID export AWS_SECRET_ACCESS_KEY=YOUR_AWS_SECRET_ACCESS_KEY |
如果在执行Python的环境的环境变量中设置凭据信息,则boto3将引用它。
这是一种简单的方法,在不进行凭据切换时经常使用。
4.共享的凭证文件(?/ .aws /凭证)
?/ .aws /凭据
1 2 3 | [your_profile_name] aws_access_key_id = YOUR_ACCESS_KEY aws_secret_access_key = YOUR_SECRET_KEY |
1 2 3 4 | import boto3 session = boto3.Session(profile_name='your_profile_name') client = session.client('s3') |
在
由于可以使用通过awscli中的熟悉方法设置的配置文件信息,因此它具有出色的可见性,并且经常在本地开发环境中使用。
5. AWS配置文件(?/ .aws / config)
?/ .aws /配置
1 2 3 4 5 | [profile YOUR_PROFILE_NAME] region = YOUR_REGION output = TOUR_OUTPUT aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID aws_secret_access_key = YOUR_SECRET_KEY |
如果使用
6.假设角色提供者
?/ .aws /配置
1 2 3 | [profile YOUR_TARGET_PROFILE_NAME] role_arn = YOUR_TARGRT_ROLE_ARN source_profile = YOUR_PROFILE_NAME |
如果您不直接使用目标AWS账户的访问密钥和秘密密钥并通过IAM角色进行操作,则可以从目标AWS环境中请求AssumeRole并使用返回的凭证进行操作。
可以通过在
7. Boto2配置文件(/etc/boto.cfg,?/ .boto)
由于它与
boto2向后兼容,如果设置了
8.具有IAM角色
的Amazon EC2实例上的实例元数据服务
可以为Amazon EC2分配IAM角色,因此它在EC2上运行,并且如果未设置上述任何一项,它将从实例的元数据服务中读取凭证。
要利用此功能,您需要指定在创建EC2实例时要使用的IAM角色。
参考
本文是参考以下信息编写的。
- 凭证-Boto3 Docs 1.14.33文档