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

本地运行Loki 2.8.2遇InvalidAccessKeyId错误求助

问题:Loki 2.8.2本地运行时触发InvalidAccessKeyId错误

运行Loki时出现以下错误:

"failed to delete corrupted cluster seed file, deleting it" err="InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records.\n\tstatus code: 403, request id: XXXXX, host id: XXXXXYYYZZZ"

环境信息

  • loki - 2.8.2
  • macOS Ventura 13.5
  • aws-cli/2.13.11 Python/3.11.4
  • 已通过aws cli正确配置AWS凭证

启动命令

loki -config.file=loki-local-config.yaml -config.expand-env=true

配置文件loki-local-config.yaml

auth_enabled: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

ingester:
  wal:
    enabled: true
    dir: /tmp/loki/wal
  lifecycler:
    address: 127.0.0.1
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 1h
  max_chunk_age: 1h
  chunk_target_size: 1048576
  chunk_retain_period: 30s
  max_transfer_retries: 0

query_range:
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: s3
      schema: v11
      index:
        prefix: index_
        period: 24h

storage_config:
  boltdb_shipper:
      active_index_directory: /tmp/loki/index
      cache_location: /tmp/loki/index_cache
      cache_ttl: 24h
      resync_interval: 5s
      shared_store: s3
  aws:
    endpoint: s3.us-west-1.amazonaws.com
    bucketnames: loki-poc-devops-ops-efficiency
    region: us-west-1
    access_key_id: aws_access_key_id
    secret_access_key: aws_secret_access_key
    insecure: false
    sse_encryption: false
    http_config:
      idle_conn_timeout: 90s
      response_header_timeout: 0s
      insecure_skip_verify: false
    s3forcepathstyle: true

compactor:
  working_directory: /tmp/loki/compactor
  shared_store: s3
  compaction_interval: 5m
  shared_store_key_prefix: index/

limits_config:
  reject_old_samples: true
  reject_old_samples_max_age: 168h
  retention_period: 744h

table_manager:
  retention_deletes_enabled: true
  retention_period: 24h
原因分析与解决办法

核心原因

配置文件中AWS凭证的写法错误,结合-config.expand-env=true的启动参数,Loki无法正确读取有效AWS密钥:

  1. 配置里的access_key_id: aws_access_key_id和secret_access_key: aws_secret_access_key是字面字符串,而非环境变量占位符,导致Loki直接将这两个无效字符串作为密钥发送给AWS,自然匹配不到有效记录。
  2. 即使AWS CLI已配置凭证,Loki的配置优先级高于默认凭证链,会优先使用配置中硬写的无效值。

解决步骤

1. 修正配置文件的凭证占位符

将storage_config.aws下的凭证配置改为环境变量占位符,让Loki通过-config.expand-env=true读取系统环境变量:

storage_config:
  aws:
    # 其他配置保持不变
    access_key_id: ${AWS_ACCESS_KEY_ID}
    secret_access_key: ${AWS_SECRET_ACCESS_KEY}

2. 设置环境变量(或使用AWS默认凭证链)

  • 临时设置:在启动Loki的终端窗口中执行以下命令:
    export AWS_ACCESS_KEY_ID="你的有效Access Key"
    export AWS_SECRET_ACCESS_KEY="你的有效Secret Key"
    
  • 长期生效:将上述命令添加到~/.zshrc或~/.bashrc中,终端重启后自动加载。
  • 替代方案:如果不想设置环境变量,可直接删除配置文件中的access_key_id和secret_access_key字段,Loki会自动读取AWS CLI配置的~/.aws/credentials文件中的默认凭证。

3. 验证凭证有效性

执行AWS CLI命令测试是否能访问目标S3 bucket,确认密钥有效且具备权限:

aws s3 ls s3://loki-poc-devops-ops-efficiency --region us-west-1

如果命令能正常返回bucket内容,说明凭证权限没问题;若仍报错,需检查密钥是否正确、bucket名称是否拼写错误,或IAM用户是否具备S3的读写权限。

4. 重启Loki

修改配置或设置环境变量后,重新启动Loki服务,观察错误是否消失。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:47:11