Upgrade to Pro — share decks privately, control downloads, hide ads and more …

reinvent2024を起点に振り返るサーバーレスアップデート

mihonda
January 24, 2025

 reinvent2024を起点に振り返るサーバーレスアップデート

mihonda

January 24, 2025
Tweet

Other Decks in Technology

Transcript

  1. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. S E R V E R L E S S M E E T U P T O K Y O # 2 0 re:Invent 2024 を起点に振り返る サーバーレスアップデート Miku Honda Amazon Web Services Solutions Architect
  2. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Serverless Updates Amazon API Gateway § 統合タイムアウト制限が 29 秒から引き上げ可能に § プライベート API カスタムドメイン対応 Amazon SNS § FIFO トピックのメッセージのアーカイブとリプレイがサポート AWS Step Functions § 変数の利⽤とJSONata によるデータ変換をサポート
  3. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 統合タイムアウト制限が 29 秒から引き上げ可能に • Amazon API Gatewayで、統合タイムアウトの制限が 29 秒から引き上げ可能に* § リージョン REST API とプライベート REST APIの統合タイムアウト アップデート https://aws.amazon.com/jp/about-aws/whats-new/2024/06/amazon-api-gateway-integration-timeout-limit-29-seconds/?nc1=h_ls Client Amazon API Gateway 29秒〜 • ⻑いタイムアウトを必要とし これまで29秒以内におさまらなかったワークロード – 低頻度だが実⾏時間が⻑い、⼤規模⾔語モデル (LLM) を利⽤した⽣成 AI – モノリシックで⼤規模なシステム ユースケース * 統合タイムアウトの引き上げに伴い、アカウント単位でスロットリングのクォータの引き下げが必要になる可能性に注意
  4. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Amazon API Gateway プライベートAPI カスタムドメイン対応 4 API Gateway カスタムドメイン種類 リージョン API ⽤ カスタムドメイン プライベート API ⽤ カスタムドメイン HTTP API WebSocket REST(リージョン) REST(プライベート) • 上記 3種類の API に関連づけ可能 • 上記 1種類の API に関連づけ可能 • リソースポリシーを持ち、アクセス元を 制御可能 New!! REST プライベート API にカスタムドメインが設定可能に (従来までは、カスタムドメインを設定できなかった)
  5. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Amazon API Gateway プライベートAPI カスタムドメイン対応 従来までの "前段に ELB を配置する" ワークアラウンド が不要になり アーキテクチャの簡素化・セキュリティ統制の向上・ELBのコスト削減を実現 API Gateway REST Private API ユーザーVPC VPC エンド ポイント Internal ALB/NLB 従来 (ELB利⽤のワークアラウンド) 今後 New!! API Gateway REST Private API ユーザーVPC VPC エンド ポイント プライベート API ⽤ カスタムドメイン カスタムドメイン (ACM証明書) カスタムドメイン リソースポリシー
  6. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Amazon API Gateway プライベートAPI カスタムドメイン対応 ステージ︓prod リソース︓/hello プロバイダーアカウント コンシューマーアカウント API Gateway REST API (プライベート) プライベート API ⽤ カスタムドメイン (api.example.com) ACM証明書 ② 作成 ドメインにステージをマッピング Route 53プライベート Hosted Zone (api.example.com) VPC 共有された カスタムドメイン (api.example.com) RAM クライアント VPCエンドポイント カスタム ドメイン 関連づけ CNAME or ALIASレコードセット https://api.example.com/hello のAPIへアクセス api.example.com をDNS名前解決 名前解決先 ① API Gateway カスタムドメインを アカウントXに共有 API アクセス ③ Hosted Zone作成 & VPC関連付け ④ レコード セット作成 クロスアカウント構成 でも カスタムドメイン の プライベートAPI にアクセス可能
  7. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 配信セマンティクス 順序セマンティクス サービス At-least once ターゲットに複数回配信 されることも (冪等性要検討) 順序保証なし イベント / メッセージが 順序保証なしで配信 • Amazon EventBridge • Amazon SNS 標準トピック • Amazon SQS 標準キュー Exactly once 重複排除に使⽤する 識別⼦を渡すことで重複排除 順序保証 イベントは、パーティション、 メッセージグループなどの中で 順番に配信 • Amazon Kinesis • Amazon SNS FIFO トピック • Amazon SQS FIFO キュー SNS FIFOトピック メッセージのアーカイブとリプレイ
  8. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. FIFOトピック メッセージのアーカイブとリプレイ • SNS FIFOトピックで、イベントの保存 (アーカイブ) と複製 (リプレイ) が可能に – SNSトピックに設定されたアーカイブポリシーを有効化し、メッセージの保持期間を設定 – アーカイブされたイベントは、リプレイ開始時間 – リプレイ終了時間 を指定してリプレイ可能 – アーカイブポリシーを無効化すると、アーカイブに保存されたイベントも同時に削除される アップデート Client Topic Amazon SNS Queue Queue function Amazon SQS AWS Lambda Archive function 09:00 ~ 09:30の イベントをリプレイ
  9. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. FIFOトピック メッセージのアーカイブとリプレイ • 障害により失われたメッセージの復旧とテスト環境 – 障害によって⼀定時間メッセージが処理に失敗し、メッセージを破棄された場合に 障害が発⽣した間のメッセージをリプレイし、メッセージを正常に処理 • 検証環境で再度同じメッセージを送付したい場合にコンソール上から再度送付 • 新しい環境へのメッセージのレプリケート – リプレイの終了時刻を定義しない時、最新のメッセージが全て送信されるまでリプレイが継続 ユースケース
  10. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. FIFOトピック メッセージのアーカイブとリプレイ
  11. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 11 AWS Step Functions で変数をサポート start Step 1 Step 2 Step 3 Step 4 end “value” : 1 “value” : 1 • Step Functions 内で変数をサポート – アップデート前はステップ間で値を引き渡していく必要 – アップデートにより変数の保存と参照が簡素化 • ワークフローの途中で値の更新が可能 • 変数のスコープ – 変数に格納したのち、後続のステップから参照可能 – 例外として Map, Parallel内の変数はその内部でのみ参照可能
  12. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. JSONPath + Intrinsic Functions + Lambda JSONata JSONata によるデータ変換 • JSONataはOSSのJSON⽤データクエリおよび変換⾔語 – ⽇付・時刻のフォーマット、⽂字列操作、四則演算などが可能 12 "Calculate": { "QueryLanguage": "JSONata-2.0", "Type": "Task", ... "Assign": { "sum.$": "$sum($states.result.Product.(Price * Count))" } } "Get prices and quantities": { "Type": "Task", ... "ResultSelector": { "Prices.$": "$.Product.Price", "Counts.$": "$.Product.Count" }, "ResultPath": "$.productInfo", "Next": "Calculate" }, "Calculate": { "Type": "Task", "Resource": "arn:...:lambda:invoke", "Parameters": { "FunctionName": "lambdaArn", "Payload.$": "$.productInfo" }, "ResultSelector": { "sum.$": "$.Payload.sum" }, "ResultPath": "$.ProductSum", ... } 商品の価格・数量から合計⾦額を計算する例
  13. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. JSONata によるデータ変換 • JSONataはJSONPathと⽐較し変換フィールドの数を減らして⼊出⼒処理を簡略化 13 Task State Input Argument Output Assign Output Variables Action - Service Integration - HTTPS Endpoint - Activity Worker JSONata JSONPath Task State Input Parameters ResultSelector Assign Output Variables Action - Service Integration - HTTPS Endpoint - Activity Worker InputPath ResultPath OutputPath
  14. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 14 AWS Step Functions で変数をサポート (デモ) JSONPathでの実装 • 注⽂処理のワークフローの例 – ⽇付のフォーマット – 商品の値段・数量から合計⾦額を算出 def lambda_handler(event, context): time = event['Time'] time = datetime.fromisoformat(time.replace("Z", "+00:00")) return { "date" : {"year" : int(time.strftime("%Y")), "month" : int(time.strftime("%m")), ”day" : int(time.strftime("%d"))} } def lambda_handler(event, context): quantity = event["item"]["quantity"] price = event["item"]["price"] date = event["output"]["Payload"]["date"] return { "date" : str(date["year"]) + "/" + str(date["month"]) + "/" + str(date["day"]), "total_amount" : quantity * price } ↑ これまで、データの複雑な加⼯にはLambdaが必要
  15. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 15 AWS Step Functions で変数をサポート (デモ)