AWS Lambda Native Trace for Node.js
這個頁面涵蓋 AWS Lambda 函數 (以 Node.js撰寫) 的 Instana AutoTrace 設定。
- 支援的運行環境
- 安裝
- 在 Lambda 函數中使用 Instana API
- 其他環境變數
支援的執行時期
nodejs18.xnodejs16.xnodejs14.xnodejs12.xnodejs10.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 函數的追蹤,請執行下列步驟:
將 Instana Lambda 層新增至您的函數。
- 在 Lambda 函數的配置頁面中,按一下
Layers方框,然後按一下Add a layer。
- 在開啟的蹦現畫面中,選取「提供層版本 ARN」,然後複製並貼上符合您區域之 Instana Lambda 層的 ARN; 您可以在 Instana Lambda 層 區段中找到 Instana Lambda 層的右側 ARN。

- 在 Lambda 函數的配置頁面中,按一下
配置 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 Lambda 層會自動觸發預設 Node.js 執行時期處理程式
index.handler。 如果您使用自訂處理程式,請在環境變數 Lambda_handler 中指定處理程式,以通知 Instana Lambda 層。 請參閱下一節,以瞭解需要設定的所有環境變數。附註: Lambda 配置頁面可能會顯示類似「Lambda 找不到 instana-aws-lambda-auto-wrap.js檔案」的警告。 稍後回到配置頁面時也可能會顯示此畫面。 不要讓這個警告讓你分心。 處理程式包含在 Instana Lambda 層中,但 AWS Lambda 配置頁面不會將此納入考量。
配置環境變數。 新增下列環境變數:
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 "。
儲存 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 的建議方法。 以下是此設定的必要步驟:
手動安裝 @instana/aws-lambda
您也可以選擇手動安裝 npm 套件 @instana/aws-lambda ,而不使用 Instana Lambda 層:
- 透過在專案目錄中執行
npm install -S @instana/aws-lambda(或yarn add @instana/aws-lambda) ,將相依關係@instana/aws-lambda新增至專案。 這會將套件新增至node_modules資料夾,並將相依關係儲存在package.json檔案中。 - 新增具有必要值的環境變數
INSTANA_ENDPOINT_URL及INSTANA_AGENT_KEY。 - 根據 手動包裝處理程式區段來修改函數的程式碼。
手動包裝處理程式
如果您不想要或無法使用自動包裝處理程式,則需要稍微修改 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 文件中的 本節 ; 如需無伺服器架構,也請參閱 無伺服器架構小節。
- 將
const instana = require('@instana/aws-lambda');這一行新增至處理程式 JavaScript 檔案的最上層。 - 在
instana.wrap()呼叫中包裝處理程式函數。 - 依照 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 追蹤中不支援的配置值 (例如 agentHost、 agentPort 和 reportUnhandledPromiseRejections) 會無聲自動忽略。
請注意,您也可以使用 其他配置選項 小節中列出的環境變數,以及 Node.js 配置頁面上列出的大部分環境變數。
整合 Instana 追蹤與無伺服器架構
編輯 serverless.yml ,以整合 Instana 追蹤與 無伺服器架構。 請遵循下列步驟:
新增環境變數
INSTANA_AGENT_KEY、INSTANA_ENDPOINT_URL及LAMBDA_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。 請遵循下列步驟:
- 將
NODE_PATH環境變數設為$NODE_PATH:/opt/nodejs/node_modules。 - 在
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
附註:
您需要使用最新版本的
serverless-webpack。建議您針對無伺服器使用 AWS System Manager 參數儲存庫 (SSM) ,以避免將一般 Instana 代理程式金鑰放入
serverless.yml。 如需相關資訊,請參閱 無伺服器架構部落格。
發動與忘記呼叫
如果您在 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 代理程式金鑰。
- 將 Instana 代理程式金鑰新增至 SSM 參數儲存庫。 請記住或複製參數名稱。
- 從環境變數中移除
INSTANA_AGENT_KEY。 - 使用所複製的參數名稱,將
INSTANA_SSM_PARAM_NAME新增至您的環境變數。 - 如果您已將參數新增為 "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 延伸。 |