我有一个向 SNS 主题发送通知的 AWS λ。
Lambda函数
def send_sns_notification(message):
sns = boto3.client('sns')
response = sns.publish(
TopicArn='arn:aws:sns:ca-central-1:xxxxx',
Message=message,
MessageAttributes={
'AWS.SNS.SMS.SenderID': {
'DataType': 'String',
'StringValue': 'Airflow'
},
'AWS.SNS.SMS.SMSType': {
'DataType': 'String',
'StringValue': 'Transactional'
}
}
)
我们使用云形成模板来部署 SNS 主题
、AWS Lambda
和 SNS 订阅
。如何访问通过云信息创建的主题的 ARN。
云形成模板
Lambda:
Type: AWS::Serverless::Function
Properties:
Description: sends sns notification if dag in airflow fails
FunctionName: "airflow-notification"
Handler: send_sns_notification.py
Runtime: python3.6
ReservedConcurrentExecutions: !Ref AWS::NoValue
Role: !FindInMap [EnvVariables, Parameters, LambdaRole]
VpcConfig:
SecurityGroupIds:
- !FindInMap [EnvVariables, Parameters, VPCSecurityGroupId]
SubnetIds:
- !FindInMap [EnvVariables, Parameters, VPCSubnetId1]
- !FindInMap [EnvVariables, Parameters, VPCSubnetId2]
SNSTopic:
Type: AWS::SNS::Topic
Properties:
TopicName: !FindInMap [EnvVariables, Parameters, SNSTopicName]
DisplayName: airflow
KmsMasterKeyId: !FindInMap [EnvVariables, Parameters, SNSCMK]
SNSSubscription:
Type: AWS::SNS::Subscription
Properties:
Endpoint: gaurangnshah@gmail.com
Protocol: email
TopicArn: !Ref 'SNSTopic'
另一种办法如下:
account_id = boto3.client('sts').get_caller_identity().get('Account')
currentRegion = os.environ['AWS_REGION']
# write logic to define SNS_TOPIC variable, you can keep/form it from environment variables or hardcode or other suitable alternative. Here, SNS_TOPIC will hold only name of the SNS Topic
最后,使用以下语句之一设置/形成主题Arn的值;
TopicArn=“:”。加入([“arn”,“aws”,“sns”,currentRegion,account_id,sns_TOPIC])
或
TopicArn=“:”.join([“arn:aws:sns:ca-central-1”,sns_TOPIC])
将 ARN 作为环境变量传入。
Lambda:
Type: AWS::Serverless::Function
Properties:
Description: sends sns notification if dag in airflow fails
FunctionName: "airflow-notification"
Handler: send_sns_notification.py
Runtime: python3.6
ReservedConcurrentExecutions: !Ref AWS::NoValue
Role: !FindInMap [EnvVariables, Parameters, LambdaRole]
VpcConfig:
SecurityGroupIds:
- !FindInMap [EnvVariables, Parameters, VPCSecurityGroupId]
SubnetIds:
- !FindInMap [EnvVariables, Parameters, VPCSubnetId1]
- !FindInMap [EnvVariables, Parameters, VPCSubnetId2]
Environment:
Variables:
TopicArn: !Ref 'SNSTopic'
问题内容: 我的应用程序调用了一个返回字典的API。我想将信息从此字典传递给视图中的JavaScript。具体来说,我在JS中使用Google Maps API,因此我希望向其传递包含长/短信息的元组列表。我知道会将这些变量传递给视图,以便可以在HTML中使用它们,但是如何将它们传递给模板中的JavaScript? 问题答案: 将几乎所有Python对象都转换为JavaScript对象的理想方法是
我的应用程序调用一个返回字典的API。我想将这个dict中的信息传递给视图中的JavaScript。我在JS中特别使用了Google Maps API,所以我想传递给它一个包含long/lat信息的元组列表。我知道会将这些变量传递给视图,以便它们可以在HTML中使用,但是我如何才能在模板中将它们传递给JavaScript呢?
问题内容: 尝试访问传递给模板的函数时出现错误: 有人可以让我知道我在做什么错吗? 模板文件(struct.tpl): 调用文件: 这是用于生成struct样板代码的程序(以防万一有人想知道为什么我要在模板中这样做)。 问题答案: 自定义函数需要在解析模板之前进行注册,否则解析器将无法分辨标识符是否为有效的函数名。模板被设计为可静态分析的,这是必需的。 您可以先使用创建一个新的未定义模板,并且除了
问题内容: 我想将两个数据对象传递给Go Template。一个是MongoDB查询结果,另一个是整数数组。 MongoDB查询: 我想通过以下代码发送“结果”和一个int数组 如果只有db结果,我们可以将其用作 在模板中,我们可以访问它{{.Name}}等(其中Name是[] User的结构字段) 请告诉我如何传递这些数据以及如何在模板中访问它们。 问题答案: 你可以仅通过一个单一的值,但该值可
我有一个自定义函数,我想在刀片模板中传递它。这里是功能: 用法如下: 是否可以将自定义功能传递给刀片模板?非常感谢。
我有使用Springboot和Thymeleaf模板编写的简单Web应用程序。报告控制器从表单接收数据并构建TestPlanReportReportACK对象,该对象作为模型属性添加如下: 我可以在“图表”thymeleaf模板中使用该数据并显示我需要的数据,但我需要在单击按钮时将完全相同的对象发送回控制器,但我得到TestPlanReportACK对象作为设置空值的参数。 以下是我的按钮在图表模