检查AWS凭证是否存在而不发出任何请求

时间:2018-03-19 11:32:28

标签: python amazon-web-services boto3

我有一个程序有时需要使用boto3向AWS API发出请求。有时某人在没有提供任何凭据的情况下运行此操作,当脚本指向需要与AWS交互的位置时,它会以botocore.exceptions.NoCredentialsError崩溃。

我希望通过验证脚本何时启动是否已提供任何凭据并在没有提供解释性消息时退出。但是,作为noted in the docs,有加载提供boto3将理解的凭据的可能方式,我想让我的用户使用其中任何一个(而不是要求他们提供凭据)作为环境变量)。

如何在脚本开头快速检查凭据是否可用(不向AWS API发出不需要的请求)?

1 个答案:

答案 0 :(得分:2)

虽然文档没有明确说明,但如果凭据可用,则Session.get_credentials方法将返回botocore.credentials.Credentials对象,否则将返回None

所以我需要的检查看起来像这样:

import sys
import boto3
if boto3.session.Session().get_credentials() is None:
    print('Please provide Boto3 credentials, e.g. via the AWS_ACCESS_KEY_ID '
          'and AWS_SECRET_ACCESS_KEY environment variables.')
    sys.exit(-1)