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

如何在Step Functions的EKS Run作业中传递环境变量至命令参数?

问题描述

尝试配置包含EKS Run作业的Step Functions,在EKS集群中启动Pod执行echo $S3_BUCKET $S3_KEY命令,其中$S3_BUCKET和$S3_KEY从Step Functions输入传入。容器配置如下:

"containers": [
  {
    "name": "my-container-spec",
    "image": "****.dkr.ecr.****.amazonaws.com/****:latest",
    "command": [
      "echo"
    ],
    "args": [
      "$S3_BUCKET", "$S3_KEY"
    ],
    "env": [
      {
        "name": "S3_BUCKET",
        "value.$": "$.s3_bucket"
      },
      {
        "name": "S3_KEY",
        "value.$": "$.s3_key"
      }
    ]
  }
],
"restartPolicy": "Never"

执行后命令仅输出原始字符串$S3_BUCKET $S3_KEY,而非实际传入的值,请问如何将环境变量作为args传入?

解决方法

方法1:通过shell解析环境变量

echo命令本身不会解析环境变量,因为它不经过shell处理。需要启动shell来完成变量替换,修改command和args配置:

"containers": [
  {
    "name": "my-container-spec",
    "image": "****.dkr.ecr.****.amazonaws.com/****:latest",
    "command": ["/bin/sh", "-c"],
    "args": ["echo $S3_BUCKET $S3_KEY"],
    "env": [
      {
        "name": "S3_BUCKET",
        "value.$": "$.s3_bucket"
      },
      {
        "name": "S3_KEY",
        "value.$": "$.s3_key"
      }
    ]
  }
],
"restartPolicy": "Never"

/bin/sh -c会启动shell执行后续的命令字符串,shell会自动识别并替换环境变量为实际传入的值。

方法2:直接传递Step Functions输入到args

如果不需要依赖环境变量,可直接将Step Functions的输入值作为echo的参数传入,跳过环境变量环节:

"containers": [
  {
    "name": "my-container-spec",
    "image": "****.dkr.ecr.****.amazonaws.com/****:latest",
    "command": ["echo"],
    "args": [
      { "value.$": "$.s3_bucket" },
      { "value.$": "$.s3_key" }
    ]
  }
],
"restartPolicy": "Never"

这种方式直接映射Step Functions输入的s3_bucket和s3_key值,无需shell解析,更高效直接。

方法3:使用自定义shell脚本(复杂场景)

若后续需要执行更复杂的命令逻辑,可在容器镜像中添加shell脚本,通过环境变量传递参数后执行脚本:

"containers": [
  {
    "name": "my-container-spec",
    "image": "****.dkr.ecr.****.amazonaws.com/****:latest",
    "command": ["/bin/sh", "/path/to/your/script.sh"],
    "env": [
      {
        "name": "S3_BUCKET",
        "value.$": "$.s3_bucket"
      },
      {
        "name": "S3_KEY",
        "value.$": "$.s3_key"
      }
    ]
  }
],
"restartPolicy": "Never"

示例脚本内容(script.sh):

#!/bin/sh
echo "$S3_BUCKET $S3_KEY"
# 可在此添加更多复杂业务逻辑

这种方式扩展性强,适合多步命令处理的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:55:28