【问题标题】:How to get SQS Url inside lambda using CDK?如何使用 CDK 在 lambda 中获取 SQS Url?
【发布时间】:2023-01-04 19:50:52
【问题描述】:

我正在使用 CDK 来实例化队列和 Lambda 函数。

Lambda 函数需要 QueueURL 才能将消息推送到其中。

QueueURL 不是固定的,它会在重新创建堆栈时发生变化。

我有两个选择:

  1. 将 QueueURL 作为环境变量传递给 CDK 中的 Lambda。
  2. 使用 QueueURL 创建 cfnOutput 并从 Lambda 读取它。

    如果我使用选项 2,Lambda 每次运行时都必须进行 API 调用以获取 URL。

    这些是唯一的选择吗? 为此推荐的方法是什么?

    谢谢!

【问题讨论】:

标签: aws-lambda aws-cdk


【解决方案1】:

推荐选项 1。如果值因任何原因发生变化,lambda 也会相应地自动更新。它还确保 lambda 将在队列之后创建,因为它创建了隐式依赖项。

不要忘记使用 myQueue.grantSendMessages(myLambda); 授予您的 lambda 对队列的访问权限

【讨论】:

    【解决方案2】:

    我正在尝试对环境执行此操作,但在 CDK 堆栈中执行此操作:

    val myQueue =
                SqsQueue.Builder.create(Queue.Builder.create(this, "my-queue").build()).build()
    println(myQueue.queue.url)
    

    只返回完整的队列名称,如“mystack-myQueueName-xxxxx-xxxx”,而我在环境变量中需要的是“https://sqs.eu-west-2.amazonaws.com/accountId/mystack-myQueueName-xxxxx- xxxx”。

    有什么建议么?

    【讨论】:

      猜你喜欢
      • 2023-02-26
      • 1970-01-01
      • 2022-01-27
      • 2022-01-22
      • 2019-06-23
      • 2022-01-15
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      相关资源
      最近更新 更多