如何在 jenkins 管道中使用 invokeLambda 的输出?

How to use the output of the invokeLambda in jenkins pipeline?

我正在从 jenkins 声明式管道调用 lambda 函数。现在我想在其他管道中使用它的输出。我正在尝试以下代码:

def health=invokeLambda([awsAccessKeyId: 'xxxx', awsRegion: 'rrrrr', awsSecretKey: 'kkkkk', functionName: 'yyyyyy', payload: '', synchronous: true]);

当我尝试 echo "$health" 我得到空值。

有人知道如何在 jenkinsfile 中使用 lambda 函数的输出吗?

我假设您使用的是 AWS Lambda Plugin 这是一个相对较旧的插件,专为自由式作业而不是管道设计。
虽然您可以在管道脚本中使用它,但您将无法获得 returned 值,因为该插件旨在使用结果更新环境变量 - 这在自由式作业中非常有效,但在管道中不受支持。

要实现您想要的效果,您可以使用新的面向管道的 AWS Steps Plugin,其中包含许多与 AWS 相关的步骤,这些步骤专为管道使用而设计并允许轻松访问步骤的输出。它也比旧插件更安全并允许更多功能 - 特别是对于管道。

在您的情况下,您可以使用 invokeLambda 步骤来 return 输出是您期望的:

withAWS(region:'eu-central-1', credentials:'nameOfSystemCredentials') {
    def result = invokeLambda(
            functionName: 'myLambdaFunction',
            payload: [ "key": "value", "anotherkey" : [ "another", "value"] ]
    )
}