王麑 2025-09-04 02:30 采纳率: 98.1%
浏览 13
已采纳

**问题:** AWS CLI 报错 "fatal error: Unable to locate credentials" 如何解决?

**问题:** 在使用 AWS CLI 时,出现报错信息:“fatal error: Unable to locate credentials”,提示无法找到凭证。该问题常见于初次配置或环境变更后的 AWS CLI 使用过程中,导致无法正常调用 AWS 服务。解决此问题需确保正确配置了访问凭证,包括 Access Key ID 和 Secret Access Key。常见原因包括未配置凭证、配置文件路径错误、权限设置不当或使用了错误的配置文件。本文将介绍排查和修复该错误的几种常用方法,如配置 `aws configure`、检查环境变量、确认凭证文件权限等。
  • 写回答

1条回答 默认 最新

  • 白萝卜道士 2025-09-04 02:30
    关注

    一、问题背景与初步排查

    在使用 AWS CLI 时,出现报错信息:"fatal error: Unable to locate credentials",表示 AWS CLI 无法找到有效的凭证信息。这通常发生在以下几种场景:

    • 首次配置 AWS CLI,尚未设置凭证;
    • 环境变量未设置 AWS 凭证;
    • 凭证文件路径错误或文件名拼写错误;
    • 权限配置不当导致无法读取凭证文件;
    • 使用了错误的配置文件或配置名称。

    二、凭证查找顺序与机制分析

    AWS CLI 查找凭证的顺序如下,优先级由高到低:

    1. 环境变量:AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGION
    2. CLI 配置文件:~/.aws/credentials~/.aws/config
    3. EC2 实例元数据服务(仅限 EC2);
    4. 容器或 Lambda 环境中的 IAM 角色(如适用)。
    查找方式适用场景是否推荐
    环境变量临时测试、CI/CD 环境推荐用于自动化
    配置文件本地开发、多账户管理推荐用于日常使用
    EC2 实例角色EC2 实例内部使用 AWS 服务推荐用于 EC2 环境

    三、解决方法详解

    以下是几种常见且有效的排查与修复方法:

    1. 使用 aws configure 命令配置凭证

    执行以下命令,输入 Access Key ID、Secret Access Key 和默认区域:

    aws configure
    AWS Access Key ID [None]: YOUR_ACCESS_KEY
    AWS Secret Access Key [None]: YOUR_SECRET_KEY
    Default region name [None]: us-east-1
    Default output format [None]: json

    该命令会将凭证信息写入到 ~/.aws/credentials~/.aws/config 文件中。

    2. 检查环境变量是否设置正确

    查看当前终端会话中是否设置了 AWS 凭证环境变量:

    echo $AWS_ACCESS_KEY_ID
    echo $AWS_SECRET_ACCESS_KEY

    若未设置,可在 shell 中临时设置:

    export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
    export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
    export AWS_DEFAULT_REGION=us-east-1

    3. 检查凭证文件是否存在及权限是否正确

    检查凭证文件是否存在:

    ls -la ~/.aws/

    确保 ~/.aws/credentials 文件权限为 600:

    chmod 600 ~/.aws/credentials

    4. 使用多个配置文件与命名配置

    ~/.aws/credentials 文件中可以定义多个配置,例如:

    [default]
    aws_access_key_id = DEFAULT_ACCESS_KEY
    aws_secret_access_key = DEFAULT_SECRET_KEY
    
    [dev-account]
    aws_access_key_id = DEV_ACCESS_KEY
    aws_secret_access_key = DEV_SECRET_KEY

    使用时指定配置名称:

    aws s3 ls --profile dev-account

    四、高级排查与流程图

    当基础方法无效时,可以使用更系统化的排查流程,如下图所示:

    graph TD A[开始] --> B{是否设置了环境变量?} B -->|是| C[使用环境变量凭证] B -->|否| D{是否配置了 ~/.aws/credentials?} D -->|是| E[检查文件权限] D -->|否| F[运行 aws configure 配置凭证] E --> G{权限是否为600?} G -->|是| H[尝试调用 AWS API] G -->|否| I[chmod 600 ~/.aws/credentials] H --> J{是否成功?} J -->|是| K[问题解决] J -->|否| L[检查是否使用了错误的 profile]
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 9月4日