

# CloudWatch Synthetics Canary での依存関係の使用
<a name="CloudWatch_Synthetics_Canaries_dependencies"></a>

このセクションでは、CloudWatch Synthetics Canary で `Dependencies` を使用する方法について説明します。`Dependencies` フィールドを使用すると、Canary の依存関係を指定でき、Canary スクリプトで使用できる追加のライブラリまたはカスタムコードを含めることができます。

## 概要
<a name="overview"></a>

CloudWatch Synthetics Canary では、依存関係としての Lambda レイヤーの指定をサポートしています。この機能を使用すると、次のことができます。
+ 複数の Canary 間で共通コードを共有する
+ Canary スクリプトコードとは別に依存関係を管理する
+ 依存関係を Lambda レイヤーに移動して Canary スクリプトのサイズを小さくする

## サポートされている API
<a name="supported-apis"></a>

`Dependencies` フィールドは、次の 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) 

## 構文
<a name="syntax"></a>

`Dependencies` フィールドは、リクエスト構文のコード構造の一部です。

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

## 依存関係の使用
<a name="usage"></a>

さまざまなシナリオでの `Dependencies` フィールドの使用例と手順をいくつか示します。

### 依存関係を使用した Canary の作成
<a name="creating-canary"></a>

Canary を作成するときに、依存関係として Lambda レイヤーを指定できます。

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

### Canary の依存関係の更新
<a name="updating-canary"></a>

UpdateCanary API を使用して Canary の依存関係を更新できます。

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

### 依存関係の削除
<a name="removing-dependencies"></a>

Canary から依存関係を削除するには、Dependencies フィールドに空の配列を指定します。

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

### StartCanaryDryRun による依存関係のテスト
<a name="testing-dependencies"></a>

新しい依存関係により Canary を更新する前に、StartCanaryDryRun API を使用してテストできます。

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

## 制約事項と考慮事項
<a name="limitations"></a>
+ 依存関係として指定できる Lambda レイヤーは 1 つだけです。
+ 依存関係を持つ Canary の作成に使用するロールには、[必要なロールとアクセス許可](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Roles.html)に加えて、依存関係レイヤーへの ` lambda:GetLayerVersion` アクセス権が必要です。

## 互換性のある Lambda レイヤーの作成
<a name="creating-compatible-layers"></a>

レイヤーの作成とパッケージ化の方法については、「[レイヤーによる Lambda 依存関係の管理](https://docs.aws.amazon.com/lambda/latest/dg/chapter-layers.html)」を参照してください。また、Canary パッキング構造に基づく Canary チェックのパッケージ構造については、「[Canary スクリプトの作成](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_WritingCanary.html)」を参照してください。