当我尝试使用 AWS 命令行界面(AWS CLI)访问 Amazon Simple Storage Service(Amazon S3)存储桶时,出现错误。
解决方法
“Unable to locate credentials”错误表示您与之交互的 AWS 服务找不到用于验证 AWS API 调用的证书。例如,这可能是一项 AWS 服务(如 Amazon S3)。要解决此问题,请确保在 AWS CLI 中正确配置 AWS 凭证。
**注意:**如果在运行 AWS CLI 命令时收到错误,请参阅 Troubleshoot AWS CLI errors。此外,确保您使用的是最新版本的 AWS CLI。
要检查 AWS CLI 是否配置了凭证,请运行以下命令:
$ aws configure list
如果凭证是在配置文件或凭证文件中配置的,则该命令将返回类似以下内容的响应:
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************ABCD config_file ~/.aws/config
secret_key ****************ABCD config_file ~/.aws/config
region us-west-2 env AWS_DEFAULT_REGION
如果凭证配置了环境变量,则该命令将返回类似以下内容的响应:
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************N36N env
secret_key ****************cxxy env
region <not set> None None
如果凭证是在实例配置文件中配置的,则该命令将返回类似以下内容的响应:
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key ****************YVEQ iam-role
secret_key ****************2a9N iam-role
region <not set> None None
如果未设置凭证,则命令将返回以下输出:
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key <not set> None None
secret_key <not set> None None
region <not set> None None
查看响应以检查凭证是否缺失或存储的凭证是否不正确。
实例配置文件可能已附加到 Amazon EC2 实例,但由于配置的信任策略中的 AssumeRole 问题,仍然无法加载凭证。有关更多信息,请参阅检索实例元数据。
如果该命令在您检索实例元数据时返回以下输出,则信任策略中的 AssumeRole 受到限制:
{
"Code" : "AssumeRoleUnauthorizedAccess",
"Message" : "EC2 cannot assume the role EXAMPLEROLE. Please see documentation at https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_iam-ec2.html#troubleshoot_iam-ec2_errors-info-doc.",
"LastUpdated" : "2024-04-03T09:49:40Z"
}
查看响应,检查凭证是否缺失、IAM 信任策略是否配置不正确或存储的凭证是否不正确。有关更多信息,请参阅适用于 Amazon EC2 的 IAM 角色。