

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Use as AWS FIS ações aws:lambda:function
<a name="use-lambda-actions"></a>

Você pode usar as ações **aws:lambda:function** para injetar falhas nas invocações de suas funções. AWS Lambda 

Essas ações usam uma extensão AWS FIS gerenciada para injetar falhas. Para usar as ações **aws:lambda:function**, você precisará anexar a extensão como uma camada às suas funções do Lambda e configurar um bucket do Amazon S3 para se comunicar entre e a extensão. AWS FIS 

Quando você executa um AWS FIS experimento visando **aws:lambda:function, lê** a configuração do AWS FIS Amazon S3 a partir da sua função Lambda e grava as informações de injeção de falhas no local especificado do Amazon S3, conforme mostrado no diagrama abaixo.

![\[Diagrama mostrando a configuração da extensão AWS Fault Injection Service Lambda.\]](http://docs.aws.amazon.com/pt_br/fis/latest/userguide/images/Serverless-config-distro-3.png)


## Ações
<a name="supported-lambda-actions"></a>
+ [aws:lambda:invocation-add-delay](fis-actions-reference.md#invocation-add-delay)
+ [aws:lambda:invocation-error](fis-actions-reference.md#invocation-error)
+ [aws:lambda:invocation-http-integration-response](fis-actions-reference.md#invocation-http-integration-response)

## Limitações
<a name="lambda-limitations"></a>
+ A extensão AWS FIS Lambda não pode ser usada com funções que usam streaming de resposta. Mesmo quando nenhuma falha for aplicada, a extensão AWS FIS Lambda suprimirá as configurações de streaming. Para obter mais informações, consulte [Streaming de resposta para funções Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-response-streaming.html) no guia do *AWS Lambda usuário*.

## Pré-requisitos
<a name="lambda-prerequisites"></a>

Antes de usar as ações do AWS FIS Lambda, certifique-se de ter concluído essas tarefas únicas:
+ **Crie um bucket do Amazon S3 na região da qual você planeja iniciar um experimento ‐ Você pode usar um único bucket do** Amazon S3 para vários experimentos e compartilhar o bucket entre várias contas. AWS No entanto, você deve ter um bucket separado para cada um Região da AWS.
+ **Crie uma política do IAM para conceder acesso de leitura à extensão Lambda no bucket do Amazon S3** ‐ No modelo a seguir, `my-config-distribution-bucket` substitua pelo nome do bucket do Amazon S3 que você criou acima `FisConfigs` e pelo nome de uma pasta no bucket do Amazon S3 que você deseja usar.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListingConfigLocation",
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::my-config-distribution-bucket"],
            "Condition": {
                "StringLike": {
                    "s3:prefix": ["FisConfigs/*"]
                }
            }
        },
        {
            "Sid": "AllowReadingObjectFromConfigLocation",
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": ["arn:aws:s3:::my-config-distribution-bucket/FisConfigs/*"]
        }
    ]
  }
  ```

------
+ **Crie uma política do IAM para conceder acesso de gravação para o AWS FIS experimento no bucket do Amazon S3** ‐ No modelo a seguir, `my-config-distribution-bucket` substitua pelo nome do bucket do Amazon S3 que você criou acima `FisConfigs` e pelo nome de uma pasta no bucket do Amazon S3 que você deseja usar.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowFisToWriteAndDeleteFaultConfigurations",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::my-config-distribution-bucket/FisConfigs/*"
        },
        {
            "Sid": "AllowFisToInspectLambdaFunctions",
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunction"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowFisToDoTagLookups",
            "Effect": "Allow",
            "Action": [
                "tag:GetResources"
            ],
            "Resource": "*"
        }
    ]
  }
  ```

------

## Configurar funções do Lambda
<a name="configure-lambda-functions"></a>

Siga as etapas abaixo para cada função do Lambda que você deseja impactar:

1. Anexe a política de acesso de leitura do Amazon S3 criada acima à função Lambda.

1. Anexe a AWS FIS extensão como uma camada à função. Para obter mais informações sobre a camada ARNs, consulte[Versões disponíveis da AWS FIS extensão para Lambda](actions-lambda-extension-arns.md). 

1. Defina a `AWS_FIS_CONFIGURATION_LOCATION` variável como o ARN da pasta de configuração do Amazon S3, por exemplo. `arn:aws:s3:::my-config-distribution-bucket/FisConfigs/`

1. Defina a variável `AWS_LAMBDA_EXEC_WRAPPER` como `/opt/aws-fis/bootstrap`.

## Configurar um AWS FIS experimento
<a name="configure-fis-experiment-lambda-actions"></a>

Antes de executar seu experimento, certifique-se de ter anexado a política de acesso de gravação do Amazon S3 que você criou nos pré-requisitos às funções do experimento que usarão ações do Lambda. AWS FIS Para obter mais informações sobre como configurar um AWS FIS experimento, consulte[Gerenciando modelos AWS de experimentos do FISGerenciando seus AWS experimentos FIS](experiments.md).

## Registro em log
<a name="lambda-actions-logging"></a>

A extensão AWS FIS Lambda grava registros no console e CloudWatch nos registros. O registro pode ser configurado usando a `AWS_FIS_LOG_LEVEL` variável. Os valores compatíveis são `INFO`, `WARN` e `ERROR`. Os registros serão gravados no formato de log configurado para sua função Lambda.

Veja a seguir um exemplo de um registro em formato de texto:

```
2024-08-09T18:51:38.599984Z INFO AWS FIS EXTENSION - extension enabled 1.0.1
```

Veja a seguir um exemplo de um registro no formato JSON:

```
{
  "timestamp": "2024-10-08T17:15:36.953905Z",
  "level": "INFO",
  "fields": {
    "message": "AWS FIS EXTENSION - adding 5000 milliseconds of latency to function invocation",
    "requestId":"0608bf70-908f-4a17-bbfe-3782cd783d8b"
  }
}
```

Os registros emitidos podem ser usados com filtros CloudWatch métricos da Amazon para gerar métricas personalizadas. Para obter mais informações sobre filtros de métricas, consulte [Criação de métricas a partir de eventos de log usando filtros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html) no *guia do usuário do Amazon CloudWatch Logs*.

### Usando o formato métrico CloudWatch incorporado (EMF)
<a name="lambda-actions-emf-metrics"></a>

Você pode configurar a extensão AWS FIS Lambda para emitir registros EMF definindo a variável como. `AWS_FIS_EXTENSION_METRICS` `all` Por padrão, a extensão não emite registros EMF, e o `AWS_FIS_EXTENSION_METRICS` padrão é. `none` Os registros do EMF são publicados `aws-fis-extension namespace` no CloudWatch console.

Dentro do `aws-fis-extension` namespace, você pode selecionar determinadas métricas para serem exibidas em um gráfico. O exemplo abaixo mostra algumas das métricas disponíveis no `aws-fis-extension` namespace.

![\[Exemplo de gráfico das métricas EMF de saída no CloudWatch painel.\]](http://docs.aws.amazon.com/pt_br/fis/latest/userguide/images/emf-metrics-graph.png)


## Tópicos avançados
<a name="lambda-actions-advanced-topics"></a>

Esta seção fornece informações adicionais sobre como AWS FIS funciona com a extensão Lambda e casos de uso especiais.

**Topics**
+ [Entendendo a pesquisa](#understanding-polling)
+ [Entendendo a simultaneidade](#understanding-concurrency)
+ [Entendendo a porcentagem de invocação](#understanding-invocation-percentage)
+ [Considerações especiais para SnapStart](#considerations-for-snapshot)
+ [Considerações especiais para funções rápidas e pouco frequentes](#considerations-for-fast-infrequent-functions)
+ [Configurando várias extensões usando o proxy da API Lambda Runtime](#configuring-multiple-extensions)
+ [Usando AWS FIS com tempos de execução de contêineres](#container-runtimes)
+ [AWS FIS Variáveis de ambiente Lambda](#fis-extension-environment-variables)

### Entendendo a pesquisa
<a name="understanding-polling"></a>

Você pode observar um período de aceleração de até 60s antes que as falhas comecem a afetar todas as invocações. Isso ocorre porque a extensão Lambda pesquisa informações de configuração com pouca frequência enquanto espera o início de um experimento. Você pode ajustar o intervalo de pesquisa definindo a variável de `AWS_FIS_SLOW_POLL_INTERVAL_SECONDS` ambiente (padrão 60s). Um valor menor será pesquisado com mais frequência, mas gerará maior impacto e custo no desempenho. Você também pode notar um período de redução de até 20s após a falha ter sido injetada. Isso ocorre porque a extensão faz pesquisas com mais frequência durante a execução dos experimentos.

### Entendendo a simultaneidade
<a name="understanding-concurrency"></a>

Você pode direcionar as mesmas funções do Lambda com várias ações simultaneamente. Se as ações forem todas diferentes umas das outras, todas as ações serão aplicadas. Por exemplo, você pode adicionar um atraso inicial antes de retornar um erro. Se duas ações idênticas ou conflitantes forem aplicadas à mesma função, somente a ação com a data de início mais antiga será aplicada. 

 **A figura abaixo mostra duas ações conflitantes, **aws:lambda:invocation-error e aws:lambda:**, sobrepostas. invocation-http-integration-response** Inicialmente, **aws:lambda:invocation-error** aumenta às 11:38 e funciona por 2 minutos. Então, **aws:lambda: invocation-http-integration-response** tenta começar às 11:39, mas não entra em vigor até 11:40 após a conclusão da primeira ação. Para manter o tempo do experimento, **aws:lambda: invocation-http-integration-response** ainda termina no horário originalmente previsto de 11:41. 

![\[Graphs showing error and response code percentages for x86 and arm during overlapping actions.\]](http://docs.aws.amazon.com/pt_br/fis/latest/userguide/images/understanding-concurrency.png)


### Entendendo a porcentagem de invocação
<a name="understanding-invocation-percentage"></a>

As ações do AWS Fault Injection Service Lambda usam um destino **aws:lambda:function** que permite selecionar uma ou mais funções. AWS Lambda ARNs Com elas ARNs, as ações do AWS Fault Injection Service Lambda podem injetar falhas em cada invocação da função Lambda selecionada. Para permitir que você injete falhas em apenas uma fração das invocações, cada ação permite especificar um `invocationPercentage` parâmetro com valores de 0 a 100. Usando o `invocationPercentage` parâmetro, você pode garantir que as ações sejam simultâneas mesmo para porcentagens de invocação abaixo de 100%. 

### Considerações especiais para SnapStart
<a name="considerations-for-snapshot"></a>

AWS Lambda as funções SnapStart ativadas terão uma probabilidade maior de esperar por toda a duração `AWS_FIS_SLOW_POLL_INTERVAL_SECONDS` antes de obter a primeira configuração de falha, mesmo que um experimento já esteja em execução. Isso ocorre porque o Lambda SnapStart usa um único instantâneo como estado inicial para vários ambientes de execução e persiste no armazenamento temporário. Para a extensão AWS Fault Injection Service Lambda, ela persistirá na frequência de pesquisa e ignorará a verificação de configuração inicial na inicialização do ambiente de execução. *Para obter mais informações sobre o Lambda SnapStart, consulte [Melhorando o desempenho de startups com o Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) no guia do usuário.AWS Lambda * 

### Considerações especiais para funções rápidas e pouco frequentes
<a name="considerations-for-fast-infrequent-functions"></a>

Se sua função Lambda for executada por menos do que a duração média da pesquisa de 70 milissegundos, o encadeamento de pesquisa poderá precisar de várias invocações para obter configurações de falha. Se a função for executada com pouca frequência, por exemplo, uma vez a cada 15 minutos, a pesquisa nunca será concluída. Para garantir que o encadeamento de pesquisa possa ser concluído, defina o `AWS_FIS_POLL_MAX_WAIT_MILLISECONDS` parâmetro. A extensão aguardará até a duração que você definiu para que uma enquete em voo termine antes de iniciar a função. Observe que isso aumentará a duração da função faturada e resultará em um atraso adicional em algumas invocações.

### Configurando várias extensões usando o proxy da API Lambda Runtime
<a name="configuring-multiple-extensions"></a>

A extensão Lambda usa o proxy da API AWS Lambda Runtime para interceptar invocações de funções antes que elas atinjam o tempo de execução. Isso é feito expondo um proxy da API AWS Lambda Runtime ao tempo de execução e anunciando sua localização na `AWS_LAMBDA_RUNTIME_API` variável. 

O diagrama a seguir mostra a configuração de uma única extensão usando o proxy da API Lambda Runtime:

![\[A configuração padrão.\]](http://docs.aws.amazon.com/pt_br/fis/latest/userguide/images/Proxy-1.png)


Para usar a extensão AWS FIS Lambda com outra extensão usando o padrão de proxy da API AWS Lambda Runtime, você precisará encadear os proxies usando um script de bootstrap personalizado. A extensão AWS FIS Lambda aceita as seguintes variáveis de ambiente:
+ `AWS_FIS_PROXY_RUNTIME_API_ENDPOINT`‐ Usa uma string no formato `127.0.0.1:9876` que representa o IP local e a porta do ouvinte para a API AWS Lambda Runtime. Esse pode ser o valor original `AWS_LAMBDA_RUNTIME_API` ou a localização de outro proxy.
+ `AWS_FIS_PROXY_LISTENER_PORT`‐ Obtém um número de porta na qual a AWS FIS extensão deve iniciar seu próprio proxy, por padrão`9100`.

Com essas configurações, você pode encadear a AWS FIS extensão com outra extensão usando o proxy da API Lambda Runtime em duas ordens diferentes.

![\[Duas extensões encadeadas usando o proxy da API Lambda.\]](http://docs.aws.amazon.com/pt_br/fis/latest/userguide/images/lambda-runtime-api-proxy.png)


*Para obter mais informações sobre o proxy da AWS Lambda Runtime API, consulte Como [aprimorar a segurança e a governança do tempo de AWS Lambda execução com a extensão de proxy da Runtime API](https://aws.amazon.com/blogs/compute/enhancing-runtime-security-and-governance-with-the-aws-lambda-runtime-api-proxy-extension/) e [Usar a API de tempo de execução Lambda para tempos de execução personalizados](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) no AWS Lambda guia do usuário.*

### Usando AWS FIS com tempos de execução de contêineres
<a name="container-runtimes"></a>

Para AWS Lambda funções que usam imagens de contêiner que aceitam a variável de `AWS_LAMBDA_RUNTIME_API` ambiente, você pode empacotar a extensão AWS FIS Lambda em sua imagem de contêiner seguindo as etapas abaixo:

1. Determine o ARN da camada da qual extrair a extensão. Para obter mais informações sobre como encontrar o ARN, consulte. [Configurar funções do Lambda](#configure-lambda-functions)

1. Use a AWS Command Line Interface (CLI) para solicitar detalhes sobre a extensão. `aws lambda get-layer-version-by-arn --arn fis-extension-arn` A resposta conterá um `Location` campo contendo uma URL pré-assinada a partir da qual você pode baixar a extensão FIS como um arquivo ZIP.

1. Descompacte o conteúdo da extensão em seu sistema `/opt` de arquivos Docker. Veja a seguir um exemplo de Dockerfile baseado no tempo de execução do NodeJS Lambda:

   ```
   # extension installation #
   FROM amazon/aws-lambda-nodejs:12 AS builder
   COPY extension.zip extension.zip
   RUN yum install -y unzip
   RUN mkdir -p /opt
   RUN unzip extension.zip -d /opt
   RUN rm -f extension.zip
   FROM amazon/aws-lambda-nodejs:12
   WORKDIR /opt
   COPY --from=builder /opt .
   # extension installation finished #
   # JS example. Modify as required by your runtime
   WORKDIR ${LAMBDA_TASK_ROOT}
   COPY index.js package.json .
   RUN npm install
   CMD [ "index.handler" ]
   ```

Para obter mais informações sobre imagens de contêiner, consulte [Criar uma função Lambda usando uma imagem de contêiner](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html) no guia do *AWS Lambda usuário*.

### AWS FIS Variáveis de ambiente Lambda
<a name="fis-extension-environment-variables"></a>

A seguir está uma lista de variáveis de ambiente para a extensão AWS FIS Lambda
+ `AWS_FIS_CONFIGURATION_LOCATION`‐ Obrigatório. Local onde AWS FIS gravará as configurações de falha ativas e a extensão lerá as configurações de falha. Os locais devem estar no formato ARN do Amazon S3, incluindo um bucket e um caminho. Por exemplo, .`arn:aws:s3:::my-fis-config-bucket/FisConfigs/`
+ `AWS_LAMBDA_EXEC_WRAPPER`‐ Obrigatório. Localização do [script do AWS Lambda wrapper](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-modify.html#runtime-wrapper) usado para configurar a extensão AWS FIS Lambda. Isso deve ser definido para o `/opt/aws-fis/bootstrap` script incluído na extensão.
+ `AWS_FIS_LOG_LEVEL`‐ Opcional. Nível de log para mensagens emitidas pela extensão AWS FIS Lambda. Os valores compatíveis são `INFO`, `WARN` e `ERROR`. Se não for definida, a AWS FIS extensão assumirá como padrão`INFO`.
+ `AWS_FIS_EXTENSION_METRICS`‐ Opcional. Os possíveis valores são `all` e `none`. Se definido para `all` a extensão, emitirá métricas EMF sob o. `aws-fis-extension namespace`
+ `AWS_FIS_SLOW_POLL_INTERVAL_SECONDS`‐ Opcional. Se definido, substituirá o intervalo de pesquisa (em segundos) enquanto a extensão não estiver injetando falhas e aguardando que uma configuração de falha seja adicionada ao local de configuração. O padrão é `60`.
+ `AWS_FIS_PROXY_RUNTIME_API_ENDPOINT`‐ Opcional. Se definido, substituirá o valor de `AWS_LAMBDA_RUNTIME_API` para definir onde a AWS FIS extensão interage com a API de tempo de AWS Lambda execução para controlar a invocação da função. Espera IP:PORT, por exemplo,. `127.0.0.1:9000` *Para obter mais informações`AWS_LAMBDA_RUNTIME_API`, consulte Como [usar a API de tempo de execução do Lambda para tempos de execução personalizados no guia](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) do AWS Lambda usuário.*
+ `AWS_FIS_PROXY_LISTENER_PORT`‐ Opcional. Define a porta na qual a extensão AWS FIS Lambda expõe um proxy de API AWS Lambda de tempo de execução que pode ser usado por outra extensão ou pelo tempo de execução. O padrão é `9100`.
+ `AWS_FIS_POLL_MAX_WAIT_MILLISECONDS`‐ Opcional. Se definida como um valor diferente de zero, essa variável define o número de milissegundos em que a extensão aguardará a conclusão de uma pesquisa assíncrona em andamento antes de avaliar as configurações de falha e iniciar a invocação do tempo de execução. O padrão é `0`.