在 Lambda 容器映像部署上啟用 Lambda Insights - Amazon CloudWatch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 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 代理程式套件的簽章
  1. 輸入下列命令,以下載公有金鑰。

    shell$ wget https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/lambda-insights-extension.gpg
  2. 輸入下列命令,將公有金鑰匯入至您的 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)
  3. 執行下列命令,驗證指紋。將 key-value 取代為上述步驟中的索引鍵值。

    shell$ gpg --fingerprint key-value

    在此命令的輸出中,指紋字串應為 E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8。若字串不相符,請勿安裝代理程式並聯絡 AWS。

  4. 在您驗證指紋之後,即可使用它來驗證 Lambda Insights 代理程式套件。輸入以下命令,下載套件簽章檔案。

    shell$ wget https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.rpm.sig
  5. 執行下列命令,驗證簽章:

    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 的範例
  1. 建立類似如下的 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" ]
  2. 建立一個類似如下的名為 index.py 的 Python 檔案:

    def handler(event, context): return { 'message': 'Hello World!' }
  3. 將 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
  4. 使用您剛才建立的 Amazon ECR 映像來建立 Lambda 函數。

  5. 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 代理程式套件的簽章
  1. 輸入下列命令,以下載公有金鑰。

    shell$ wget https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/lambda-insights-extension.gpg
  2. 輸入下列命令,將公有金鑰匯入至您的 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)
  3. 執行下列命令,驗證指紋。將 key-value 取代為上述步驟中的索引鍵值。

    shell$ gpg --fingerprint key-value

    在此命令的輸出中,指紋字串應為 E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8。若字串不相符,請勿安裝代理程式並聯絡 AWS。

  4. 在您驗證指紋之後,即可使用它來驗證 Lambda Insights 代理程式套件。輸入以下命令,下載套件簽章檔案。

    shell$ wget https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.rpm.sig
  5. 執行下列命令,驗證簽章:

    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 的範例
  1. 建立類似如下的 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" ]
  2. 建立一個類似如下的名為 index.py 的 Python 檔案:

    def handler(event, context): return { 'message': 'Hello World!' }
  3. 將 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
  4. 使用您剛才建立的 Amazon ECR 映像來建立 Lambda 函數。

  5. CloudWatchLambdaInsightsExecutionRolePolicy IAM 政策指派給您的函數執行角色。