AWS Lambda Native Trace for Node.js

這個頁面涵蓋 AWS Lambda 函數 (以 Node.js撰寫) 的 Instana AutoTrace 設定。

支援的執行時期

  • nodejs18.x
  • nodejs16.x
  • nodejs14.x
  • nodejs12.x
  • nodejs10.x

安裝

附註: 本文件說明如何設定 Node.js Lambda 函數的追蹤。 請確定您也已執行 AWS 代理程式以進行 Lambda 監視 的設定,以確保收集 Instana 無法從 AWS Lambda 執行時期內部收集之版本及部分執行時期度量的必要資訊。

啟用 AWS Lambda Node.js 追蹤的偏好方法是遵循 AutoTrace 指示。 如果由於執行時期版本限制或其他本端限制而無法使用,則會列出其他選項,如下所示。

Instana AutoTrace 設定

Node.js 的 Instana AutoTrace 設定可讓您追蹤 AWS Lambda 函數,以使用 Instana Lambda 層 和自訂函數處理程式。 此方法不需要修改 Lambda 函數碼,且完全透過配置來完成。 它也適合自動化或包含在 Lambda 部署管線中。

若要啟用 Node.js Lambda 函數的追蹤,請執行下列步驟:

  1. 將 Instana Lambda 層新增至您的函數。

    1. 在 Lambda 函數的配置頁面中,按一下 Layers 方框,然後按一下 Add a layer層
    2. 在開啟的蹦現畫面中,選取「提供層版本 ARN」,然後複製並貼上符合您區域之 Instana Lambda 層的 ARN; 您可以在 Instana Lambda 層 區段中找到 Instana Lambda 層的右側 ARN。 層選擇
  2. 配置 Lambda 處理程式。 如果您使用 CommonJS,請將處理程式設為 instana-aws-lambda-auto-wrap.handler 。 如果您使用 ES 模組 (ES6) (可從第 223 版取得) ,請將處理程式設為 instana-aws-lambda-auto-wrap-esm.handler

    若要變更 Lambda 處理程式的設定,請在配置頁面上尋找「基本設定」區段。

    基本設定區段編輯按鈕

    按一下編輯,並將 instana-aws-lambda-auto-wrap.handler 插入標籤為 "Handler" 的欄位。

    編輯基本設定以設定 Instana 的處理程式

    Instana Lambda 層會自動觸發預設 Node.js 執行時期處理程式 index.handler。 如果您使用自訂處理程式,請在環境變數 Lambda_handler 中指定處理程式,以通知 Instana Lambda 層。 請參閱下一節,以瞭解需要設定的所有環境變數。

    附註: Lambda 配置頁面可能會顯示類似「Lambda 找不到 instana-aws-lambda-auto-wrap.js檔案」的警告。 稍後回到配置頁面時也可能會顯示此畫面。 不要讓這個警告讓你分心。 處理程式包含在 Instana Lambda 層中,但 AWS Lambda 配置頁面不會將此納入考量。

  3. 配置環境變數。 新增下列環境變數:

    • INSTANA_ENDPOINT_URL: 這是您的 無伺服器監視端點。 請務必對以 https://serverless-開頭的地區使用正確的值。
    • INSTANA_AGENT_KEY: 您的 代理程式金鑰
    • LAMBDA_HANDLER: 設定自訂處理程式。 如果您的主要檔是 myModule.js(匯出函數 myHandler) ,請將環境變數設為 myModule.myHandler。 預設值為 index.handler

    在下列範例中,原始主要 Lambda 處理程式是 index.js,因此您不需要設定環境變數 LAMBDA_HANDLER預設環境變數的設定

    在下列範例中,原始主要 Lambda 處理程式是 server.js,因此您需要將環境變數 Lambda _handler 設為 server.handler自訂環境變數的設定

    您也可以移至 Instana 安裝架構,按一下「...」,以取得這些環境變數的正確值。 其他 "->" 代理程式 "->" 安裝 Instana 代理程式 "-> 平台:"AWS"-> 技術:"AWS Lambda "。

  4. 儲存 Lambda 函數定義。 儲存

上述所有步驟都可以透過 AWS Web 主控台或任何一般 AWS 管理工具來完成,例如:

如果您想要自動化 AWS Lambdas 的 Instana 整合,以下是可能作為起點的 aws CLI 指令範例:

# Do not copy and paste this verbatim!
# It will overwrite any previously defined collection of layers and
# environment variables.
aws --region $YOUR_REGION lambda update-function-configuration \
  --function-name $YOUR_LAMBDA_FUNCTION_NAME \
  --layers $INSTANA_LAYER_ARN \
  --handler instana-aws-lambda-auto-wrap.handler \
  --environment ""Variables={INSTANA_ENDPOINT_URL=... , INSTANA_AGENT_KEY=... , ...}""

Instana Lambda 圖層

Node.js 10 或更新版本

架構 x86_64

支援的執行時期 中列出的 Lambda 執行時期最新版本 AWS Lambda 圖層的 ARN 為每個地區的下列 ARN:

地區 ARN @instana/aws-lambda 版本
af-south-1 arn:aws:lambda:af-south-1:410797082306:layer:instana-nodejs:13 2.34.1
ap-east-1 arn:aws:lambda:ap-east-1:410797082306:layer:instana-nodejs:13 2.34.1
ap-northeast-1 arn:aws:lambda:ap-northeast-1:410797082306:layer:instana-nodejs:169 2.34.1
ap-northeast-2 arn:aws:lambda:ap-northeast-2:410797082306:layer:instana-nodejs:167 2.34.1
ap-northeast-3 arn:aws:lambda:ap-northeast-3:410797082306:layer:instana-nodejs:13 2.34.1
ap-south-1 arn:aws:lambda:ap-south-1:410797082306:layer:instana-nodejs:167 2.34.1
ap-south-2 arn:aws:lambda:ap-south-2:410797082306:layer:instana-nodejs:13 2.34.1
ap-southeast-1 arn:aws:lambda:ap-southeast-1:410797082306:layer:instana-nodejs:167 2.34.1
ap-southeast-2 arn:aws:lambda:ap-southeast-2:410797082306:layer:instana-nodejs:167 2.34.1
ap-southeast-3 arn:aws:lambda:ap-southeast-3:410797082306:layer:instana-nodejs:13 2.34.1
ap-southeast-4 arn:aws:lambda:ap-southeast-4:410797082306:layer:instana-nodejs:13 2.34.1
ca-central-1 arn:aws:lambda:ca-central-1:410797082306:layer:instana-nodejs:167 2.34.1
`cn-north-1' arn:aws-cn:lambda:cn-north-1:107998019096:layer:instana-nodejs:1 2.34.1
`cn-northwest-1' arn:aws-cn:lambda:cn-northwest-1:107998019096:layer:instana-nodejs:1 2.34.1
eu-central-1 arn:aws:lambda:eu-central-1:410797082306:layer:instana-nodejs:167 2.34.1
eu-central-2 arn:aws:lambda:eu-central-2:410797082306:layer:instana-nodejs:13 2.34.1
eu-north-1 arn:aws:lambda:eu-north-1:410797082306:layer:instana-nodejs:167 2.34.1
eu-south-1 arn:aws:lambda:eu-south-1:410797082306:layer:instana-nodejs:13 2.34.1
eu-south-2 arn:aws:lambda:eu-south-2:410797082306:layer:instana-nodejs:13 2.34.1
eu-west-1 arn:aws:lambda:eu-west-1:410797082306:layer:instana-nodejs:167 2.34.1
eu-west-2 arn:aws:lambda:eu-west-2:410797082306:layer:instana-nodejs:167 2.34.1
eu-west-3 arn:aws:lambda:eu-west-3:410797082306:layer:instana-nodejs:167 2.34.1
il-central-1 arn:aws:lambda:il-central-1:410797082306:layer:instana-nodejs:10 2.34.1
me-central-1 arn:aws:lambda:me-central-1:410797082306:layer:instana-nodejs:12 2.34.1
me-south-1 arn:aws:lambda:me-south-1:410797082306:layer:instana-nodejs:12 2.34.1
sa-east-1 arn:aws:lambda:sa-east-1:410797082306:layer:instana-nodejs:166 2.34.1
us-east-1 arn:aws:lambda:us-east-1:410797082306:layer:instana-nodejs:166 2.34.1
us-east-2 arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs:166 2.34.1
us-west-1 arn:aws:lambda:us-west-1:410797082306:layer:instana-nodejs:166 2.34.1
us-west-2 arn:aws:lambda:us-west-2:410797082306:layer:instana-nodejs:166 2.34.1

也就是說,型樣是 arn:aws:lambda:${region}:410797082306:layer:instana-nodejs:${layer-version} (或 arn:aws-cn:lambda:${region}:107998019096:layer:instana-nodejs:${layer-version} 代表中國的 AWS 區域)。

請確保一律使用最新版本並定期更新您正在使用的層版本,以受益於我們在發佈新版本層時提供的新特性及修正程式。

從 71/1.121.0版開始, Node.js 層包含 Instana 的 AWS Lambda 延伸。 監視資料和追蹤資料會在本端卸載至 Instana 的 Lambda 延伸,然後再將它轉遞至 Instana 後端。 這提供下列優點 :Lambda 函數的回應將在處理程式完成時立即傳回給呼叫用戶端,而不等待資料傳送至 Instana 後端。 此特性目前限制為配置 256 MB 或以上記憶體的 Lambda 函數。 若要停用 Instana Lambda 延伸,可以將環境變數 INSTANA_DISABLE_LAMBDA_EXTENSION 設為 Lambda 函數的非空字串。

架構 arm64
地區 ARN @instana/aws-lambda 版本
af-south-1 arn:aws:lambda:af-south-1:410797082306:layer:instana-nodejs-arm64:12 2.34.1
ap-east-1 arn:aws:lambda:ap-east-1:410797082306:layer:instana-nodejs-arm64:12 2.34.1
ap-northeast-1 arn:aws:lambda:ap-northeast-1:410797082306:layer:instana-nodejs-arm64:51 2.34.1
ap-northeast-2 arn:aws:lambda:ap-northeast-2:410797082306:layer:instana-nodejs-arm64:51 2.34.1
ap-northeast-3 arn:aws:lambda:ap-northeast-3:410797082306:layer:instana-nodejs-arm64:12 2.34.1
ap-south-1 arn:aws:lambda:ap-south-1:410797082306:layer:instana-nodejs-arm64:51 2.34.1
ap-south-2 arn:aws:lambda:ap-south-2:410797082306:layer:instana-nodejs-arm64:12 2.34.1
ap-southeast-1 arn:aws:lambda:ap-southeast-1:410797082306:layer:instana-nodejs-arm64:51 2.34.1
ap-southeast-2 arn:aws:lambda:ap-southeast-2:410797082306:layer:instana-nodejs-arm64:51 2.34.1
ap-southeast-3 arn:aws:lambda:ap-southeast-3:410797082306:layer:instana-nodejs-arm64:12 2.34.1
ap-southeast-4 arn:aws:lambda:ap-southeast-4:410797082306:layer:instana-nodejs-arm64:12 2.34.1
ca-central-1 arn:aws:lambda:ca-central-1:410797082306:layer:instana-nodejs-arm64:51 2.34.1
`cn-north-1' arn:aws-cn:lambda:cn-north-1:107998019096:layer:instana-nodejs-arm64:1 2.34.1
`cn-northwest-1' arn:aws-cn:lambda:cn-northwest-1:107998019096:layer:instana-nodejs-arm64:1 2.34.1
eu-central-1 arn:aws:lambda:eu-central-1:410797082306:layer:instana-nodejs-arm64:51 2.34.1
eu-central-2 arn:aws:lambda:eu-central-2:410797082306:layer:instana-nodejs-arm64:12 2.34.1
eu-north-1 arn:aws:lambda:eu-north-1:410797082306:layer:instana-nodejs-arm64:51 2.34.1
eu-south-1 arn:aws:lambda:eu-south-1:410797082306:layer:instana-nodejs-arm64:12 2.34.1
eu-south-2 arn:aws:lambda:eu-south-2:410797082306:layer:instana-nodejs-arm64:12 2.34.1
eu-west-1 arn:aws:lambda:eu-west-1:410797082306:layer:instana-nodejs-arm64:51 2.34.1
eu-west-2 arn:aws:lambda:eu-west-2:410797082306:layer:instana-nodejs-arm64:51 2.34.1
eu-west-3 arn:aws:lambda:eu-west-3:410797082306:layer:instana-nodejs-arm64:51 2.34.1
il-central-1 arn:aws:lambda:il-central-1:410797082306:layer:instana-nodejs-arm64:10 2.34.1
me-central-1 arn:aws:lambda:me-central-1:410797082306:layer:instana-nodejs-arm64:12 2.34.1
me-south-1 arn:aws:lambda:me-south-1:410797082306:layer:instana-nodejs-arm64:12 2.34.1
sa-east-1 arn:aws:lambda:sa-east-1:410797082306:layer:instana-nodejs-arm64:51 2.34.1
us-east-1 arn:aws:lambda:us-east-1:410797082306:layer:instana-nodejs-arm64:51 2.34.1
us-east-2 arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs-arm64:51 2.34.1
us-west-1 arn:aws:lambda:us-west-1:410797082306:layer:instana-nodejs-arm64:51 2.34.1
us-west-2 arn:aws:lambda:us-west-2:410797082306:layer:instana-nodejs-arm64:51 2.34.1

Node.js 8

nodejs8.x 執行時期的層版本是 102。 層的完整 ARN 是 arn:aws:lambda:{REGION}:410797082306:layer:instana-nodejs:102 (將 {REGION} 取代為 Lambda 函數的區域)。

儲存器型函數的 Instana Lambda 層

如果您的團隊使用儲存器型 Lambda 部署,您可以在 icr.io/instana/aws-lambda-nodejs 上使用我們的基本儲存器,或在 Dockerfile 中包含下列 Snippet ,並將 建置時間引數 設為適當的版本。

# This is the container image that delivers Instana's monitoring capabilities.
# It will not become the base image for your Lambda container image, it just provides a few files.
FROM icr.io/instana/aws-lambda-nodejs:latest as instana-layer

# This is the actual base image for your Lambda container image. You can also use any other base image that is suitable
# for container image based Lambda functions.
FROM public.ecr.aws/lambda/nodejs:14

# Copy Instana's Node.js monitoring components into your Lambda container image.
COPY --from=instana-layer /opt/extensions/ /opt/extensions/
COPY --from=instana-layer /opt/nodejs/ /opt/nodejs/

# The remainder of your Dockerfile, as it was without adding the Instana layer. The following is just an example:
COPY index.js package.json package-lock.json /var/task/
WORKDIR /var/task
RUN npm install

# Override the CMD. This can also be done as a parameter override outside of the Dockerfile, for example in the AWS console.
# If you use ES modules, use CMD [ "instana-aws-lambda-auto-wrap-esm.handler" ] instead.
CMD [ "instana-aws-lambda-auto-wrap.handler" ]

Instead of icr.io/instana/aws-lambda-nodejs:latest, you can also use a specific version of the Instana npm module @instana/aws-lambda greater or equal to 1.137.2 (see CHANGELOG), so for example:

FROM icr.io/instana/aws-lambda-nodejs:1.140.1 as instana-layer

或者,您只能固定主要版本,同時容許更新的次要/修補程式版本:

FROM icr.io/instana/aws-lambda-nodejs:1 as instana-layer

附註: icr.io/instana/aws-lambda-nodejs 的未來版本將捨棄對舊版 Lambda Node.js 執行時期的支援。 例如,從 icr.io/instana/aws-lambda-nodejs:2.0.0版開始,將捨棄對 nodejs8.x 的支援。 建議您在使用較舊的 Lambda 執行時期時固定主要版本。

Instana Lambda 層及手動包裝

您也可以如上所述將 Instana Lambda 層新增至您的函數,但不要使用 instana-aws-lambda-auto-wrap.handler。 具體而言,這是基於 "Node.js 8.10" 執行時期的 AWS Lambdas 的建議方法。 以下是此設定的必要步驟:

  1. 將 Instana Lambda 層新增至您的函數。 您可以在 上方表格中找到 Instana Lambda 層的 ARN。
  2. 新增具有必要值的環境變數 INSTANA_ENDPOINT_URLINSTANA_AGENT_KEY
  3. 根據 手動包裝處理程式區段來修改函數的程式碼。

手動安裝 @instana/aws-lambda

您也可以選擇手動安裝 npm 套件 @instana/aws-lambda ,而不使用 Instana Lambda 層:

  1. 透過在專案目錄中執行 npm install -S @instana/aws-lambda (或 yarn add @instana/aws-lambda) ,將相依關係 @instana/aws-lambda 新增至專案。 這會將套件新增至 node_modules 資料夾,並將相依關係儲存在 package.json 檔案中。
  2. 新增具有必要值的環境變數 INSTANA_ENDPOINT_URLINSTANA_AGENT_KEY
  3. 根據 手動包裝處理程式區段來修改函數的程式碼。

手動包裝處理程式

如果您不想要或無法使用自動包裝處理程式,則需要稍微修改 Node.js AWS Lambda 函數的程式碼,以針對它啟用 Instana 追蹤。

附註: 如果您使用 Instana Lambda 層及自動包裝處理程式 (如 AutoTrace AWS Lambdas小節中所述) ,則不需要本節中說明的程式碼修改。

附註: 如果您將 Lambda 處理程式與 Web 套件組合在一起,則 建議使用此方法,因為 Instana 的核心套件不支援使用 Web 套件進行預先處理。 AutoTrace AWS Lambdas 方法適用於使用 Web 套件的 Lambdas。 作為替代方案,您可以使用手動包裝,並至少排除套件 @instana/aws-lambda (或所有相依關係) ,不由 Web 套件進行前置處理。 請參閱 Node.js 文件中的 本節 ; 如需無伺服器架構,也請參閱 無伺服器架構小節

  1. const instana = require('@instana/aws-lambda'); 這一行新增至處理程式 JavaScript 檔案的最上層。
  2. instana.wrap() 呼叫中包裝處理程式函數。
  3. 依照 AWS Lambda 的 Instana AutoTrace 說明文件的說明,配置 Instana 後端連線的環境變數。

以下是可用於 Node.js 型 AWS Lambdas 的不同處理程式函數樣式的一些之前/之後範例:

非同步函數樣式處理程式

如果您使用 async 函數作為處理程式,則它應該如下所示:

exports.handler = async (event, context) => {
  // your code
};

產生的程式碼應該如下所示:

const instana = require('@instana/aws-lambda');

exports.handler = instana.wrap(async (event, context) => {
  // your code
}); // <- don't forget the closing ) for the instana.wrap(

Promise 樣式 Lambda 處理程式

如果您使用 promise 樣式處理程式,它應該看起來如下:

exports.handler = (event, context) => {
  // your code, which returns a promise
};

產生的程式碼應該如下所示:

const instana = require('@instana/aws-lambda');

exports.handler = instana.wrap((event, context) => {
  // your code, which returns a promise
}); // <- don't forget the closing ) for the instana.wrap(

回呼樣式 Lambda 處理程式

如果您使用回呼樣式處理程式,它應該看起來如下:

exports.handler = (event, context, callback) => {
  // your code
};

產生的程式碼應該如下所示:

const instana = require('@instana/aws-lambda');

exports.handler = instana.wrap((event, context, callback) => {
  // your code
}); // <- don't forget the closing ) for the instana.wrap(

配置物件

在包裝處理程式時,您也可以傳入選用的 configuration 物件作為第一個引數:

exports.handler = instana.wrap({
    // ... your configuration, for example:
    tracing: {
      stackTraceLength: 10
    }
  },
  async (event, context) => {
  // your code
});

原生 Lambda 追蹤中不支援的配置值 (例如 agentHostagentPortreportUnhandledPromiseRejections) 會無聲自動忽略。

請注意,您也可以使用 其他配置選項 小節中列出的環境變數,以及 Node.js 配置頁面上列出的大部分環境變數。

整合 Instana 追蹤與無伺服器架構

編輯 serverless.yml ,以整合 Instana 追蹤與 無伺服器架構。 請遵循下列步驟:

  1. 從清單中複製 層 ARN ,並將 ARN 新增至目標函數定義的 層區段

  2. 新增環境變數 INSTANA_AGENT_KEYINSTANA_ENDPOINT_URLLAMBDA_HANDLER。 如需進一步資訊,請參閱 Instana AutoTrace 設定

請參閱下列範例 serverless.yml:

service: service-a

provider:
  name: aws
  runtime: nodejs16.x
  stage: dev
  region: us-east-2

functions:
  with-layer:
    environment:
      INSTANA_ENDPOINT_URL: INSTANA_ENDPOINT_URL
      INSTANA_AGENT_KEY: INSTANA_AGENT_KEY
      LAMBDA_HANDLER: src/index.handler
    layers:
      - arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs:111
    handler: instana-aws-lambda-auto-wrap.handler

無伺服器離線

必要條件: 請確定您已遵循 整合 Instana 追蹤與無伺服器架構 區段中的步驟 1 和 2。

編輯 serverless.yml 檔案,以使用「無伺服器架構」和 無伺服器離線來 intergate Instana。 請遵循下列步驟:

  1. NODE_PATH 環境變數設為 $NODE_PATH:/opt/nodejs/node_modules
  2. custom 區段中,將 useDocker 欄位設為 true 。 然後會自動將 Instana 層下載至 Docker 儲存器。

請參閱下列範例 serverless.yml:

service: service-b

provider:
  name: aws
  runtime: nodejs12.x
  stage: dev
  region: us-east-2

plugins:
  - serverless-offline

custom:
  serverless-offline:
    useDocker: true

functions:
  with-serverless-offline:
    environment:
      NODE_PATH: $NODE_PATH:/opt/nodejs/node_modules
      INSTANA_ENDPOINT_URL: INSTANA_ENDPOINT_URL
      INSTANA_AGENT_KEY: INSTANA_AGENT_KEY
      LAMBDA_HANDLER: src/index.handler
    layers:
      - arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs:111
    handler: instana-aws-lambda-auto-wrap.handler

無伺服器 Webpack

必要條件: 請確定您已遵循 整合 Instana 追蹤與無伺服器架構 區段中的步驟 1 和 2。

編輯 serverless.yml 檔案,以使用「無伺服器架構」和 無伺服器 Webpack來 intergate Instana。

entrypoint 新增至目標 Lambda 函數定義。 進入點是原始 Node.js Lambda 處理程式,由 Instana Lambda 層自動觸發。 如需進一步資訊,請參閱 Instana AutoTrace 設定

請參閱下列範例 serverless.yml:

service: service-c

provider:
  name: aws
  runtime: nodejs12.x
  stage: dev
  region: us-east-2

plugins:
  - serverless-webpack

package:
  individually: true

functions:
  with-serverless-webpack:
    environment:
      INSTANA_ENDPOINT_URL: INSTANA_ENDPOINT_URL
      INSTANA_AGENT_KEY: INSTANA_AGENT_KEY
      LAMBDA_HANDLER: src/index.handler
    layers:
      - arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs:110
    handler: instana-aws-lambda-auto-wrap.handler
    entrypoint: src/index.handler

附註

發動與忘記呼叫

如果您在 Node.js Lambda 函數中使用 fire-and-遺忘樣式呼叫, Instana 無法保證可靠地擷取那些呼叫。 發動並忘記呼叫是您不等待結果的任何非同步呼叫。 範例如下:

const fetch = require('node-fetch');

exports.handler = async event => {
  fetch('https://example.com/fire-and-forget'); // No await here!

  const response = await fetch('https://example.com/wait-for-me');

  return {
    message: response.text()
  };
}

這個 Lambda 處理程式使用 node-fetch 套件來進行兩個 HTTP 呼叫。 第二個呼叫是以 async 關鍵字來呼叫,因此執行會等待它完成。 將可靠地追蹤此呼叫。

與此相反,程式碼不會等待 第一個 呼叫 (fetch('https://example.com/fire-and-forget')) 的結果。 該呼叫可能已在 Lambda 執行完成或未完成時完成。 如果在整個 Lamba 執行終止時尚未完成,則不會將呼叫報告給 Instana 後端。 如果您在 Instana 使用者介面中檢查對應的追蹤,可能會看到一則警告,指出「在處理期間,此追蹤中的部分項目跨距遺漏母項跨距。」

此範例使用 async/await 樣式,但 promise-style 和 callback-style 程式碼也有類似的範例。

SSM 支援

可從第 99 版的層 instana-nodejs/@instana/aws-lambda@1.138.0取得。

您也可以透過 AWS SSM (System Manager) 參數儲存庫來提供 Instana 代理程式金鑰。

  1. 將 Instana 代理程式金鑰新增至 SSM 參數儲存庫。 請記住或複製參數名稱。
  2. 從環境變數中移除 INSTANA_AGENT_KEY
  3. 使用所複製的參數名稱,將 INSTANA_SSM_PARAM_NAME 新增至您的環境變數。
  4. 如果您已將參數新增為 "SecureString" ,則也需要設定 INSTANA_SSM_DECRYPTION=true。 如果您使用「字串」類型,則不需要設定其他變數。

附註: 如果您未從環境變數中移除 INSTANA_AGENT_KEY ,則會忽略 SSM 環境變數。

較舊 Node.js Lambda 執行時期

在撰寫本文時, Amazon 提供 Node.js 14、12 及 10 作為 Lambda 執行時期。 Instana 不支援已由 AWS (例如 Node 4 和 6) 解除任務的較舊 Node.js Lambda 執行時期。 如果您仍已部署使用那些執行時期的 Lambdas ,請將它們更新至較新的 Node.js Lambda 執行時期,然後再配置它們以進行原生 Instana 追蹤。 Node.js 8 目前仍受支援,雖然它已使用壽命結束。

在 Lambda 函數中使用 Instana API

您可以在 Lambda 程式碼中存取及使用整個 Instana API ,與使用 @instana/collector的一般 vanilla Node.js 應用程式相同。

如果您使用 Instana Node.js Lambda 層及自動 wrap 處理程式,則需要將下列行新增至程式碼:

const instana = require('@instana/aws-lambda');

如果您使用 手動折返,則該行已在 Lambda 處理程式檔案中。

附註: 如果您使用 Instana Node.js Lambda 層,請不要將套件 @instana/aws-lambda 新增為 package.json 檔案的相依關係。 此套件由 Instana Node.js Lambda 層提供。 不支援在同時使用 Lambda 層時將它新增為相依關係。

如果您的 Lambda 函數碼包含多個原始檔,您也可以在其他原始碼檔案中新增陳述式 const instana = require('@instana/aws-lambda'); ,以在該處存取 Instana Node.js API。

其他環境變數

名稱 預設值 說明
INSTANA_DISABLE_LAMBDA_EXTENSION false 任何非空字串。 是否停用 lambda 延伸。