2017-03-08 11 views
1

AWSアカウントが20個あり、各アカウントの10個のリージョンにリソースを作成します。 AWSのリソース(ELB、AMI、EBSのスナップショットに適切なタグが付いていること)を確実にする必要があります。アカウントをスキャンし、適切にタグ付けされていない上記のリソースを削除するサービスを定期的に実行する必要があります。これをサーバーレスにしたいと思っており、ラムダの使用を検討していました。しかし、ラムダには2つの問題があります。AWSのステップ関数forループ

  1. ラムダタイムアウト - 現在は5分です。
  2. スロットルエラー

我々は最初のアカウント処理が完了した後、我々は(我々は数分間ハード睡眠を配置し、次のアカウントの処理を開始することができます)、次のアカウントを処理することを確認する必要があります。

誰かが同様のシナリオに直面したことがありますか?その場合、どのように達成されましたか?

最悪のシナリオ:ECSを使用します。

答えて

0

まず、最も内側のタスクは5分以内に確実に完了できますか?もしそうならラムダは良いフィット感です。あなたの状況は良いフィット感に見えます。

次に、サポートチケットを使用して上限を要求することで、簡単にスロットルを増やすことができます。

最後に、これをいくつかの小さな関数に分割してみてください。このような多分何か:

  • 削除-リソース - 単一のタグなしリソースを削除
  • - タグなし - リソースを取得 - アカウントにタグ付けされていないリソースを取得し、「削除リソースを」async.eachループで呼び出します
  • 取得-アカウント - アカウントのリストを取得し、私は実際にSNSによってトリガ私の機能を有することを好むのではなく、それらを直接呼び出すasync.eachループ

には、「get-タグなし・リソースを」呼び出していますアイデアを得る。お役に立てれば。

+0

私はこのアプローチを好んで実装しましたが、アカウントがたくさんある場合は、それぞれのアカウントの間に数秒間待つ必要があります。その理由は、各口座の各地域ごとに、少なくとも2件のコール(サービスごと)が必要であるためです。 2番目と3番目のラムダ関数には、ほとんどAPIコールがありません。 スロットルエラーは最初の部分で発生し、STEP関数を使用して各アカウント間で待機/スリープ条件を追加できるようにしました。 –