私はIoT ButtonとAlexaの両方のスキルに対応できるPython Lambda関数を持っています。ラムダ関数をトリガしたAWSサービスを特定できますか?
event
またはcontext
をハンドラ関数に渡して、関数(AlexaまたはIoT)をトリガしたサービスを識別する方法はありますか?
私はIoT ButtonとAlexaの両方のスキルに対応できるPython Lambda関数を持っています。ラムダ関数をトリガしたAWSサービスを特定できますか?
event
またはcontext
をハンドラ関数に渡して、関数(AlexaまたはIoT)をトリガしたサービスを識別する方法はありますか?
をトリガしたどのイベント決定クラウド内のイベントデータを記録します
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def my_logging_handler(event, context):
logger.info('got event{}'.format(event))
下のようCloudWatchの中でイベントをログに記録することができますこれを確実に達成する。あなたが得ることができる最も近いものは、さまざまなサービスによって生成されたさまざまなイベントの内容に慣れ親しむことです(興味があるシリーズのそれぞれに存在する、信頼性の高い独自のキーを特定することを望みます) 、例えばそれはあなたが
if 'distinctKey' in event.keys():
# ...
でただし、これは信頼性のアプローチは、ほとんどありません関心のあるキーまたはキーのセットは、いつもであり、サービスのイベントではとなり、ユニークなものはとなります。
あなたは読んで、これはあなたが見る見ると、方法はありませんラムダ
問題は、私がアクセスできる 'event'または' context'のどの部分が、私が関数を呼び出す(IoTかASK)の導出を決定するのに使うことができるかです。あるいは、それが不可能な場合にのみ、他の情報源(ログのようなもの)をどうやって調べるか、どうすればよいでしょうか。 – orome
これは本当に質問への答えを提供するわけではありませんが、これをデバッグして自分で答えを見つける方法を示しています。 –
私はAlexaまたはIoTのどちらでも作業していませんが、イベントオブジェクトのスキームは非常に異なっている必要があります。どちらも完全にユーザーの制御下にあり、あなたは意図的にそれらを区別できないようにしますが、その場合は、たとえば 'eventSource'フィールドを追加することによって区別できるようにしてください) – Leon
@ Leon:わかりません。これはどういう意味ですか? – orome
[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)を参照してください。 –