4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【登壇レポート】「JAWS-UG 茨城 #18 祝!2周年記念祭」 で承認依頼を電話で鳴らしてきました📞

4
Last updated at Posted at 2026-10-25

はじめに

2026年10月24日 茨城県水戸市で開催された「JAWS-UG 茨城 #18 祝!2周年記念祭」にて、登壇させていただきました。

登壇資料

イベント概要

イベントページより引用

🎉 JAWS-UG茨城、2周年! 🎉

JAWS-UG茨城の2周年を記念した特別イベントを開催します!

茨城支部の活動開始から2年。 この2年間の活動を振り返りながら、AWSに関する技術・事例・学びをみんなで共有するイベントです。

今回は、じっくりお話しいただく20分のセッション枠に加えて、気軽に参加できる10分のLT枠、さらに初心者枠と>茨城枠も用意しました!

AWSを仕事でバリバリ使っている方はもちろん、

・AWSを最近使い始めた方
・AWSを勉強中の方
・JAWS-UGに初めて参加する方
・茨城でITに関わっている方
・茨城県外から参加してみたい方
も大歓迎です!

2周年という節目を、みんなで楽しくお祝いしましょう!

当日発表された方の資料はこちらで共有されています。
興味のある方はぜひご確認ください!

発表内容

当日はAIエージェントの承認依頼を別の方法で伝える仕組みについて発表させていただきました。SlackやWebアプリから承認依頼通知って、通知に埋もれてすぐには見られないということがたまにありますよね?
私はAIからの承認依頼などは特に他の通知に埋もれるてしまい、だいぶ待たせることも少なくないです。そこで「チャットで気づかないなら、電話を鳴らせばいい!」という仕組みを作りました。

流れは次のとおりです。

あーきてくちゃ.png

  1. 請求書をSlackに投げると、S3に保存され、EventBridge経由でStep Functionsが動く
  2. Amazon Bedrock AgentCore Runtime上のAIエージェント(Strands Agents + Claude Sonnet 4.6)が、請求書の画像を読んで社内規程と照らし合わせる
  3. Slackで承認者に依頼し、返事がなく支払期限が今日ならAmazon Connectから電話をかける
  4. 電話のボタン(1で承認、2で却下)で、その場で承認できる

エージェントは請求書から金額と期限を読み取るだけでなく、規程まで見て「5万円超なので部長承認が必要です」と判断してくれました。

設計で意識したのは、「待つのはStep Functions、考えるのはAgentCore」と役割を分けたことです。
Step Functions (Standard)のwaitForTaskTokenは承認の返事を最大1年待てますが、AgentCoreのセッションは既定で最長8時間です(※microVMの最大実行時間)。
今回の構成ではエージェントは審査の15秒ほどだけ動かして、待つのはStep Functionsに任せています。

デモでやらかしました...

デモでは、会場で請求書をSlackに投げて、承認依頼を無視して待ち、手元の携帯が鳴るところまではうまくいきました。
ところが、電話で1を押したところでエラーになってしまいました...。

原因は、本番直前にCDKで再デプロイしたことでした。
電話のボタンは、Connectのある別アカウントのLambdaから、自分のアカウントのLambdaを呼んで承認を返しています。この呼び出しを許可するリソースベースポリシーは、cdk deploy -c connectAccountId=<アカウントID>のように、アカウントIDを渡したときだけ作る書き方です。直前のデプロイでこれを付け忘れたため、許可が消えてAccessDeniedExceptionになっていました。

User: arn:aws:sts::<別アカウント>:assumed-role/...-relay-role/... is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:ap-northeast-1:<自分のアカウント>:function:approval-callback because no resource-based policy allows the lambda:InvokeFunction action

当日のお昼の練習では1を押して承認まで通っていたので、悔しいです(本番直前にデプロイしてはいけない、を身をもって学びました...)。

それでも、Xのタイムラインで温かいコメントをいただけて、本当にありがたかったです。
また、結構「アマコネの機械音声が自然ですごい」という声もあがっていたため、アマコネ芸人として少しでもAmazon Connectの魅力を伝えられたようでよかったです(?)
ちなみに、成功すると以下のように承認経路(電話で〜)と承認の通知が申請者に届くようなっています。

image.png

まとめ

JAWS-UG茨城、2周年おめでとうございます!
オンラインだった前回に続いて、今回は水戸の会場で、電話が鳴ったときの反応をその場で見られたのがうれしかったです。

反省は、なんといっても本番直前の再デプロイです。デモの前は、新しい変更を入れるより「練習で動いた状態のまま触らない」を優先しようと思います。

最近は本業が忙しく、コミュニティ活動の時間がなかなか取れていないのですが、これからも自分のペースで参加できたらと思います。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?