Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
第130回 雲勉【オンライン】Step Functions を使ってS3のファイルを操作してみよう
Search
iret.kumoben
March 12, 2024
Technology
440
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第130回 雲勉【オンライン】Step Functions を使ってS3のファイルを操作してみよう
下記、勉強会での資料です。
https://youtu.be/8CuwV1Z9Gwk
iret.kumoben
March 12, 2024
More Decks by iret.kumoben
See All by iret.kumoben
第182回 雲勉 【Gemini 3.0 Pro】AI ベンチマーク徹底比較!他モデルに比べ優れている点まとめ
iret
0
140
第181回 雲勉 WEB制作者のちょっとした面倒をAWSで解決!Amazon S3とAWS Lambda活用術
iret
0
120
第180回 雲勉 Abuse report の調査・確認方法について
iret
0
140
第179回 雲勉 AI を活用したサポートデスク業務の改善
iret
0
180
第178回 雲勉 Amazon EKSをオンプレで! Amazon EKS Anywhere 実践構築ガイド
iret
1
150
第177回 雲勉 IdP 移行を楽に!Amazon Cognito でアプリへの影響をゼロにするアイデア
iret
0
150
第176回 雲勉 VPC 間サービス接続を考える!Private Service Connect 入門
iret
0
130
第175回 雲勉 Amazon ECS入門:コンテナ実行の基本を学ぶ
iret
0
230
第174回 雲勉 Google Agentspace × ADK Vertex AI Agent Engineにデプロイしたエージェントを呼び出す
iret
0
210
Other Decks in Technology
See All in Technology
全社共通データ基盤をつくる。ソニーのDatabricks活用とデータガバナンス設計の裏側
sony
0
430
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
210
メルペイ 会計システム概要と歴史
mewuto
0
190
ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Complexity and Simplicity
soudai
PRO
3
650
スキルを作る、その前に!複数人で使われるスキルを 作るためのプロセス
junkifurukawa
2
350
不可逆な意思決定を避けながら10億超の顧客データを AI Ready にするデータ基盤設計
baseballyama
1
150
[2026-09-30]ロックンロールは鳴り止まないっ - 信頼性かまってちゃん - 「データ駆動を投げ捨ててまで。」追いかける信頼性改善に向けた取り組みの話
tosite
0
210
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
160
継続的なAIコスト最適化
bgpat
1
200
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
450
FOSS4Gを活用した自治体業務DXの試み
470715
0
120
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
530
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
15k
Automating Front-end Workflow
addyosmani
1369
210k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
76k
Accessibility Awareness
sabderemane
1
240
The untapped power of vector embeddings
frankvandijk
2
1.9k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
Color Theory Basics | Prateek | Gurzu
gurzu
1
480
Making Projects Easy
brettharned
120
6.8k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Building AI with AI
inesmontani
PRO
1
1.3k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
550
Transcript
第130回 雲勉【オンライン】 Step Functions を使ってS3のファイルを 操作してみよう
0.⾃⼰紹介 2 ▪ 徳井 雄介 (Tokui Yusuke) ▪ CI事業部 CSMセクション所属
▪ 2021年10月 入社 ▪ 前職:PHPでWebサービス開発 ▪ 好きなAWSのサービス ▪ Step Functions ▪ Lambda
アジェンダ 3 0.⾃⼰紹介 1. Step Functions とは 2. 活⽤例 3.
ASLの書き⽅について 4. Step Functionsを動かしてみる 5. まとめ
4 1. Step Functions とは
Step Functions とは 5 サーバーレスオーケストレーションサービス AWSのマネージドサービスで、 サーバーの管理なしでワークフローを定義実行できる ◦ 様々なAWSサービスを呼び出せる ◦
ワークフローをGUIで作成できる ◦ 条件分岐などの考慮したワークフローを作成できる Step Functions
Step Functions とは 6 ワークフロー(ステートマシーン)の具体例 自販機 入金 商品選択 商品排出 お釣り返却
入金されるまでは待機 金額を次のフローに渡す 金額が足りているか 金額
Step Functions とは 7 ワークフロー(ステートマシーン)の具体例 自販機 入金 商品選択 商品排出 お釣り返却
商品選択されるまでは待機 選択した商品と金額を次のフローに渡す 金額が足りているか 商品 金額
Step Functions とは 8 ワークフロー(ステートマシーン)の具体例 自販機 入金 商品選択 商品排出 お釣り返却
金額が足りているか確認して 次のフローを選択 もしくは 金額が足りるまで待機(xx秒後に返 金) 金額が足りているか 商品 金額
Step Functions とは 9 ワークフロー(ステートマシーン)の具体例 自販機 入金 商品選択 商品排出 お釣り返却
商品排出とお釣り返却を行う 金額が足りているか
Step Functions とは 10 • ビジュアルエディタでワークフローを作成 • ドラッグアンドドロップで操作 • 非技術者でも簡単に設定可能
• 各ステップごとの処理を定義 • ASLの自動生成 Workflow Studio
Step Functions とは 11 • ステートマシンは JSON ベースの Amazon States
Language (ASL) で定義する • 状態(Type)の一例 ◦ Task(単一の作業単位) ◦ Choice(分岐) ◦ Wait(待機) ◦ Parallel(並行処理) ◦ Succeed(成功) ◦ Fail(失敗) Amazon States Language (ASL) { ・ ・ "States": { "State1": { "Type": "Task", "Resource": "xxx", "Next": "State2" }, ・ ・ }
Step Functions とは 12 分岐 Start End State1 State2 State4
State3 条件によって、フローを変更したい パラメータの値などで条件分岐してフローを選択 例)ユーザー登録 ユーザーが新しいアカウントを作成する ユーザーが「個人」「法人」で処理を分岐
Step Functions とは 13 並列 Start End State1 State2 特定の処理を同時に実行したい
例)注文処理 顧客が注文を確定すると、並列ステップで ・在庫確認 ・支払い処理 ・配送準備 などのタスクが同時に実行される
Step Functions とは 14 繰り返し Start End State1 State3 State2
特定の処理が終わるまで繰り返し処理を行う 例)月次レポート作成 月初から月末まで、繰り返して日次のデータを取得し 、レポート生成プロセスを繰り返し実行
Step Functions とは 15 https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/connect-supported-services.html サポートされているサービス
Step Functions とは 16 サポートされているサービスのユースケース一例 Lambda ワークフローにLambda関数を組み込む EC2 EC2インスタンスを起動、停止など、EC2の管理をサポート S3
ファイルのアップロード、ダウンロード、処理など、S3の操作をサポート
Step Functions とは 17 コストについて リソースの効率的な利用 • 不必要な実行を避ける • 必要な時に必要なものを動かす
スケーラビリティの向上と変更が容易 • 必要に応じてタスクを追加できる • 容易にワークフローを変更できる 実行時間・実行数で料金がかかる サーバーレス • インフラストラクチャの管理コストを削減
Step Functionsとは? 18 • ワークフローを定義し、各ステップの状態を直感的に管理できる • 処理の進行状況の追跡が容易になる • 可読性と保守性の向上(デバッグの効率化) 状態管理・監視とデバッグ
リトライやエラーハンドリング • 各ステップの失敗、タイムアウトなどのイベントを監視できる • エラーハンドリングやリトライのロジックを統合的に管理できる • アプリケーションの信頼性と耐障害性を向上できる Step Functionsのメリット
19 2. 活用例
活用例 20 1. S3のファイル検索 2. S3(Glacier)のアーカイブファイルの復元 3. S3(お客様用)ファイルのコピー
活用例 21 • S3ストレージサービスの1つ • アーカイブデータを保存するためのもの ◦ 低コスト ◦ 耐久性
◦ セキュリティ S3 Glacier とは ※ S3 Glacier復元通知 というものがあります... • S3 Glacier からの復元の開始 • S3 Glacier からの復元の完了 今回こちらはあえて使いません。
活用例 22 S3 Glacierのファイルの復元 • 迅速:1〜5分 • 標準:3〜5時間 1つのLambda だけで対応する場合
Lambdaの制限(15分) に引っかかる
活用例 23 Step Functionsを使用する • 復元が完了するまで繰り返し処理を行う • 復元が完了しているか確認するフローを入れる • 復元が完了していたらファイルコピー
Lambda の15分制限をクリアするために
24 3. ASLの書き方
ASLの書き方について 25 Workflow Studio
ASLの書き方について 26 • SearchContent ◦ ファイルの検索 • RestoreContent ◦ ファイルの復元
• WaitRestoration ◦ 復元待機 • ChoiceState ◦ 復元できているか • CopyContent ◦ ファイルコピー
ASLの書き方について① 27 • SearchContent ◦ ファイルの検索 • RestoreContent ◦ ファイルの復元
• WaitRestoration ◦ 復元待機 • ChoiceState ◦ 復元できているか • CopyContent ◦ ファイルコピー
28 ASLの書き方について① { "StartAt": "SearchContent", "States": { "SearchContent": { "Type":
"Task", "Resource": "xxx", "Parameters": { "type": "search", }, "Next": "RestoreContent" }, ステートマシンの開始地点 ステートマシン内のステートを定義 • Type:ステートの種類 • Resource:リソースのARN • Parameters:パラメータ 次のステートを指定
ASLの書き方について② 29 • SearchContent ◦ ファイルの検索 • RestoreContent ◦ ファイルの復元
• WaitRestoration ◦ 復元待機 • ChoiceState ◦ 復元できているか • CopyContent ◦ ファイルコピー
30 ASLの書き方について② "ChoiceState": { "Type": "Choice", "Choices": [ { "Variable":
"$.condition", "BooleanEquals": false, "Next": "WaitRestoration" }, { "Variable": "$.condition", "BooleanEquals": true, "Next": "CopyContent" } … 選択状態 条件に応じて次のステートを定義 • $.condition が false ◦ WaitRestoration へ • $.condition が true ◦ CopyContent へ
ASLの書き方について③ 31 • SearchContent ◦ ファイルの検索 • RestoreContent ◦ ファイルの復元
• WaitRestoration ◦ 復元待機 • ChoiceState ◦ 復元できているか • CopyContent ◦ ファイルコピー
32 ASLの書き方について③ "CopyContent": { "Type": "Task", "Resource": "xxx", "Parameters": {
"type": "copy", }, "End": true } ステートが実行された後に、 ステートマシンが終了するかどうかを指定 「true」を指定すると、 ステートマシンが終了
33 4. Step Functionsを動かしてみる
34 Step Functionsを動かしてみる
35 Step Functionsを動かしてみる 編集
36 Step Functionsを動かしてみる
37 Step Functionsを動かしてみる アクション
38 Step Functionsを動かしてみる トリガーで動かすことが多いが、 AWSコンソール上からも実行できる
Step Functionsを動かしてみる 39 トリガー Lambda Lambda にトリガーを設定し、Lambda から Step Functions
を呼び出す S3 S3 バケットに新しいオブジェクトが作成されると、イベントがトリガー API Gateway RESTful API エンドポイントを使用して Step Functions をトリガー Cloudwatch Events AWS リソースの状態変更やスケジュールされたイベントなど、 さまざまなイベントの監視に応じて Step Functions をトリガー
40 Step Functionsを動かしてみる 実行を開始(コンソールから手動で) 入力値をjsonで記載できる
41 Step Functionsを動かしてみる 進行中・失敗・成功 など ステートの状態が可視化される 現在どこの処理を行っているのか 明確になる エラーになった場合、 どこでエラーになったかわかる
実行中
42 Step Functionsを動かしてみる
43 Step Functionsを動かしてみる 実行したLambdaのコンソールへ CloudWatchログへ • output ◦ 実行結果として出力される情報 •
outputDetail ◦ 出力の詳細情報を含むオブジェクト ▪ ※出力が切り捨てられた場合はtrue
44 5. まとめ
まとめ 45 • サーバーの管理なしでワークフローを定義実行できる • Workflow Studio(GUI)でワークフローを定義できる • ASLでワークフローを定義できる •
エラーハンドリング / 監視・デバッグが容易にできる • Lambda の実行が15分を超える可能性が出てきた時の対策になる