[英]Lambda SNS Not Printing Message
我是 Lambda 和 AWS 的新手,但我想做的是制作一個 function 來檢查特定條件下的構建器標簽並返回操作說明。 該代碼在控制台中成功,但它通過電子郵件發送 sns 消息,但是,它不是我期待的 output,它只是“無”。 output 將是多行實例,邏輯在它們上面運行
import boto3
import collections
import datetime
import time
import sys
import json
import logging
from botocore.exceptions import ClientError
sns = boto3.client('sns', 'us-east-1')
ec = boto3.client('ec2', 'us-east-1')
ec2 = boto3.resource('ec2', 'us-east-1')
SNS_TOPIC_ARN = 'arn'
AWS_REGION = 'us-east-1'
def lambda_handler(event, context):
instance_ids = []
reservations = ec.describe_instances().get('Reservations', [])
buildertag = [{
"Key": "builder",
"Value": "unknown"
}]
for reservation in reservations:
for instance in reservation['Instances']:
tags = {}
for tag in instance['Tags']:
tags[tag['Key']] = tag['Value']
# Checks if builder tag exist and adds if it doesn't #
if not 'builder' in tags:
print(instance['InstanceId'] + " does not have builder tag. Adding 'builder' tag with value of 'unknown'.")
ec.create_tags(Resources=[instance["InstanceId"]], Tags=buildertag)
missingtag = print(instance['InstanceId'] + " does not have builder tag. Adding 'builder' tag with value of 'unknown'.")
sns = boto3.client('sns')
sns.publish(
TopicArn = 'arn',
Subject = 'Incorrect Tags Dectected',
Message = str(missingtag),
)
# Checks for unknown tag value and print output #
elif tags['builder'] in ['Unknown', 'unknown']:
print(instance['InstanceId'] + " has unknown for it's builder tag value.")
# Checks for null tag value and print output #
elif tags['builder'] in ['']:
print(instance['InstanceId'] + " has no value for builder tag.")
ec.create_tags(Resources=[instance["InstanceId"]], Tags=buildertag)
# Checks for builder tags equal to approved values and print output #
elif tags['builder'] in ['x', 'y', 'z', 'a', 'b']:
print(instance['InstanceId'] + " has an approved builder tag value.")
# Checks for builder tags equal to unapproved values and print output #
elif tags['builder'] not in ['x', 'y', 'z', 'a', 'b']:
print(instance['InstanceId'] + " has a incorrect builder tag value.")
您沒有從lambda_handler
返回任何內容,因此 output 只是None
。 您必須將return
語句添加到您的代碼中,其中包含您想要從 lambda 到 output 的實際返回值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.