

# Habilitar o Lambda Insights em uma implantação de imagem de contêiner do Lambda
<a name="Lambda-Insights-Getting-Started-docker"></a>

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.

**Topics**
+ [Implantação de imagem de contêiner x86-64](#Lambda-Insights-Getting-Started-docker-x86-64)
+ [Implantação de imagem de contêiner ARM64](#Lambda-Insights-Getting-Started-docker-ARM64)

## Implantação de imagem de contêiner x86-64
<a name="Lambda-Insights-Getting-Started-docker-x86-64"></a>

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`. Para obter mais informações, consulte [Versões disponíveis da extensão do Lambda Insights](Lambda-Insights-extension-versions.md).

**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
   ```

1. 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)
   ```

1. 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.

1. 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
   ```

1. 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
<a name="Lambda-Insights-Getting-Started-docker-example"></a>

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" ]
   ```

1. Crie um arquivo Python chamado `index.py` que é semelhante ao seguinte:

   ```
   def handler(event, context):
     return {
       'message': 'Hello World!'
     }
   ```

1. 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
   ```

1. Use a imagem do Amazon ECR que você acabou de criar para criar a função Lambda.

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

## Implantação de imagem de contêiner ARM64
<a name="Lambda-Insights-Getting-Started-docker-ARM64"></a>

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`. Para obter mais informações, consulte [Versões disponíveis da extensão do Lambda Insights](Lambda-Insights-extension-versions.md).

**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
   ```

1. 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)
   ```

1. 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.

1. 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
   ```

1. 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
<a name="Lambda-Insights-Getting-Started-docker-example-ARM64"></a>

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" ]
   ```

1. Crie um arquivo Python chamado `index.py` que é semelhante ao seguinte:

   ```
   def handler(event, context):
     return {
       'message': 'Hello World!'
     }
   ```

1. 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
   ```

1. Use a imagem do Amazon ECR que você acabou de criar para criar a função Lambda.

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