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

JAWS-UG情シス支部 情シスにこそStepFunctionsが強力な武器になる〜ワイはQ...

JAWS-UG情シス支部 情シスにこそStepFunctionsが強力な武器になる〜ワイはQuickSightのユーザー削除を自動化したかったんや〜 / How to automate deprovisioning QuickSight users with StepFunctions

JAWS-UG 情シス支部 第31回 クラウド女子会×札幌支部コラボ会で発表した資料です。
StepFunctionsの設定でハマったところとその回避策を中心にお話ししました。

Avatar for Naomi Yamasaki

Naomi Yamasaki

May 24, 2025
Tweet

More Decks by Naomi Yamasaki

Other Decks in Technology

Transcript

  1. AWS SAMURAI 2015 JAWS-UGアーキテクチャ専門支部 JAWS-UG情シス支部 生活協同組合コープさっぽろ デジタル推進本部 システム企画部 インフラチーム 山﨑

    奈緒美 ご挨拶と自己紹介 大阪出身。 就職で上京し、ソフトハウスでインフラエンジニア 地図情報システム開発会社でひとり情シス 旅行会社の情シス部門でクラウド担当 2020年9月に東京から札幌へ移住し10月よりコープさっぽろへJOIN。 AWSのことならなんでも担当。 @nao_spon I ♡ Route53 IAM Organizations 夏はロードバイク、冬はスノボしてます。仲間募集中!
  2. 生活協同組合コープさっぽろについて (※2024年3月現在) 設立年月日 1965年7月18日 組合員数 201万人 出資金額   897億円 総事業高 3,186億円

    店舗 1,983億円 宅配(灯油込)  1,134億円 共済(代理店収入)    22億円 その他   47億円 正規職員  2,405名 契約社員 2,228名 パート アルバイト 10,110名 ※従業員数は関連会社含む 道内:247万世帯 組織率:81%
  3. 北海道で生きることを誇りと喜びにする 3つのつなぐ 福祉活動 文化教室 組合員活動 葬祭事業 旅行事業 物流事業 店舗事業 移動販売

    宅配事業 配食・給食 食育 食品製造 共済事業 エネルギー 子育て支援 環境活動 リサイクル フードバンク 育英奨学金 と 人 人 をつなぐ と 人 食 をつなぐ と 人 未来 をつなぐ
  4. Step Functionsに対するイメージ • アプリ開発の人が触るサービス • WEBシステム/サイトの裏側で使うサービス • Lambdaをつなげていくサービス ◦ Lambdaを書かないといけない

    • なんか難しそう • (情シス / インフラ)な自分には関係なさそうなサービス • 開いてみたけどワケわからなくてそっ閉じした
  5. みんな大好きStep Functions Step Functionsのフロー 1. エラーログ用DynamoDBを作成 2. S3にある削除対象csvを参照 3. リストのメールアドレスからQSユーザー名生成

    4. QSユーザー存在確認 a. 存在していたらユーザー削除 b. 存在していなかったらDynamoDBにログ出力 5. DynamoDBの内容をS3へファイル出力 6. DynamoDB削除 7. S3の削除対象csvファイル削除 ❶
 ❷
 ❸
 ❹
 a
 b
 ❺
 ❻
 ❼

  6. みんな大好きStep Functions ハマった点 • IAM Identity Centerユーザー削除をトリガーにできない • Map Stateの中にあるStateのCatcherでMapを抜けられない

    • DynamoDB のフルエクスポートに非常に時間がかかる • 作ったばかりのDynamoDBは消せない • APIがすぐスロットリングする • エクスポネンシャルバックオフの罠
  7. IAM Identity Centerユーザー削除でのトリガー不可 背景と原因 • GoogleグループとIAM Identity Centerでユーザー同期 • IAM

    Identity Centerに同期されたユーザー情報で QSユーザープロビジョニング • Googleグループから外されたユーザーは IAM Identity Centerで削除されるので それをトリガーにState Machine起動したかった
  8. IAM Identity Centerユーザー削除でのトリガー不可 解決・回避策・工夫した点 • 削除対象者はわかっているのでcsvファイルにしてS3に置く • 削除対象リストをMap Stateで読み込んで処理するようにした •

    削除タイミングは月1回程度なのでState Machineの起動は マネコンから手動実行するようにした • 作業者はAWSに詳しくないのでマネコン利用想定で 画像付きのわかりやすい手順書を作成
  9. Map Stateの中のCatcherでMapを抜けられない 解決・回避策・工夫した点 • 存在確認できなかったユーザーは作業者に伝えたいので ログとして残す必要がある • CloudWatch LogsやStep FunctionsのMap

    Run Executionsを 作業者に確認してもらうのは厳しい • 存在確認できなかったユーザー情報とエラー内容を DynamoDBに貯めて最後にS3へファイル出力させる • Map State内では貯めるだけにしてS3出力は最後に • Map内なのでDynamoDB:PutItemのStateへFallback可能
  10. みんな大好きStep Functions まとめ • API実行時にはスロットリングに気を付ける • CatcherとRetrierでのエラーハンドリングは大事 • APIではどうしても無理な場合はLambdaがんばる •

    最近は生成AIに書いてもらうこともできますし... • Map Stateでは並列実行数の上限を設定する • API実行時のスロットリング誘発を防ぐ • エクスポネンシャルバックオフは過信しない • Jitterを付けるとリトライのタイミングが集中しない • プログラミングが苦手な人でも遜色のないものを作れる
  11. みんな大好きStep Functions まとめ • API実行時にはスロットリングに気を付ける • CatcherとRetrierでのエラーハンドリングは大事 • APIではどうしても無理な場合はLambdaがんばる •

    最近は生成AIに書いてもらうこともできますし... • Map Stateでは並列実行数の上限を設定する • API実行時のスロットリング誘発を防ぐ • エクスポネンシャルバックオフは過信しない • Jitterを付けるとリトライのタイミングが集中しない • プログラミングが苦手な人でも遜色のないものを作れる