Amazon Bedrock AWS Step Functions を使用して の状態をトラブルシューティングする - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Bedrock AWS Step Functions を使用して の状態をトラブルシューティングする

Aniket Kurzadkar、Sangam Kushwaha (Amazon Web Services)

概要

AWS Step Functions エラー処理機能は、ワークフローの状態中に発生するエラーを確認するのに役立ちますが、それでもエラーの根本原因を見つけてデバッグするのは難しい場合があります。このパターンでは、この課題に対処し、Amazon Bedrock が Step Functions でステートの実行中に発生するエラーの解決にどのように役立つかを示します。

Step Functions はワークフローオーケストレーションを実現するため、開発者はプロセスを簡単に自動化できます。また、Step Functions にはエラー処理機能も用意されており、次のような利点があります。

  • 開発者は、問題が発生しても完全には失敗しない、より回復力の高いアプリケーションを作成できます。

  • ワークフローには、さまざまなタイプのエラーを異なる方法で処理する条件付きロジックを含めることができます。

  • システムは、エクスポネンシャルバックオフを使用して、失敗した操作を自動的に再試行できます。

  • エラーシナリオに対して代替の実行パスを定義できるため、ワークフローを適応させて処理を続行できます。

Step Functions ワークフローでエラーが発生した場合、このパターンでは、Step Functions でサポートされている Claude 3 などの基盤モデル (FM) にエラーメッセージとコンテキストを送信する方法を示します。FM はエラーを分析し、分類し、潜在的な修復手順を提案できます。

前提条件と制限

前提条件

制限事項

  • このパターンのアプローチは、さまざまな AWS のサービスに使用できます。ただし、結果は、Amazon Bedrock によって評価 AWS Lambda される によって作成されたプロンプトによって異なる場合があります。

  • 一部の AWS のサービス は では使用できません AWS リージョン。利用可能なリージョンについては「AWS サービス (リージョン別)」を参照してください。特定のエンドポイントについて確認するには、「サービスエンドポイントとクォータ」を参照し、サービスのリンクを選択してください。

アーキテクチャ

次の図表は、このパターンのアプリケーションのワークフローとアーキテクチャコンポーネントを示しています。

Step Functions、Amazon Bedrock、Amazon SNS を使用したエラー処理と通知のワークフロー。

この図は、Step Functions ステートマシンでのエラー処理と通知の自動ワークフローを示しています。

  1. 開発者がステートマシンの実行を開始します。

  2. Step Functions ステートマシンが状態の処理を開始します。この場合、次の 2 通りの結果が想定されます。

    • (a) すべてのステートが正常に実行されると、ワークフローは Amazon SNS に直接進み、E メールで成功通知が送信されます。

    • (b) いずれかのステートが失敗すると、ワークフローはエラー処理の Lambda 関数に移動します。

  3. エラーが発生した場合、次の処理が行われます。

    • (a) Lambda 関数 (エラーハンドラー) がトリガーされます。Lambda 関数は、Step Functions ステートマシンから渡されたイベントデータからエラーメッセージを抽出します。次に、Lambda 関数はこのエラーメッセージに基づいてプロンプトを準備し、Amazon Bedrock に送信します。プロンプトは、発生した特定のエラーに関連する解決策と提案をリクエストします。

    • (b) 生成 AI モデルをホストする Amazon Bedrock が、入力プロンプトを処理します (このパターンでは、Amazon Bedrock がサポートする多くの FM の 1 つである Anthropic Claude 3 基盤モデル (FM) を使用します)。AI モデルがエラーコンテキストを分析します。その後、モデルは、エラー発生の原因説明、可能性のある解決策、今後同じ間違いを起こさないようにするための提案を含むレスポンスを生成します。

      Amazon Bedrock が、AI によって生成されたレスポンスを Lambda 関数に返します。Lambda 関数がレスポンスを処理し、フォーマットや主要な情報の抽出を行います。その後、Lambda 関数はステートマシンの出力にレスポンスを送信します。

  4. エラー処理または実行が正常に完了すると、ワークフローは Amazon SNS をトリガーして E メールで通知を送信し、終了します。

ツール

AWS のサービス

  • Amazon Bedrock は、主要な AI スタートアップや Amazon が提供する高パフォーマンスな基盤モデル (FM) を、統合 API を通じて利用できるようにするフルマネージド型サービスです。

  • AWS Lambda は、サーバーのプロビジョニングや管理を行うことなくコードを実行できるコンピューティングサービスです。必要に応じてコードを実行し、自動的にスケーリングするため、課金は実際に使用したコンピューティング時間に対してのみ発生します。

  • Amazon Simple Notification Service (Amazon SNS)」は、ウェブサーバーやメールアドレスなど、パブリッシャーとクライアント間のメッセージの交換を調整および管理するのに役立ちます。

  • AWS Step Functions は、 AWS Lambda 関数やその他の を組み合わせてビジネスクリティカルなアプリケーション AWS のサービス を構築するのに役立つサーバーレスオーケストレーションサービスです。

ベストプラクティス

  • Amazon Bedrock はトレーニングされたデータから学習する生成 AI モデルであり、そのデータを使用してコンテキストのトレーニングと生成も行います。ベストプラクティスとして、データ漏洩の問題につながる恐れのある個人情報は隠します。

  • 生成 AI は有益なインサイトを提供できますが、特に本番環境において、重大なエラー処理の決定には人間による監視が必要です。

エピック

タスク説明必要なスキル

ステートマシンの作成。

ワークフローに適したステートマシンを作成するには、次の手順を実行します。

  1. にサインインし AWS マネジメントコンソール、 AWS Step Functions コンソールを開きます。

  2. ナビゲーションペインから、[ステートマシン] を選択します。

  3. [ステートマシンの作成] を選択します。

  4. ユースケースに応じてテンプレートを選択するか、[空白] を選択して要件に応じてテンプレートを作成します。

AWS DevOps
タスク説明必要なスキル

Lambda 関数を作成する。

Lambda 関数をインポートするには、次の手順を実行します。

  1. で AWS マネジメントコンソール、 AWS Lambda コンソールに移動します。

  2. 左のナビゲーションペインで、[Functions] (関数)、[Create function] (関数の作成) の順に選択します。

  3. [関数の作成] ページで、関数を作成するオプションから選択します。次に、[関数名] に名前を入力し、ランタイムのドロップダウンリストから適切な言語を選択します。

  4. [関数の作成] を選択してください。

AWS DevOps

Lambda コードで必要なロジックを設定します。

  • AWS SDK for Python (Boto3) を使用して Amazon Bedrock API に接続するには、次のコードを使用します。

    このコードは、Amazon Bedrock のクライアントを設定し、必要なパラメータを準備してから、指定されたプロンプトで Claude 3 モデルにリクエストを送信します。

    このパターンは、Claude 3 モデルを呼び出します。関連するモデル ID を含め、サポートされているすべての基盤モデルの詳細については、Amazon Bedrock ドキュメントの「Amazon Bedrock でサポートされている基盤モデル」を参照してください。

client = boto3.client( service_name="bedrock-runtime", region_name="selected-region" ) # Invoke Claude 3 with the text prompt model_id = "your-model-id" # Select your Model ID, Based on the Model Id, Change the body format try: response = client.invoke_model( modelId=model_id, body=json.dumps( { "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "messages": [ { "role": "user", "content": [{"type": "text", "text": prompt}], } ], } ), )
  • (オプション) AWS アカウント IDs をプレースホルダーアカウント IDs。セキュリティ上の理由から、このアプローチは、機密性の高いアカウント情報を含む可能性のあるログ、エラーメッセージ、その他の出力をサニタイズするのに役立ちます。

    次のコードでは、コロン (Amazon リソースネーム (ARNs) の AWS アカウント IDs の形式およびその他の AWS 識別子) で囲まれた 12 桁の数字が表示された場合は、それをプレースホルダーアカウント ID に置き換えます":123456789012:"

    def replace_account_id(input_string): # Use a regular expression to find the AWS account ID pattern account_id_pattern = r'(:\d{12}:)' # Replace the matched pattern with ":123456789012:" modified_string = re.sub(account_id_pattern, ":123456789012:", input_string) return modified_string
AWS DevOps
タスク説明必要なスキル

Step Functions でエラーを処理するように Lambda を設定します。

ワークフローを中断せずにエラーを処理するように Step Functions を設定するには、次の手順を実行します。

  1. Step Functions コンソールで、前に作成したステートマシンに移動します。

  2. [編集] を選択し、エラー処理を設定するサービスを選択し、[エラー処理] を選択します。

  3. [新しいキャッチャーを追加] を選択します。フォールバックステートについて、[Lambda] を選択し、前に作成した Lambda 関数を選択します。詳細については、Step Functions ドキュメントの「エラーをキャッチする」を参照してください。

AWS DevOps

トラブルシューティング

問題ソリューション

Lambda が Amazon Bedrock API にアクセスできない (実行する権限がない)

このエラーは、Lambda ロールに Amazon Bedrock API へのアクセス許可がない場合に発生します。この問題を解決するには、Lambda ロールに AmazonBedrockFullAccess ポリシーを追加します。詳細については、AWS マネージドポリシーリファレンスガイドの「AmazonBedrockFullAccess」を参照してください。

Lambda タイムアウトエラー

プロンプトによっては、レスポンスを生成して返すまでに 30 秒以上かかる場合があります。この問題を解決するには、設定時間を長くします。詳細については、AWS Lambda デベロッパーガイドの「Lambda 関数のタイムアウトを設定する」を参照してください。

関連リソース