

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS KMS 키를 사용하여 EventBridge 이벤트 버스 암호화
<a name="eb-encryption-event-bus-cmkey"></a>

EventBridge가를 기본값 AWS 소유 키 으로 사용하는 대신를 사용하여 이벤트 버스에 저장된 데이터를 암호화 AWS KMS 하도록 지정할 수 있습니다. 이벤트 버스를 생성하거나 업데이트할 때 고객 관리형 키를 지정할 수 있습니다. 암호화에 고객 관리형 키를 사용하도록 기본 이벤트 버스를 업데이트할 수도 있습니다. 자세한 내용은 [KMS 키 옵션](eb-encryption-at-rest-key-options.md) 단원을 참조하십시오.

 이벤트 버스에 대한 고객 관리형 키를 지정하면 EventBridge는 해당 키를 사용하여 다음을 암호화합니다.
+ 이벤트 버스에 저장된 [사용자 지정](eb-putevents.md) 및 [파트너](eb-saas.md) 이벤트입니다.

   AWS 서비스의 이벤트는를 사용하여 암호화됩니다 AWS 소유 키.

  EventBridge는 이벤트 메타데이터를 암호화하지 않습니다. 이벤트 메타데이터에 대한 자세한 내용은 *이벤트 참조*의 [AWS 서비스 이벤트 메타데이터](https://docs.aws.amazon.com/eventbridge/latest/ref/events-structure.html)를 참조하세요.
+ 버스의 각 [규칙](eb-rules.md)에 대해:
  + 규칙 [이벤트 패턴](eb-event-patterns.md)입니다.
  + 대상 입력, [입력 트랜스포머](eb-transform-target-input.md) 및 [구성 파라미터](eb-create-rule-wizard.md#eb-create-rule-target)를 포함한 [대상](eb-targets.md) 정보입니다.
+ [이벤트 버스 로깅](eb-event-bus-logs.md)이 활성화된 경우 로그의 `detail` 및 `error` 섹션이 기록됩니다.

이벤트 버스에 대한 고객 관리형 키를 지정하는 경우 이벤트 버스에 대한 Dead Letter Queue(DLQ)를 지정할 수 있습니다. 그런 다음 EventBridge는 암호화 또는 복호화 오류를 생성하는 사용자 지정 또는 파트너 이벤트를 해당 DLQ에 전달합니다. 자세한 내용은 [암호화된 이벤트에 대한 DLQ](eb-encryption-event-bus-dlq.md) 단원을 참조하십시오.

**참고**  
암호화 또는 복호화 오류가 발생할 경우 이벤트가 보존되도록 이벤트 버스에 DLQ를 지정하는 것이 좋습니다.

이벤트 버스 아카이브를 암호화하기 위해 고객 관리형 키를 사용하여를 지정할 수도 있습니다. 자세한 내용은 [아카이브 암호화](encryption-archives.md) 단원을 참조하십시오.

**참고**  
고객 관리형 키를 사용해 암호화된 이벤트 버스에는 스키마 검색이 지원되지 않습니다. 이벤트 버스에서 스키마 검색을 활성화하려면 AWS 소유 키를 사용하도록 선택합니다. 자세한 내용은 [KMS 키 옵션](eb-encryption-at-rest-key-options.md) 단원을 참조하십시오.

## 이벤트 버스 암호화 컨텍스트
<a name="eb-encryption-at-rest-context-bus"></a>

[암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하는 경우 AWS KMS 는 암호화된 데이터에 암호화 컨텍스트를 암호 방식으로 바인딩합니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

정책 및 권한 부여에서 암호화 컨텍스트를 권한 부여 조건으로 사용할 수도 있습니다.

고객 관리형 키를 사용하여 EventBridge 리소스를 보호하는 경우 암호화 컨텍스트를 사용하여 감사 레코드 및 로그 KMS key 에서의 사용을 식별할 수 있습니다. 또한 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 및 [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 같은 로그에서 일반 텍스트에 나타나기도 합니다.

이벤트 버스의 경우, EventBridge는 모든 AWS KMS 암호화 작업에서 동일한 암호화 컨텍스트를 사용합니다. 컨텍스트에는 이벤트 버스 ARN을 포함하는 단일 키-값 페어가 포함됩니다.

```
"encryptionContext": {
    "kms:EncryptionContext:aws:events:event-bus:arn": "event-bus-arn"
}
```

## AWS KMS 이벤트 버스에 대한 키 정책
<a name="eb-encryption-key-policy-bus"></a>

다음 예제 키 정책은 이벤트 버스에 필요한 권한을 제공합니다.
+ `kms:DescribeKey`
+ `kms:GenerateDataKey`
+ `kms:Decrypt`

보안 모범 사례로, EventBridge가 지정된 리소스 또는 계정에 대해서만 KMS 키를 사용하도록 하려면 키 정책에 조건 키를 포함하는 것이 좋습니다. 자세한 내용은 [보안 고려 사항](eb-encryption-key-policy.md#eb-encryption-event-bus-confused-deputy) 단원을 참조하십시오.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowEventBridgeToValidateKeyPermission",
      "Effect": "Allow",
      "Principal": {
      "Service": "events.amazonaws.com"
       },
      "Action": [
        "kms:DescribeKey"
        ],
      "Resource": "*"
    },
  {
    "Sid": "AllowEventBridgeToEncryptEvents",
    "Effect": "Allow",
    "Principal": {
      "Service": "events.amazonaws.com"
    },
    "Action": [
      "kms:GenerateDataKey",
      "kms:Decrypt"
    ],
    "Resource": "*",
    "Condition": {
      "StringEquals": {
          "kms:EncryptionContext:aws:events:event-bus:arn": "arn:aws:events:us-east-1:123456789012:event-bus/event-bus-arn",
          "aws:SourceArn": "arn:aws:events:us-east-1:123456789012:event-bus/event-bus-name"
        }
      } 
    }
  ] }
```

------

## AWS KMS 이벤트 버스 작업에 대한 키 권한
<a name="eb-encryption-key-permissions-bus"></a>

고객 관리형 키를 사용하여 암호화된 이벤트 버스를 생성하거나 업데이트하려면 지정된 고객 관리형 키에 대해 다음 권한이 있어야 합니다.
+ `kms:GenerateDataKeyWithoutPlaintext`
+ `kms:Decrypt`
+ `kms:Encrypt`
+ `kms:ReEncryptFrom`
+ `kms:ReEncryptTo`
+ `kms:DescribeKey`

또한 고객 관리형 키를 사용하여 암호화된 이벤트 버스에서 특정 이벤트 버스 작업을 수행하려면 지정된 고객 관리형 키에 대한 `kms:Decrypt` 권한이 있어야 합니다. 이 작업에는 다음이 포함됩니다.
+ `[DescribeRule](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_DescribeRule.html)`
+ `[DisableRule](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_DisableRule.html)`
+ `[EnableRule](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_EnableRule.html)`
+ `[ListRules](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_ListRules.html)`
+ `[ListTargetsByRule](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_ListTargetsByRule.html)`
+ `[PutRule](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutRule.html)`
+ `[ListRuleNamesByTarget](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_ListRuleNamesByTarget.html)`
+ `[PutTargets](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutTargets.html)`

# EventBridge 이벤트 버스에서 암호화 구성
<a name="eb-encryption-event-bus-cmkey-configure"></a>

이벤트 버스를 생성하거나 업데이트할 때 사용할 EventBridge의 KMS 키를 지정할 수 있습니다. 고객 관리형 키를 사용하도록 기본 이벤트 버스를 업데이트할 수도 있습니다.

## 이벤트 버스를 생성할 때 암호화에 사용되는 AWS KMS 키 지정
<a name="eb-encryption-event-bus-cmkey-create"></a>

암호화에 사용되는 AWS KMS 키를 선택하는 것은 이벤트 버스 생성의 일부입니다. 기본값은 EventBridge에서 AWS 소유 키 제공하는를 사용하는 것입니다.

**이벤트 버스를 생성할 때 암호화를 위한 고객 관리형 키 지정(콘솔)**
+ 다음 지침들을 따릅니다.

  [이벤트 버스 생성](eb-create-event-bus.md).

**이벤트 버스를 생성할 때 암호화를 위한 고객 관리형 키 지정(CLI)**
+ `[create-event-bus](https://docs.aws.amazon.com/cli/latest/reference/events/create-event-bus.html)`를 직접 호출할 때 `kms-key-identifier` 옵션을 사용하여 이벤트 버스를 암호화하는 데 사용할 EventBridge의 고객 관리형 키를 지정합니다.

  선택적으로, `dead-letter-config`를 사용하여 Dead Letter Queue(DLQ)를 지정합니다.

## 이벤트 버스에서 암호화에 사용되는 AWS KMS 키 업데이트
<a name="eb-encryption-event-bus-cmkey-update"></a>

기존 이벤트 버스에서 저장 시 암호화에 사용되는 AWS KMS 키를 업데이트할 수 있습니다. 여기에는 다음이 포함됩니다.
+ 를 기본 키에서 고객 관리형 키 AWS 소유 키 로 변경합니다.
+ 고객 관리형 키에서 기본값으로 변경 AWS 소유 키
+ 한 고객 관리형 키에서 다른 고객 관리형 키로 변경합니다.

다른 AWS KMS 키를 사용하도록 이벤트 버스를 업데이트하면 EventBridge는 이벤트 버스에 저장된 모든 데이터를 복호화한 다음 새 키를 사용하여 암호화합니다.

**이벤트 버스에서 암호화에 사용되는 KMS 키 업데이트(콘솔)**

1. [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)에서 Amazon EventBridge 콘솔을 엽니다.

1. 탐색 창에서 **이벤트 버스**를 선택합니다.

1. 업데이트할 이벤트 버스를 선택합니다.

1. 이벤트 버스 세부 정보 페이지에서 **암호화** 탭을 선택합니다.

1. 이벤트 버스에 저장된 이벤트 데이터를 암호화할 때 사용할 EventBridge의 KMS 키를 선택합니다.
   + EventBridge에 **사용을 AWS 소유 키** 선택하여를 사용하여 데이터를 암호화합니다 AWS 소유 키.

     이는 EventBridge가 여러 AWS 계정에서 사용하기 위해 소유하고 관리하는 KMS 키 AWS 소유 키 입니다. 일반적으로 리소스를 보호하는 암호화 키를 감사하거나 제어할 필요가 없을 경우, AWS 소유 키 를 선택하는 것이 좋습니다.

     기본값입니다.
   + EventBridge에 **고객 관리형 키 사용**을 선택하여 지정하거나 생성한 고객 관리형 키를 사용하여 데이터를 암호화합니다.

     고객 관리형 키는 사용자가 생성, 소유 및 관리하는 AWS 계정의 KMS 키입니다. 이러한 KMS 키를 완전히 제어할 수 있습니다.

     1. 기존 고객 관리형 키를 지정하거나 **새 KMS 키 생성**을 선택합니다.

        EventBridge는 키 상태뿐만 아니라, 지정된 고객 관리형 키와 연결된 모든 키 별칭도 표시합니다.

     1. 이 이벤트 버스의 Dead Letter Queue(DLQ)로 사용할 Amazon SQS 대기열(있는 경우)을 선택합니다.

        EventBridge는 그렇게 구성된 경우, 성공적으로 암호화되지 않은 이벤트를 DLQ에 전송하므로 나중에 해당 이벤트를 처리할 수 있습니다.

**이벤트 버스에서 암호화에 사용되는 KMS 키 업데이트(CLI)**
+ `[update-event-bus](https://docs.aws.amazon.com/cli/latest/reference/events/create-event-bus.html)`를 직접 호출할 때 `kms-key-identifier` 옵션을 사용하여 이벤트 버스를 암호화하는 데 사용할 EventBridge의 고객 관리형 키를 지정합니다.

  선택적으로, `dead-letter-config`를 사용하여 Dead Letter Queue(DLQ)를 지정합니다.

**CloudFormation을 사용하여, 기본 이벤트 버스에서 암호화에 사용되는 KMS 키 업데이트**

EventBridge는 기본 이벤트 버스를 계정에 자동으로 프로비저닝하기 때문에, CloudFormation 스택에 포함하려는 리소스에 대해 일반적으로 하는 것처럼 CloudFormation 템플릿을 사용하여 기본 이벤트 버스를 생성할 수는 없습니다. 기본 이벤트 버스를 CloudFormation 스택에 포함하려면 먼저 스택으로 *가져와야* 합니다. 기본 이벤트 버스를 스택으로 가져온 후에는 원하는 대로 이벤트 버스 속성을 업데이트할 수 있습니다.
+ 다음 지침들을 따릅니다.

  [CloudFormation을 사용하여 기본 버스 업데이트](event-bus-update-default-cfn.md).

# 이벤트 버스가 규칙 대상인 경우 EventBridge의 암호화
<a name="eb-encryption-event-bus-target"></a>

사용자 지정 또는 파트너 이벤트가 이벤트 버스로 전송되면 EventBridge는 해당 이벤트 버스에 대한 저장 시 암호화 KMS 키 구성에 따라 해당 이벤트를 암호화합니다. 기본 AWS 소유 키 또는 고객 관리형 키가 지정된 경우 해당 이벤트 버스에 대한 암호화 KMS 키 구성에 따라 해당 이벤트를 암호화합니다. 이벤트가 규칙과 일치하는 경우, *규칙 대상이 다른 이벤트 버스인 경우를 제외하고* 이벤트가 규칙 대상으로 전송될 때까지 EventBridge는 해당 이벤트 버스에 대한 KMS 키 구성을 사용하여 이벤트를 암호화합니다.
+ 규칙의 대상이 동일한 AWS 리전의 다른 이벤트 버스인 경우:

  대상 이벤트 버스에 지정된 고객 관리형 키가 있는 경우, EventBridge는 대신 전달하기 위해 대상 이벤트 버스의 고객 관리형 키로 이벤트를 암호화합니다.  
![\[대상 이벤트 버스의 키를 사용하여 암호화된 이벤트가 한 이벤트 버스에서 다른 이벤트 버스로 전송됩니다.\]](http://docs.aws.amazon.com/ko_kr/eventbridge/latest/userguide/images/cmkms-bus-same-region_eventbridge_conceptual.svg)
+ 규칙의 대상이 다른 AWS 리전의 다른 이벤트 버스인 경우:

  EventBridge는 첫 번째 이벤트 버스의 KMS 키 구성에 따라 저장 이벤트를 암호화합니다. EventBridge는 TLS를 사용하여 이벤트를 다른 리전에 있는 두 번째 이벤트 버스로 전송한 다음, 대상 이벤트 버스에 지정된 KMS 키 구성에 따라 암호화합니다.  
![\[전송 중 TLS를 사용하여, 이벤트가 다른 리전의 대상 이벤트 버스로 전송되었습니다.\]](http://docs.aws.amazon.com/ko_kr/eventbridge/latest/userguide/images/cmkms-bus-cross-region_eventbridge_conceptual.svg)

# EventBridge의 관리형 규칙에 대한 이벤트 암호화
<a name="eb-encryption-event-bus-managed-rules"></a>

AWS 서비스는 AWS 계정에서 해당 서비스의 특정 함수에 필요한 이벤트 버스 규칙을 생성하고 관리할 수 있습니다. 관리형 규칙의 일부로 AWS 서비스는 EventBridge가 규칙 대상에 지정된 고객 관리형 키를 사용하도록 지정할 수 있습니다. 이렇게 하면 규칙 대상에 따라 사용할 고객 관리형 키를 유연하게 지정할 수 있습니다.

이러한 경우, 사용자 지정 또는 파트너 이벤트가 관리형 규칙과 일치하면 EventBridge는 관리형 규칙에서 지정한 대상 고객 관리형 키를 사용하여, 이벤트가 규칙 대상으로 전송될 때까지 이벤트를 암호화합니다. 이는 이벤트 버스가 자체적인 고객 관리형 키를 암호화에 사용하도록 구성되었는지 여부에 관계없이 적용됩니다. 관리형 규칙의 대상이 다른 이벤트 버스이고 해당 이벤트 버스에 암호화를 위해 지정된 자체 고객 관리형 키가 있는 경우에도 마찬가지입니다. EventBridge는 이벤트가 이벤트 버스가 아닌 대상으로 전송될 때까지 관리형 규칙에 지정된 대상 고객 관리형 키를 계속 사용합니다.

![\[관리형 규칙과 일치하는 이벤트로, 규칙 대상의 키를 사용하여 암호화됩니다.\]](http://docs.aws.amazon.com/ko_kr/eventbridge/latest/userguide/images/cmkms-bus-managed-rule_eventbridge_conceptual.svg)


규칙 대상이 다른 리전의 이벤트 버스인 경우에는 [다중 리전 키](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)를 제공해야 합니다. 첫 번째 리전의 이벤트 버스는 관리형 규칙에 지정된 고객 관리형 키를 사용하여 이벤트를 암호화합니다. 그런 다음, 두 번째 리전의 대상 이벤트 버스로 이벤트를 전송합니다. 해당 이벤트 버스는 이벤트를 대상으로 전송할 때까지 고객 관리형 키를 계속 사용할 수 있어야 합니다.

# EventBridge AWS KMS 에서를 사용하여 이벤트 버스 로그 암호화
<a name="encryption-bus-logs"></a>

로그를 전송할 때 EventBridge는 이벤트 버스에 지정된 KMS 키로 각 로그 레코드의 `detail` 및 `error` 섹션을 암호화합니다. 이벤트 버스에 대해 고객 관리형 키를 지정한 경우 EventBridge는 전송 중 암호화에 해당 키를 사용합니다. 전송된 레코드는 복호화된 다음 로그 대상에 지정된 KMS 키로 다시 암호화됩니다.

## 이벤트 버스 로그 암호화 컨텍스트
<a name="encryption-bus-logs-context"></a>

[암호화 컨텍스트](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)는 보안되지 않은 임의의 데이터를 포함하는 키-값 페어 세트입니다. 데이터 암호화 요청에 암호화 컨텍스트를 포함하는 경우 AWS KMS 는 암호화된 데이터에 암호화 컨텍스트를 암호 방식으로 바인딩합니다. 따라서 동일한 암호화 컨텍스트로 전달해야 이 데이터를 해독할 수 있습니다.

정책 및 권한 부여에서 암호화 컨텍스트를 권한 부여 조건으로 사용할 수도 있습니다.

고객 관리형 키를 사용하여 EventBridge 리소스를 보호하는 경우 암호화 컨텍스트를 사용하여 감사 레코드 및 로그 KMS key 에서의 사용을 식별할 수 있습니다. 또한 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 및 [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) 같은 로그에서 일반 텍스트에 나타나기도 합니다.

이벤트 버스 로그의 경우 모든 암호화 작업에서 동일한 AWS KMS 암호화 컨텍스트를 EventBridge 사용합니다.

```
"encryptionContext": {
    "kms:EncryptionContext:SourceArn": "arn:partition:logs:region:account:*"
}
```

## AWS KMS 이벤트 버스 로깅에 대한 키 정책 권한
<a name="encryption-bus-logs-permissions"></a>

고객 관리형 키를 사용하는 이벤트 버스의 경우 키 정책에 다음 권한을 추가해야 합니다.
+ EventBridge가 고객 관리형 키를 사용하여 로그를 암호화하도록 허용합니다.

  ```
  {
    "Sid": "Enable log service encryption",
    "Effect": "Allow",
    "Principal": {
      "Service": "events.amazonaws.com"  
    },
    "Action": [
      "kms:GenerateDataKey"
    ],
    "Resource": "*",
    "Condition": {
      "StringLike": {
        "kms:EncryptionContext:SourceArn": "arn:partition:logs:region:account:*"
      }
    }
  }
  ```
+ 로깅 서비스가 EventBridge에서 전송한 로그를 복호화하도록 허용합니다.

  ```
  {
    "Sid": "Enable log delivery decryption",
    "Effect": "Allow",
    "Principal": {
      "Service": "delivery.logs.amazonaws.com"
    },
    "Action": [
      "kms:Decrypt",
      "kms:GenerateDataKey"
    ],
    "Resource": "*",
    "Condition": {
      "StringLike": {
        "kms:EncryptionContext:SourceArn": "arn:partition:logs:region:account:*"
      }
    }
  }
  ```

# Dead Letter Queue(DLQ)을 사용하여 EventBridge에서 암호화된 이벤트 오류 캡처
<a name="eb-encryption-event-bus-dlq"></a>

이벤트 버스에서 고객 관리형 키 암호화를 구성하는 경우 해당 이벤트 버스에 Dead Letter Queue(DLQ)를 지정하는 것이 좋습니다. EventBridge는 이벤트 버스에서 이벤트를 처리하는 동안 재시도할 수 없는 오류가 발생하는 경우 사용자 지정 및 파트너 이벤트를이 DLQ로 전송합니다. 재시도할 수 없는 오류는 지정된 고객 관리형 키의 비활성화 또는 누락과 같은 근본적인 문제를 해결하기 위해 사용자 작업이 필요한 오류입니다.
+ EventBridge가 이벤트 버스에서 이벤트를 처리하는 동안 재시도할 수 없는 암호화 또는 복호화 오류가 발생하면, 이벤트 버스가 지정된 경우 이벤트는 *이벤트 버스*의 DLQ로 전송됩니다.
+ EventBridge가 대상에 이벤트를 보내려고 시도하는 동안 입력 트랜스포메이션 및 대상 지정 설정을 포함하여 재시도할 수 없는 암호화 또는 복호화 오류가 발생하면, 대상이 지정된 경우 이벤트는 *대상*에 대한 DLQ로 전송됩니다.

![\[이벤트 버스 처리 중에 재시도할 수 없는 오류로, 이벤트 버스 DLQ로 전송됩니다.\]](http://docs.aws.amazon.com/ko_kr/eventbridge/latest/userguide/images/cmkms-bus-dlq_eventbridge_conceptual.svg)


DLQ 사용 시의 고려 사항 및 권한 설정에 대한 지침을 포함한 자세한 내용은 [DLQ(Dead Letter Queue) 사용](eb-rule-dlq.md) 섹션을 참조하세요.

# EventBridge Dead Letter Queue(DLQ)의 이벤트 복호화
<a name="eb-encryption-event-bus-dlq-decrypt"></a>

재시도할 수 없는 오류를 유발하는 근본적인 문제를 해결한 후에는 이벤트 버스 또는 대상 DLQ로 전송된 이벤트를 처리할 수 있습니다. 암호화된 이벤트의 경우, 먼저 이벤트를 복호화하여 처리해야 합니다.

다음 예제에서는 EventBridge가 이벤트 버스 또는 대상 DLQ로 전달한 이벤트를 복호화하는 방법을 보여줍니다.

```
// You will receive an encrypted event in the following json format.
        // ```
        //   {
        //     "version": "0", 
        //     "id": "053afa53-cdd7-285b-e754-b0dfd0ac0bfb",  // New event id not the same as the original one
        //     "account": "123456789012",  
        //     "time": "2020-02-10T10:22:00Z",  
        //     "resources": [ ],
        //     "region": "us-east-1",
        //     "source": "aws.events",
        //     "detail-type": "Encrypted Events",
        //     "detail": { 
        //       "event-bus-arn": "arn:aws:events:region:account:event-bus/bus-name", 
        //       "rule-arn": "arn:aws:events:region:account:event-bus/bus-name/rule-name", 
        //       "kms-key-arn": "arn:aws:kms:region:account:key/key-arn", 
        //       "encrypted-payload": "AgR4qiru/XNwTUyCgRHqP7rbbHn/xpmVeVeRIAd12TDYYVwAawABABRhd3M6ZXZlbnRzOmV2ZW50LWJ1cwB
        //                             RYXJuOmF3czpldmVudHM6dXMtZWFzdC0xOjE0NjY4NjkwNDY3MzpldmVudC1idXMvY21rbXMtZ2EtY3Jvc3
        //                             MtYWNjb3VudC1zb3VyY2UtYnVzAAEAB2F3cy1rbXMAS2Fybjphd3M6a21zOnVzLWVhc3QtMToxNDY2ODY5"
        //     }
        //   }
        // ```
 
        // Construct an AwsCrypto object with the encryption algorithm `ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY` which 
        // is used by EventBridge for encryption operation. This object is an entry point for decryption operation. 
        // It can later use decryptData(MasterKeyProvider, byte[]) method to decrypt data.
        final AwsCrypto crypto = AwsCrypto.builder()
                .withEncryptionAlgorithm(CryptoAlgorithm.ALG_AES_256_GCM_HKDF_SHA512_COMMIT_KEY)
                .build();
 
        // Construct AWS KMS master key provider with AWS KMS Client Supplier and AWS KMS Key ARN. The KMS Client Supplier can 
        // implement a RegionalClientSupplier interface. The AWS KMS Key ARN can be fetched from kms-key-arn property in 
        // encrypted event json detail.
        final KmsMasterKeyProvider kmsMasterKeyProvider = KmsMasterKeyProvider.builder()
                .customRegionalClientSupplier(...)
                .buildStrict(KMS_KEY_ARN);
 
        // The string of encrypted-payload is base64 encoded. Decode it into byte array, so it can be furthur 
        // decrypted. The encrypted payload can be fetched from encrypted-payload field in encrypted event json detail.
        byte[] encryptedByteArray = Base64.getDecoder().decode(ENCRYPTED_PAYLOAD);
 
        // The decryption operation. It retrieves the encryption context and encrypted data key from the cipher 
        // text headers, which is parsed from byte array encrypted data. Then it decrypts the data key, and 
        // uses it to finally decrypt event payload. This encryption/decryption strategy is called envelope 
        // encryption, https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping
        final CryptoResult<byte[], KmsMasterKey> decryptResult = crypto.decryptData(kmsMasterKeyProvider, encryptedByteArray);
 
        final byte[] decryptedByteArray = decryptResult.getResult();
    
        // Decode the event json plaintext from byte array into string with UTF_8 standard.
        String eventJson = new String(decryptedByteArray, StandardCharsets.UTF_8);
```