今週末はクリスマスですね
クリスマスといえば、クリスマスツリーですね。
外は寒いですが、イルミネーションに囲まれたクリスマスツリーを見に行くの楽しいですよね。
東京ミッドタウンのクリスマスツリーとか大きくてとても綺麗ですよね。
家でもクリスマスツリーを立てたりしますよね。
一人暮らしだと、わざわざツリー立てるのも片付けるのも面倒だと思ってしまいます。
でもお家でもクリスマスツリー楽しみたいなー...
そんなあなたに。
とっておきの方法があります。
そう、AWSアカウントさえあれば。
しかも無料で。
Step Functionsでクリスマスツリーを立てよう
Step FunctionsはAWSが提供するサーバーレスのワークフローサービスです。
AWSサービスを組み合わせて、ユーザーが定義した「ステートマシン」を使って複雑なワークフローを構築できます。
ETL(データの抽出、変換、ロード)処理の自動化や、機械学習用データを準備するパイプライン、マイクロサービスのオーケストレーションなどに活用できます。
今回はこのサービスを使ってクリスマスツリー、もとい、「クリスマステートマシンツリー」を立てちゃいました。
ピンとこないですか?
百聞は一見にしかずと言いますし、早速お披露目いたします!
クリスマステートマシンツリー🎄
どうでしょう。
意外とツリーしてませんか?
飾り方
- AWSアカウントのマネジメントコンソールからStep Functionsをページを開く or AWSアカウントにログインした状態で下のリンクにアクセス
https://ap-northeast-1.console.aws.amazon.com/states/home - ページ上部の「ステートマシンの作成」ボタンをクリック
- 作成ページに移動したら、「コードでワークフローを記述」を選択。「タイプ」は標準のままでok。
- 「定義」のコードを以下に置き換える(コピペして使ってください)
{
"Comment": "A description of my state machine",
"StartAt": "🌟",
"States": {
"🌟": {
"Type": "Parallel",
"End": true,
"Branches": [
{
"StartAt": "🦌",
"States": {
"🦌": {
"Type": "Pass",
"Next": "🎅🏻"
},
"🎅🏻": {
"Type": "Parallel",
"End": true,
"Branches": [
{
"StartAt": "🕯",
"States": {
"🕯": {
"Type": "Pass",
"Next": "🤶🏻"
},
"🤶🏻": {
"Type": "Parallel",
"End": true,
"Branches": [
{
"StartAt": "🎅🏽",
"States": {
"🎅🏽": {
"Type": "Pass",
"End": true
}
}
},
{
"StartAt": "🧑🏽🎄",
"States": {
"🧑🏽🎄": {
"Type": "Pass",
"End": true
}
}
}
]
}
}
},
{
"StartAt": "🧦",
"States": {
"🧦": {
"Type": "Pass",
"Next": "🎅🏼"
},
"🎅🏼": {
"Type": "Parallel",
"End": true,
"Branches": [
{
"StartAt": "🤶🏽",
"States": {
"🤶🏽": {
"Type": "Pass",
"End": true
}
}
},
{
"StartAt": "🎅🏾",
"States": {
"🎅🏾": {
"Type": "Pass",
"End": true
}
}
}
]
}
}
}
]
}
}
},
{
"StartAt": "🛷",
"States": {
"🛷": {
"Type": "Pass",
"Next": "🧑🏻🎄"
},
"🧑🏻🎄": {
"Type": "Parallel",
"End": true,
"Branches": [
{
"StartAt": "⛄",
"States": {
"⛄": {
"Type": "Pass",
"Next": "🧑🏼🎄"
},
"🧑🏼🎄": {
"Type": "Parallel",
"End": true,
"Branches": [
{
"StartAt": "🧑🏾🎄",
"States": {
"🧑🏾🎄": {
"Type": "Pass",
"End": true
}
}
},
{
"StartAt": "🤶🏾",
"States": {
"🤶🏾": {
"Type": "Pass",
"End": true
}
}
}
]
}
}
},
{
"StartAt": "🔔",
"States": {
"🔔": {
"Type": "Pass",
"Next": "🤶🏼"
},
"🤶🏼": {
"Type": "Parallel",
"End": true,
"Branches": [
{
"StartAt": "🎁",
"States": {
"🎁": {
"Type": "Pass",
"End": true
}
}
},
{
"StartAt": "🇨🇽",
"States": {
"🇨🇽": {
"Type": "Pass",
"End": true
}
}
}
]
}
}
}
]
}
}
}
]
}
}
}
5. コードを編集し終えたら、ページ下部の「次へ」をクリック
6. 詳細を指定するページで名前をつけます。なんでもいいです。
7. 実行ロールは「新しいロールの作成」のままでいいです。他の設定は不要です。
8. ページ下部の「ステートマシンの作成」をクリック
9. 作成されたクリスマステートマシンツリーのページが開かれます。
10. クリスマステートマシンツリーのページで「実行の開始」をクリック
11. 「入力」に適当にJSONを入れてください。なんでもいいです。実行の「名前」もなんでもいいです。
12. 「実行の開始」をクリック
13. 0.3秒程度でクリスマステートマシンツリーが完成します!(実行詳細画面のグラフ)
ステートマシンは処理が成功すると各ステート(状態)が緑色で示されるので、それをモミの木の色として利用しています。
また、各ステートの名前をemojiにすることで、ツリーのオーナメントを飾ることができました。
ステートのタイプとしてはParallelとPassの2種類を組み合わせていて、中身の処理としては何もせず、ただステートを上から順番に実行していくものになります。
オーナメントやツリーの構造はお好みでカスタマイズください。
Step Functionsの提供するワークフロースタジオを使えば、GUI操作でステートマシンを編集できます。
Step Functions使ってますか?
ここ数年のアップデートが著しいStep Functions。
サーバーレスサービスの利用が進むにつれて、ますます存在感の高まるサービスになることは間違いないと思います。
弊社でもこの1, 2年で活用シーンが増えてきました。
いくつかStep Functions関連の記事も投稿しています。
私もStep Functionsでの開発を行なってきているので、来年はQiitaでStep Functionsの知見を発信できたら幸いです。