gpt4 book ai didi

amazon-web-services - 适用于 Lambda 和 SNS 主题的 AWS CloudFormation

转载 作者:行者123 更新时间:2023-12-03 07:37:31 25 4
gpt4 key购买 nike

我有一个云形成脚本,用于创建 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?

最佳答案

这类似于这个问题的答案:

CloudFormation - Access Parameter from Lambda Code

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

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);
};

关于amazon-web-services - 适用于 Lambda 和 SNS 主题的 AWS CloudFormation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44937508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com