

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

# Amazon Chime SDK 메시징용 채널 프로세서 설정
<a name="processor-setup"></a>

채널 흐름을 사용하려면 먼저 사용 사례에 맞는 사전 처리를 처리할 프로세서 Lambda 함수를 생성해야 합니다. 예를 들어 메시지 내용 또는 메타데이터를 업데이트하거나, 메시지를 거부하여 전송되지 않도록 하거나, 원본 메시지가 전달되도록 할 수 있습니다.

**사전 조건**
+ Lambda 함수는 AppInstance와 동일한 AWS 계정 및 동일한 AWS 리전에 있어야 합니다.

**간접 호출 권한 부여하기**  
Amazon Chime SDK 서비스에 Lambda 리소스를 호출하여 메시지를 검토할 수 있는 권한을 부여해야 합니다. 권한에 대한 자세한 내용은 [AWS Lambda에서 리소스 기반 정책 사용](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)을 참조하세요. 예제:

  
**주체**: "messaging.chime.amazonaws.com"  
**작업**: lambda:InvokeFunction  
**효과**: 허용  
**AWS:SourceAccount**:*Your AWS AccountId*.  
**AWS:SourceArn**: `"arn:aws:chime:region:AWS AccountId: appInstance/"`

**참고**  
특정 앱 인스턴스 ID를 제공하여 프로세서를 호출하거나 와일드카드를 사용하여 계정의 모든 Amazon Chime SDK 앱 인스턴스가 프로세서를 호출하도록 허용할 수 있습니다.

**콜백 권한 부여하기**  
또한 프로세서 Lambda 함수가 `ChannelFlowCallback` API를 호출하도록 허용해야 합니다. 이 작업에 대한 자세한 내용은 *AWS Lambda 개발자 안내서*의 [AWS Lambda 실행 역할](https://docs.aws.amazon.com/lambda/latest/dg/lambda-intro-execution-role.html) 항목을 참조하세요.

Lambda 함수의 실행 역할에 인라인 정책을 추가할 수 있습니다. 이 예제에서는 프로세서가 `ChannelFlowCallback API`를 호출할 수 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "chime:ChannelFlowCallback"
            ],
            "Resource": [
            "arn:aws:chime:us-east-1:111122223333:appInstance/*"
            ]
        }
    ]
}
```

------

**참고**  
Lambda 함수에 대한 모범 사례를 따르세요. 자세한 내용은 다음 주제를 참조하세요.  
[Performance Efficiency Best Practices](https://docs.aws.amazon.com/whitepapers/latest/serverless-architectures-lambda/performance-efficiency-best-practices.html) 
[작업 모범 사례 AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html)
[예약된 동시성 구성](https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html#configuration-concurrency-reserved)
[비동기식 간접 호출](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html)

**프로세서 Lambda 함수 호출하기**  
사용자가 메시지를 보내면 다음 입력 요청이 프로세서 Lambda 함수를 호출합니다.

```
{
    "EventType": "string"
    "CallbackId": "string"
    "ChannelMessage": {
        "MessageId": "string",
        "ChannelArn": "string",
        "Content": "string",
        "Metadata": "string",
        "Sender":{
            "Arn": "string", 
            "Name": "string"
        },
        "Persistence": "string",
        "LastEditedTimestamp": "string", 
        "Type": "string",
        "CreatedTimestamp": "string", 
    }
}
```

EventType  
프로세서로 전송되는 이벤트입니다. 값은 `CHANNEL_MESSAGE_EVENT` 상수입니다.

CallbackId  
프로세서에서 `ChannelFlowCallback` API를 호출할 때 사용되는 토큰입니다.

ChannelMessage  
*ChannelArn*   채널의 ARN  
*Content*   처리할 메시지 내용  
*CreatedTimestamp*   메시지가 작성된 시간  
*LastEditedTimestamp*   메시지가 편집된 시간  
*MessageId*   메시지 식별자  
*Metadata*   처리할 메시지 메타데이터  
*Persistence*   백엔드에서 메시지가 지속될지 여부를 제어하는 부울입니다. 유효한 값: `PERSISTENT | NON_PERSISTENT`  
*Sender*   메시지를 보낸 사람입니다. 유형: [identity 객체](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_Identity.html).  
*유형*   메시지 유형입니다. ChannelFlow는 `STANDARD` 메시지 유형만 지원합니다. 유효한 값: `STANDARD`

프로세서 함수는 각 메시지에 대해 다음을 결정합니다.
+ 메시지 콘텐츠, 메타데이터 또는 둘 다를 업데이트할지 여부
+ 메시지를 거부할지 여부 
+ 메시지를 변경하지 않고 그대로 둘지 여부

처리가 완료되면 프로세서 Lambda 함수는 메시지를 모든 수신자에게 보낼 수 있도록 Amazon Chime SDK 메시징 서비스에 결과를 다시 전송합니다. 프로세서 Lambda 함수가 결과를 다시 보낼 때까지 메시지 상태는 `PENDING`으로 표시됩니다. 프로세서 Lambda 함수는 48시간 이내에 결과를 다시 전송해야 합니다. 이후 메시지 전송은 보장하지 않으며 [https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelFlowCallback.html](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_messaging-chime_ChannelFlowCallback.html) API에서 금지된 예외 오류 메시지가 발생합니다. 결과를 다시 보내려면 `ChannelFlowCallback` API를 간접 호출하세요.