【问题标题】:Get SQS URL from within Serverless function?从无服务器函数中获取 SQS URL?
【发布时间】:2020-06-08 17:59:44
【问题描述】:

我正在构建一个无服务器应用程序,它在资源中定义了一个 SQS 队列,如下所示:

resources:
  Resources:
    TheQueue:
      Type: "AWS:SQS:Queue"
      Properties:
        QueueName: "TheQueue"

我想从其中一个函数中向该队列发送消息。如何从函数内访问 URL?我想把它放在这里:

const params = {
    MessageBody: 'message body here',
    QueueUrl: 'WHATS_THE_URL_HERE',
    DelaySeconds: 5
};

【问题讨论】:

    标签: amazon-sqs serverless-framework serverless


    【解决方案1】:

    这是一个很好的问题!

    我喜欢将队列 URL 设置为我的应用的 ENV var!

    所以你已经将队列命名为TheQueue

    只需将此 sn-p 添加到您的 serverless.yml 文件中:

    provider:
      name: aws
      runtime: <YOUR RUNTIME>
      environment:
        THE_QUEUE_URL: { Ref: TheQueue }
    

    Serverless 会自动从您的 CloudFormation 中获取队列 URL 并将其注入您的 ENV。

    然后你可以访问参数为:

    const params = {
        MessageBody: 'message body here',
        QueueUrl: process.env.THE_QUEUE_URL,
        DelaySeconds: 5
    };
    

    【讨论】:

    • 太好了,在我使用 GetAtt、Url 和 QueueUrl 多次失败后,它帮助了我:)。为什么队列没有 Url 属性?
    【解决方案2】:

    您可以使用Get Queue URL API,但我也倾向于将它传递给我的函数。 QueueUrl 是 CloudFormation 中 SQS 队列的 Ref 值,因此您可以在 CloudFormation 中轻松访问它。 This handy cheat sheet 对使用 CloudFormation 属性和引用非常有帮助。

    【讨论】:

    • 谢谢,但我看不到上面提到的@Aaron Stuyvenberg 的回答。
    【解决方案3】:

    我走了一条不同的路。我个人不喜欢在使用 lambda 时将信息存储在环境变量中,尽管我真的很喜欢 Aaron Stuyvenberg 解决方案。因此,我将这样的信息存储为 AWS SSM 参数存储。

    然后在我的代码中,我只是在需要时调用它。原谅我的 JS,我已经有一段时间没有这样做了。我主要做python

    var ssm = new AWS.SSM();
    const myHandler = (event, context) => {
        var { Value } = await ssm.getParameter({Name: 'some.name.of.parameter'}).promise()
    
        const params = {
            MessageBody: 'message body here',
            QueueUrl: Value,
            DelaySeconds: 5
        };
    }
    

    可能是我弄错了返回的数据结构的一些解构,但这大致就是我所做的。在 python 中,我编写了一个库,只需一行即可完成所有这些操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-28
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      相关资源
      最近更新 更多