Habilitar o Lambda Insights em uma implantação de imagem de contêiner do Lambda - Amazon CloudWatch

Habilitar o Lambda Insights em uma implantação de imagem de contêiner do Lambda

Para habilitar o Lambda Insights em uma função do Lambda implantada como uma imagem de contêiner, adicione linhas ao Dockerfile. Essas linhas instalam o agente do Lambda Insights como uma extensão em sua imagem de contêiner. As linhas a serem adicionadas são diferentes para contêineres x86-64 e contêineres ARM64.

nota

O agente do Lambda Insights é compatível somente com os runtimes do Lambda que usam o Amazon Linux 2 e o Amazon Linux 2023.

Implantação de imagem de contêiner x86-64

Para habilitar o Lambda Insights em uma função do Lambda implantada como uma imagem de contêiner em execução em um contêiner X86-64, adicione as linhas a seguir ao Dockerfile. Essas linhas instalam o agente do Lambda Insights como uma extensão em sua imagem de contêiner.

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

Depois de criar sua função Lambda, atribua a política do IAM CloudWatchLambdaInsightsExecutionRolePolicy à função de execução da função, e o Lambda Insights estará habilitado na função Lambda baseada na imagem de contêiner.

nota

Para usar uma versão mais antiga da extensão do Lambda Insights, substitua a URL nos comandos anteriores por esta URL: https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.1.0.111.0.rpm. Atualmente, apenas as versões 1.0.111.0 do Lambda Insights e posteriores estão disponíveis. Para obter mais informações, consulte Versões disponíveis da extensão do Lambda Insights.

Para verificar a assinatura do pacote do agente do Lambda Insights em um servidor Linux
  1. Insira o comando a serguir para baixar a chave pública.

    shell$ wget https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/lambda-insights-extension.gpg
  2. Insira o comando a seguir para importar a chave pública para o token de autenticaçao.

    shell$ gpg --import lambda-insights-extension.gpg

    A saída será semelhante ao seguinte: Anote o valor da key, pois ele será necessário na próxima etapa. Neste exemplo de saída, a chave-valor é 848ABDC8.

    gpg: key 848ABDC8: public key "Amazon Lambda Insights Extension" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1)
  3. Verifique a impressão digital inserindo o comando a seguir. Substitua key-value pelo valor da chave da etapa anterior.

    shell$ gpg --fingerprint key-value

    A string de impressão digital na saída deste comando deve ser E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8. Se a string não coincidir, não instale o agente e entre em contato com a AWS.

  4. Depois de verificar a impressão digital, você pode usá-la para verificar a assinatura do pacote do agente do Lambda Insights. Baixe o arquivo de assinatura do pacote inserindo o comando a seguir.

    shell$ wget https://lambda-insights-extension.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension.rpm.sig
  5. Verifique a assinatura inserindo o comando a seguir.

    shell$ gpg --verify lambda-insights-extension.rpm.sig lambda-insights-extension.rpm

    A saída deve ser a seguinte:

    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

    Na saída esperada, poderá haver um aviso sobre uma assinatura confiável. Uma chave somente será confiável se você ou alguém em quem você confia a tiver assinado. Isso não significa que a assinatura é inválida, apenas que você não verificou a chave pública.

    Caso a saída contenha BAD signature, confira se você executou as etapas corretamente. Se continuar recebendo a resposta BAD signature, entre em contato com a AWS e evite usar o arquivo baixado.

Exemplo de x86-64

Esta seção contém um exemplo de habilitação do Lambda Insights em uma função do Python Lambda baseada em imagem de contêiner.

Um exemplo de habilitação do Lambda Insights em uma implantação de imagem de contêiner do Lambda
  1. Crie um Dockerfile semelhante ao seguinte:

    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. Crie um arquivo Python chamado index.py que é semelhante ao seguinte:

    def handler(event, context): return { 'message': 'Hello World!' }
  3. Coloque o Dockerfile e o index.py no mesmo diretório. Em seguida, nesse diretório, execute as seguintes etapas para criar a imagem do docker e carregá-la no 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. Use a imagem do Amazon ECR que você acabou de criar para criar a função Lambda.

  5. Adicione a política do IAM CloudWatchLambdaInsightsExecutionRolePolicy à função de execução da função.

Implantação de imagem de contêiner ARM64

Para habilitar o Lambda Insights em uma função do Lambda implantada como uma imagem de contêiner em execução em um contêiner AL2-aarch64 (que usa a arquitetura ARM64), adicione as linhas a seguir ao Dockerfile. Essas linhas instalam o agente do Lambda Insights como uma extensão em sua imagem de contêiner.

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

Depois de criar sua função Lambda, atribua a política do IAM CloudWatchLambdaInsightsExecutionRolePolicy à função de execução da função, e o Lambda Insights estará habilitado na função Lambda baseada na imagem de contêiner.

nota

Para usar uma versão mais antiga da extensão do Lambda Insights, substitua a URL nos comandos anteriores por esta URL: https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.1.0.229.0.rpm. Atualmente, apenas as versões 1.0.229.0 do Lambda Insights e posteriores estão disponíveis. Para obter mais informações, consulte Versões disponíveis da extensão do Lambda Insights.

Para verificar a assinatura do pacote do agente do Lambda Insights em um servidor Linux
  1. Insira o comando a serguir para baixar a chave pública.

    shell$ wget https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/lambda-insights-extension.gpg
  2. Insira o comando a seguir para importar a chave pública para o token de autenticaçao.

    shell$ gpg --import lambda-insights-extension.gpg

    A saída será semelhante ao seguinte: Anote o valor da key, pois ele será necessário na próxima etapa. Neste exemplo de saída, a chave-valor é 848ABDC8.

    gpg: key 848ABDC8: public key "Amazon Lambda Insights Extension" imported gpg: Total number processed: 1 gpg: imported: 1 (RSA: 1)
  3. Verifique a impressão digital inserindo o comando a seguir. Substitua key-value pelo valor da chave da etapa anterior.

    shell$ gpg --fingerprint key-value

    A string de impressão digital na saída deste comando deve ser E0AF FA11 FFF3 5BD7 349E E222 479C 97A1 848A BDC8. Se a string não coincidir, não instale o agente e entre em contato com a AWS.

  4. Depois de verificar a impressão digital, você pode usá-la para verificar a assinatura do pacote do agente do Lambda Insights. Baixe o arquivo de assinatura do pacote inserindo o comando a seguir.

    shell$ wget https://lambda-insights-extension-arm64.s3-ap-northeast-1.amazonaws.com/amazon_linux/lambda-insights-extension-arm64.rpm.sig
  5. Verifique a assinatura inserindo o comando a seguir.

    shell$ gpg --verify lambda-insights-extension-arm64.rpm.sig lambda-insights-extension-arm64.rpm

    A saída deve ser a seguinte:

    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

    Na saída esperada, poderá haver um aviso sobre uma assinatura confiável. Uma chave somente será confiável se você ou alguém em quem você confia a tiver assinado. Isso não significa que a assinatura é inválida, apenas que você não verificou a chave pública.

    Caso a saída contenha BAD signature, confira se você executou as etapas corretamente. Se continuar recebendo a resposta BAD signature, entre em contato com a AWS e evite usar o arquivo baixado.

Exemplo de ARM64

Esta seção contém um exemplo de habilitação do Lambda Insights em uma função do Python Lambda baseada em imagem de contêiner.

Um exemplo de habilitação do Lambda Insights em uma implantação de imagem de contêiner do Lambda
  1. Crie um Dockerfile semelhante ao seguinte:

    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. Crie um arquivo Python chamado index.py que é semelhante ao seguinte:

    def handler(event, context): return { 'message': 'Hello World!' }
  3. Coloque o Dockerfile e o index.py no mesmo diretório. Em seguida, nesse diretório, execute as seguintes etapas para criar a imagem do docker e carregá-la no 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. Use a imagem do Amazon ECR que você acabou de criar para criar a função Lambda.

  5. Adicione a política do IAM CloudWatchLambdaInsightsExecutionRolePolicy à função de execução da função.