从无服务器功能中获取 SQS URL?

Nic*_*ill 9 amazon-sqs serverless-framework serverless

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

resources:
  Resources:
    TheQueue:
      Type: "AWS:SQS:Queue"
      Properties:
        QueueName: "TheQueue"
Run Code Online (Sandbox Code Playgroud)

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

const params = {
    MessageBody: 'message body here',
    QueueUrl: 'WHATS_THE_URL_HERE',
    DelaySeconds: 5
};
Run Code Online (Sandbox Code Playgroud)

Aar*_*erg 14

这是一个很好的问题!

我喜欢将队列 URL 设置为我的应用程序的 ENV 变量!

所以你已经命名了 queue TheQueue

只需将此代码段添加到您的serverless.yml文件中:

provider:
  name: aws
  runtime: <YOUR RUNTIME>
  environment:
    THE_QUEUE_URL: { Ref: TheQueue }
Run Code Online (Sandbox Code Playgroud)

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

然后你可以访问参数:

const params = {
    MessageBody: 'message body here',
    QueueUrl: process.env.THE_QUEUE_URL,
    DelaySeconds: 5
};
Run Code Online (Sandbox Code Playgroud)