AWS开发工具包中的Boto3错误:botocore.exceptions.NoCredentialsError:无法找到凭证

时间:2020-01-20 12:09:17

标签: python amazon-web-services aws-sdk boto3 boto

当我简单地运行以下代码时,总是会出现此错误。

import boto3 as boto
import sys
import json



role_to_assume_arn="arn:aws:iam::xxxxxxxxxxxx:role/AWSxxxx_xxxxxxAdminaccess_xxxxx24fexxx"
role_session_name='AssumeRoleSession1'

sts_client=boto.client('sts')


assumed_role_object=sts_client.assume_role(
    RoleArn="arn:aws:iam::xxxxxxxxxxxx:role/AWSxxxx_xxxxxxAdminaccess_xxxxx24fexxx",
    RoleSessionName="Sess1",
)

creds=assumed_role_object['Credentials']

sts_assumed_role = boto3.client('sts',
    aws_access_key_id=creds['AccessKeyId'],
    aws_secret_access_key=creds['SecretAccessKey'],
    aws_session_token=creds['SessionToken'],
)

rds_client = boto.client('rds',
                         aws_access_key_id=creds['AccessKeyId'],
                         aws_secret_access_key=creds['SecretAccessKey'],
                         aws_session_token=creds['SessionToken']
                         )

我不想经常设置和更改临时会话密钥,相反,我希望通过我刚才编写的代码直接设置它们。

我错了吗?是否可以在程序中直接设置像这样的凭据?

还是必须在“〜/ .aws / credentials”中提供凭据

1 个答案:

答案 0 :(得分:3)

我假设您正在本地计算机上运行此代码。

您创建的STS客户端需要访问密钥和秘密访问密钥。

您必须使用凭据文件对其进行配置,也可以像下面这样直接对访问密钥和秘密访问密钥进行硬编码(不推荐)。

put

https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials_profiles.html

如果您在EC2实例中运行此代码,请安装boto3并执行AWS Configure。请点击以下链接。

https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html