

# Uso de dependencias con canarios de CloudWatch Synthetics
<a name="CloudWatch_Synthetics_Canaries_dependencies"></a>

En esta sección se explica cómo usar `Dependencies` en los canarios de CloudWatch Synthetics. El campo `Dependencies` le permite especificar las dependencias de sus canarios, lo que le permite incluir otras bibliotecas o código personalizado que pueden utilizar los scripts de canarios.

## Descripción general
<a name="overview"></a>

Los canarios de CloudWatch Synthetics permite especificar las capas de Lambda como dependencias. Esta característica le permite hacer lo siguiente:
+ Compartir código común en varios canarios
+ Administrar las dependencias por separado del código del script de canarios
+ Reducir el tamaño del script de canarios al mover las dependencias a una capa de Lambda

## API compatibles:
<a name="supported-apis"></a>

El campo `Dependencies` es compatible con las siguientes API:
+  [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) 

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

El campo `Dependencies` forma parte de la estructura de código de la sintaxis de la solicitud:

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

## Uso de dependencias
<a name="usage"></a>

Estos son algunos ejemplos e instrucciones para usar el campo `Dependencies` en diferentes escenarios.

### Crear un canario con dependencias
<a name="creating-canary"></a>

Al crear un canario, puede especificar una capa de Lambda como dependencia:

```
{
  "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"
}
```

### Actualizar las dependencias de un canario
<a name="updating-canary"></a>

Puede actualizar las dependencias de un canario mediante la API UpdateCanary:

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

### Eliminar dependencias
<a name="removing-dependencies"></a>

Para eliminar las dependencias de un canario, proporcione una matriz vacía para el campo Dependencias:

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

### Probar las dependencias con StartCanaryDryRun
<a name="testing-dependencies"></a>

Antes de actualizar un canario con nuevas dependencias, puede probarlas con la API StartCanaryDryRun:

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

## Limitaciones y consideraciones
<a name="limitations"></a>
+ Solo se puede especificar una capa de Lambda como dependencia
+ El rol que se utilice para crear un canario con dependencias debe tener acceso de ` lambda:GetLayerVersion` a la capa de dependencias además de los [roles y permisos necesarios](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Roles.html)

## Crear capas de Lambda compatibles
<a name="creating-compatible-layers"></a>

Para obtener información sobre cómo crear y empaquetar capas, consulte [Administrar dependencias de Lambda con capas](https://docs.aws.amazon.com/lambda/latest/dg/chapter-layers.html) y para comprender la estructura de empaquetado de un canario según la estructura de empaquetado del canario, consulte [Escritura de un script de canario](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_WritingCanary.html).