0
我已經在AWS中創建了一個Python Lambda函數,用於根據部署到它們的TAG啓動一些EC2實例。它檢查實例是否停止並且只運行它們。基於標籤啓動EC2實例的Lambda函數
import boto3
import logging
ec2 = boto3.resource('ec2')
def lambda_handler(event, context):
filters = [{
'Name': 'tag:STARTUP',
'Values': ['YES']
},
{
'Name': 'instance-state-name',
'Values': ['stopped']
}]
instances = instances.filter(Filters=filters)
stoppedInstances = [instance.id for instance in instances]
if len(stoppedInstances) > 0:
startingUp = instances.filter(instances).start()
當我嘗試運行它,我得到以下錯誤:
START RequestId: XXX Version: $LATEST
filter() takes 1 positional argument but 2 were given: TypeError
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 17, in lambda_handler
startingUp = ec2.instances.filter(instances).start()
TypeError: filter() takes 1 positional argument but 2 were given
雖然到處看filter變量能夠處理多個參數,但不知何故,我只能夠使用一?
我正在使用Python 3.6運行時,並且使用與其他正常工作的函數(僅基於時間)啓動服務器相同的角色。
你能提供建議嗎?謝謝!
這可以幫助你理解錯誤:https://stackoverflow.com/questions/23944657/typeerror-method-takes-1-positional-參數 - 但是2 - 給出/ 23944658 – HakRo
ec2.instances.filter(...) – jarmod