Step Functions
- Lambda 関数を組み合せてワークフロー化するサービスです。What is AWS Step Functions?
- JSON でステートマシンを記述します。
- サンプルワークフローが多数 AWS 上に公開されています。
- 人間の承認フローを組込むこともできます。
- Lambda Task
- Activity Task
- Service Task → サポートされている AWS サービスへの接続。
- Lambda、AWS Batch、ECS task、
- DynamoDB、
- SQS、SNS、等 との統合も可能です。Call other AWS services
- 注意: AWS Mechanical Turk はサポートされていません。
- Wait Task
- Lambda 関数単体と比較して、タイムアウトが 1 年と長く確保できます。Quotas
- Step Function (ステートマシン) から Step Function (別のステートマシン) を trigger することもできます。
- Simple Workflow Service (AWS SWF)
- Step Functions 以前から存在する、別のサービスです。
- EC2 インスタンス上でワークフローを実行します。
- 人間の承認フローを組込むこともできます。
- AWS Mechanical Turk が必要な場合は SWF を利用します。Amazon SWF FAQs
- Standard ワークフローと Express ワークフローがあります。Standard vs. Express Workflows
SQS
- 最大メッセージサイズは 256 KB です。Now Send Payloads up to 2GB with Amazon SQS
- サイズが大きくなる場合は S3 へのポインタを利用します。
- SQS FIFO
- 通常の SQS では FIFO が保証されないのに対し、SQS FIFO は保証します。
- メッセージスループット
- Standard queue が事実上無制限であるのに対し、FIFO queue は、API メソッド毎に 300 API call/秒 の制限があります。
- メッセージをバッチ処理する batching 機能を使うことで、例えば 8 メッセージをバッチ処理すれば 8 * 300 で 2400 メッセージ/秒 のスループットとなります。Quotas related to messages
- 冪等性 (Idempotency) は SQS 利用者側で担保します。
- 例: SQS を polling する consumer が DynamoDB にデータを追加する際は、Insert ではなく Upsert を利用するようにします。
- Lambda Event Source Mapping で SQS queue を polling できます。
- メッセージの visibility について
- delay queues
- 0-15分 で指定できます。
- queue に送信された後、DelaySeconds の間、consumer からは invisible となります。Amazon SQS delay queues
- visibility timeout
- SQS は consume されたメッセージを自動的に削除しません。
- queue から consume された後、visibility timeout の間、queue から receive できなくなります。
- visibility timeout の間に、consumer が明示的に削除する必要があります。Amazon SQS visibility timeout
- message timer
- delay queues と同様に、0-15分 で指定できます。
- queue に送信された後、DelaySeconds の間、consumer からは invisible となります。
- delay queues が queue 全体に対する設定であるのに対し、message timer は、メッセージ毎に設定されます。Amazon SQS message timers
- delay queues
- dead-letter queue (DLQ)
- ある queue における target として設定し、queue で正常に consume されなかったメッセージの通知先として利用されます。Amazon SQS dead-letter queues

Amazon MQ
- Amazon MQ What is Amazon MQ?
- オープンソース Apache ActiveMQ、Rabbit MQ 等の AWS マネージドサービスです。
- 補足: サーバレスではありません。RDS のようにインスタンスが起動されます。Instance types
- オンプレミスで稼働する ActiveMQ 利用アプリケーションを SQS 向けに改修することなく AWS 移行できます。(re-platform)
- オープンソース Apache ActiveMQ、Rabbit MQ 等の AWS マネージドサービスです。
SNS
- SNS topic の subscriber は、message をフィルタリング (Filter Policy) して取得できます。Amazon SNS message filtering
- Direct Publish
- Using Amazon SNS for application-to-person (A2P) messaging
- モバイル端末に対して SMS や push 通知を送信できます。
- SNS Access Policy (resource-based policy) を設定できます。
- SNS topic と SQS queue を 1:N で接続することで、Fan Out 構成を実現できます。
- SNS topic が push 型として SQS queue に書き込みます。
- SQS queue 側の access policy で write を許可しておく必要があります。
- S3 event 通知先として指定できる宛先は一つだけです。
- 上記 fan out 構成で SNS を宛先として指定することで、宛先数 1 という制約を回避できます。
- 例: Snowflake の Snowpipe でも活用される構成です。
- SNS topic は S3 に直接 push できません。
- Kinesis Data Firehose を経由して S3 にデータ連携できます。Fanout to Kinesis Data Firehose delivery streams
- SNS FIFO
- SQS FIFO と同様です。処理性能は FIFO ではない通常の topic の方が高くなります。
- SNS FIFO の subscriber としては SQS FIFO のみ指定可能です。
0
サーバーレスとDevOpsに注力中。AWSを使った効率的なインフラ構築が得意です。
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。


