【问题标题】:How to test lambda using test event如何使用测试事件测试 lambda
【发布时间】:2019-11-12 13:08:11
【问题描述】:

我有 lambda,它在 VPN 隧道关闭或启动时由 cloudwatch 事件触发。我在网上搜索但找不到触发此 cloudwatch 事件的方法。 我看到了测试事件的选项,但我可以在这里输入什么来触发隧道开启或关闭的事件?

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    您可以查看CloudWatchEventsandEventPatterns

    Amazon CloudWatch Events 中的事件表示为 JSON 对象。 有关 JSON 对象的更多信息,请参阅RFC 7159。以下 是一个示例事件:

    {
      "version": "0",
      "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
      "detail-type": "EC2 Instance State-change Notification",
      "source": "aws.ec2",
      "account": "111122223333",
      "time": "2017-12-22T18:43:48Z",
      "region": "us-west-1",
      "resources": [
        "arn:aws:ec2:us-west-1:123456789012:instance/ i-1234567890abcdef0"
      ],
      "detail": {
        "instance-id": " i-1234567890abcdef0",
        "state": "terminated"
      }
    }
    

    也可以根据事件记录,您可以从AWS CW EventTypes中选择您需要的事件

    【讨论】:

    • VPN 隧道不在 CW EventTypes 列表中。
    • 哦,所以您正在寻找一些自定义事件,编写一个脚本来检查 VPN 隧道的健康状况,如果失败则将事件写入 CW 并基于该事件触发您的 lambda,或者您可以配置一些LB 检查目标是否不健康,然后触发 lambda。
    • 不,我已经创建了 cw 警报,它会在隧道关闭时触发 labmda。现在我正在尝试通过调用 cw 警报进行测试,但我不知道如何调用 cw 警报。
    • 你能从 CW 抓取一个事件吗?并将其传递给 lambda?
    • 我认为这不会是正确的测试,因为它不会表明隧道处于停机状态。
    【解决方案2】:

    我相信在您的场景中,您不需要传递任何输入数据,因为您必须构建逻辑来测试 Lamda 内的 VPN 隧道连接。您可以从测试事件中删除该 JSON,然后运行测试。

    如果您需要在输入事件中传递一些信息,请遵循@Adiii 提到的方法。

    编辑 通过评论说这个问题更清楚了

    但问题是我将如何触发 lambda?可以说我想 当隧道关闭时触发它?如何让 lambda 知道隧道在 下状态? – 新手

    这可以通过在 Cloudwatch 中设置规则以定期安排 lambda 触发器来实现。更多细节在这里:

    Tutorial: Schedule AWS Lambda Functions Using CloudWatch Events

    Lambda 目前没有可以监控 VPN 隧道的调用触发器,因此唯一的解决方法是通过 lamda 轮询状态。

    【讨论】:

    • 但问题是我将如何触发 lambda?假设我想在隧道关闭时触发它?如何让 lambda 知道隧道处于关闭状态?
    • @NoviceMe 您最初的问题并不清楚。更新了我的答案,为您提供使用 AWS Cloudwatch 设置计划以定期调用您的 lambda 的详细信息。
    猜你喜欢
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 2021-08-19
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    相关资源
    最近更新 更多