This is an automated email from the ASF dual-hosted git repository. github-merge-queue[bot] pushed a commit to branch gh-readonly-queue/dev/pr-11423-94e8490971b969e9c60a280cd686edebd34d7209 in repository https://gitbox.apache.org/repos/asf/seatunnel.git
commit 8ceebc754c6f4b63efb925b56a29cdcafc06b5b6 Author: lifeng <[email protected]> AuthorDate: Sun Oct 11 09:46:00 2026 +0000 [Docs] Clarify S3File credential providers for container environments (#11423) Co-authored-by: David Zollo <[email protected]> Co-authored-by: Claude Sonnet 5.5 <[email protected]> --- docs/en/engines/zeta/checkpoint-storage.md | 32 +++++++++++++++++++++++++++--- docs/zh/engines/zeta/checkpoint-storage.md | 32 +++++++++++++++++++++++++++--- 2 files changed, 58 insertions(+), 6 deletions(-) diff --git a/docs/en/engines/zeta/checkpoint-storage.md b/docs/en/engines/zeta/checkpoint-storage.md index f20db8a6b6..b3db813485 100644 --- a/docs/en/engines/zeta/checkpoint-storage.md +++ b/docs/en/engines/zeta/checkpoint-storage.md @@ -180,7 +180,7 @@ seatunnel: plugin-config: namespace: # checkpoint storage parent path, the default value is /seatunnel/checkpoint/ storage.type: s3 - s3.bucket: your-bucket + s3.bucket: s3a://your-bucket fs.s3a.access.key: your-access-key fs.s3a.secret.key: your-secret-key fs.s3a.aws.credentials.provider: org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider @@ -204,11 +204,37 @@ seatunnel: plugin-config: namespace: # checkpoint storage parent path, the default value is /seatunnel/checkpoint/ storage.type: s3 - s3.bucket: your-bucket + s3.bucket: s3a://your-bucket fs.s3a.endpoint: your-endpoint - fs.s3a.aws.credentials.provider: org.apache.hadoop.fs.s3a.InstanceProfileCredentialsProvider + fs.s3a.aws.credentials.provider: com.amazonaws.auth.InstanceProfileCredentialsProvider ``` + +Checkpoint storage differs from the S3File source and sink: values under `plugin-config` are passed directly to Hadoop configuration and are not limited by S3File option validation. With the AWS SDK v1 bundled in the current distribution, `com.amazonaws.auth.DefaultAWSCredentialsProviderChain` can read environment, profile, ECS container, and EC2 instance profile credentials. For an ECS task role, you can also select the container provider explicitly: + +```yaml +seatunnel: + engine: + checkpoint: + interval: 6000 + timeout: 7000 + storage: + type: hdfs + max-retained: 3 + plugin-config: + namespace: # checkpoint storage parent path, the default value is /seatunnel/checkpoint/ + storage.type: s3 + s3.bucket: s3a://your-bucket + fs.s3a.endpoint: your-endpoint + fs.s3a.aws.credentials.provider: com.amazonaws.auth.ContainerCredentialsProvider +``` + +For Kubernetes or EKS nodes backed by EC2, use `com.amazonaws.auth.InstanceProfileCredentialsProvider` as shown above and grant the node role only the required bucket and prefix permissions. + +The AWS SDK v1 bundled with the current checkpoint-storage dependencies does not contain `WebIdentityTokenCredentialsProvider`, so EKS IRSA is not supported. Do not configure an IRSA provider unless the runtime dependencies have been upgraded and validated together. + +If `Factory initialize failed` or `ClassNotFoundException` appears, verify the provider class name and confirm that every master and worker accessing checkpoint storage has the required Hadoop/AWS jars. + **Container environments**: Checkpoint storage passes `fs.s3a.*` configuration keys directly to Hadoop without any connector-level enum restriction, so any S3A credential provider class available on the classpath can be used. This includes container-oriented providers such as `com.amazonaws.auth.ContainerCredentialsProvider` (ECS task role) and `com.amazonaws.auth.DefaultAWSCredentialsProviderChain`. For EKS deployments, the EC2 node instance role is recommended. EKS IRSA (`WebIdentityTo [...] If you want to use Minio that supports the S3 protocol as checkpoint storage, you should configure it this way: diff --git a/docs/zh/engines/zeta/checkpoint-storage.md b/docs/zh/engines/zeta/checkpoint-storage.md index 2cc3852ec3..4e87f108a4 100644 --- a/docs/zh/engines/zeta/checkpoint-storage.md +++ b/docs/zh/engines/zeta/checkpoint-storage.md @@ -178,7 +178,7 @@ seatunnel: plugin-config: namespace: # 检查点存储父路径,默认值为/seatunnel/checkpoint/ storage.type: s3 - s3.bucket: your-bucket + s3.bucket: s3a://your-bucket fs.s3a.access.key: your-access-key fs.s3a.secret.key: your-secret-key fs.s3a.aws.credentials.provider: org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider @@ -202,11 +202,37 @@ seatunnel: plugin-config: namespace: # 检查点存储父路径,默认值为/seatunnel/checkpoint/ storage.type: s3 - s3.bucket: your-bucket + s3.bucket: s3a://your-bucket fs.s3a.endpoint: your-endpoint - fs.s3a.aws.credentials.provider: org.apache.hadoop.fs.s3a.InstanceProfileCredentialsProvider + fs.s3a.aws.credentials.provider: com.amazonaws.auth.InstanceProfileCredentialsProvider ``` + +Checkpoint 存储与 S3File source/sink 不同:`plugin-config` 下的值会直接传入 Hadoop configuration,不受 S3File 选项校验限制。使用当前发行包内置的 AWS SDK v1 类时,`com.amazonaws.auth.DefaultAWSCredentialsProviderChain` 可以读取环境变量、profile、ECS container 和 EC2 instance profile 凭据。对于 ECS task role,也可以显式选择 container provider: + +```yaml +seatunnel: + engine: + checkpoint: + interval: 6000 + timeout: 7000 + storage: + type: hdfs + max-retained: 3 + plugin-config: + namespace: # 检查点存储父路径,默认值为/seatunnel/checkpoint/ + storage.type: s3 + s3.bucket: s3a://your-bucket + fs.s3a.endpoint: your-endpoint + fs.s3a.aws.credentials.provider: com.amazonaws.auth.ContainerCredentialsProvider +``` + +对于基于 EC2 的 Kubernetes 或 EKS 节点,可按上面的示例使用 `com.amazonaws.auth.InstanceProfileCredentialsProvider`,并仅向节点角色授予所需 bucket/prefix 的最小权限。 + +当前 checkpoint-storage 依赖内置的 AWS SDK v1 版本不包含 `WebIdentityTokenCredentialsProvider`,因此不支持 EKS IRSA。除非运行时依赖已经整体升级并完成验证,否则不要配置 IRSA provider。 + +如果遇到 `Factory initialize failed` 或 `ClassNotFoundException`,请检查 provider 类名,并确认所有访问 checkpoint 存储的 master/worker 都已加载所需的 Hadoop/AWS jar。 + **容器环境**:检查点存储将 `fs.s3a.*` 配置键直接传递给 Hadoop,没有连接器级别的枚举限制,因此可以使用 classpath 上任何可用的 S3A 凭据提供程序类。这包括面向容器的提供程序,如 `com.amazonaws.auth.ContainerCredentialsProvider`(ECS 任务角色)和 `com.amazonaws.auth.DefaultAWSCredentialsProviderChain`。对于 EKS 部署,推荐使用 EC2 节点实例角色。EKS IRSA(`WebIdentityTokenCredentialsProvider`)在捆绑的 AWS SDK v1.x(1.11.271)中不可用,需要在所有节点的 `${SEATUNNEL_HOME}/lib` 中添加较新的 AWS SDK v1.x JAR。 有关Hadoop Credential Provider API的更多信息,请参见: [Credential Provider API](https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/CredentialProviderAPI.html).
