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

使用dbt-athena-community+GitHub Actions执行工作流遇适配器错误

问题:GitHub Actions中dbt-athena-community凭证配置失效,报错无法找到athena适配器类型

报错日志

dbt.exceptions.DbtProfileError: Runtime Error
Credentials in profile "default", target "dbt_dev" invalid: Runtime Error
Could not find adapter type athena!

本地基于AWS CLI配置的凭证可正常运行,但GitHub Actions工作流执行SQLFluff + dbt-athena-community时出现上述错误,核心问题为Actions环境缺少适配dbt-athena的必要配置。

项目目录结构

./.github/workflows/lint_models.yml
./models <----.sql files to lint
./.sqlfluff
./profiles.yml

相关配置文件

profiles.yml

default:
  outputs:
    dbt_dev:
      database: awsdatacatalog
      region_name: eu-west-2
      s3_staging_dir: s3://athena-query-results-XXX/
      schema: dbt_test
      type: athena
      aws_profile_name: prof_name  <-- 已移除该行
      work_group: primary
  target: dbt_dev

.sqlfluff

[sqlfluff]
templater = dbt
dialect = athena
sql_file_exts = .sql

[sqlfluff:templater:dbt]
project_dir = ./
profiles_dir = ./
profile = default  <-- 已移除该行
target = dbt_dev   <-- 已移除该行

lint_models.yml

name: dbt sqlfluff
on:
  pull_request:
jobs:
  test-check:
    name: runner / sqlfluff (github-check)
    runs-on: ubuntu-latest
    steps:
      - name: install python
        uses: actions/setup-python@v4
        with:
          python-version: 3.11.2
      
      - name: checkout repo
        uses: actions/checkout@v3

      - name: install dbt adapters
        run: |
          pip install dbt-athena-community==1.4.1
          dbt deps
          dbt --version
      
      - name: sqlfluff
        uses: yu-iskw/action-sqlfluff@v3.6.0
        env:
            AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
            AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
            AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} 
        id: lint-sql
        with:
          github_token: ${{ secrets.github_token }}
          reporter: github-pr-review
          sqlfluff_version: "1.4.5"
          sqlfluff_command: "fix" # Or "lint"
          config: "${{ github.workspace }}/.sqlfluff"
          paths: '${{ github.workspace }}/models'
          
      - name: 'Show outputs (Optional)'
        shell: bash
        run: |
          echo '${{ steps.lint-sql.outputs.sqlfluff-results }}' | jq -r '.'
          echo '${{ steps.lint-sql.outputs.sqlfluff-results-rdjson }}' | jq -r '.'

解决方案

1. 让SQLFluff环境加载dbt-athena适配器

yu-iskw/action-sqlfluff会创建独立Python虚拟环境,导致之前安装的dbt-athena-community无法被SQLFluff的dbt模板器调用。需在SQLFluff步骤中直接指定安装适配器:

- name: sqlfluff
  uses: yu-iskw/action-sqlfluff@v3.6.0
  env:
      AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
      AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
      AWS_DEFAULT_REGION: ${{ secrets.AWS_DEFAULT_REGION }} 
  id: lint-sql
  with:
    github_token: ${{ secrets.github_token }}
    reporter: github-pr-review
    sqlfluff_version: "1.4.5"
    sqlfluff_command: "fix"
    config: "${{ github.workspace }}/.sqlfluff"
    paths: '${{ github.workspace }}/models'
    extra_packages: "dbt-athena-community==1.4.1" # 添加此行,确保适配器在SQLFluff环境中可用

2. 修复profiles.yml的凭证注入逻辑

GitHub Actions无本地AWS CLI配置的profile,需直接通过环境变量注入凭证:

default:
  outputs:
    dbt_dev:
      database: awsdatacatalog
      region_name: eu-west-2
      s3_staging_dir: s3://athena-query-results-XXX/
      schema: dbt_test
      type: athena
      work_group: primary
      # 从环境变量读取凭证
      aws_access_key_id: "{{ env_var('AWS_ACCESS_KEY_ID') }}"
      aws_secret_access_key: "{{ env_var('AWS_SECRET_ACCESS_KEY') }}"
  target: dbt_dev

3. 恢复.sqlfluff的dbt配置

之前移除的profile和target是SQLFluff识别dbt配置的关键参数,需恢复:

[sqlfluff:templater:dbt]
project_dir = ./
profiles_dir = ./
profile = default
target = dbt_dev

4. 验证适配器加载状态

在安装步骤后添加验证命令,确保dbt已正确加载athena适配器:

dbt --version
# 预期输出需包含:Plugins: dbt-athena-community: 1.4.1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:17:48