我在AWS中创建了一个lambda函数,显然它引发了错误。在这里:
import json
from urllib.error import HTTPError, URLError
from urllib.request import Request, urlopen
import boto3
#Create a SSM Client to access parameter store
ssm = boto3.client('ssm')
def lambda_handler(event, context):
# TODO implement
#return {
# 'statusCode': 200,
# 'body': json.dumps('Hello from Lambda!')
#}
slack_message = {
'text' = f'Hello World'
}
#retrieve webhook url from parameter store
webhook_url = ssm.get_parameter(Name='slackwebhookurl', WithDecryption=True)
#make request to the API
req = Request(webhook_url['Parameter']['Value'],
json.dumps(slack_message).encode('utf-8'))
try:
response = urlopen(req)
response.read()
print("Messge posted to Slack")
except HTTPError as e:
print(f'Request failed: {e.code} {e.reason})
except URLError as e:
print(f'Server Connection failed: {e.reason})
它是由AWS SNS通知触发的。它应该获取一个松弛频道的webhook网址,然后将通知发送给Slack。
谁能看到问题所在?
如果不是很明显,有人可以引导我进入有关如何测试AWS Lambda函数的教程吗?
谢谢。
答案 0 :(得分:1)
AWS Lambda具有内置的测试功能。您可以单击测试按钮并配置输入,以防函数使用来自event
的值。
日志将显示在Lambda控制台中。
还要确保与AWS Lambda函数关联的IAM角色具有AWSLambdaBasicExecutionRole
权限策略,以便它可以写入CloudWatch Logs。然后,您可以转到该功能的“监视”选项卡,然后单击在CloudWatch中查看日志以查看过去的日志。
您可以在代码中添加print()
语句,这些语句将显示在日志中。