<p>您的处理函数应定义为:</p>
<pre class="lang-py prettyprint-override"><code>def lambda_handler(event, context):
lightID = event
...
</code></pre>
<p>从<a href="https://docs.aws.amazon.com/lambda/latest/dg/python-programming-model-handler-types.html" rel="nofollow noreferrer">AWS Lambda Function Handler in Python - AWS Lambda</a>:</p>
<blockquote>
<p><code>event</code> – AWS Lambda uses this parameter to pass in event data to the handler. This parameter is usually of the Python dict type. It can also be list, str, int, float, or NoneType type.</p>
<p>When you invoke your function, you determine the content and structure of the event. When an AWS service invokes your function, the event structure varies by service.</p>
<p><code>context</code> – AWS Lambda uses this parameter to provide runtime information to your handler.</p>
</blockquote>
<p>很可能您的<code>event</code>只包含代码所示的Light ID,但是最好调用它<code>event</code>以识别它是传递到Lambda函数中的值,但是您的代码随后选择将其解释为<code>lightID</code></p>
<p>另外,您的代码<strong>不应该调用<code>lambda_handler</code>函数。AWS Lambda服务将在调用函数时执行此操作</p>
<p>最后,您可能希望利用Python 3.x f-strings,它可以生成更漂亮的格式字符串:</p>
<pre class="lang-py prettyprint-override"><code>import requests
import json
bridgeIP = "PublicIPAddress:999"
userID = "someone"
def lambda_handler(event, context):
lightID = event
url = f"http://{bridgeIP}/api/{userID}/lights/{lightID}"
r = requests.get(url)
data = json.loads(r.text)
r = requests.put(f"{url}/state", json.dumps({'on': not data["state"]["on"]}))
</code></pre>