Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

aws:lambda:function AWS FIS アクションを使用する

フォーカスモード
aws:lambda:function AWS FIS アクションを使用する - AWS フォールトインジェクションサービス

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

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

aws:lambda:function アクションを使用して、 AWS Lambda 関数の呼び出しに障害を挿入できます。

これらのアクションでは、 AWS FIS マネージド拡張機能を使用して障害を挿入します。aws:lambda:function アクションを使用するには、拡張機能を Lambda 関数にレイヤーとしてアタッチし、 AWS FIS と拡張機能の間で通信するように Amazon S3 バケットを設定する必要があります。

aws:lambda:function をターゲットとする AWS FIS 実験を実行すると、 は Lambda 関数から Amazon S3 設定を AWS FIS 読み取り、次の図に示すように、指定された Amazon S3 の場所にフォールトインジェクション情報を書き込みます。

AWS Fault Injection Service Lambda 拡張機能の設定を示す図。

アクション

制限

  • AWS FIS Lambda 拡張機能は、レスポンスストリーミングを使用する関数では使用できません。障害が適用されていなくても、 AWS FIS Lambda 拡張機能はストリーミング設定を抑制します。詳細については、 AWS Lambda ユーザーガイド「Lambda 関数のレスポンスストリーミング」を参照してください。

前提条件

AWS FIS Lambda アクションを使用する前に、次の 1 回限りのタスクを完了していることを確認してください。

  • 実験を開始する予定のリージョンに Amazon S3 バケットを作成します。1 つの Amazon S3 バケットを複数の実験に使用して、複数の AWS アカウント間でバケットを共有できます。ただし、それぞれに個別のバケットが必要です AWS リージョン。

  • Lambda 拡張機能の読み取りアクセスを Amazon S3 バケットに付与する IAM ポリシーを作成します。次のテンプレートでは、 を上記で作成した Amazon S3 バケットの名前my-config-distribution-bucketに置き換え、 を使用する Amazon S3 バケット内のフォルダの名前FisConfigsに置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingConfigLocation", "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::my-config-distribution-bucket"], "Condition": { "StringLike": { "s3:prefix": ["FisConfigs/*"] } } }, { "Sid": "AllowReadingObjectFromConfigLocation", "Effect": "Allow", "Action": "s3:GetObject", "Resource": ["arn:aws:s3:::my-config-distribution-bucket/FisConfigs/*"] } ] }
  • Amazon S3 バケットに AWS FIS 実験の書き込みアクセスを許可する IAM ポリシーを作成します。次のテンプレートで、 を上記で作成した Amazon S3 バケットの名前my-config-distribution-bucketに置き換え、 を使用する Amazon S3 バケット内のフォルダの名前FisConfigsに置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowFisToWriteAndDeleteFaultConfigurations", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::my-config-distribution-bucket/FisConfigs/*" }, { "Sid": "AllowFisToInspectLambdaFunctions", "Effect": "Allow", "Action": [ "lambda:GetFunction" ], "Resource": "*" }, { "Sid": "AllowFisToDoTagLookups", "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": "*" } ] }

Lambda 関数の設定

影響を与えるすべての Lambda 関数について、以下のステップに従います。

  1. 上記で作成した Amazon S3 読み取りアクセスポリシーを Lambda 関数にアタッチします。

  2. AWS FIS 拡張機能をレイヤーとして関数にアタッチします。レイヤー ARNs「」を参照してくださいLambda で利用可能な AWS FIS 拡張機能のバージョン

  3. AWS_FIS_CONFIGURATION_LOCATION 変数を Amazon S3 設定フォルダの ARN に設定します。例: arn:aws:s3:::my-config-distribution-bucket/FisConfigs/

  4. AWS_LAMBDA_EXEC_WRAPPER 変数を /opt/aws-fis/bootstrap に設定します。

AWS FIS 実験を設定する

実験を実行する前に、前提条件で作成した Amazon S3 書き込みアクセスポリシーを、 AWS FIS Lambda アクションを使用する実験ロールにアタッチしていることを確認してください。 AWS FIS 実験のセットアップ方法の詳細については、「」を参照してくださいFIS AWS 実験テンプレートの管理

ログ記録

AWS FIS Lambda 拡張機能は、コンソールと CloudWatch ログにログを書き込みます。ログ記録は、 AWS_FIS_LOG_LEVEL変数を使用して設定できます。サポートされている値は INFOWARNERROR です。ログは、Lambda 関数用に設定されたログ形式で書き込まれます。

以下は、テキスト形式のログの例です。

2024-08-09T18:51:38.599984Z INFO AWS FIS EXTENSION - extension enabled 1.0.1

以下は、JSON 形式のログの例です。

{ "timestamp": "2024-10-08T17:15:36.953905Z", "level": "INFO", "fields": { "message": "AWS FIS EXTENSION - adding 5000 milliseconds of latency to function invocation", "requestId":"0608bf70-908f-4a17-bbfe-3782cd783d8b" } }

出力されたログは、Amazon CloudWatch メトリクスフィルターでカスタムメトリクスを生成するために使用できます。メトリクスフィルターの詳細については、Amazon CloudWatch Logs ユーザーガイド」の「フィルターを使用したログイベントからのメトリクスの作成」を参照してください。

CloudWatch Embedded Metric Format (EMF) の使用

AWS_FIS_EXTENSION_METRICS 変数を に設定することで、EMF ログを出力するように AWS FIS Lambda 拡張機能を設定できますall。デフォルトでは、拡張機能は EMF ログを出力せず、AWS_FIS_EXTENSION_METRICSデフォルトで に設定されますnone。EMF ログは、CloudWatch コンソールの aws-fis-extension namespace で公開されます。

aws-fis-extension 名前空間内で、グラフに表示する特定のメトリクスを選択できます。以下の例は、 aws-fis-extension名前空間で使用可能なメトリクスの一部を示しています。

CloudWatch ダッシュボードの出力 EMF メトリクスのグラフ例。

高度なトピック

このセクションでは、 が Lambda 拡張機能と特別なユースケースと AWS FIS どのように連携するかに関する追加情報を提供します。

ポーリングについて

障害がすべての呼び出しに影響を与え始めるまでに、最大 60 秒のランプアップ期間が発生することがあります。これは、Lambda 拡張機能が実験の開始を待っている間、設定情報をポーリングする頻度が低いためです。AWS_FIS_SLOW_POLL_INTERVAL_SECONDS 環境変数 (デフォルトは 60 秒) を設定することで、ポーリング間隔を調整できます。値が低いほどポーリングの頻度は高くなりますが、パフォーマンスへの影響とコストは大きくなります。また、障害が挿入されてから最大 20 秒のランプダウン期間が発生することもあります。これは、実験の実行中に拡張機能がポーリングする頻度が高いためです。

同時実行について

同じ Lambda 関数を複数のアクションで同時にターゲットにすることができます。アクションがすべて異なる場合、すべてのアクションが適用されます。たとえば、エラーを返す前に初期遅延を追加できます。2 つの同一のアクションまたは競合するアクションが同じ関数に適用される場合、最も早い開始日のアクションのみが適用されます。

次の図は、aws:lambda:invocation-erroraws:lambda:invocation-http-integration-response の 2 つの競合するアクションが重複していることを示しています。当初、aws:lambda:invocation-error は 11:38 にランプアップし、2 分間実行されます。その後、aws:lambda:invocation-http-integration-response は 11:39 に開始しようとしますが、最初のアクションが終了してから 11:40 まで有効になりません。実験のタイミングを維持するために、aws:lambda:invocation-http-integration-response は当初意図した時刻の 11:41 に終了します。

Graphs showing error and response code percentages for x86 and arm during overlapping actions.

呼び出しの割合について

AWS Fault Injection Service Lambda アクションは、aws:lambda:function ターゲットを使用して、1 つ以上の AWS Lambda 関数 ARNs を選択できます。これらの ARNs を使用すると、 AWS Fault Injection Service Lambda アクションは、選択した Lambda 関数の呼び出しごとに障害を挿入できます。呼び出しのごく一部に障害を挿入できるように、各アクションでは 0~100 の値を持つ invocationPercentageパラメータを指定できます。invocationPercentage パラメータを使用すると、呼び出し率が 100% 未満の場合でも、アクションが同時に実行されるようにできます。

SnapStart に関する特別な考慮事項

AWS Lambda SnapStart が有効になっている 関数は、実験がすでに実行されていても、最初の障害設定を取得するAWS_FIS_SLOW_POLL_INTERVAL_SECONDS前に の全期間待機する可能性が高くなります。これは、Lambda SnapStart が複数の実行環境の初期状態として単一のスナップショットを使用し、一時ストレージを保持するためです。 AWS Fault Injection Service Lambda 拡張機能では、ポーリング頻度が保持され、実行環境の初期化時の初期設定チェックがスキップされます。Lambda SnapStart の詳細については、 ユーザーガイドの「Lambda SnapStart による起動パフォーマンスの向上」を参照してください。 AWS Lambda

高速低頻度関数に関する特別な考慮事項

Lambda 関数が平均ポーリング期間である 70 ミリ秒未満で実行される場合、ポーリングスレッドは障害設定を取得するために複数の呼び出しが必要になる場合があります。関数が 15 分に 1 回など頻繁に実行されない場合、ポーリングは完了しません。ポーリングスレッドを完了できるようにするには、 AWS_FIS_POLL_MAX_WAIT_MILLISECONDSパラメータを設定します。拡張機能は、処理中のポーリングが終了するまで設定した時間まで待ってから、関数を開始します。これにより、課金される関数の期間が長くなり、一部の呼び出しでさらに遅延が生じることに注意してください。

Lambda Runtime API プロキシを使用した複数の拡張機能の設定

Lambda 拡張機能は AWS Lambda 、ランタイム API プロキシを使用して、ランタイムに達する前に関数呼び出しをインターセプトします。これを行うには、 AWS Lambda ランタイム API のプロキシをランタイムに公開し、その場所を AWS_LAMBDA_RUNTIME_API変数にアドバタイズします。

次の図は、Lambda ランタイム API プロキシを使用した 1 つの拡張機能の設定を示しています。

デフォルト設定。

ランタイム API プロキシパターンを使用して AWS FIS Lambda AWS Lambda 拡張機能を別の拡張機能で使用するには、カスタムブートストラップスクリプトを使用してプロキシをチェーンする必要があります。 AWS FIS Lambda 拡張機能は、次の環境変数を受け入れます。

  • AWS_FIS_PROXY_RUNTIME_API_ENDPOINT - AWS Lambda Runtime API のローカル IP とリスナーポート127.0.0.1:9876を表す形式の文字列を取得します。これは、 の元の値AWS_LAMBDA_RUNTIME_APIまたは別のプロキシの場所である可能性があります。

  • AWS_FIS_PROXY_LISTENER_PORT ‐ AWS FIS 拡張機能が独自のプロキシを起動するポート番号をデフォルトで取得します9100

これらの設定では、Lambda ランタイム API プロキシを使用して、 AWS FIS 2 つの異なる順序で拡張機能を別の拡張機能と連鎖できます。

Lambda API プロキシを使用する 2 つの連鎖拡張機能。

AWS Lambda Runtime API プロキシの詳細については、「 AWS Lambda ユーザーガイド」の「Runtime API プロキシ拡張機能による AWS Lambda ランタイムのセキュリティとガバナンスの強化」および「カスタムランタイムに Lambda ランタイム API を使用する」を参照してください。

コンテナランタイム AWS FIS での の使用

AWS_LAMBDA_RUNTIME_API 環境変数を受け入れるコンテナイメージを使用する AWS Lambda 関数の場合、以下の手順に従って Lambda AWS FIS 拡張機能をコンテナイメージにパッケージ化できます。

  1. 拡張機能を抽出するレイヤーの ARN を決定します。ARN の検索方法の詳細については、「」を参照してくださいLambda 関数の設定

  2. AWS Command Line Interface (CLI) を使用して、拡張機能 の詳細をリクエストしますaws lambda get-layer-version-by-arn --arn fis-extension-arn。レスポンスには、署名付き URL を含むLocationフィールドが含まれており、そこから FIS 拡張機能を ZIP ファイルとしてダウンロードできます。

  3. 拡張機能のコンテンツを Docker ファイルシステムの に解凍/optします。NodeJS Lambda ランタイムに基づく Dockerfile の例を次に示します。

    # extension installation # FROM amazon/aws-lambda-nodejs:12 AS builder COPY extension.zip extension.zip RUN yum install -y unzip RUN mkdir -p /opt RUN unzip extension.zip -d /opt RUN rm -f extension.zip FROM amazon/aws-lambda-nodejs:12 WORKDIR /opt COPY --from=builder /opt . # extension installation finished # # JS example. Modify as required by your runtime WORKDIR ${LAMBDA_TASK_ROOT} COPY index.js package.json . RUN npm install CMD [ "index.handler" ]

コンテナイメージの詳細については、 AWS Lambda ユーザーガイド「コンテナイメージを使用して Lambda 関数を作成する」を参照してください。

AWS FIS Lambda 環境変数

以下は、 AWS FIS Lambda 拡張機能の環境変数のリストです。

  • AWS_FIS_CONFIGURATION_LOCATION ‐ 必須。 AWS FIS がアクティブな障害設定を書き込み、拡張機能が障害設定を読み取る場所。場所は、バケットとパスを含む Amazon S3 ARN 形式である必要があります。例えば、arn:aws:s3:::my-fis-config-bucket/FisConfigs/

  • AWS_LAMBDA_EXEC_WRAPPER ‐ 必須。 AWS FIS Lambda 拡張機能の設定に使用される AWS Lambda ラッパースクリプトの場所。これは、 拡張機能に含まれている/opt/aws-fis/bootstrapスクリプトに設定する必要があります。

  • AWS_FIS_LOG_LEVEL ‐ オプション。 AWS FIS Lambda 拡張機能によって出力されるメッセージのログレベル。サポートされている値は INFOWARNERROR です。設定されていない場合、 AWS FIS 拡張機能はデフォルトで になりますINFO

  • AWS_FIS_EXTENSION_METRICS ‐ オプション。指定できる値は all および none です。拡張機能に設定するallと、 の下に EMF メトリクスが出力されますaws-fis-extension namespace

  • AWS_FIS_SLOW_POLL_INTERVAL_SECONDS ‐ オプション。設定すると、拡張機能が障害を挿入せず、障害設定が設定場所に追加されるのを待っている間、ポーリング間隔 (秒単位) が上書きされます。デフォルトは 60 です。

  • AWS_FIS_PROXY_RUNTIME_API_ENDPOINT ‐ オプション。設定すると、 の値が上書きAWS_LAMBDA_RUNTIME_APIされ、 AWS FIS 拡張機能が AWS Lambda ランタイム API とやり取りして関数の呼び出しを制御する場所が定義されます。など、IP:PORT が必要です127.0.0.1:9000。の詳細についてはAWS_LAMBDA_RUNTIME_API、「 ユーザーガイド」の「カスタムランタイムに Lambda ランタイム API を使用する」を参照してください。 AWS Lambda

  • AWS_FIS_PROXY_LISTENER_PORT ‐ オプション。 AWS FIS Lambda 拡張機能が別の拡張機能またはランタイムで使用できる AWS Lambda ランタイム API プロキシを公開するポートを定義します。デフォルトは 9100 です。

  • AWS_FIS_POLL_MAX_WAIT_MILLISECONDS ‐ オプション。ゼロ以外の値に設定すると、この変数は、障害設定を評価してランタイムの呼び出しを開始する前に、拡張機能が処理中の非同期ポーリングが完了するまで待機するミリ秒数を定義します。デフォルトは 0 です。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.