【问题标题】:AWS CloudFormation for Lambda and SNS Topic适用于 Lambda 和 SNS 主题的 AWS CloudFormation
【发布时间】:2017-07-05 23:27:31
【问题描述】:

我有一个用于创建 Lambda 和 SNS 主题的云形成脚本。

这是用于创建 SNS 主题和 Lambda 的 yml 脚本,

SampleSNSTopic:
Type: AWS::SNS::Topic
Properties:
  DisplayName: sampleTopic
  TopicName: sampleTopic
SampleLambdaFunction:
Type: AWS::Lambda::Function
DependsOn: SampleSNSTopic
Properties:
  Handler: index.handler
  Description: Sample Lambda function
  FunctionName: TestFunction
  Role: !Ref SomeRole
  Code:
    ZipFile: !Sub |
      var AWS = require("aws-sdk");
      exports.handler = function(event, context) {
          var eventText = JSON.stringify(event, null, 2);
          var sns = new AWS.SNS();
          var params = {
              Message: eventText,
              TopicArn: !Ref SampleSNSTopic
          };
          sns.publish(params, context.done);
      };
  Runtime: nodejs6.10
  Timeout: 300
  MemorySize: 512

问题:在主题 ARN 上使用 !Ref 失败,

TopicArn: !Ref SampleSNSTopic

这是正确的做法吗?还是有其他方法可以使用我的 SNS 主题的 ARN 在云形成中创建 lambda?

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-sdk amazon-cloudformation amazon-sns


    【解决方案1】:

    这有点像这个问题的答案:

    CloudFormation - Access Parameter from Lambda Code

    本质上,您将 Ref 值分配给 Environment 键/值:

    Properties:
      Handler: index.handler
      Description: Sample Lambda function
      FunctionName: TestFunction
      Environment:
        Variables:
          SNS_TOPIC_ARN: !Ref SampleSNSTopic
    

    然后您可以在 Lambda 中访问它:

      Code:
        ZipFile: !Sub |
          var AWS = require("aws-sdk");
          exports.handler = function(event, context) {
              var eventText = JSON.stringify(event, null, 2);
              var sns = new AWS.SNS();
              var params = {
                  Message: eventText,
                  TopicArn: process.env.SNS_TOPIC_ARN
              };
              sns.publish(params, context.done);
          };
    

    【讨论】:

    • 太棒了!像魅力一样工作。
    猜你喜欢
    • 2017-12-14
    • 2021-05-14
    • 1970-01-01
    • 2022-10-13
    • 2018-11-01
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    相关资源
    最近更新 更多