type
status
date
slug
summary
tags
category
icon
password
理論
1. Step Functionsの本質
- 複雑なワークフローを管理するために使用されます。複数のAWSサービスや処理を順番に実行したり、条件に応じて分岐させることができます。
- 状態管理ができ、エラーハンドリングやリトライ機能も簡単に組み込めます。
- 状態遷移の追跡が可能なので、処理の進行状況を可視化できます。
2. Lambdaの本質
- 単一のイベント駆動型処理を実行するために使用されます。短時間で終了するタスクを実行するのに適しています。
- 簡単な処理やイベントに応じた動作を行うのには最適ですが、複雑なワークフローの管理や状態遷移の追跡には不向きです。
3. 適切なツールの選択
- Step Functionsは、複数の処理を順番に実行する必要がある場合、または状態遷移やエラーハンドリングが重要な場合に最適です。
- Lambdaは、簡単な処理や短時間で完了するタスクをトリガーに基づいて実行するのに向いています。
4. 重要な選択基準
- 複雑なワークフローや状態管理が必要ならStep Functions。
- シンプルな処理や迅速なイベント駆動型アクションにはLambda。
例えば、ECRのスキャン結果に基づくタグ削除と通知送信の2つの処理を順番に実行し、エラーハンドリングを組み込む必要があるため、Step Functionsが適切です。
実践
略
一問道場
質問 #224
トピック 1
ある企業が AWS クラウドでコンテナ化されたアプリケーションを運用しています。このアプリケーションは Amazon Elastic Container Service (Amazon ECS) を使用して、Auto Scaling グループ内の Amazon EC2 インスタンスで実行されています。また、企業は Amazon Elastic Container Registry (Amazon ECR) を使用してコンテナイメージを保存しています。新しいイメージバージョンがアップロードされると、そのイメージに一意のタグが付与されます。
企業は、新しいイメージバージョンの脆弱性とセキュリティの問題を検査するソリューションを必要としています。このソリューションは、Critical または High の重大な問題が見つかったイメージタグを自動的に削除し、その削除が発生した際に開発チームに通知する必要があります。
要件を満たすソリューションはどれですか?
A. リポジトリで「プッシュ時にスキャン(scan on push)」を設定します。スキャンが完了したら、Critical または High の検出結果があるイメージについて、Amazon EventBridge を使って AWS Step Functions のステートマシンを起動します。このステートマシンで該当するイメージタグを削除し、Amazon Simple Notification Service (Amazon SNS) を通じて開発チームに通知します。
B. リポジトリで「プッシュ時にスキャン(scan on push)」を設定し、スキャン結果を Amazon Simple Queue Service (Amazon SQS) に送信します。新しいメッセージが SQS キューに追加されると、AWS Lambda 関数を起動します。この Lambda 関数で、Critical または High の問題が検出されたイメージタグを削除し、Amazon Simple Email Service (Amazon SES) を使って開発チームに通知します。
C. 毎時手動でイメージスキャンを開始するように AWS Lambda 関数をスケジュールします。スキャンが完了したら、Amazon EventBridge を使って別の Lambda 関数を起動します。2 番目の Lambda 関数で、Critical または High の問題が検出されたイメージタグを削除し、Amazon Simple Notification Service (Amazon SNS) を使って開発チームに通知します。
D. リポジトリで「定期的なスキャン(periodic image scan)」を設定し、スキャン結果を Amazon Simple Queue Service (Amazon SQS) に送信します。SQS キューに新しいメッセージが追加されると、AWS Step Functions のステートマシンを起動します。このステートマシンで Critical または High の問題が検出されたイメージタグを削除し、Amazon Simple Email Service (Amazon SES) を使って開発チームに通知します。
解説
A. リポジトリで「プッシュ時にスキャン(scan on push)」を設定し、EventBridge を使って AWS Step Functions を呼び出し、タグ削除と通知
- scan on pushは、コンテナイメージがECRにプッシュされるたびに自動的にスキャンを実行するオプションです。
- EventBridgeを使って、スキャン結果が完了した後に自動的に AWS Step Functions ステートマシンを呼び出し、Critical または High の問題が見つかった場合にタグを削除します。
- 最後に、SNSで開発チームに通知します。
これは、最も適切な選択肢です。なぜなら、自動化されたワークフローで脆弱性スキャン、タグ削除、通知を実行するために、AWSのサービス(EventBridge, Step Functions, SNS)を組み合わせており、要件に完全に一致します。
B. プッシュ時にスキャンを設定し、SQS にスキャン結果を送信し、Lambda でタグ削除と通知
- SQSを利用して、スキャン結果をキューに送信し、そのメッセージをトリガーにLambda関数を実行してタグを削除します。
- SESを使って通知を送信します。
この方法も有効ですが、Lambda と SQSを使った実装は少し複雑になります。SNSではなくSESで通知を送る点が若干の違いです。
C. 定期的なスキャンと EventBridge と Lambda 関数によるタグ削除と通知
- 定期的なスキャンをスケジュールして、定期的にイメージをチェックします。
- スキャンが完了すると、EventBridgeで別の Lambda 関数をトリガーしてタグ削除し、通知を行います。
この方法は **「手動でのスキャン開始」**を必要とし、スキャンの頻度に応じてタグ削除が行われるため、より手動的で効率が悪くなります。さらに、スキャンのタイミングが必ずしも新しいイメージがプッシュされたタイミングと一致しない可能性があるため、要件にぴったり合致しない可能性があります。
D. 定期的なスキャン、SQS、Step Functions によるタグ削除と通知
- 定期的なスキャンを設定して、結果を SQS に送信し、そのメッセージをトリガーに Step Functions を使ってタグ削除し、SES で通知します。
こちらも手動でのスキャン開始と同様に効率が悪く、スキャン結果が即座に反映されないため、Aよりも適していません。
結論:
最も効率的で、要件を満たす選択肢は A です。「scan on push」 を使ってスキャンを自動的に実行し、EventBridge でプロセスを自動化することが、脆弱性のあるイメージを見逃すことなく迅速に対応するための最適なアプローチです。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/172d7ae8-88e2-8068-bb9c-ed2409ff78b1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章