2017-08-02 12 views
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() 

私はそれを実行しようとすると、私は次のエラーを取得:どこでも私はFILTER変数が複数の引数を処理することができます見て何とか私は使用することができていますが、

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 

を1?

私はPython 3.6ランタイムを使用しています。私は、(時間にのみ基づいて)サーバーを起動するために正しく動作する他の機能と同じ役割を使用しています。

アドバイスをお願いしますか?ありがとうございました!

+0

これは、あなたがエラーを理解するのに役立つかもしれません:https://stackoverflow.com/questions/23944657/typeerror-method-takes-1-positional-議論2だったが、23944658 – HakRo

+0

ec2.instances.filter(...) – jarmod

答えて

1

これはトリック@最後の行でした!正しい方向に私を指摘あなたのコメントをありがとう:)

startingUp = ec2.instances.filter(InstanceIds=stoppedInstances).start() 
関連する問題