

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

# Amazon Chime SDK 메시징용 백엔드 서비스에서 SDK 직접 호출
<a name="call-from-backend"></a>

백엔드 서비스를 대표하는 사용자를 생성하고 나면 채널을 만들고, 해당 채널로 메시지를 보내고, 해당 채널에서 메시지를 읽습니다.

다음 CLI 명령을 실행해 공개 채널을 생성합니다.

```
aws chime-sdk-messaging create-channel \
    --chime-bearer "{{app_instance_user_arn}}" \
    --app-instance-arn "{{app_instance_arn}}" \
    --name "firstChannel"
```

이 명령은 `arn:aws:chime:{{region}}:{{aws_account_id}}:app-instance/{{app_instance_id}}/channel/{{channel_id}}.` 형식으로 ARN을 생성합니다.

**Topics**
+ [백엔드 서비스에 대한 IAM 인증 작동 방식](#how-iam-works)
+ [암시적 API 권한 부여 이해](#api-implicit-auth)
+ [채널 메시지 전송 및 나열](#send-list-msgs)

## 백엔드 서비스에 대한 IAM 인증 작동 방식
<a name="how-iam-works"></a>

이전 섹션의 CLI 명령에서 `chime-bearer` 파라미터에 주목하세요. 이 파라미터는 채널 및 메시지와 같은 리소스를 만들거나 이 리소스와 상호 작용하는 사용자를 식별합니다. `CreateAppInstance`와 같이 개발자만 호출할 수 있는 API를 제외한 거의 모든 Amazon Chime SDK 메시징 API는 `chime-bearer`를 파라미터로 사용합니다.

Amazon Chime SDK 메시징 API에 대한 IAM 권한에는 `chime-bearer` 파라미터와 일치하는 `app-instance-user-arn `이 필요합니다. API에 따라 추가 ARN(일반적으로 채널 ARN)이 필요할 수 있습니다. 위의 예와 같은 백엔드 서비스의 경우 이는 다음 예와 같은 IAM 정책으로 이어집니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": [
            "chime:SendChannelMessage",
            "chime:ListChannelMessages",
            "chime:CreateChannelMembership",
            "chime:ListChannelMemberships",
            "chime:DeleteChannelMembership",
            "chime:CreateChannel",
            "chime:ListChannels",
            "chime:DeleteChannel"
        ],
        "Resource": [
            "arn:aws:chime:{{us-east-1}}:{{123456789012}}:app-instance/{{app_instance_id}}/user/back-end-worker",
            "arn:aws:chime:{{us-east-1}}:{{123456789012}}:app-instance/{{app_instance_id}}/channel/*"
        ]
    }
}
```

------

`AppInstanceUser` 섹션에서 `Resource` ARN과 채널 ARN을 주목하세요. 이 IAM 정책 예시에서는 백엔드 서비스에 ID가 '백엔드 작업자'인 사용자로서 API를 호출할 수 있는 권한을 부여합니다. 백엔드 서비스에서 앱을 사용하는 사람들을 위해 호출할 수 있도록 하려면 `app_instance_user_arn`을 `arn:aws:chime:{{region}}:{{aws_account_id}}:app-instance/{{app_instance_id}}/user/*`로 변경하세요.

## 암시적 API 권한 부여 이해
<a name="api-implicit-auth"></a>

Amazon Chime SDK 메시징 API에는 IAM 정책 외에도 암시적 권한이 있습니다. 예를 들어, `AppInstanceUser`는 사용자가 속한 채널에서만 메시지를 보내거나 채널 멤버십을 나열할 수 있습니다. 이에 대한 한 가지 예외는 `AppInstanceAdmin`으로 승격된 `AppInstanceUser`입니다. 기본적으로 관리자는 앱의 모든 채널에 대한 권한을 가집니다. 대부분의 사용 사례에서는 중요한 비즈니스 로직이 포함된 백엔드 서비스에만 이 권한이 필요합니다.

다음 CLI 명령은 백엔드 사용자를 관리자로 승격시킵니다.

```
aws chime-sdk-identity create-app-instance-admin \
    --app-instance-admin-arn "{{app_instance_user_arn}}" \
    --app-instance-arn "{{app_instance_arn}}"
```

## 채널 메시지 전송 및 나열
<a name="send-list-msgs"></a>

다음 CLI 명령은 채널 메시지를 보냅니다.

```
aws chime-sdk-messaging send-channel-message \
    --chime-bearer "{{app_instance_user_arn}}" \
    --channel-arn "{{channel_arn}}" \
    --content "hello world" \
    --type STANDARD \
    --persistence PERSISTENT
```

다음 CLI 명령은 채널 메시지를 역순으로 나열합니다.
+ `aws chime list-channel-messages`
+ `aws chime-sdk-messaging list-channel-messages`

```
aws chime-sdk-messaging list-channel-messages \
    --chime-bearer "{{app_instance_user_arn}}" \
    --channel-arn "{{channel_arn}}"
```