2017-03-02 7 views
2

私はIoT ButtonとAlexaの両方のスキルに対応できるPython Lambda関数を持っています。ラムダ関数をトリガしたAWSサービスを特定できますか?

eventまたはcontextをハンドラ関数に渡して、関数(AlexaまたはIoT)をトリガしたサービスを識別する方法はありますか?

+1

私はAlexaまたはIoTのどちらでも作業していませんが、イベントオブジェクトのスキームは非常に異なっている必要があります。どちらも完全にユーザーの制御下にあり、あなたは意図的にそれらを区別できないようにしますが、その場合は、たとえば 'eventSource'フィールドを追加することによって区別できるようにしてください) – Leon

+0

@ Leon:わかりません。これはどういう意味ですか? – orome

+2

[this](http://stackoverflow.com/questions/41814750/how-to-know-event-souce-of-lambda-function-in-itself)の質問には、フォーマットに依存する回答があります[イベントテンプレート](http://docs.aws.amazon.com/lambda/latest/dg/eventsources.html#eventsources-ses-email-receiving)を参照してください。 –

答えて

0

をトリガしたどのイベント決定クラウド内のイベントデータを記録します

import logging 
logger = logging.getLogger() 
logger.setLevel(logging.INFO) 
def my_logging_handler(event, context): 
logger.info('got event{}'.format(event)) 

下のようCloudWatchの中でイベントをログに記録することができますこれを確実に達成する。あなたが得ることができる最も近いものは、さまざまなサービスによって生成されたさまざまなイベントの内容に慣れ親しむことです(興味があるシリーズのそれぞれに存在する、信頼性の高い独自のキーを特定することを望みます) 、例えばそれはあなたが

  1. 成功しあらゆる可能イベントごとに潜在的なサービスによって生成された構造と
  2. を調べて、自信を持って、サービスごとに識別することを必要とするため

    if 'distinctKey' in event.keys(): 
        # ... 
    

    でただし、これは信頼性のアプローチは、ほとんどありません関心のあるキーまたはキーのセットは、いつもであり、サービスのイベントではとなり、ユニークなものはとなります。

0

あなたは読んで、これはあなたが見る見ると、方法はありませんラムダ

+0

問題は、私がアクセスできる 'event'または' context'のどの部分が、私が関数を呼び出す(IoTかASK)の導出を決定するのに使うことができるかです。あるいは、それが不可能な場合にのみ、他の情報源(ログのようなもの)をどうやって調べるか、どうすればよいでしょうか。 – orome

+0

これは本当に質問への答えを提供するわけではありませんが、これをデバッグして自分で答えを見つける方法を示しています。 –