CloudWatch Synthetics Canary での依存関係の使用
このセクションでは、CloudWatch Synthetics Canary で Dependencies を使用する方法について説明します。Dependencies フィールドを使用すると、Canary の依存関係を指定でき、Canary スクリプトで使用できる追加のライブラリまたはカスタムコードを含めることができます。
概要
CloudWatch Synthetics Canary では、依存関係としての Lambda レイヤーの指定をサポートしています。この機能を使用すると、次のことができます。
-
複数の Canary 間で共通コードを共有する
-
Canary スクリプトコードとは別に依存関係を管理する
-
依存関係を Lambda レイヤーに移動して Canary スクリプトのサイズを小さくする
サポートされている API
Dependencies フィールドは、次の API でサポートされています。
構文
Dependencies フィールドは、リクエスト構文のコード構造の一部です。
"Code": { "Handler": "string", "S3Bucket": "string", "S3Key": "string", "S3Version": "string", "ZipFile": blob, "Dependencies": [ { "Type": "LambdaLayer", "Reference": "string" } ] }
依存関係の使用
さまざまなシナリオでの Dependencies フィールドの使用例と手順をいくつか示します。
依存関係を使用した Canary の作成
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 の依存関係の更新
UpdateCanary API を使用して Canary の依存関係を更新できます。
{ "Name": "my-canary", "Code": { "Dependencies": [ { "Type": "LambdaLayer", "Reference": "arn:aws:lambda:us-west-2:123456789012:layer:my-updated-layer:2" } ] } }
依存関係の削除
Canary から依存関係を削除するには、Dependencies フィールドに空の配列を指定します。
{ "Name": "my-canary", "Code": { "Dependencies": [] } }
StartCanaryDryRun による依存関係のテスト
新しい依存関係により Canary を更新する前に、StartCanaryDryRun API を使用してテストできます。
{ "Name": "my-canary", "Code": { "Dependencies": [ { "Type": "LambdaLayer", "Reference": "arn:aws:lambda:us-west-2:123456789012:layer:my-test-layer:3" } ] } }
制約事項と考慮事項
-
依存関係として指定できる Lambda レイヤーは 1 つだけです。
-
依存関係を持つ Canary の作成に使用するロールには、必要なロールとアクセス許可に加えて、依存関係レイヤーへの
lambda:GetLayerVersionアクセス権が必要です。
互換性のある Lambda レイヤーの作成
レイヤーの作成とパッケージ化の方法については、「レイヤーによる Lambda 依存関係の管理」を参照してください。また、Canary パッキング構造に基づく Canary チェックのパッケージ構造については、「Canary スクリプトの作成」を参照してください。