json - 如何在詹金斯管道中使用invokeLambda的输出?
问题描述
我正在从 jenkins 声明性管道中调用 lambda 函数。现在我想在其他管道中使用它的输出。我正在尝试以下代码:
def health=invokeLambda([awsAccessKeyId: 'xxxx', awsRegion: 'rrrrr', awsSecretKey: 'kkkkk', functionName: 'yyyyyy', payload: '', synchronous: true]);
当我尝试我 echo "$health"
得到空值时。
有谁知道如何在 jenkinsfile 中使用 lambda 函数的输出?
解决方案
我假设您使用的是AWS Lambda 插件,这是一个相对较旧的插件,专为自由式作业而非管道设计。
虽然您可以在管道脚本中使用它,但您将无法获得返回值,因为该插件旨在使用结果更新环境变量 - 这在自由式作业中有效,但在管道中不受支持。
为了实现您想要的,您可以使用新的面向管道的 AWS Steps 插件,其中包含许多 AWS 相关步骤,这些步骤专为管道使用而设计,并允许轻松访问这些步骤的输出。与旧插件相比,它也更安全并允许更多功能 - 特别是对于管道。
在您的情况下,您可以使用invokeLambda
将返回您期望的输出的步骤:
withAWS(region:'eu-central-1', credentials:'nameOfSystemCredentials') {
def result = invokeLambda(
functionName: 'myLambdaFunction',
payload: [ "key": "value", "anotherkey" : [ "another", "value"] ]
)
}
推荐阅读
- django - 使用 selenium / pytest 测试 Django 激活电子邮件。EMAIL_BACKEND="django.core.mail.backends.filebased.EmailBackend"
- javascript - 如何在节点项目中自动加载包含特定装饰器的文件
- c# - 使用任务异步方法加载集合视图
- python - 通过任务计划程序和 Python 脚本创建备份文件夹将 Date Modified 作为任务的日期
- javascript - 使用 absolutePan() 通过触摸事件在画布上移动背景图像和元素
- bluetooth - Raspberry Pi 4 和带蓝牙麦克风和扬声器的 Google Assistant
- git - 文件上的 git log 的 ClearCase 等价物是什么?
- python - Python timeit - TypeError:“模块”对象不可调用
- php - 支付与 PayU 的集成
- reactjs - base64 编码图像未在材料 ui CardMedia 中显示