

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EBS 用 Amazon EventBridge イベント
<a name="ebs-cloud-watch-events"></a>

Amazon EBS は、ボリュームとスナップショットに対して実行されたアクションのイベントを Amazon EventBridge に送信します。EventBridge を使用することで、これらのイベントに対応するプログラム的なアクションをトリガーするルールを設定できます。例えば、スナップショットの高速復元が有効になったときに電子メールに通知を送信するルールを作成できます。

EventBridge でのイベントは、JSON オブジェクトとして表されます。イベント固有のフィールドは、JSON オブジェクトの「detail (詳細)」セクションに表示されます。「event」 フィールドにはイベント名が入ります。「result」 フィールドには、イベントをトリガーしたアクションの完了したステータスが入ります。詳細については、「*Amazon EventBridge ユーザーガイド*」の「[Amazon EventBridge のイベントパターン](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)」を参照してください。

詳細については、*Amazon EventBridge ユーザーガイド*の「[What Is Amazon EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)」を参照してください。

**Topics**
+ [EBS ボリュームイベント](#volume-events)
+ [EBS ボリューム初期化イベント](#volume-initialization-events)
+ [EBS ボリュームの変更イベント](#volume-modification-events)
+ [EBS スナップショットイベント](#snapshot-events)
+ [EBS スナップショットのアーカイブイベント](#snapshot-archive-events)
+ [EBS 高速スナップショット復元イベント](#fast-snapshot-restore-events)
+ [AWS Lambda を使用して EventBridge イベントを処理する](using_lambda.md)

## EBS ボリュームイベント
<a name="volume-events"></a>

Amazon EBS は、次のボリュームイベントが発生したときに、EventBridge にイベントを送信します。

**Topics**
+ [createVolume](#create-volume)
+ [deleteVolume](#delete-volume)
+ [attachVolume](#attach-fail-key)
+ [detachVolume](#detach-volume)

### ボリュームの作成 (createVolume)
<a name="create-volume"></a>

`createVolume` イベントは、ボリュームを作成するアクションが完了すると AWS アカウントに送信されます。ただし、保存、ログ記録、アーカイブはされません。このイベントの結果は、`available` または `failed` のいずれかです。以下の例に示すように、無効な AWS KMS key が指定されている場合、作成は失敗します。

**イベントデータ**  
以下に示すのは、`createVolume` イベントが正常に完了したときに EBS から出力される JSON オブジェクトの例です。

```
{
   "version": "0",
   "id": "01234567-0123-0123-0123-012345678901",
   "detail-type": "EBS Volume Notification",
   "source": "aws.ec2",
   "account": "012345678901",
   "time": "yyyy-mm-ddThh:mm:ssZ",
   "region": "us-east-1",
   "resources": [
      "arn:aws:ec2:us-east-1:012345678901:volume/vol-01234567"
   ],
   "detail": {
      "result": "available",
      "cause": "",
      "event": "createVolume",
      "request-id": "01234567-0123-0123-0123-0123456789ab"
   }
}
```

以下に示すのは、`createVolume` が失敗したときに EBS から出力される JSON オブジェクトの例です。失敗の原因は無効な KMS キー です。

```
{
  "version": "0",
  "id": "01234567-0123-0123-0123-0123456789ab",
  "detail-type": "EBS Volume Notification",
  "source": "aws.ec2",
  "account": "012345678901",
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "sa-east-1",
  "resources": [
    "arn:aws:ec2:sa-east-1:0123456789ab:volume/vol-01234567",
  ],
  "detail": {
    "event": "createVolume",
    "result": "failed",
    "cause": "arn:aws:kms:sa-east-1:0123456789ab:key/01234567-0123-0123-0123-0123456789ab is disabled.",
    "request-id": "01234567-0123-0123-0123-0123456789ab",
  }
}
```

以下に示すのは、`createVolume` イベントが失敗した後で EBS から出力される JSON オブジェクトの例です。失敗の原因は、KMS キー の保留中のインポートです。

```
{  
  "version": "0",  
  "id": "01234567-0123-0123-0123-0123456789ab",  
  "detail-type": "EBS Volume Notification",  
  "source": "aws.ec2",  
  "account": "012345678901",  
  "time": "yyyy-mm-ddThh:mm:ssZ",  
  "region": "sa-east-1",  
  "resources": [    
    "arn:aws:ec2:sa-east-1:0123456789ab:volume/vol-01234567",  
  ],  
  "detail": {    
    "event": "createVolume",    
    "result": "failed",    
    "cause": "arn:aws:kms:sa-east-1:0123456789ab:key/01234567-0123-0123-0123-0123456789ab is pending import.",    
    "request-id": "01234567-0123-0123-0123-0123456789ab",  
  }
}
```

### ボリュームの削除 (deleteVolume)
<a name="delete-volume"></a>

`deleteVolume` イベントは、ボリュームを削除するアクションが完了すると AWS アカウントに送信されます。ただし、保存、ログ記録、アーカイブはされません。このイベントの結果は `deleted` です。削除が完了しない場合、イベントは送信されません。

**イベントデータ**  
以下に示すのは、`deleteVolume` イベントが正常に完了したときに EBS から出力される JSON オブジェクトの例です。

```
{
   "version": "0",
   "id": "01234567-0123-0123-0123-012345678901",
   "detail-type": "EBS Volume Notification",
   "source": "aws.ec2",
   "account": "012345678901",
   "time": "yyyy-mm-ddThh:mm:ssZ",
   "region": "us-east-1",
   "resources": [
      "arn:aws:ec2:us-east-1:012345678901:volume/vol-01234567"
   ],
   "detail": {
      "result": "deleted",
      "cause": "",
      "event": "deleteVolume",
      "request-id": "01234567-0123-0123-0123-0123456789ab"
   }
}
```

### ボリュームのアタッチまたは再アタッチ (attachVolume、reattachVolume)
<a name="attach-fail-key"></a>

インスタンスにボリュームがアタッチまたは再アタッチされたときに、`attachVolume` または `reattachVolume` イベントが AWS アカウントに送信されます。ただし、保存、ログ記録、アーカイブはされません。次の例に示すように、KMS キー を使用して EBS ボリュームを暗号化し、KMS キー が無効になった場合、インスタンスへのアタッチまたは再アタッチにその KMS キー が後で使用されると、EBS はイベントを出力します。

**イベントデータ**  
以下に示すのは、`attachVolume` が失敗したときに EBS から出力される JSON オブジェクトの例です。失敗の原因は、KMS キー の保留中の削除です。

**注記**  
AWS は、定期的なサーバーメンテナンス後にボリュームへの再アタッチを試みることがあります。

```
{
  "version": "0",    
  "id": "01234567-0123-0123-0123-0123456789ab",
  "detail-type": "EBS Volume Notification",
  "source": "aws.ec2",
  "account": "012345678901",
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "us-east-1",
  "resources": [
  "arn:aws:ec2:us-east-1:0123456789ab:volume/vol-01234567",
  "arn:aws:kms:us-east-1:0123456789ab:key/01234567-0123-0123-0123-0123456789ab"
  ],
  "detail": {
    "event": "attachVolume",
    "result": "failed",
    "cause": "arn:aws:kms:us-east-1:0123456789ab:key/01234567-0123-0123-0123-0123456789ab is pending deletion.",
    "request-id": ""
  }
}
```

以下に示すのは、`reattachVolume` が失敗したときに EBS から出力される JSON オブジェクトの例です。失敗の原因は、KMS キー の保留中の削除です。

```
{
  "version": "0",    
  "id": "01234567-0123-0123-0123-0123456789ab",
  "detail-type": "EBS Volume Notification",
  "source": "aws.ec2",
  "account": "012345678901",
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "us-east-1",
  "resources": [
  "arn:aws:ec2:us-east-1:0123456789ab:volume/vol-01234567",
  "arn:aws:kms:us-east-1:0123456789ab:key/01234567-0123-0123-0123-0123456789ab"
  ],
  "detail": {
    "event": "reattachVolume",
    "result": "failed",
    "cause": "arn:aws:kms:us-east-1:0123456789ab:key/01234567-0123-0123-0123-0123456789ab is pending deletion.",
    "request-id": ""
  }
}
```

### デタッチボリューム (detachVolume)
<a name="detach-volume"></a>

`detachVolume` イベントは、ボリュームが Amazon EC2 インスタンスからデタッチされると、 AWS アカウントに送信されます。

**イベントデータ**  
以下に、正常な `detachVolume` イベントの例を示します。

```
{
  "version":"0",
  "id":"2ec37298-1234-e436-70fc-c96b1example",
  "detail-type":"AWS API Call via CloudTrail",
  "source":"aws.ec2",
  "account":"123456789012",
  "time":"2024-03-18T16:35:52Z",
  "region":"us-east-1",
  "resources":[],
  "detail":
  {
    "eventVersion":"1.09",
    "userIdentity":
    {
      "type":"IAMUser",
      "principalId":"AIDAJT12345SQ2EXAMPLE",
      "arn":"arn:aws:iam::123456789012:user/administrator",
      "accountId":"123456789012",
      "accessKeyId":"AKIAJ67890A6EXAMPLE",
      "userName":"administrator"
    },
    "eventTime":"2024-03-18T16:35:52Z",
    "eventSource":"ec2.amazonaws.com",
    "eventName":"DetachVolume",
    "awsRegion":"us-east-1",
    "sourceIPAddress":"12.12.123.12",
    "userAgent":"aws-cli/2.7.12 Python/3.9.11 Windows/10 exe/AMD64 prompt/off command/ec2.detach-volume",
    "requestParameters":
    {
      "volumeId":"vol-072577c46bexample",
      "force":false
    },
    "responseElements":
    {
      "requestId":"1234513a-6292-49ea-83f8-85e95example",
      "volumeId":"vol-072577c46bexample",
      "instanceId":"i-0217f7eb3dexample",
      "device":"/dev/sdb",
      "status":"detaching",
      "attachTime":1710776815000
    },
    "requestID":"1234513a-6292-49ea-83f8-85e95example",
    "eventID":"1234551d-a15a-43eb-9e69-c983aexample",
    "readOnly":false,
    "eventType":"AwsApiCall",
    "managementEvent":true,
    "recipientAccountId":"123456789012",
    "eventCategory":"Management",
    "tlsDetails":
    {
      "tlsVersion":"TLSv1.3",
      "cipherSuite":"TLS_AES_128_GCM_SHA256",
      "clientProvidedHostHeader":"ec2.us-east-1.amazonaws.com"
    }
  }
}
```

## EBS ボリューム初期化イベント
<a name="volume-initialization-events"></a>

スナップショットから Amazon EBS ボリュームを作成し、デフォルトのボリューム初期化レートまたはボリューム初期化の Amazon EBS プロビジョンドレートを使用すると、ボリュームの初期化が完了してから 5 分以内に`initializeVolume`イベントが AWS アカウントに送信されます。詳細については、「[ボリューム初期化に Amazon EBS プロビジョンドレートを使用する](initalize-volume.md#volume-initialization-rate)」を参照してください。

高速スナップショット復元を使用して作成されたボリュームの場合、イベントは送信**されません**。

**重要**  
`completionTime` には、イベントの生成日時が反映されます。イベントは初期化の完了後 5 分以内に生成されるため、`completionTime` は初期化の完了後 5 分以内の日時となります。

以下に示しているのは、イベントの例です。

```
{
   "version": "0",
   "id": "01234567-0123-0123-0123-012345678901",
   "detail-type": "EBS Volume Notification",
   "source": "aws.ec2",
   "account": "012345678901",
   "time": "yyyy-mm-ddThh:mm:ssZ",
   "region": "us-east-1",
   "resources": [
      "arn:aws:ec2:us-east-1:012345678901:volume/vol-01234567890abcdef"
   ],
   "detail": {
      "event": " initializeVolume",
      "result": "succeeded",
      "completionTime": "yyyy-mm-ddThh:mm:ssZ",
      "request-id": "01234567-0123-0123-0123-0123456789ab"
   }
}
```

## EBS ボリュームの変更イベント
<a name="volume-modification-events"></a>

Amazon EBS は、ボリュームが変更されると、EventBridge に `modifyVolume` イベントを送信します。ただし、保存、ログ記録、アーカイブはされません。

```
{
   "version": "0",
   "id": "01234567-0123-0123-0123-012345678901",
   "detail-type": "EBS Volume Notification",
   "source": "aws.ec2",
   "account": "012345678901",
   "time": "yyyy-mm-ddThh:mm:ssZ",
   "region": "us-east-1",
   "resources": [
      "arn:aws:ec2:us-east-1:012345678901:volume/vol-03a55cf56513fa1b6"
   ],
   "detail": {
      "result": "optimizing",
      "cause": "",
      "event": "modifyVolume",
      "request-id": "01234567-0123-0123-0123-0123456789ab"
   }
}
```

## EBS スナップショットイベント
<a name="snapshot-events"></a>

Amazon EBS は、次のボリュームイベントが発生したときに、EventBridge にイベントを送信します。

**Topics**
+ [createSnapshot](#create-snapshot-complete)
+ [createSnapshots](#create-snapshots-complete)
+ [copySnapshot](#copy-snapshot-complete)
+ [shareSnapshot](#snapshot-shared)

### スナップショットの作成 (createSnapshot)
<a name="create-snapshot-complete"></a>

スナップショットを作成するアクションが完了すると、`createSnapshot`イベントが AWS アカウントに送信されます。ただし、保存、ログ記録、アーカイブはされません。このイベントの結果は、`succeeded` または `failed` のいずれかです。

**イベントデータ**  
以下に示すのは、`createSnapshot` イベントが正常に完了したときに EBS から出力される JSON オブジェクトの例です。`detail` セクションで、`source` フィールドにはソースボリュームの ARN が入ります。`startTime` フィールドと `endTime` フィールドは、スナップショット作成の開始時間と終了時間を示します。

```
{
  "version": "0",
  "id": "01234567-0123-0123-0123-012345678901",
  "detail-type": "EBS Snapshot Notification",
  "source": "aws.ec2",
  "account": "012345678901",
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "us-east-1",
  "resources": [
     "arn:aws:ec2::us-west-2:snapshot/snap-01234567"
  ],
  "detail": {
    "event": "createSnapshot",
    "result": "succeeded",
    "cause": "",
    "request-id": "",
    "snapshot_id": "arn:aws:ec2::us-west-2:snapshot/snap-01234567",
    "source": "arn:aws:ec2::us-west-2:volume/vol-01234567",
    "startTime": "yyyy-mm-ddThh:mm:ssZ",
    "endTime": "yyyy-mm-ddThh:mm:ssZ"  }
}
```

### スナップショットの作成 (createSnapshots)
<a name="create-snapshots-complete"></a>

マルチボリュームスナップショットを作成するアクションが完了すると、`createSnapshots`イベントが AWS アカウントに送信されます。このイベントの結果は、`succeeded` または `failed` のいずれかです。

**イベントデータ**  
以下に示すのは、`createSnapshots` イベントが正常に完了したときに EBS から出力される JSON オブジェクトの例です。`detail` セクションで、`source` フィールドには、マルチボリュームスナップショットセットのソースボリュームの ARN が入ります。`startTime` フィールドと `endTime` フィールドは、スナップショット作成の開始時間と終了時間を示します。

```
{
  "version": "0",
  "id": "01234567-0123-0123-0123-012345678901",
  "detail-type": "EBS Multi-Volume Snapshots Completion Status",
  "source": "aws.ec2",
  "account": "012345678901",
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ec2::us-east-1:snapshot/snap-01234567",
    "arn:aws:ec2::us-east-1:snapshot/snap-012345678"
  ],
  "detail": {
    "event": "createSnapshots",
    "result": "succeeded",
    "cause": "",
    "request-id": "",
    "startTime": "yyyy-mm-ddThh:mm:ssZ",
    "endTime": "yyyy-mm-ddThh:mm:ssZ",
    "snapshots": [
      {
        "snapshot_id": "arn:aws:ec2::us-east-1:snapshot/snap-01234567",
        "source": "arn:aws:ec2::us-east-1:volume/vol-01234567",
        "status": "completed"
      },
      {
        "snapshot_id": "arn:aws:ec2::us-east-1:snapshot/snap-012345678",
        "source": "arn:aws:ec2::us-east-1:volume/vol-012345678",
        "status": "completed"
      }
    ]
  }
}
```

以下に示すのは、`createSnapshots` が失敗したときに EBS から出力される JSON オブジェクトの例です。失敗の原因は、マルチボリュームのスナップショットセットの 1 つ以上のスナップショットが完了しなかったことです。`snapshot_id` の値は、失敗したスナップショットの ARN です。`startTime` と `endTime` は、スナップショットを作成するアクションの開始時間と終了時間を表します。

```
{
  "version": "0",
  "id": "01234567-0123-0123-0123-012345678901",
  "detail-type": "EBS Multi-Volume Snapshots Completion Status",
  "source": "aws.ec2",
  "account": "012345678901",
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ec2::us-east-1:snapshot/snap-01234567",
    "arn:aws:ec2::us-east-1:snapshot/snap-012345678"
  ],
"detail": {
    "event": "createSnapshots",
    "result": "failed",
    "cause": "Snapshot snap-01234567 is in status error",
   "request-id": "",
    "startTime": "yyyy-mm-ddThh:mm:ssZ",
    "endTime": "yyyy-mm-ddThh:mm:ssZ",
    "snapshots": [
      {
        "snapshot_id": "arn:aws:ec2::us-east-1:snapshot/snap-01234567",
        "source": "arn:aws:ec2::us-east-1:volume/vol-01234567",
        "status": "error"
      },
      {
        "snapshot_id": "arn:aws:ec2::us-east-1:snapshot/snap-012345678",
        "source": "arn:aws:ec2::us-east-1:volume/vol-012345678",
        "status": "error"
      }
    ]
  }
}
```

### スナップショットのコピー (copySnapshot)
<a name="copy-snapshot-complete"></a>

スナップショットをコピーするアクションが完了すると、`copySnapshot`イベントが AWS アカウントに送信されます。ただし、保存、ログ記録、アーカイブはされません。このイベントの結果は、`succeeded` または `failed` のいずれかです。

`detail` セクションでは、`source` はソーススナップショットの ARN であり、`snapshot_id` はスナップショットコピーの ARN です。`startTime` と `endTime` は、コピーオペレーションがいつ開始および終了したかを示します。`incremental` は、スナップショットコピーが増分スナップショット (`true`) であるか、完全なスナップショット (`false`) であるかを示します。`transferType` は、スナップショットコピーオペレーションが標準のコピーオペレーションであるか、時間ベースのコピーオペレーションであるかを示します。詳細については、「[Amazon EBS スナップショットと EBS-backed AMI の時間ベースのコピー](time-based-copies.md)」を参照してください。

スナップショットをリージョン間でコピーしている場合、イベントは送信先のリージョンで発生します。

**シナリオ 1: 標準のスナップショットコピーオペレーションが完了した**  
以下は、標準のスナップショットコピーオペレーションが正常に完了したときにアカウントに送信されるイベントの例です。`transferType` は `standard` に設定されています。

```
{
  "version": "0",
  "id": "01234567-0123-0123-0123-012345678901",
  "detail-type": "EBS Snapshot Notification",
  "source": "aws.ec2",
  "account": "123456789012",
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ec2::us-west-2:snapshot/snap-01234567"
  ],
  "detail": {
    "event": "copySnapshot",
    "result": "succeeded",
    "cause": "",
    "request-id": "",
    "snapshot_id": "arn:aws:ec2::us-west-2:snapshot/snap-01234567",
    "source": "arn:aws:ec2::eu-west-1:snapshot/snap-76543210",
    "startTime": "yyyy-mm-ddThh:mm:ssZ",
    "endTime": "yyyy-mm-ddThh:mm:ssZ",
    "incremental": "true",
    "transferType": "standard"
  }
}
```

**シナリオ 2: 時間ベースのスナップショットコピーオペレーションが完了期間内に完了した**  
以下は、時間ベースのスナップショットコピーオペレーションが完了期間内に完了したときにアカウントに送信されるイベントの例です。`transferType` が `time-based` になっており、これは時間ベースのスナップショットコピーオペレーションであることを示します。`completionDurationStartTime` は完了期間がいつ開始されたかを示します。

```
{
  "version": "0",
  "id": "01234567-0123-0123-0123-012345678901",
  "detail-type": "EBS Snapshot Notification",
  "source": "aws.ec2",
  "account": "123456789012",
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ec2::us-west-2:snapshot/snap-01234567"
  ],
  "detail": {
    "event": "copySnapshot",
    "result": "succeeded",
    "cause": "",
    "request-id": "",
    "startTime": "yyyy-mm-ddThh:mm:ssZ",
    "endTime": "yyyy-mm-ddThh:mm:ssZ",
    "snapshot_id": "arn:aws:ec2::us-west-2:snapshot/snap-01234567",
    "source": "arn:aws:ec2::eu-west-1:snapshot/snap-76543210",
    "incremental": "true", 
    "completionDurationStartTime":"2024-11-16T06:27:33.816Z",
    "transferType": "time-based"
  }
}
```

**シナリオ 3: 時間ベースのスナップショットコピーオペレーションは完了したが、リクエストされた完了期間内に完了しなかった**  
時間ベースのスナップショットコピーオペレーションが完了したが、リクエストされた完了期間内に完了しなかった場合、CloudWatch は 2 つのイベントをアカウントに送信します。以下に、これらのイベントの例を示します。
+ 1 つ目のイベントは、コピーオペレーションがまだ進行中であっても、完了期間が経過するとすぐにアカウントに送信されます。このイベントの場合、`detail-type` は `EBS Copy Snapshot Missed Completion Duration` であり、`missedCompletionDurationCause` はその理由を示します。

  ```
  {
   "version":"0",
   "id":"fd90eb95-0938-e02c-cf55-b81363b8ac12",
   "detail-type":"EBS Copy Snapshot Missed Completion Duration",
   "source":"aws.ec2",
   "account":"123456789012",
   "time":"2024-11-19T18:17:08Z",
   "region":"us-east-1",
   "resources": ["arn:aws:ec2:us-east-1:123456789012:snapshot/snap-01234567890abcedf"],
   "detail":{
     "event":"copySnapshot",
     "missedCompletionDurationCause":"Snapshot copy was not able to meet the specified completion duration because your snapshot copy operation throughput quota was exceeded.",
     "snapshot_id":"arn:aws:ec2:us-east-1:123456789012:snapshot/snap-01234567890abcedf",
     "source":"arn:aws:ec2:us-east-1:123456789012:snapshot/snap-00987654321fedcba",
     "startTime": "Sun Nov 24 22:32:55 UTC 2024",
     "transferType": "time-based"
     }
  }
  ```
+ 2 つ目のイベントは、スナップショットが完了した後にのみアカウントに送信されます。このイベントに含まれる `missedCompletionDurationCause` は理由を示します。

  ```
  {
    "version": "0",
    "id": "01234567-0123-0123-0123-012345678901",
    "detail-type": "EBS Snapshot Notification",
    "source": "aws.ec2",
    "account": "123456789012",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-1",
    "resources": [
      "arn:aws:ec2::us-west-2:snapshot/snap-01234567"
    ],
    "detail": {
      "event": "copySnapshot",
      "result": "succeeded",
      "cause": "",
      "request-id": "",
      "startTime": "yyyy-mm-ddThh:mm:ssZ",
      "endTime": "yyyy-mm-ddThh:mm:ssZ",
      "snapshot_id": "arn:aws:ec2::us-west-2:snapshot/snap-01234567",
      "source": "arn:aws:ec2::eu-west-1:snapshot/snap-76543210",
      "incremental": "true", 
      "completionDurationStartTime":"2024-11-16T06:27:33.816Z",
      "missedCompletionDurationCause":"Snapshot copy was not able to meet the specified completion duration because your snapshot copy operation throughput quota was exceeded.",
      "transferType": "time-based"
    }
  }
  ```

**シナリオ 4: スナップショットコピーオペレーションが失敗した**  
以下は、スナップショットコピーオペレーションが失敗したときにアカウントに送信されるイベントの例です。`result` が `failed` になっており、これはオペレーションが失敗したことを示します。

```
{
  "version": "0",
  "id": "01234567-0123-0123-0123-012345678901",
  "detail-type": "EBS Snapshot Notification",
  "source": "aws.ec2",
  "account": "123456789012",
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ec2::us-west-2:snapshot/snap-01234567"
  ],
  "detail": {
    "event": "copySnapshot",
    "result": "failed",
    "cause": "Source snapshot ID is not valid",
    "request-id": "",
    "snapshot_id": "arn:aws:ec2::us-west-2:snapshot/snap-01234567",
    "source": "arn:aws:ec2::eu-west-1:snapshot/snap-76543210",
    "startTime": "yyyy-mm-ddThh:mm:ssZ",
    "endTime": "yyyy-mm-ddThh:mm:ssZ"
  }
}
```

### スナップショットを共有 (shareSnapshot)
<a name="snapshot-shared"></a>

別の AWS アカウントがスナップショットを共有すると、`shareSnapshot`イベントがアカウントに送信されます。ただし、保存、ログ記録、アーカイブはされません。結果は常に `succeeded` です。

**イベントデータ**  
`shareSnapshot` イベントが完了したときに EBS から出力される JSON オブジェクトの例を以下に示します。`detail` セクションの の値は、スナップショットを共有したユーザーの AWS アカウント番号`source`です。 `startTime`と は、スナップショット共有アクションが開始および終了した日時`endTime`を表します。`shareSnapshot` イベントは、プライベートスナップショットが別のユーザーと共有された場合にのみ発生します。パブリックスナップショットを共有しても、イベントはトリガーされません。

```
{
  "version": "0",
  "id": "01234567-01234-0123-0123-012345678901",
  "detail-type": "EBS Snapshot Notification",
  "source": "aws.ec2",
  "account": "012345678901",
  "time": "yyyy-mm-ddThh:mm:ssZ",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ec2::us-west-2:snapshot/snap-01234567"
  ],
  "detail": {
    "event": "shareSnapshot",
    "result": "succeeded",
    "cause": "",
    "request-id": "",
    "snapshot_id": "arn:aws:ec2::us-west-2:snapshot/snap-01234567",
    "source": 012345678901,
    "startTime": "yyyy-mm-ddThh:mm:ssZ",
    "endTime": "yyyy-mm-ddThh:mm:ssZ"
  }
}
```

## EBS スナップショットのアーカイブイベント
<a name="snapshot-archive-events"></a>

Amazon EBS は、スナップショットアーカイブアクションに関連するイベントを発行します。詳細については、「[CloudWatch Events を使用して Amazon EBS スナップショットアーカイブをモニタリング](monitor-snapshot-archiving.md)」を参照してください。

## EBS 高速スナップショット復元イベント
<a name="fast-snapshot-restore-events"></a>

スナップショットの高速スナップショット復元の状態が変わると、Amazon EBS はイベントを EventBridge に送信します。イベントは、ベストエフォートベースで出力されます。

以下はこのイベントのサンプルデータです。

```
{
   "version": "0",
   "id": "01234567-0123-0123-0123-012345678901",
   "detail-type": "EBS Fast Snapshot Restore State-change Notification",
   "source": "aws.ec2",
   "account": "123456789012",
   "time": "yyyy-mm-ddThh:mm:ssZ",
   "region": "us-east-1",
   "resources": [
      "arn:aws:ec2:us-east-1::snapshot/snap-03a55cf56513fa1b6"
   ],
   "detail": {
      "snapshot-id": "snap-1234567890abcdef0",
      "state": "optimizing",
      "zone": "us-east-1a",
      "message": "Client.UserInitiated - Lifecycle state transition",
   }
}
```

`state` の想定される値は、`enabling`、`optimizing`、`enabled`、`disabling`、および `disabled` です。

`message` の有効な値は次のとおりです。

`Client.InvalidSnapshot.InvalidState - The requested snapshot transitioned to an invalid state (Error)`  
高速スナップショット復元を有効にするリクエストが失敗し、状態は `disabling` または `disabled` に移行しました。このスナップショットに対しては、高速スナップショット復元を有効にすることができません。

`Client.UserInitiated`  
状態は、正常に `enabling` または `disabling` に移行しました。

`Client.UserInitiated - Lifecycle state transition`  
状態は、正常に `optimizing`、`enabled`、または `disabled` に移行しました。

`Server.InsufficientCapacity - There was insufficient capacity available to satisfy the request`  
高速スナップショット復元を有効にするリクエストが容量不足のために失敗し、状態は `disabling` または `disabled` に移行しました。しばらく待ってから、もう一度試してください。

`Server.InternalError - An internal error caused the operation to fail`  
高速スナップショット復元を有効にするリクエストが内部エラーのために失敗し、状態は `disabling` または `disabled` に移行しました。しばらく待ってから、もう一度試してください。

`Client.InvalidSnapshot.InvalidState - The requested snapshot was deleted or access permissions were revoked`  
スナップショットが削除されたか、スナップショット所有者によって共有解除されたため、スナップショットに対する高速スナップショット復元の状態が `disabling` または `disabled` に移行しました。削除されたか共有しなくなったスナップショットに対して、高速スナップショット復元を有効にすることはできません。

# AWS Lambda を使用して EventBridge イベントを処理する
<a name="using_lambda"></a>

Amazon EBS と Amazon EventBridge を使用して、データのバックアップのワークフローを自動化できます。そのためには、IAM ポリシー、イベントを処理する AWS Lambda 関数、受信イベントを照合して Lambda 関数にルーティングする EventBridge ルールを作成する必要があります。

次の手順では、`createSnapshot` イベントを使用して完成したスナップショットを災害対策の目的で自動的に別のリージョンにコピーします。

**完了したスナップショットを別のリージョンにコピーするには**

1. 次の例に示すような IAM ポリシーを作成し、`CopySnapshot` アクションを使用して EventBridge ログに書き込むためのアクセス許可を提供します。このポリシーを EventBridge イベントを処理するユーザーに割り当てます。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "logs:CreateLogGroup",
           "logs:CreateLogStream",
           "logs:PutLogEvents"
         ],
         "Resource": "arn:aws:logs:*:*:*"
       },
       {
         "Effect": "Allow",
         "Action": [
           "ec2:CopySnapshot"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

------

1. EventBridge コンソールから利用できる関数を Lambda で定義します。以下の Lambda 関数は、Node.js で記述したサンプルであり、該当する `createSnapshot` イベント (スナップショットの完成を示す) が Amazon EBS から出力されたときに EventBridge から呼び出されます。この関数は、呼び出されると、スナップショットを `us-east-2` から `us-east-1` にコピーします。

   ```
   // Sample Lambda function to copy an EBS snapshot to a different Region
    
   var AWS = require('aws-sdk');
   var ec2 = new AWS.EC2();
    
   // define variables
   var destinationRegion = 'us-east-1';
   var sourceRegion = 'us-east-2';
   console.log ('Loading function');
    
   //main function
   exports.handler = (event, context, callback) => {
    
       // Get the EBS snapshot ID from the event details
       var snapshotArn = event.detail.snapshot_id.split('/');
       const snapshotId = snapshotArn[1];
       const description = `Snapshot copy from ${snapshotId} in ${sourceRegion}.`;
       console.log ("snapshotId:", snapshotId);
   
       // Load EC2 class and update the configuration to use destination Region to initiate the snapshot.
       AWS.config.update({region: destinationRegion});
       var ec2 = new AWS.EC2();
   
       // Prepare variables for ec2.modifySnapshotAttribute call
       const copySnapshotParams = {
           Description: description,
           DestinationRegion: destinationRegion,
           SourceRegion: sourceRegion,
           SourceSnapshotId: snapshotId
       };
    
       // Execute the copy snapshot and log any errors
       ec2.copySnapshot(copySnapshotParams, (err, data) => {
           if (err) {
               const errorMessage = `Error copying snapshot ${snapshotId} to Region ${destinationRegion}.`;
               console.log(errorMessage);
               console.log(err);
               callback(errorMessage);
           } else {
               const successMessage = `Successfully started copy of snapshot ${snapshotId} to Region ${destinationRegion}.`;
               console.log(successMessage);
               console.log(data);
               callback(null, successMessage);
           }
       });
   };
   ```

   Lambda 関数が EventBridge コンソールから確実に利用できるようにするため、EventBridge イベントが発生するリージョンで作成します。詳細については、[AWS Lambda デベロッパーガイド](https://docs.aws.amazon.com/lambda/latest/dg/)を参照してください。

1. Amazon EventBridge コンソール の[https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) を開いてください。

1. ナビゲーションペインで、[**Rules** (ルール)] を選択し、[**Create rule** (ルールの作成)] を選択してください。

1. **[Step 1: Define rule detail]** (ステップ 1: ルールの詳細を定義する) で、次の操作を行います。

   1. **[Name]** (名前) と **[Description]** (説明) の値を入力します。

   1. **[Event bus]** (イベントバス) は **[default]** (デフォルト) のままにします。

   1. **[Enable the rule on the selected event bus]** (選択したイベントバスのルールを有効にする) がオンになっているようにします。

   1. **[Event type]** (イベントタイプ) で、**[Rule with an event pattern]** (イベントパターンを使用するルール) を選択します。

   1. [**次へ**] を選択します。

1. **[Step 2: Build event pattern]** (ステップ 2: イベントパターンを作成する) で、次の操作を行います。

   1. **[イベントソース]** で、**[AWS イベントまたは EventBridge パートナーイベント]** を選択します。

   1. **[Event pattern]** (イベントパターン) セクションにある **[Event source]** (イベントソース) で、**[AWS service]** が選択されていることを確認し、**[AWS service]** で **[EC2]** を選択します。

   1. **[Event type]** (イベントタイプ) で、**[EBS Snapshot Notification]** (EBS スナップショット通知) を選択し、**[Specific event(s)]** (特定のイベント) を選択してから、**[createSnapshot]** を選択します。

   1. **[Specific result(s)]** (特定の結果) を選択してから、**[succeeded]** (成功) を選択します。

   1. [**次へ**] を選択します。

1. **[Step 3: Select targets]** (ステップ 3: ターゲットを選択する) で、次を実行します。

   1. **[ターゲットタイプ]** で、**[AWS サービス]** を選択します。

   1. **[Select target]** (ターゲットを選択) で **[Lambda function]** (Lambda 関数) を選択し、前に作成した関数を **[Function]** (関数) で選択します。

   1. **[Next]** (次へ) を選択します。

1. **[Step 4: Configure tags]** (ステップ 4: タグを設定する) で、必要に応じてルールのタグを指定し、**[Next]** (次へ) を選択します。

1. **[Step 5: Review and create]** (ステップ 5: 確認および作成する) でルールを確認し、**[Create rule]** (ルールを作成) を選択します。

作成したルールが、[**Rules**] タブに表示されます。上の例で、設定したイベントは次回にスナップショットをコピーすると EBS から出力されます。