New Relic Lambdaレイヤーを追加することで、 Lambda関数を計装できます。 これにより、New Relic エージェントが統合され、関数が呼び出されるたびに自動監視が可能になります。

ヒント
Lambda関数を自動的に検出して監視するには、AWSアカウントをAWSインテグレーションを使用して統合することをお勧めします。これによりNew Relic APMのパワーをサーバーレス機能に最大限に活用できるようになります。
インストゥルメンテーション方法
New Relic包括的な監視のためにAWS Lambda 関数をプランニングするためのいくつかの方法を提供しています。
- コマンドラインインターフェース (CLI) : AWS CLI を使用して、 New Relicレイヤーを Lambda 関数にすばやく追加します。
- サーバーレス フレームワーク: New Relicインストゥルメンテーションをサーバーレス エンタープライズにシームレスに統合します。
- CloudFormation/SAM : インフラストラクチャ コード テンプレートにNew Relicレイヤーを含めます。
- AWS CDK : 他のインフラストラクチャリソースとともに、CDK コードに New Relic Lambda レイヤーを追加します。
- Terraform : New Relicインストゥルメンテーションを他のインフラストラクチャ リソースと一緒に簡単に管理します。
- 手動インストゥルメント : よりきめ細かな制御を行うには、 コンソールからNew Relic AWS Lambdaレイヤーを直接追加します。
選択した方法に関係なく、New Relic レイヤーは関数に New Relic エージェントを追加します。 このエージェントは、呼び出し時に関数を自動的にインストゥルメントし、ペイロード NR_LAMBDA_MONITORING を生成して、 New Relic Lambda 拡張機能を介してNew Relicに送信します。
必要に応じて、拡張機能をバイパスして CloudWatch でテレメトリーのみを表示するか、CloudWatch をバイパスするか、CloudWatch をフォールバックとして使用するかを選択できます。 このドキュメントの最後にあるCloudWatchのセクションでは、各オプションについて詳しく説明しています。
newrelic-lambda CLI クイックスタートを使用して Lambda 関数を計算できます。
New Relicインストゥルメンテーション レイヤーをインストールまたはアップグレードするには、次のコマンドを実行します。
$newrelic-lambda layers install --nr-account-id YOUR_NR_ACCOUNT_ID --function my-function --upgrade --apmこのコマンドは、Lambdaのリージョンとランタイムに合わせて、利用可能な最新のレイヤーを自動的に見つけます。
このコマンドは、 New Relicインストゥルメントを迅速に開始する方法を提供し、 CI/CDパイプラインに簡単に統合できます。 ただし、既存の Lambda 関数リソースが変更されるため、更新されたコードを再デプロイすると、インストゥルメンテーションが誤って削除される可能性があります。 継続的な監視を確実に行うには、各インストーラの後にコマンドを再実行するか、可能であれば、 New Relicレイヤーと設定をインストーラ プロセスに直接組み込みます。
CLIはバッチで多くの関数を操作できることに注意してください。 --function all 、 --function installed 、または--function not-installedを使用して、リージョン内のすべての関数を操作するか、既存のNewRelicインストルメンテーションの有無にかかわらず関数のみを操作します。
AWSのServerlessアプリケーション モデル (SAM) は、関数を依存するリソースに関連付け、アプリケーション全体のライフサイクルの管理を簡素化する CloudFormation テンプレートのバリエーションです。 当社では、ほとんどのLambdaサンプル関数にSAMとCloudFormationを使用しており、その他多くのツールもCloudFormationテンプレートをベースに構築されているため、さらに抽象化のレイヤーが強化されています。
CloudFormation は、 AWSリソースのプロビジョニングと管理を簡素化するAWSサービスです。 YAML または JSON テンプレートでリソースの望ましい状態を定義することにより、CloudFormation は基盤となるAPIコールを自動的に処理し、必要に応じてリソースを作成、更新、または削除します。 この宣言型アプローチにより、インフラストラクチャ管理が自動化され、一貫性と再現性が確保されます。
New RelicでLambda関数を監視するには:
New Relic Lambdaレイヤーをインストールします。以下に、Node.jsおよびJavaエージェントのLambda関数の例を示します。
Node.jsの例:
AWSTemplateFormatVersion: '2010-09-09'Transform: AWS::Serverless-2016-10-31Description: An example of a simple instrumented Node.js LambdaResources:NewRelicExample:Type: AWS::Serverless::FunctionProperties:# In this example, we're using the SAM CLI to package and deploy our lambda. SAM will transform this value during the publish step.CodeUri: newrelic-example-node/# The handler for your function needs to be the one provided by the instrumentation layer, below.Handler: newrelic-lambda-wrapper.handlerRuntime: nodejs22.xEnvironment:Variables:# For the instrumentation handler to invoke your real handler, we need this valueNEW_RELIC_LAMBDA_HANDLER: YOUR_PATH_TO_INITIAL_LAMBDA_HANDLER# Distributed tracing needs your account ID, and your trusted account IDNEW_RELIC_ACCOUNT_ID: YOUR_ACCOUNT_ID_HERE# If your New Relic account has a parent account, this value should be that account ID. Otherwise, just# your account id.NEW_RELIC_TRUSTED_ACCOUNT_KEY: YOUR_PARENT_ACCOUNT_ID_HERENEW_RELIC_APM_LAMBDA_MODE: 'true'Tags:# This tag is to enable APM mode.NR.Apm.Lambda.Mode: trueLayers:# This layer includes the New Relic Lambda extension, a sidecar process that sends telemetry,# as well as the New Relic agent for Node.js, and a handler wrapper that makes integration easy.- !Sub arn:${AWS::Partition}:lambda:${AWS::Region}:451483290750:layer:NewRelicNodeJS16X:103Policies:# This policy allows the lambda to know the value of the New Relic license key. We need this so# that we can send telemetry back to New Relic- AWSSecretsManagerGetSecretValuePolicy:SecretArn: !ImportValue NewRelicLicenseKeySecret-NewRelic-LicenseKeySecretARN通常、関数とそのリソースを記述する
template.yamlという名前のファイルがあります。レガシーJavaの例(Open Tracingに基づく):
重要
2026年4月10日より前にJava向けサーバーレス監視を使用している顧客、またはJava 8または11を使用している顧客に推奨されます。
AWSTemplateFormatVersion: '2010-09-09'Transform: AWS::Serverless-2016-10-31Description: An example of a simple Java Lambda using our Legacy Open Tracing based solutionResources:NewRelicJavaExample:Type: AWS::Serverless::FunctionProperties:CodeUri: my-java-function/# Set the handler to the New Relic Java HandlerWrapper.# Use handleRequest for RequestHandler implementations,# or handleStreamsRequest for RequestStreamHandler implementations.Handler: com.newrelic.java.HandlerWrapper::handleRequestRuntime: java17Environment:Variables:# For the instrumentation handler to invoke your real handler, we need this valueNEW_RELIC_LAMBDA_HANDLER: YOUR_PATH_TO_INITIAL_LAMBDA_HANDLER# Required: your New Relic ingest license key.NEW_RELIC_LICENSE_KEY: YOUR_NEW_RELIC_LICENSE_KEY# Required: your New Relic account ID (or parent account ID if applicable).NEW_RELIC_TRUSTED_ACCOUNT_KEY: YOUR_ACCOUNT_ID_HERELayers:# x86_64: arn:aws:lambda:us-east-1:451483290750:layer:NewRelicJava11:55# ARM64: arn:aws:lambda:us-east-1:451483290750:layer:NewRelicJava11ARM64:40- arn:aws:lambda:us-east-1:451483290750:layer:NewRelicJava17:21新しいJavaエージェントの例(スリムレイヤー、推奨):
重要
これは、Open Tracingベースのソリューションとは別のソリューションであり、2026年4月10日以降にのみリリースされています。新しいJavaエージェントレイヤーには、Java 17以降が必要です。Java 11以前のランタイムはサポートされていません。
AWSTemplateFormatVersion: '2010-09-09'Transform: AWS::Serverless-2016-10-31Description: An example of a simple instrumented Java Lambda using the new Java-Agent slim layerResources:NewRelicJavaExample:Type: AWS::Serverless::FunctionProperties:CodeUri: my-java-function/# Set the handler for your lambda.# Since the new convention layer does not use a wrapper, you should point to your actual lambda method.# The handler follows AWS's standard format: <package>.<Class>::<handler_method_name># See AWS's docs for more details: https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html#java-example-namingHandler: YOUR_PATH_TO_INITIAL_LAMBDA_HANDLER com.newrelic.java.HandlerWrapper::handleRequestRuntime: java17Environment:Variables:# Required: points AWS Lambda to the New Relic Java agent wrapper in the layer.AWS_LAMBDA_EXEC_WRAPPER: /opt/newrelic-java-handler# Required: your New Relic ingest license key.NEW_RELIC_LICENSE_KEY: YOUR_NEW_RELIC_LICENSE_KEY# Required: your New Relic account ID (or parent account ID if applicable).NEW_RELIC_TRUSTED_ACCOUNT_KEY: YOUR_ACCOUNT_ID_HERELayers:# Slim layer (recommended): only aws-lambda-java-core instrumentation enabled.# Replace us-east-1 with your AWS region. Layer version increments with each release.# For the latest versions, see https://layers.newrelic-external.com# x86_64: arn:aws:lambda:us-east-1:451483290750:layer:NewRelicAgentJava-slim:1# ARM64: arn:aws:lambda:us-east-1:451483290750:layer:NewRelicAgentJavaARM64-slim:1- arn:aws:lambda:us-east-1:451483290750:layer:NewRelicAgentJava-slim:1Java版では2つのレイヤーバリアントが利用可能です。完全な自動インストゥルメンテーションが必要でない場合は、スリム レイヤーを使用してください。
- Slimレイヤー (推奨) : インストゥルメントされたのみ
RequestHandler/RequestStreamHandler。 冷間始動時のオーバーヘッドを低減する。 - フルレイヤー: すべての自動インストゥルメンテーション モジュールが有効になります。 コールドスタート時のオーバーヘッドが大きくなる。
2 つのバリアントの詳細については、 Javaサーバレス AWS lambda パフォーマンス監視」を参照してください。
- Slimレイヤー (推奨) : インストゥルメントされたのみ
必要な環境変数を設定します。
更新された設定を使用してLambda関数をデプロイします。
Serverless フレームワークは、サーバーレス アプリケーション向けの人気のある開発およびデプロイメント ツールです。 これは AWS 向けに Node.js で記述されており、主に CloudFormation テンプレート上の高レベルの抽象化として機能します。 Node、Python、Ruby、Java、.NET 関数に適しています。
New RelicサーバーServerlessワーク アプリケーションの計装を簡素化するServerlessフレームワーク プラグインを提供します。
前提条件:
Serverlessフレームワークを利用した既存のアプリケーション。
New Relicを使用してServerlessフレームワーク アプリケーションをインストールして設定するには:
npmを使用する場合は、次のコマンドを実行します。bash$npm install --save-dev serverless-newrelic-lambda-layersまたは、
yarnを使用する場合は、次のコマンドを実行します。bash$yarn add --dev serverless-newrelic-lambda-layersserverless.yamlファイルを開き、次の設定を追加します。serverless-newrelic-lambda-layerspluginsリストに追加します。カスタム セクションに次のNew Relic設定を追加します。
plugins:- serverless-newrelic-lambda-layerscustom:newRelic:accountId: your-new-relic-account-id-hereapiKey: your-new-relic-personal-api-key-herelinkedAccount: your-new-relic-integration-account-name-hereapm: trueプロバイダー セクションに次の
NR.Apm.Lambda.Mode: trueタグを追加します。provider:tags:NR.Apm.Lambda.Mode: true
必要な環境変数を設定します。
更新された設定を使用してLambda関数をデプロイします。
AWSクラウド開発キット ( AWS CDK) は、クラウド リソースをコードで定義し、 AWS CloudFormation を通じてプロビジョニングするためのフレームワークです。
AWS CDK で New Relic を使用するには、次の手順に従います。
New Relic Lambda レイヤーをインストールします。以下は、 New Relicインストゥルメントと言われたNode.js Lambda関数をデプロイする基本的な CDK アプリの例です。
import * as cdk from 'aws-cdk-lib';import { Construct } from 'constructs';import * as lambda from 'aws-cdk-lib/aws-lambda';export class NewRelicExampleCdkStack extends cdk.Stack {constructor(scope: Construct, id: string, props?: cdk.StackProps) {super(scope, id, props);// Add latest New Relic Lambda layer ARN from https://layers.newrelic-external.comconst NewReliclayerArn = 'arn:aws:lambda:us-east-1:451483290750:layer:NewRelicNodeJS22X:38';const myFunction = new lambda.Function(this, "NewRelicExampleLambda", {runtime: lambda.Runtime.NODEJS_20_X,// Update functions handler to point to the New Relic Lambda wrapperhandler: "newrelic-lambda-wrapper.handler",code: lambda.Code.fromAsset('lib/lambda-runtime-code'),layers: [lambda.LayerVersion.fromLayerVersionArn(this, 'NewRelicLayer', NewReliclayerArn)],environment: {// Set the NEW_RELIC_LAMBDA_HANDLER environment variable to the path of your initial handler.NEW_RELIC_LAMBDA_HANDLER: 'index.handler',NEW_RELIC_APM_LAMBDA_MODE: 'true'},});// Add the New Relic APM Lambda Mode tagcdk.Tags.of(myFunction).add('NR.Apm.Lambda.Mode', 'true');}}必要な環境変数を設定します。
更新された設定を使用してLambda関数をデプロイします。
Terraform は、コード ツールとしての一般的なインフラストラクチャとして人気の高いツールです。 AWS リソースの管理に使用できます。 Terraform スクリプトを使用して インストゥルメントされた Lambda 関数のデプロイの 例をいくつか 紹介します。New Relic
New Relic Terraform プロバイダーを使用して、 AWSインテグレーションをセットアップできます。 プロバイダーをセットアップしたら、必要な環境変数を設定し、 Lambda関数にNR.Apm.Lambda.Mode: trueタグを追加します。
上記のアプローチよりもエラーが発生しやすく、手間がかかりますが、Node.jsの場合は、AWS LambdaコンソールからLambda関数の設定を手動で変更してNew Relicを使用することができます、Python、Ruby、およびJava(これには、JavaのレガシーなOpen Tracingベースのソリューションと、新しい代替のAPMエージェントベースのソリューションが含まれます)。
New Relicランタイムに LambdaRuby を実装する方法の例を次に示します。
AWS ウェブコンソールのLambdaサービスセクションに移動します。 そこから、 New Relicに接続する Lambda関数 を見つけます。
デフォルトのCode [コード]タブで、 Layers [レイヤー]セクションまで下にスクロールし、 Add a layer [レイヤーの追加]ボタンをクリックします。
Create layer [レイヤーの作成]ボタンをクリックします。
Choose a layer [レイヤーの選択]に移動し、 Specify an ARN [ARN の指定]オプションを選択します。
New Relicのレイヤーリストに移動し、ドロップダウンリストを使用して、Lambda関数がホストされているAWSリージョンを選択します。そこから、Lambda関数のRuby(またはその他の言語の)バージョンとアーキテクチャーに一致するARNを見つけます。オプションは X86 と ARM64 の 2 つあります。Copy to clipboard [クリップボードにコピー]ボタンを使用するか、ARN 文字列を手動でコピーします。
Javaを使用する顧客は、Java lambda監視のための2つの異なるソリューションを表す、旧規約のJavaレイヤーと新規約のJavaエージェントレイヤーを見つけるでしょう。
レガシーJavaレイヤーはOpen Tracingに基づいており、2026年4月10日より前に当社のサーバーレス監視を使用する顧客、およびJava 11および/または8を使用する顧客に推奨されます。すべてのarnには部分文字列
NewRelicJavaが含まれています。このようなレイヤーの ARN の例は次のとおりです:arn:aws:lambda:us-east-1:451483290750:layer:NewRelicJava17:21新しいJavaエージェントレイヤーはAPM Javaエージェントをベースにしており、新しいJavaアプリケーションに推奨されます。フルレイヤーと、可視性は低下しますがコールドスタートのパフォーマンスを向上させるSlimレイヤーがあります。これは、レガシーのOpen Tracingソリューションのドロップイン置換ではありません。詳細については、APMエージェントのドキュメントを確認してください。すべてのarnには部分文字列
NewRelicAgentJavaが含まれています。そのようなレイヤーのARNの例は次のとおりです:arn:aws:lambda:us-east-1:451483290750:layer:NewRelicAgentJava:4
AWS コンソールフォームのSpecify an ARN [ARN の指定]セクションで、New Relic Lambda レイヤーの ARN を貼り付けます。
AWSコンソールフォームで、 Add [追加]ボタンをクリックして、Lambda 関数にレイヤーを追加します。
Lambda関数のページで、デフォルトのCode [コード]タブを選択した状態で、Runtime settings [ランタイム設定]セクションまで下にスクロールし、Edit [編集]ボタンをクリックします。
既存のHandler [ハンドラー]値の安全なコピーを作成します。 後の手順で必要になります。
Handler[ハンドラー]の値を
newrelic_lambda_wrapper.handlerに変更し、 Save [保存]をクリックします。Lambda関数のページのConfiguration [設定]タブに切り替えます。
Environment variables [環境変数] サブタブを選択し、要件に基づいてEnvironment variables [環境変数]を定義します。
実行ロールを変更して、 New Relicシークレットにアクセスできるようにします。
NEW_RELIC_LICENSE_KEYという名前のシークレットの ARN を見つけます。関数の実行ロールに、以下のコードのような新しいインライン ポリシーを追加します。
SECRET_ARNを上記で見つけた値に置き換えます。"Statement": [{"Action": ["secretsmanager:GetSecretValue"],"Resource": "SECRET_ARN","Effect": "Allow"}]ヒント
New Relicレイヤーは、 New Relic Rubyエージェントを自動的に配信し、Lambda 関数の呼び出し前にRuby
requireを介してロードされます。 競合を避けるため、Ruby エージェントのコピーを他の場所に含めないでください。 エージェントの存在を活用するために、関数内で必要なNew Relic RubyエージェントAPI呼び出しを自由に実行してください。
AWSマネジメント コンソールの Configuration [設定] タブで、 Lambda関数に
NR.Apm.Lambda.Mode: trueタグを追加します。更新された設定を使用してLambda関数をデプロイします。
Java、Python、Node.js、および .Net ランタイムは、 Rubyと同じインストゥルメンテーション フローに従いますが、ハンドラーがいくつか異なります。 関数のコンソールで新しくアタッチされたレイヤーを指すように関数のハンドラーを更新する方法は次のとおりです。
Java(レガシーのオープントレーシングベースのソリューション):
RequestHandler実装:com.newrelic.java.HandlerWrapper::handleRequest。RequestStreamHandler実装:com.newrelic.java.HandlerWrapper::handleStreamsRequest。
Python:
newrelic_lambda_wrapper.handler(アンダースコア)。ノードです。
- CommonJS:
newrelic-lambda-wrapper.handler(ハイフン)。 - ESM:
/opt/nodejs/node_modules/newrelic-esm-lambda-wrapper/index.handler(ハイフン)。
- CommonJS:
.Net の場合、ハンドラーを設定する必要はありません。
新しいJavaエージェントソリューションでは、ハンドラーを設定する必要はありません。
Go の場合、Lambda関数を計装するにはソースコードを変更する必要があることに注意してください。 設定変更だけでは十分ではありません。
データを見つけて使用する
AWS Lambda 関数をセットアップしたら、 New Relic APMインターフェースでデータを検索して使用できるようになります。 データはいくつかの主要な領域に編成されており、それぞれがLambda関数のパフォーマンスと状態に異なるインサイトを提供します。
APMインターフェイスでは、ディストリビューティッド(分散)トレーシング、サービス マップ、トランザクション、エラー分析などを含む、 Lambda関数のさまざまな側面を探索できます。 これらの各エリアでは、 Lambda関数のパフォーマンス、レイテンシ、エラー率に関する詳細なインサイトが提供され、問題を迅速に特定して解決できるようになります。
ヒント
呼び出しエクスペリエンスは、 APM対話トレースと統合されました。 これにより、特定のAWS RequestIdを使用してAPMマッカーサー トレースにドリルダウンし、特定のLambda実行に関する詳細情報を得ることができます。
New Relic APMインターフェースでLambda関数を表示するには:
- https://one.newrelic.com > APM & Servicesに移動します。
- 検索条件を
isLambdaFunction = trueに設定します。 - 表示されたリストから、 Lambda関数を選択してデータを表示します。