Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从AWS lambda向Microsoft团队发送通知的python代码_Python_Amazon Web Services_Aws Lambda - Fatal编程技术网

从AWS lambda向Microsoft团队发送通知的python代码

从AWS lambda向Microsoft团队发送通知的python代码,python,amazon-web-services,aws-lambda,Python,Amazon Web Services,Aws Lambda,其想法是将来自cloud watch alarm的消息通知给微软团队。这些消息位于云监视报警描述中 下面是传递给lambda的JSON: { 'Records': [{ 'EventSource': 'aws:sns', 'EventVersion': '1.0', 'EventSubscriptionArn': '71d-4f70-927e-0a420040a154', 'Sns': { 'Type': 'Notifica

其想法是将来自cloud watch alarm的消息通知给微软团队。这些消息位于云监视报警描述中

下面是传递给lambda的JSON:

{   'Records': [{       'EventSource': 'aws:sns',       'EventVersion': '1.0',      'EventSubscriptionArn': '71d-4f70-927e-0a420040a154',       'Sns': {            'Type': 'Notification',             'MessageId': '152c308c--bca8-67281c9c3c36',',           'Subject': 'ALARM: "StoreException-" in ()',            'Message': '{"AlarmName":"StoreException-WAS102","AlarmDescription":"StoreClosedException-in-1.1.1.1","AWSAccountId":"xxxxx","NewStateValue":"ALARM"}}
下面是我的python lambda代码:

    import urllib3 
    import json
    http = urllib3.PoolManager() 
    def lambda_handler(event, context): 
        print(event)
        message = event['Records'][0]['Sns']['Message']
        alarm_name = message['AlarmName']
        app_name = message['AlarmDescription']
        msg = {
       
            "text": app_name
        }
        encoded_msg = json.dumps(msg).encode('utf-8')
        resp = http.request('POST',url, body=encoded_msg)
    
但我得到的错误如下:

> string indices must be integers: TypeError Traceback (most recent call
> last):   File "/var/task/lambda_function.py", line 15, in
> lambda_handler
>     "text": app_name TypeError: string indices must be integers

我想我在使用dict时遇到了这个问题,但不知道如何让它工作。有人能帮我吗。

您的JSON有多个问题-请尝试在线验证程序查看。这是传递的真实数据吗?是的,这是传递的json。我已经删除了json的一些部分,因为它包含个人数据。。但总体结构是这样的。我所做的迭代是正确的。报警名称=消息['AlarmName']应用名称=消息['AlarmDescription']当我写入打印(应用名称)时,我能够获得报警描述值。但是,当json由sns触发时,我得到的字符串索引错误您的json有多个问题-请尝试在线验证程序查看。这是传递的真实数据吗?是的,这是传递的json。我已经删除了json的一些部分,因为它包含个人数据。。但总体结构是这样的。我所做的迭代是正确的。报警名称=消息['AlarmName']应用名称=消息['AlarmDescription']当我写入打印(应用名称)时,我能够获得报警描述值。但是当json被sns触发时,我得到了字符串索引错误