1

我有以下使用 Serverless Framework 项目的 serverless.yml 文件创建的队列:

resources:
  Resources:
    myAppSQSQueue:
      Type: "AWS::SQS::Queue"
      Properties:
        QueueName: "my-app-sqs-queue-${opt:stage, self:provider.stage}"

如何获取创建的队列的 URL 并将其作为参数存储在 AWS Systems Manager 中?我需要将它存储在那里,以便除此之​​外的其他应用程序知道如何访问它。

4

1 回答 1

2

我想到了。由于无服务器框架扩展了 CloudFormation,我在这里的 Cloud Formation 文档中找到了答案:

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html

可以按如下方式完成:

resources:
  Resources:
    myAppSQSQueue:
      Type: "AWS::SQS::Queue"
      Properties:
        QueueName: "my-app-sqs-queue-${opt:stage, self:provider.stage}"
    myAppSSMParameterQueueName:
      Type: AWS::SSM::Parameter
      Properties:
        Name: /${opt:stage, self:provider.stage}/sqs/my-app-param-name
        Type: String
        Value: 
          Fn::GetAtt:
            - myAppSQSQueue
            - Arn
        Tags:
          Environment: ${opt:stage, self:provider.stage}

这会将队列的 ARN 存储在参数存储中。我不确定是否可以获取 url,但 ARN 适合我的用例。

于 2020-08-05T21:08:01.993 回答