2017-03-07 3 views
0

私はすべてのスナップショットを一覧表示するためにboto3を使用しています。 しかし、関数ec2.snapshots.all()を使用し、forを使ってiterateを試してみると、動作していません。機能ec2.snapshots.all not iterate boto3 lambda

 
from __future__ import print_function 
from boto3 import resource 

REGION = "us-east-1" 

def lambda_handler(event, context): 
    ec2 = resource("ec2", region_name=REGION) 
    all_snapshots = ec2.snapshots.all() 
    for snapshot in all_snapshots: 
     print("SnapshotIteration") 

結果は次です:

 
{ 
    "errorMessage": "2017-03-07T00:08:56.583Z 3faed105-02ca-11e7-b637-cfb921e4e3cc Task timed out after 3.00 seconds" 
} 
+1

スナップショットはいくつありますか?私はそれがあまりにも多くの方法だと思います。あなたは何をしようとしているのですか? – helloV

+0

私は@helloVに同意します - コマンドラインで "aws ec2 describe-snapshots"を実行するのにどれくらい時間がかかりますか?私たちにはかなりの数があり、それが戻るには約15秒かかりました。あなたのタイムアウトが3秒しかないのはなぜですか? – stdunbar

+0

この関数がすべてのパブリックスナップショットを返したことはわかりませんでした。タイムアウトを30秒に増やすことでテストしましたが、明らかに十分ではありません。私は、John Rotensteinの指摘通り、自分のオーナーIDを示すフィルタを適用しました。 –

答えて

0

私はそれが非常に多くすることができ、すべての公的に利用可能なスナップショットを、リストされて疑います。所有者であるスナップショットに制限する方が良いです。

describe-snapshots()関数の戻り値をスコープダウンできるパラメータはOwnerIdsです。

snapshot_iterator = ec2.snapshots.filter(
    DryRun=True|False, 
    SnapshotIds=[ 
     'string', 
    ], 
    OwnerIds=[ 
     'string', 
    ], 
    RestorableByUserIds=[ 
     'string', 
    ], 
    Filters=[ 
     { 
      'Name': 'string', 
      'Values': [ 
       'string', 
      ] 
     }, 
    ], 
    NextToken='string', 
    MaxResults=123 
) 

役立つかもしれない:

はここsnapshotsイテレータにフィルタを使用する方法を示しboto3 snapshot documentationからの例です。

+0

この関数がすべてのパブリックスナップショットを返したことはわかりませんでした。私は自分の所有者IDを示すフィルタを適用し、今は動作します。どうもありがとうございました。 –

関連する問題