我想通过从 SQS 事件源的有效负载读取值来触发 Argo 工作流程。 例如,我的工作流程模板接受输入参数“日期”。我需要监听 AWS SQS 并从我的 sqs 负载中提取该值,然后通过将该值作为输入参数传递来触发工作流程。
示例 sqs 有效负载: {“日期”:“2024-01-01”}。
我能够使用输入参数和 sqs 事件源创建工作流程,但我缺少需要从传入消息中提取日期值并将其传递给工作流程参数的部分。
在下面的代码中,我需要将依赖项“dependency-abc”的有效负载({“date”:“2024-01-01”})中的值传递到“input.parameters.date”
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
name: aws-sqs
spec:
template:
serviceAccountName: daadi-argo-sa
dependencies:
- name: dependency-abc
eventSourceName: aws-sqs
eventName: event-abc
triggers:
- template:
name: sqs-workflow
k8s:
operation: create
source:
resource:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: aws-sqs-workflow-
spec:
serviceAccountName: argo-sa
entrypoint: whalesay
arguments:
parameters:
- name: date
templates:
- name: whalesay
inputs:
parameters:
- name: message
container:
image: docker/whalesay:latest
command: [cowsay]
args: ["{{inputs.parameters.date}}"]
需要在
parameters
内指定src
、dependencyName
、dataKey
、dest
和k8s
。这些源和目标参数将依赖项有效负载映射到工作流程参数。
k8s:
operation: create
source:
resource:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: aws-sqs-workflow-
spec:
serviceAccountName: argo-sa
entrypoint: whalesay
arguments:
parameters:
- name: date
templates:
- name: whalesay
inputs:
parameters:
- name: message
container:
image: docker/whalesay:latest
command: [cowsay]
args: ["{{inputs.parameters.date}}"]
parameters: # Parameters to pass to the Workflow
- src: # Source of the data
dependencyName: dependency-abc # Event source dependency
dataKey: date # Selector for payload data (date)
dest: spec.arguments.parameters.0.value # Destination for data selection (first parameter - date)
参考资料: