2015-11-26 4 views
2

Я пытаюсь изменить код запланированных событий aws-lambda по умолчанию, чтобы сделать вызов SNS. Всякий раз, когда возникает ошибка, я хочу публиковать в теме SNS вместо повышения ошибки, а затем использовать cloudwatch.AWS boto вызовы функций от Лямбда-кода

Импорт невозможен. Любые идеи, почему это не удается.

Сообщение об ошибке, когда я пытаюсь тест:

Unable to import module 'lambda_function': cannot import name sns 

Lambda код:

from __future__ import print_function 

from datetime import datetime 
from urllib2 import urlopen 
from boto3 import sns #I have also tried import boto3 
import json 

SITE = 'http://my-site.com/' # URL of the site to check 
EXPECTED = 'My Site' # String expected to be on the page 


def validate(res): 
    '''Return False to trigger the canary 

    Currently this simply checks whether the EXPECTED string is present. 
    However, you could modify this to perform any number of arbitrary 
    checks on the contents of SITE. 
    ''' 
    return EXPECTED in res 


def lambda_handler(event, context): 
    print('Checking {} at {}...'.format(SITE, event['time'])) 
    try: 
     if not validate(urlopen(SITE).read()): 
      raise Exception('Validation failed') 
    except: 
     print('Check failed!') 
     # pub = boto.sns.connect_to_region('us-east-1').publish(topic='<my topic name'',message='site down!') 
     raise 
    else: 
     print('Check passed!') 
     return event['time'] 
    finally: 
     print('Check complete at {}'.format(str(datetime.now()))) 

ответ

4

Это, как я импортировать SNS с помощью Python:

import boto 
sns = boto.connect_sns() 

ИЛИ

import boto3 
client = boto3.client('sns') 
+0

Это код лямбда-функции? –

+0

Первый из функций create_lambda – Raghav

+0

Спасибо @Raghav. Это сработало. –

 Смежные вопросы

  • Нет связанных вопросов^_^