【问题标题】:AWS CloudFormation Template - How to configure Lambda with a SQS queue to pick the item from queueAWS CloudFormation 模板 - 如何使用 SQS 队列配置 Lambda 以从队列中挑选项目
【发布时间】:2019-09-23 12:42:45
【问题描述】:

我是 AWS CloudFormaton 模板创建的新手。无法找到创建将与 SQS 队列连接的 Lambda 函数的方法。

任何示例或资源都可以帮助我学习和实施。

【问题讨论】:

  • 谢谢!那看起来很有希望。请让我检查一下。
  • 您不能开始使用无服务器框架、AWS SAM 或 Terraform 来让您的生活更轻松一些吗?编写 CloudFormation 模板很痛苦。很痛。

标签: amazon-web-services aws-lambda amazon-cloudformation amazon-sqs


【解决方案1】:

你需要:

AWS::SQS::Queue
AWS::Lambda::Function
AWS::Lambda::EventSourceMapping

"DequeueInstanceQueue": {
  "Type": "AWS::SQS::Queue",
  "Properties": {
    "VisibilityTimeout": 301
  },
  "DeletionPolicy": "Delete"
},
"DequeueInstanceMapping": {
  "Type": "AWS::Lambda::EventSourceMapping",
  "Properties": {
    "EventSourceArn": {
      "Fn::GetAtt": [
        "DequeueInstanceQueue",
        "Arn"
      ]
    },
    "FunctionName": {
      "Fn::GetAtt": [
        "DequeueInstance",
        "Arn"
      ]
    },
    "BatchSize": "1"
  },
  "DeletionPolicy": "Delete"
},
"DequeueInstance": {
  "Type": "AWS::Lambda::Function",
  "Properties": {
    "Runtime": "dotnetcore2.1",
    "Environment": {
      "Variables": {
        "ServerName": {
          "Fn::ImportValue": {
            "Fn::Sub": "${DatabaseStack}-RdsEndpointAddress"
          }
        },
        "DatabaseUserName": {
          "Fn::ImportValue": {
            "Fn::Sub": "${DatabaseStack}-MasterUsername"
          }
        },
        "Password": {
          "Fn::ImportValue": {
            "Fn::Sub": "${DatabaseStack}-MasterUserPassword"
          }
        },
        "BranchName": {
          "Ref": "DbBranch"
        },
        "DequeueInstanceVehicleQueue": {
          "Ref": "DequeueInstanceVehicleQueue"
        }
      }
    },
    "VpcConfig": {
      "SecurityGroupIds": [
        {
          "Fn::ImportValue": {
            "Fn::Sub": "${DatabaseStack}-DbGroup"
          }
        }
      ],
      "SubnetIds": [
        {
          "Fn::ImportValue": {
            "Fn::Sub": "${NetworkStack}-PrivateSubnet1"
          }
        },
        {
          "Fn::ImportValue": {
            "Fn::Sub": "${NetworkStack}-PrivateSubnet2"
          }
        }
      ]
    },
    "Timeout": 300,
    "Handler": "YadaYada.BubbleBoy.WebApi::YadaYada.BubbleBoy.WebApi.Functions.ProductMaker::DequeueInstance",
    "MemorySize": 3008,
    "Role": {
      "Fn::GetAtt": [
        "DequeueInstanceRole",
        "Arn"
      ]
    },
    "Code": {
      "S3Bucket": {
        "Ref": "YadaYadaBubbleBoyWebApiBucket"
      },
      "S3Key": {
        "Ref": "YadaYadaBubbleBoyWebApiKey"
      }
    }
  },
  "DeletionPolicy": "Delete"
},

【讨论】:

  • 如果您使用 Bisque (nuget.org/packages/YadaYada.Bisque.Aws),您只需自动获取它,因为 Bisque 会读取您的函数签名并查找 SQSEvent 参数。然后它创建队列和映射(和函数)
猜你喜欢
  • 2016-04-13
  • 2018-09-24
  • 2020-04-27
  • 1970-01-01
  • 2017-09-14
  • 2020-07-18
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
相关资源
最近更新 更多