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

Flink上传Checkpoint至AWS S3遇403禁止访问错误求助

问题根源

AWS账号启用MFA后,单纯使用长期访问密钥无法通过身份验证——AWS会要求额外的MFA令牌校验,这就是触发403错误的核心原因。

可行解决方案

1. 用STS临时凭证替代长期密钥

通过AWS STS生成带MFA验证的临时凭证,步骤如下:

  • 执行命令生成临时凭证(替换占位符):
    aws sts get-session-token --serial-number arn:aws:iam::[你的AWS账号ID]:mfa/[你的MFA设备名称] --token-code [当前MFA动态码]
    
  • 命令返回AccessKeyId、SecretAccessKey和SessionToken三个值,将它们配置到Flink的环境变量中:
    # Flink Deployment YAML中的env配置示例
    env:
      - name: AWS_ACCESS_KEY_ID
        value: "[临时AccessKeyId]"
      - name: AWS_SECRET_ACCESS_KEY
        value: "[临时SecretAccessKey]"
      - name: AWS_SESSION_TOKEN
        value: "[临时SessionToken]"
    
  • 注意:临时凭证默认有效期12小时,到期需要重新生成。

使用IAM Roles for Service Accounts(IRSA)让Flink直接使用IAM角色权限,无需手动管理凭证:

  • 为Flink的ServiceAccount创建IAM角色,角色权限需包含S3对testBucket/checkpoints的读写、列表权限,同时信任策略要允许Kind集群的OIDC提供商(需先配置集群OIDC)。
  • 给IAM角色附加S3权限策略(参考下文的Bucket策略示例)。
  • 在Flink Deployment YAML中指定ServiceAccount,AWS SDK会自动获取角色凭证:
    spec:
      serviceAccountName: flink-sa
      env:
        - name: AWS_REGION
          value: "[你的AWS区域]"
        # 无需手动配置密钥,SDK自动处理身份验证
    

3. 检查S3 Bucket权限策略

确保Bucket允许临时凭证或IAM角色访问,示例策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::[你的账号ID]:role/[Flink绑定的IAM角色名]"
      },
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::testBucket",
        "arn:aws:s3:::testBucket/checkpoints/*"
      ]
    }
  ]
}

虽然你已经添加了jar,仍需检查以下内容:

  • 在flink-conf.yaml中指定正确的文件系统实现:
    # 使用hadoop实现
    fs.s3a.impl: org.apache.flink.fs.s3hadoop.S3FileSystem
    # 或使用presto实现
    # fs.s3a.impl: org.apache.flink.fs.s3presto.S3FileSystem
    
  • 插件目录下只保留对应版本的jar,避免版本冲突。

快速验证方法

先在本地用临时凭证测试S3写入:

aws s3 cp test.txt s3://testBucket/checkpoints/ --region [你的区域] --access-key [临时AccessKey] --secret-key [临时SecretKey] --session-token [临时SessionToken]

如果本地能成功上传,说明凭证没问题,再检查Flink是否正确加载了这些环境变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:17:33