You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CircleCI中Boto3连接AWS抛出NoCredentialsError问题求助

解决方案

1. 确认CircleCI环境变量有效性

  • 在CircleCI项目的环境变量面板(而非config.yml硬编码)中添加AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_DEFAULT_REGION,确保变量状态为已启用
  • 在构建步骤中加入验证命令,确认变量已注入:
    printenv | grep AWS
    
  • 若使用CircleCI Context管理变量,需确认当前工作流已关联对应Context

2. 简化boto3调用逻辑,复用默认凭证链

你的代码中aws_kwargs为空时,boto3本应自动读取环境变量,但冗余的空参数传递可能干扰默认链。修改代码如下:

def connect(self) -> BaseClient:
    """
    Connect to AWS Secrets Manager using default AWS session
    :return: client
    """
    if self.client:
        return self.client
    import boto3
    # 直接依赖boto3默认凭证链,自动读取环境变量/实例角色
    self.client = boto3.client(
        self.SERVICE_NAME,
        region_name=os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')
    )
    self.__client_created = True
    return self.client

boto3默认凭证链优先级:代码显式参数 → 环境变量 → ~/.aws配置文件 → IAM实例角色(自托管runner场景)

3. 验证AWS配置步骤的执行顺序

若使用aws-cli-cred-setup orb,需确保配置步骤在测试前执行:

jobs:
  test:
    docker:
      - image: cimg/python:3.11
    steps:
      - checkout
      # 先完成AWS凭证配置
      - aws-cli-cred-setup/setup:
          aws-access-key-id: AWS_ACCESS_KEY_ID
          aws-secret-access-key: AWS_SECRET_ACCESS_KEY
          aws-region: AWS_DEFAULT_REGION
      - run: pip install -r requirements.txt
      - run: pytest

可添加CLI验证步骤,确认凭证已生效:

aws sts get-caller-identity
  • 若此步骤报错:问题出在CircleCI凭证配置,需排查变量是否正确传递
  • 若此步骤成功:问题出在代码对boto3的调用逻辑,需检查代码中是否有覆盖凭证的逻辑

4. 自托管Runner权限排查(若适用)

如果使用自托管EC2 Runner,无需手动设置环境变量,只需确保Runner实例的IAM角色拥有测试所需权限,boto3会自动读取实例元数据中的凭证。

内容的提问来源于stack exchange,提问作者hazmat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 13:07:28