AWS 落穂拾い (Service 間の連携)
[履歴] [最終更新] (2022/09/10 18:36:40)

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
  • dead-letter queue (DLQ)
    • ある queue における target として設定し、queue で正常に consume されなかったメッセージの通知先として利用されます。Amazon SQS dead-letter queues

Amazon SQS delay queues

Uploaded Image

Amazon MQ

  • Amazon MQ What is Amazon MQ?
    • オープンソース Apache ActiveMQ、Rabbit MQ 等の AWS マネージドサービスです。
      • 補足: サーバレスではありません。RDS のようにインスタンスが起動されます。Instance types
    • オンプレミスで稼働する ActiveMQ 利用アプリケーションを SQS 向けに改修することなく AWS 移行できます。(re-platform)

SNS

  • SNS topic の subscriber は、message をフィルタリング (Filter Policy) して取得できます。Amazon SNS message filtering
  • Direct Publish
  • 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 できません。
  • SNS FIFO
    • SQS FIFO と同様です。処理性能は FIFO ではない通常の topic の方が高くなります。
    • SNS FIFO の subscriber としては SQS FIFO のみ指定可能です。
関連ページ
    VPC Subnets for your VPC Subnet の最初の 4 IP と最後の 1 IP は予約されています。以下の IP は例です: 10.0.0.0 → ネットワークアドレス 10.0.0.1 → VPC router (AWS による予約) 10.0.0.2 → DNS サーバ (AWS による予約)