最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

AWS lambda从CloudFormation读取参数或输出

IT培训 admin 6浏览 0评论

AWS lambda从CloudFormation读取参数或输出

看起来非常简单,但很难找到很好的例子。 因此,任务如下:AWS lambda向AWS-SQS发送一些消息。

AWS lambda代码包含以下行:

var QUEUE_URL = '';",

为了摆脱这个代码,有两种选择:

  1. 创建将根据区域和队列名称SQS has predictable names查找此队列的查询;
  2. 创建Cloudformation脚本并在那里指定这些依赖项。

基于这一事实,周期性触发器(lambda)将每天工作多次,最好指定此依赖性duting部署。

通常,它看起来像是直接的任务和云编队脚本创建:

 "Resources": {
"LF2HNR1": {
  "Type": "AWS::Lambda::Function",
    "Properties": {
    "Description": "This is  lambda trigger",
    "Handler": "index.myHandler",
    "Runtime": "nodejs",
    "Timeout": "300",

并且还指定了依赖于SQS的依赖:

 "DependsOn": [
    "SQSQ562D4"
  ]
},
"SQSQ562D4": {
  "Type": "AWS::SQS::Queue",
  "Properties": {},

  }

但是,如何以编程方式获取lambda代码中的SQS url并不是一件简单的任务:

    exports.handler = function(event, context) {
 var params = {
    MessageBody: JSON.stringify(event),
 var QUEUE_URL = ????
回答如下:

我建议你检索SQS URL并将其用作CloudFormation输出:

"Outputs" : {
    "SQSQ562D4" : {
      "Description" : "URL of the source queue",
      "Value" : { "Ref" : "SQSQ562D4" }
    }
}

授予你的Lambda函数cloudformation:DescribeStacks权限,以读取CloudFormation堆栈的输出,并在运行时在代码中加载此输出以访问SQS URL

编辑:请勿使用以下答案中的方法。它在函数运行时加载资源配置(队列URI),而不是在Lambda Function部署时注入它。以下方法增加了延迟,可能存在AWS服务速率限制的随机问题,并且可能依赖于AWS​​ CloudFormation API。

AWS lambda从CloudFormation读取参数或输出

看起来非常简单,但很难找到很好的例子。 因此,任务如下:AWS lambda向AWS-SQS发送一些消息。

AWS lambda代码包含以下行:

var QUEUE_URL = '';",

为了摆脱这个代码,有两种选择:

  1. 创建将根据区域和队列名称SQS has predictable names查找此队列的查询;
  2. 创建Cloudformation脚本并在那里指定这些依赖项。

基于这一事实,周期性触发器(lambda)将每天工作多次,最好指定此依赖性duting部署。

通常,它看起来像是直接的任务和云编队脚本创建:

 "Resources": {
"LF2HNR1": {
  "Type": "AWS::Lambda::Function",
    "Properties": {
    "Description": "This is  lambda trigger",
    "Handler": "index.myHandler",
    "Runtime": "nodejs",
    "Timeout": "300",

并且还指定了依赖于SQS的依赖:

 "DependsOn": [
    "SQSQ562D4"
  ]
},
"SQSQ562D4": {
  "Type": "AWS::SQS::Queue",
  "Properties": {},

  }

但是,如何以编程方式获取lambda代码中的SQS url并不是一件简单的任务:

    exports.handler = function(event, context) {
 var params = {
    MessageBody: JSON.stringify(event),
 var QUEUE_URL = ????
回答如下:

我建议你检索SQS URL并将其用作CloudFormation输出:

"Outputs" : {
    "SQSQ562D4" : {
      "Description" : "URL of the source queue",
      "Value" : { "Ref" : "SQSQ562D4" }
    }
}

授予你的Lambda函数cloudformation:DescribeStacks权限,以读取CloudFormation堆栈的输出,并在运行时在代码中加载此输出以访问SQS URL

编辑:请勿使用以下答案中的方法。它在函数运行时加载资源配置(队列URI),而不是在Lambda Function部署时注入它。以下方法增加了延迟,可能存在AWS服务速率限制的随机问题,并且可能依赖于AWS​​ CloudFormation API。

发布评论

评论列表 (0)

  1. 暂无评论