

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

# 구독자 업데이트, 일시 중지 및 재개
<a name="eb-custom-bus-update"></a>

`UpdateSubscriber`는 구독자를 변경합니다. 생략한 최상위 멤버는 저장된 값을 유지합니다. 사용자가 제공하는 구성 객체는 저장된 객체 전체를 대체하므로 필터 하나를 변경하려면 유지하려는 모든 필터`FilterConfiguration`와 함께 전체를 전달합니다. 구독자를 일시 중지하려면를 전달`--state STOPPED`하고, 재개하려면 `--state RUNNING`를 사용하여 전달합니다`--resume-position`.

## 변경할 수 있는 사항
<a name="eb-custom-bus-update-properties"></a>

다음 요청은 구독자의 전체를 대체`InvokeConfiguration`하므로 구독자가 유지해야 하는 역할 및 모든 대상 파라미터의 이름을 지정합니다. `TargetArn`는 업데이트의 일부가 아니며 구독자의 대상은 변경할 수 없습니다.

```
{
    "SubscriberArn": "arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890",
    "InvokeConfiguration": {
        "RoleArn": "arn:aws:iam::111122223333:role/NewSubscriberTargetRole",
        "SqsParameters": {
            "MessageGroupId": "{% $events.Data.customerId %}"
        }
    }
}
```

다음 표에는 요청의 각 구성원과 요청을 제공하는 작업이 나열되어 있습니다.


| 요청 멤버 | Effect | 
| --- | --- | 
| Description | 설명을 바꿉니다. 값이 비어 있거나 비어 있으면 지워집니다. | 
| State | 구독자를 RUNNING와 간에 이동합니다STOPPED. 단원을 참조하십시오. [일시 중지 및 다시 시작](#eb-custom-bus-update-pause)  | 
| ResumePosition | RUNNING 전환할 STOPPED가 재개되는 위치 | 
| InvokeConfiguration | 전송 역할과 대상 파라미터를 대체합니다.는 그대로 TargetArn 유지됩니다. | 
| FilterConfiguration | 전체 필터 구성을 유지, 지우기 또는 대체합니다. 섹션을 참조하세요. [필터 업데이트](#eb-custom-bus-update-filters)  | 
| BatchConfiguration | 전체 일괄 처리 구성을 대체합니다. | 
| Transformer | 전체 변환기를 대체합니다. 메타데이터 또는 JSONata 변환기를 제거TypeRAW하려면 로 설정합니다. | 
| RetryPolicy | 전체 재시도 정책을 대체합니다. 생략된 멤버는 기본값인 5회 재시도, 300초 및 모든 실패 범주ALL를 재시도하는 유일한 값인 RetryStrategy를 사용합니다. | 
| OnFailureConfiguration | 전체 장애 시 구성을 대체합니다. 를 전송{}하여 대상을 제거합니다. 대상 없이 재시도가 소진되면 이벤트가 삭제됩니다. | 
| LogConfiguration | 전체 로깅 구성을 대체합니다. 전송을 전송{}하여 기본값을 복원LevelOFF하고 전송 로깅ON\_ERROR\_ONLY을 IncludePayload 끕니다. | 

`Name`, `EventBusArn`, `Type`, `PointInTimeConfiguration`, `StartingPosition`및는 구독자를 `TargetArn` 식별하거나 시작점을 수정하며 변경할 수 없습니다. 태그는 `TagResource` 및를 통해 변경됩니다`UntagResource`. 업데이트 응답에는 구독자의 자격 증명, 상태, 시작 위치 및가 포함됩니다.를 사용하여 구성을 다시 `LastModifiedTime`읽습니다`DescribeSubscriber`.

업데이트는 버스에서 구독자의 위치를 이동하지 않습니다. 즉, 되감기, 건너뛰기 또는 재생하지 않습니다. 새 구성으로 과거 이벤트를 다시 전송하려면 대신 시작 위치로 새 구독자를 생성합니다. 단원을 참조하십시오[구독자에게 보관된 이벤트 재생](eb-custom-bus-replay.md).

## 문제 해결: 변경하지 않은 업데이트 해제된 설정
<a name="eb-custom-bus-update-cleared"></a>

업데이트는 사용자가 전체적으로 제공하는 각 구성 객체를 대체합니다. 단원을 참조하십시오[변경할 수 있는 사항](#eb-custom-bus-update-properties).

증상  
업데이트 후 접촉하지 않은 필터, 로그 설정, 재시도 제한 또는 보존 기간은 기본값으로 돌아가며 오류가 반환되지 않습니다.

원인  
업데이트는 생략된 최상위 멤버를 변경하지 않고 그대로 두지만 제공된 블록 전체를 대체합니다. 한 필드를 변경`StorageConfiguration`하기 위해 `FilterConfiguration`, `RetryPolicy`, 또는 `LogConfiguration`를 전달하는 업데이트는 블록의 다른 필드를 지웁니다. 없이 업데이트된 이벤트 소스는 패턴 없이 다시 `Pattern` 제공되므로 모든 이벤트로 확장됩니다.

Solution  
리소스를 읽고 전체 블록을 수정한 다음 전체 블록을 다시 쓴 다음 다시 읽습니다. 생성 및 업데이트 응답이 모든 필드를 에코하지는 않으므로 읽기백이 유일한 확인입니다.  

```
aws eventsv2 describe-subscriber --subscriber-arn "$SUBSCRIBER_ARN" --query 'LogConfiguration'

aws eventsv2 update-subscriber --subscriber-arn "$SUBSCRIBER_ARN" \
    --log-configuration '{ "Level": "INFO", "IncludePayload": "FULL" }'

aws eventsv2 describe-subscriber --subscriber-arn "$SUBSCRIBER_ARN" --query 'LogConfiguration'
```

Verification(확인)  
두 번째 설명은 의도한 값과 함께 블록의 모든 필드를 보여줍니다.

## 필터 업데이트
<a name="eb-custom-bus-update-filters"></a>

필터를 교체하려면 구독자가 보유해야 `FilterConfiguration` 하는 모든 필터를 포함하는 `Filters` 목록을 전달합니다. EventBridge는 다양한 범위에 대한 필터를 AND와 결합합니다. 모든 필터를 제거하려면를 `FilterConfiguration`로 전달합니다`{}`.


| 요청 | 결과 | 
| --- | --- | 
| FilterConfiguration 생략됨 | 저장된 필터는 | 
| FilterConfiguration은(는) {} | 저장된 모든 필터가 제거됩니다. | 
| Filters는 비어 있지 않은 목록입니다. | 목록이 검증되어 전체 필터 구성을 대체합니다. | 
| Filters는 빈 목록이거나 Language Filters | InvalidInputException, 제공된 에는 하나 이상의 필터가 포함되어야 FilterConfiguration 합니다. | 

필터 변경은 24시간 동안 구독자당 24개로 제한됩니다. 범위 및 패턴 집합에 대한 변경만 계산되며 동일한를 다시 제출해도 계산되지 `FilterConfiguration` 않습니다. 25번째 변경 사항은에서 실패합니다`FILTER_CHANGE_LIMIT_EXCEEDED`. 이 제한은 Service Quota가 아니므로 늘릴 수 없으므로 필터를 지속적으로 다시 쓰는 설계는 대신 다양한 값을 이벤트에 게시하고 한 번 필터링해야 합니다.

## 이미 일치하는 이벤트가 사용하는 구성
<a name="eb-custom-bus-update-inflight"></a>

EventBridge는 이벤트를 구독자에게 일치시키고 다른 시간에 전송하며 각 이벤트와 일치하는 필터 버전을 기록합니다. 필터가 일치하는 항목을 변경하는 업데이트는 새 필터 버전을 생성하고 EventBridge는 변환기와 대상 파라미터를 여기에 저장합니다. 이전 변환기 및 대상 파라미터와 함께 변경 사항이 전달되기 전에 일치하는 이벤트. 새 변환기를 사용한 후 일치하는 이벤트입니다. 구독자가 중지했다가 다시 시작한 후에도 동일하게 유지됩니다.


| 필터 업데이트 | 새 필터 버전을 생성합니다. | 
| --- | --- | 
| 패턴 변경 | 예 | 
| 필터가 있는 범위 변경 | 예 | 
| 첫 번째 필터 추가 | 예 | 
| 모든 필터 지우기 | 예, 필터가 저장된 경우 | 
| 동등한 필터 재정렬 | 아니요 | 
| 변경만 Language | 아니요 | 

따라서 필터와 변환기 또는 대상 파라미터가 하나의 동작을 구성하면 동일한 요청에서 변경합니다. 다음 요청은 새 `DATA` 필터를 작성된 변환기와 페어링하므로 일치하지 않는 페어로 이벤트가 전달되지 않습니다.

```
{
    "SubscriberArn": "arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890",
    "FilterConfiguration": {
        "Filters": [
            { "Scope": "DATA", "Pattern": "{\"type\":[\"priority\"]}" }
        ]
    },
    "Transformer": {
        "Type": "JSONATA",
        "JsonataConfiguration": {
            "Expression": "{% {\"version\": 2, \"event\": $events.Data} %}"
        }
    }
}
```

변환기 또는 대상 파라미터만 변경하는 업데이트는 필터 버전을 생성하지 않습니다. 전파되면 새 구성이 전송을 기다리고 있는 이벤트와 이후 재시도에 적용됩니다. 전송 역할, 재시도 정책, 장애 시 대상, 일괄 처리 및 로깅 구성은 항상 이벤트와 일치하는 버전에 관계없이 전파된 최신 값을 사용합니다. EventBridge는 재시도를 위해 변환기 및 대상 파라미터를 다시 평가할 수 있으므로와 같은 시간 종속적 또는 비결정적 JSONata 함수는 각 시도에서 다른 결과를 생성할 `$now()` 수 있습니다. 재시도된 요청이 동일한 바이트를 포함한다고 가정하지 마십시오.

`UpdateSubscriber`는 변경 사항을 반환하기 전에 저장하고 전송 구성 요소는 이벤트가 이전 구성을 계속 사용할 수 있는 전파 지연 후 이를 픽업합니다.는 모든 구성 요소가 전환된 것이 아니라 저장된 내용을 `DescribeSubscriber` 확인합니다. 업데이트 후 새 동작에 의존하기 전에 테스트 이벤트를 게시하고 대상 페이로드를 확인합니다.

버스를 사용하는 모든 계정에서 한 번에 한 명의 구독자만 버스에서 실행되며 동시 호출은에서 실패합니다`ConcurrentModificationException`. 다시 시도합니다.

## 일시 중지 및 다시 시작
<a name="eb-custom-bus-update-pause"></a>

구독자는이 인 동안에만 `State`를 전송합니다`RUNNING`. 일시 중지`STOPPED`하려면 로 설정합니다. 이벤트는 보존에 따라 버스에 계속 누적됩니다. 다시 로 설정하면가 백로그에 어떤 일이 발생하는지 `RUNNING` `ResumePosition` 결정합니다.
+ `LAST_PROCESSED`, 기본값: 전송이 중지된 위치에서 계속하므로 구독자가 중지된 동안 게시된 모든 이벤트가 가장 오래된 상태로 먼저 전송됩니다.
+ `LATEST`: 백로그를 건너뛰고 지금부터 게시된 이벤트만 전달합니다. 재생 중인 구독자는 이를 사용할 수 없습니다. 개방형 재생은 여전히 따라잡고 있으며 제한된 재생은 라이브 이벤트에 도달하지 않습니다.

```
aws eventsv2 update-subscriber \
    --subscriber-arn arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890 \
    --state STOPPED

aws eventsv2 update-subscriber \
    --subscriber-arn arn:aws:events:us-east-1:111122223333:subscriber/large-orders/EXAMPLEabcdef1234567890 \
    --state RUNNING \
    --resume-position LAST_PROCESSED
```

`ResumePosition`는 상태를에서 `STOPPED`로 이동하는 호출에서만 수락됩니다`RUNNING`. 해당 호출에서 EventBridge는 먼저 구독자의 전송 엔드포인트를 다시 검색할 수 있게 합니다.이 단계가 실패하면 호출은를 반환하고 아무것`InternalException`도 저장되지 않으며 구독자는를 유지`STOPPED`하므로 요청을 다시 시도합니다. 버스 소유자가 취소한 구독자는 어느 상태에서도 전송하지 않습니다. 단원을 참조하십시오[구독자 또는 이벤트 소스 취소](eb-custom-bus-access-revoke.md).

## 업데이트에서 반환할 수 있는 오류
<a name="eb-custom-bus-update-errors"></a>

EventBridge는 구독자의 저장된 대상 유형에 대해 업데이트된 구성을 검증하므로 대상이 Lambda 함수인 구독자의 `SqsParameters` 블록이 거부됩니다.


| 조건 | 오류 | 
| --- | --- | 
| 구독자가 존재하지 않습니다. | ResourceNotFoundException | 
| 구독자가 취소되었습니다. | InvalidStateException | 
| 요청에 대상 파라미터 블록이 두 개 이상 있음 | InvalidInputException | 
| 대상 파라미터가 저장된 대상 유형과 일치하지 않습니다. | InvalidInputException | 
| 대상에 대해 변환기가 지원되지 않습니다. | InvalidInputException | 
| JSONata 표현식이 잘못되었습니다. | InvalidInputException | 
| 일괄 처리 값이 대상의 제한을 벗어났습니다. | InvalidInputException | 