[アップデート] AWS Resilience Hub がサポートするリソースに Step Functions が追加されました

2023.11.07

いわさです。

先日のアップデートで AWS Resilience Hub が AWS Step Functions をサポートするようになりました。

Resilience Hub は非常におもしろいサービスなのですが、まだ使ったことが無い方も多いと思います。
そのため、このアップデートアナウンスを見て「Relisience Hub で Step Fucntions サポートってどういうことだろう」と思った方もいるかもしれません。

Resilience Hub で評価出来るのはサポートされているリソースタイプのみ

Resilence Hub はデプロイした AWS リソースをアプリケーションとして Rsilience Hub に登録しておくことで、システムの回復力を評価し洞察を得ることが出来るサービスです。
そのままですが、Security Hub の Resilience (回復力) 版と考えて良いと思います。

実はこの Resilience Hub は何でもかんでも評価し、推奨事項を提案してくれるわけではありません。
次のようにサポートされているリソースが決まっており、対象リソースのみが評価されます。

API Gateway, Lambda, SQS, SNS などサーバーレスの基本的なコンポーネントはこれまでもサポートされていたのですが、Step Function がサポートされておらず、サーバーレスアプリケーションで Resilience Hub を適用しようとしても完全には活用できない状態でした。

今回のアップデートでサポート対象のリソースに追加されたので、より広い範囲でアプリケーションの評価を受けることが出来るようになりました。

やってみる

Step Function を含むサーバーレスアプリケーションなスタックをデプロイし Resilience Hub で推奨事項などを確認してみましょう。

詳しい導入手順はこの記事では割愛しますが、SAM CLI のクイックスタートテンプレートを使って Step Function を含むサンプルアプリケーションをデプロイしてみます。

% sam init

You can preselect a particular runtime or package type when using the `sam init` experience.
Call `sam init --help` to learn more.

Which template source would you like to use?
        1 - AWS Quick Start Templates
        2 - Custom Template Location
Choice: 1

Choose an AWS Quick Start application template
        1 - Hello World Example
        2 - Data processing
        3 - Hello World Example with Powertools for AWS Lambda
        4 - Multi-step workflow
        5 - Scheduled task
        6 - Standalone function
        7 - Serverless API
        8 - Infrastructure event management
        9 - Lambda Response Streaming
        10 - Serverless Connector Hello World Example
        11 - Multi-step workflow with Connectors
        12 - GraphQLApi Hello World Example
        13 - Full Stack
        14 - Lambda EFS example
        15 - Hello World Example With Powertools for AWS Lambda
        16 - DynamoDB Example
        17 - Machine Learning
Template: 4

Which runtime would you like to use?
        1 - dotnet6
        2 - go1.x
        3 - go (provided.al2)
        4 - java17
        5 - java11
        6 - java8.al2
        7 - java8
        8 - nodejs18.x
        9 - nodejs16.x
        10 - nodejs14.x
        11 - python3.9
        12 - python3.8
        13 - python3.7
        14 - python3.11
        15 - python3.10
        16 - ruby3.2
        17 - ruby2.7
Runtime: 11

:

上記でデプロイされるテンプレートを Application Composer で見てみると次のような構成になっています。
Lambda, DynamoDB, EventBridge, Step Functions で構成されています。
良いですね。これで試してみましょう。

Resilience Hub ではアプリケーション登録を行うためにいくつかのオプションがあります。
今回は AWS SAM を使っていますので CloudFormation スタックを選択します。
Step Function の様子を確認したいだけだったので、ポリシーは適当なものを選びました。ミッションクリティカルあたりだったと思います。

評価を行ってみると、アプリケーション構造タブに対象リソースが列挙されており、Step Functions が「評価可能」ステータスになっていることがわかります。

一方で、EventBridge Rule についてはサポートされていないようで、ステータスが「サポートされていません」となっていました。

また、レコメンデーションを確認してみると Step Function 固有の推奨事項を得ることが出来ています。
ここでは設定したポリシーを満たしているようですが、より最適化したい場合は復旧を早めるためにワークフローのバージョン管理を行うオプションが提案されています。

試しにバージョンを追加してみましょう。
バージョンアップなどでの問題が発生した際に、すぐに旧バージョンに切り戻せるようバージョン運用しろということだと理解しました。

追加で提案されるオプションがクリアになりましたね。

サンプルステートマシンではエラーロジックがあまり入っていなかったのですがそのあたりは Resilience Hub では検出されたり提案はされませんでした。
ワークフローのプロパティ値までは見ていて、ワークフローの中身の評価まではしていなさそうですね。

さいごに

本日は AWS Resilience Hub のサポートリソースに Step Functions が追加されたので、実際にアプリケーションを登録・評価を行ってレコメンド内容を確認してみました。

サポート対象のリソースが増えたのは単純に嬉しいですね。
Step Functions に関して言うと、ステートマシンの中まで見てくれるとより素晴らしいものになりそうですね。例えばリトライの実装とかを提案してくれるとか。
今後に期待したいですね。

また、未対応のリソースもまだあるようなので、今後はよりサポート範囲が拡張されていってほしいです。
Resilience Hub の利用にあたってはサポートされるリソースを事前にチェックしておきましょう。