

# Uso das dependências com os canários do CloudWatch Synthetics
<a name="CloudWatch_Synthetics_Canaries_dependencies"></a>

Esta seção explica como usar as `Dependencies` nos canários do CloudWatch Synthetics. O campo `Dependencies` permite especificar dependências para seus canários, possibilitando a inclusão de bibliotecas adicionais ou código personalizado que seus scripts de canário possam utilizar.

## Visão geral
<a name="overview"></a>

Os canários do CloudWatch Synthetics são compatíveis com a especificação de camadas do Lambda como dependências. Com este recurso, você pode:
+ Compartilhar código comum entre vários canários
+ Gerenciar dependências de forma independente do código do script do seu canário
+ Reduzir o tamanho do script do seu canário ao transferir as dependências para uma camada do Lambda

## APIs compatíveis
<a name="supported-apis"></a>

O campo `Dependencies` é compatível com as seguintes APIs:
+  [CreateCanary](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_CreateCanary.html) 
+  [UpdateCanary](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_UpdateCanary.html) 
+  [StartCanaryDryRun](https://docs.aws.amazon.com/AmazonSynthetics/latest/APIReference/API_StartCanaryDryRun.html) 

## Sintaxe
<a name="syntax"></a>

O campo `Dependencies` faz parte da estrutura do código na sintaxe da solicitação:

```
"Code": { 
  "Handler": "string",
  "S3Bucket": "string",
  "S3Key": "string",
  "S3Version": "string",
  "ZipFile": blob,
  "Dependencies": [
    {
      "Type": "LambdaLayer",
      "Reference": "string"
    }
  ]
}
```

## Uso de dependências
<a name="usage"></a>

A seguir, apresentamos alguns exemplos e instruções para o uso do campo `Dependencies` em diferentes cenários.

### Criação de um canário com dependências
<a name="creating-canary"></a>

Ao criar um canário, é possível especificar uma camada do Lambda como uma dependência:

```
{
  "Name": "my-canary",
  "Code": {
    "Handler": "pageLoadBlueprint.handler",
    "S3Bucket": "my-bucket",
    "S3Key": "my-canary-script.zip",
    "Dependencies": [
      {
        "Type": "LambdaLayer",
        "Reference": "arn:aws:lambda:us-west-2:123456789012:layer:my-custom-layer:1"
      }
    ]
  },
  "ArtifactS3Location": "s3://my-bucket/artifacts/",
  "ExecutionRoleArn": "arn:aws:iam::123456789012:role/my-canary-role",
  "Schedule": {
    "Expression": "rate(5 minutes)"
  },
  "RuntimeVersion": "syn-nodejs-puppeteer-3.9"
}
```

### Atualização das dependências de um canário
<a name="updating-canary"></a>

É possível atualizar as dependências de um canário usando a API UpdateCanary:

```
{
  "Name": "my-canary",
  "Code": {
    "Dependencies": [
      {
        "Type": "LambdaLayer",
        "Reference": "arn:aws:lambda:us-west-2:123456789012:layer:my-updated-layer:2"
      }
    ]
  }
}
```

### Remoção de dependências
<a name="removing-dependencies"></a>

Para remover as dependências de um canário, forneça uma matriz vazia para o campo Dependências:

```
{
  "Name": "my-canary",
  "Code": {
    "Dependencies": []
  }
}
```

### Teste de dependências com StartCanaryDryRun
<a name="testing-dependencies"></a>

Antes de atualizar um canário com novas dependências, você pode testá-las usando a API StartCanaryDryRun:

```
{
  "Name": "my-canary",
  "Code": {
    "Dependencies": [
      {
        "Type": "LambdaLayer",
        "Reference": "arn:aws:lambda:us-west-2:123456789012:layer:my-test-layer:3"
      }
    ]
  }
}
```

## Limitações e considerações
<a name="limitations"></a>
+ Somente uma camada do Lambda pode ser especificada como uma dependência.
+ O perfil usado para a criação de um canário com dependências deve ter acesso à API ` lambda:GetLayerVersion` para a camada de dependência, além dos [perfis e das permissões necessários](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Roles.html).

## Criação de camadas do Lambda compatíveis
<a name="creating-compatible-layers"></a>

Para obter informações sobre como criar e empacotar camadas, consulte [Gerenciar dependências do Lambda com camadas](https://docs.aws.amazon.com/lambda/latest/dg/chapter-layers.html) e para compreender a estrutura de empacotamento de uma verificação de canário com base na estrutura de empacotamento do canário, consulte [Escrever um script do canário](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_WritingCanary.html).