为什么不能在 EC2 实例上运行 AWS CLI 命令?

上次更新日期:2021 年 5 月 10 日

为什么我在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上运行 AWS 命令行界面 (AWS CLI) 时收到了错误?

简短描述

在您的实例上运行 AWS CLI 命令时,您可能会看到以下错误消息:

“无法找到凭证。您可以通过运行 'aws configure' 来配置凭证” “调用 DescribeInstances 操作时发生错误 (UnauthorizedOperation):您未获得授权来执行此操作” “调用 DescribeInstances 操作时发生错误 (AuthFailure):AWS 无法验证提供的访问凭证” “调用 GetCallerIdentity 操作时发生错误 (ExpiredToken):请求中包含的安全令牌已过期”

错误中所列的操作会因出错时您调用的操作而变化。在前面的示例中,调用 DescribeInstancesGetCallerIdentity 操作时出现错误。

注意: 对于 AWS CLI 与其中一个 AWS 服务终端节点之间的通信问题,请确认 DNS 解析和任何 VPC 终端节点是否正常运行。有关更多信息,请参阅以下内容:

AWS PrivateLink 和 VPC 终端节点 如何创建 VPC 终端节点,以便在没有互联网访问权限的情况下使用 Systems Manager 管理私有 EC2 实例? Amazon DNS 服务器 解决方法 验证您运行的是最新的 AWS CLI 版本

如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI。

无法找到凭证

验证 AWS CLI 是否已安装并正确配置。

发生错误 (UnauthorizedOperation) 和 (AuthFailure) 确保 AWS Identity and Access Management (IAM) 角色或 IAM 用户具有运行相关命令所需的正确权限。有关解决方法的说明,请参阅为什么在我尝试启动 EC2 实例时会收到错误消息“您没有权限执行此操作”? 确保您的 Linux 或 Windows 实例上的时间正确。 确保您使用的是正确的 Amazon Simple Token Service (AWS STS) 令牌格式。有关更多信息,请参阅为什么我会在某些 AWS 区域收到 IAM 错误“AWS 无法验证提供的访问凭证”? 确保您使用正确的证书来执行 API 调用。如果该实例上有多组凭证,凭证优先顺序可能会影响该实例使用哪个凭证来执行 API 调用。运行 aws sts get-caller-identity 命令以验证您使用的是哪一组凭证。有关更多信息,请参阅为什么我的 Amazon EC2 实例使用 IAM 用户凭证而不是角色凭证? 发生错误 (ExpiredToken)

临时凭证按照在创建过程中指定的时间间隔发生过期。如果 IAM 角色的凭证已过期,请通过担任新 IAM 角色获取新的 STS 令牌。