本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Lambda 容器映像部署上啟用 Lambda Insights
若要在部署為容器映像的 Lambda 函數上啟用 Lambda Insights,請在您的 Dockerfile 中新增行。這些行會將 Lambda Insights 代理程式安裝為容器映像中的延伸。x86-64 容器和 ARM64 容器要新增的行不同。
注意
僅在使用 Amazon Linux 2 的 Lambda 執行時間上支援 Lambda Insights 代理程式。
x86-64 容器映像部署
若要在部署為在 x86-64 容器上執行之容器映像的 Lambda 函數上,啟用 Lambda Insights,請在您的 Dockerfile 中新增下列行。這些行會將 Lambda Insights 代理程式安裝為容器映像中的延伸。
RUN curl -O https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.rpm && \ rpm -U lambda-insights-extension.rpm && \ rm -f lambda-insights-extension.rpm
建立 Lambda 函數之後,請將 CloudWatchLambdaInsightsExecutionRolePolicy IAM 政策設定為函數的執行角色,並且在容器映像型 Lambda 函數上啟用 Lambda Insights。
注意
若要使用較舊版本的 Lambda Insights 延伸,請將先前命令中的 URL 取代為此 URL:https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.1.0.111.0.rpm
。目前僅提供 Lambda Insights 1.0.111.0 版及更新版本。如需詳細資訊,請參閱Lambda Insights 延伸的可用版本。
若要在 Linux 伺服器上驗證 Lambda Insights 代理程式套件的簽章
輸入下列命令,以下載公有金鑰。
shell$
wget https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/lambda-insights-extension.gpg輸入下列命令,將公有金鑰匯入至您的 keyring。
shell$
gpg --import lambda-insights-extension.gpg輸出會類似下列內容:請記下
key
值,在後續步驟您將會用到它。在此範例輸出中,索引鍵值為848ABDC8
。gpg: key 848ABDC8: public key "Amazon Lambda Insights Extension" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1)
執行下列命令,驗證指紋。將
key-value
取代為上述步驟中的索引鍵值。shell$
gpg --fingerprint key-value在此命令的輸出中,指紋字串應為
E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8
。若字串不相符,請勿安裝代理程式並聯絡 AWS。在您驗證指紋之後,即可使用它來驗證 Lambda Insights 代理程式套件。輸入以下命令,下載套件簽章檔案。
shell$
wget https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.rpm.sig執行下列命令,驗證簽章:
shell$
gpg --verify lambda-insights-extension.rpm.sig lambda-insights-extension.rpm輸出應與以下類似:
gpg: Signature made Thu 08 Apr 2021 06:41:00 PM UTC using RSA key ID 848ABDC8 gpg: Good signature from "Amazon Lambda Insights Extension" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8
在預期的輸出中,可能會有關信任簽章的警告。只有您或您信任者所簽章的金鑰才能信任。這不表示該簽章是無效的,只是您尚未驗證該公有金鑰。
如果輸出包含
BAD signature
,檢查您是否已正確執行步驟。如果您繼續取得BAD signature
回應,請聯絡 AWS 並避免使用下載的檔案。
x86-64 範例
本節包含在容器映像型 Python Lambda 函數上啟用 Lambda Insights 的範例。
在 Lambda 容器映像上啟用 Lambda Insights 的範例
建立類似如下的 DDockerfile:
FROM public.ecr.aws/lambda/python:3.8 // extra lines to install the agent here RUN curl -O https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.rpm && \ rpm -U lambda-insights-extension.rpm && \ rm -f lambda-insights-extension.rpm COPY index.py ${LAMBDA_TASK_ROOT} CMD [ "index.handler" ]
建立一個類似如下的名為
index.py
的 Python 檔案:def handler(event, context): return { 'message': 'Hello World!' }
將 Dockerfile 和
index.py
放在同一個目錄中。然後,在該目錄中,執行以下步驟,從而建置 Docker 影像並將其上傳到 Amazon ECR。// create an ECR repository aws ecr create-repository --repository-name test-repository // build the docker image docker build -t test-image . // sign in to AWS aws ecr get-login-password | docker login --username AWS --password-stdin "${
ACCOUNT_ID
}".dkr.ecr."${REGION
}".amazonaws.com // tag the image docker tag test-image:latest "${ACCOUNT_ID
}".dkr.ecr."${REGION
}".amazonaws.com/test-repository:latest // push the image to ECR docker push "${ACCOUNT_ID
}".dkr.ecr."${REGION
}".amazonaws.com/test-repository:latest使用您剛才建立的 Amazon ECR 映像來建立 Lambda 函數。
將 CloudWatchLambdaInsightsExecutionRolePolicy IAM 政策指派給您的函數執行角色。
ARM64 容器映像部署
若要在部署為在 AL2_aarch64 容器 (使用 ARM64 架構) 上執行之容器映像的 Lambda 函數上,啟用 Lambda Insights,請在您的 Dockerfile 中新增下列行。這些行會將 Lambda Insights 代理程式安裝為容器映像中的延伸。
RUN curl -O https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.rpm && \ rpm -U lambda-insights-extension-arm64.rpm && \ rm -f lambda-insights-extension-arm64.rpm
建立 Lambda 函數之後,請將 CloudWatchLambdaInsightsExecutionRolePolicy IAM 政策設定為函數的執行角色,並且在容器映像型 Lambda 函數上啟用 Lambda Insights。
注意
若要使用較舊版本的 Lambda Insights 延伸,請將先前命令中的 URL 取代為此 URL:https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.1.0.229.0.rpm
。目前僅提供 Lambda Insights 1.0.229.0 版及更新版本。如需詳細資訊,請參閱Lambda Insights 延伸的可用版本。
若要在 Linux 伺服器上驗證 Lambda Insights 代理程式套件的簽章
輸入下列命令,以下載公有金鑰。
shell$
wget https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/lambda-insights-extension.gpg輸入下列命令,將公有金鑰匯入至您的 keyring。
shell$
gpg --import lambda-insights-extension.gpg輸出會類似下列內容:請記下
key
值,在後續步驟您將會用到它。在此範例輸出中,索引鍵值為848ABDC8
。gpg: key 848ABDC8: public key "Amazon Lambda Insights Extension" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1)
執行下列命令,驗證指紋。將
key-value
取代為上述步驟中的索引鍵值。shell$
gpg --fingerprint key-value在此命令的輸出中,指紋字串應為
E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8
。若字串不相符,請勿安裝代理程式並聯絡 AWS。在您驗證指紋之後,即可使用它來驗證 Lambda Insights 代理程式套件。輸入以下命令,下載套件簽章檔案。
shell$
wget https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.rpm.sig執行下列命令,驗證簽章:
shell$
gpg --verify lambda-insights-extension-arm64.rpm.sig lambda-insights-extension-arm64.rpm輸出應與以下類似:
gpg: Signature made Thu 08 Apr 2021 06:41:00 PM UTC using RSA key ID 848ABDC8 gpg: Good signature from "Amazon Lambda Insights Extension" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8
在預期的輸出中,可能會有關信任簽章的警告。只有您或您信任者所簽章的金鑰才能信任。這不表示該簽章是無效的,只是您尚未驗證該公有金鑰。
如果輸出包含
BAD signature
,檢查您是否已正確執行步驟。如果您繼續取得BAD signature
回應,請聯絡 AWS 並避免使用下載的檔案。
ARM64 範例
本節包含在容器映像型 Python Lambda 函數上啟用 Lambda Insights 的範例。
在 Lambda 容器映像上啟用 Lambda Insights 的範例
建立類似如下的 DDockerfile:
FROM public.ecr.aws/lambda/python:3.8 // extra lines to install the agent here RUN curl -O https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.rpm && \ rpm -U lambda-insights-extension-arm64.rpm && \ rm -f lambda-insights-extension-arm64.rpm COPY index.py ${LAMBDA_TASK_ROOT} CMD [ "index.handler" ]
建立一個類似如下的名為
index.py
的 Python 檔案:def handler(event, context): return { 'message': 'Hello World!' }
將 Dockerfile 和
index.py
放在同一個目錄中。然後,在該目錄中,執行以下步驟,從而建置 Docker 影像並將其上傳到 Amazon ECR。// create an ECR repository aws ecr create-repository --repository-name test-repository // build the docker image docker build -t test-image . // sign in to AWS aws ecr get-login-password | docker login --username AWS --password-stdin "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com // tag the image docker tag test-image:latest "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com/test-repository:latest // push the image to ECR docker push "${ACCOUNT_ID}".dkr.ecr."${REGION}".amazonaws.com/test-repository:latest
使用您剛才建立的 Amazon ECR 映像來建立 Lambda 函數。
將 CloudWatchLambdaInsightsExecutionRolePolicy IAM 政策指派給您的函數執行角色。