适用于 Lambda 和 SNS 主题的 AWS CloudFormation
AWS CloudFormation for Lambda and SNS Topic
我有一个云形成脚本,用于创建 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?
这类似于这个问题的答案:
本质上,您将 Ref 值分配给环境 key/value:
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);
};
我有一个云形成脚本,用于创建 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?
这类似于这个问题的答案:
本质上,您将 Ref 值分配给环境 key/value:
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);
};