如何将任务令牌从 AWS Step Functions 传递到 EC2 运行实例调用

问题描述 投票:0回答:1

如何将

$$.Task.Token
从 AWS Step Functions 传递到 EC2
run-instances
调用?

我应该在 json 请求中使用“user-data”键传递它吗?

由于用户数据密钥仅接受 base64 编码的字符串,因此变得更加困难。字符串

$$.Task.Token
按原样传递,而不是其值。

或者是否有其他方法将任务令牌传递到 aws EC2 实例?

aws-step-functions
1个回答
0
投票

对于此类任务总是有大量的内在函数

States.Base64Encode
就是你的情况。 以下是传递 TaskToken 和 waitingForCallback 的步骤函数的完整代码。任务令牌与 base64 字符串一起传递,并将被初始化为环境变量 TASK_TOKEN。

不过不要忘记清理实例。

{
  "Comment": "State Machine that launches EC2 with TASK_TOKEN as an environment variable",
  "StartAt": "PrepareAndLaunchEC2",
  "States": {
    "PrepareAndLaunchEC2": {
      "Type": "Task",
      "Resource": "arn:aws:states:::aws-sdk:ec2:runInstances.waitForTaskToken",
      "Parameters": {
        "ImageId": "ami-0cdd6d7420844683b",
        "InstanceType": "t2.micro",
        "MinCount": 1,
        "MaxCount": 1,
        "UserData.$": "States.Base64Encode(States.Format('#!/bin/bash\n export TASK_TOKEN=\"{}\"\n# More commands here', $$.Task.Token))"
      },
      "End": true
    }
  }
}

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.