View a markdown version of this page

다이렉트 메시징 정책 예제 - AWS IoT Core

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

다이렉트 메시징 정책 예제

다이렉트 메시징을 사용하려면 특정 정책이 필요합니다. 다이렉트 메시징은 SendDirectMessage HTTP API를 사용하여 발신자로부터 MQTT 클라이언트 ID로 식별되는 단일 수신자로 메시지를 전송합니다. 이 섹션에서는 일반적인 다이렉트 메시징 사용을 허용하는 정책의 예를 제공합니다.

특정 주제에 대해 특정 클라이언트에 직접 메시지를 보내는 정책

발신자가 직접 메시지를 보내려면 대상 클라이언트 ID가 리소스인 iot:SendDirectMessage 권한이 발신자에게 있어야 합니다. iot:Topic 조건 키(선택 사항)는 발신자가 메시지를 보낼 수 있는 주제를 제한합니다.

  • SigV4-authenticated 백엔드 서버의 경우 IAM 정책에 추가합니다.

  • X.509 인증 IoT 디바이스의 AWS IoT Core 경우 정책에 추가합니다.

  • 사용자 지정 권한 부여자 인증 클라이언트의 경우 Lambda 함수는 iot:Topic 조건 키를 사용하여 대상 클라이언트 리소스iot:SendDirectMessage에 부여하는 정책 문서를 반환해야 합니다.

다음 정책은 클라이언트device1가 주제 commands/rebootmyDevice에 대해 클라이언트에 직접 메시지를 보내도록 허용합니다commands/update.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:SendDirectMessage", "Resource": "arn:aws:iot:us-west-2:123456789012:client/myDevice", "Condition": { "StringEquals": { "iot:Topic": ["commands/reboot", "commands/update"] } } } ] }

다이렉트 메시지 수신 정책

수신자의 정책은 주제에 iot:Receive를 부여해야 합니다. 수신자는 iot:Subscribe 권한이 필요하지 않습니다.는 주제 구독 없이 직접 메시지를 AWS IoT Core 전송합니다. 수신기는 X.509 클라이언트 인증서(AWS IoT Core 정책) 또는 SigV4(IAM 정책)를 사용하여 인증할 수 있습니다. 두 경우 모두 수신 주제에 대한 iot:Receive 권한이 필요합니다.

다음 정책은 수신자 클라이언트가 주제 commands/reboot 및에 대한 직접 메시지를 수신myDevice하도록 허용합니다commands/update.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-west-2:123456789012:topic/commands/reboot" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-west-2:123456789012:topic/commands/update" } ] }

다음 정책은 와일드카드를 사용하여 수신자가 commands/ 접두사 아래의 모든 주제에 대한 다이렉트 메시지를 수신하도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-west-2:123456789012:topic/commands/*" } ] }
참고

수신자는 직접 메시지를 수신하기 전에에 대한 AWS IoT Core MQTT 연결을 설정해야 합니다. 직접 메시지는 오프라인 디바이스에 대해 대기열에 추가되지 않습니다.

특정 주제에 대한 클라이언트에게 직접 메시지를 보내는 정책

다음 정책은 발신자가 commands/* 접두사와 일치하는 주제에 대해서만 클라이언트에 직접 메시지를 보내도록 허용합니다. 이는 특정 명령 주제에 대해서만 디바이스에 연결해야 하는 플릿 관리 서비스에 유용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:SendDirectMessage", "Resource": "arn:aws:iot:us-west-2:123456789012:client/*", "Condition": { "StringLike": { "iot:Topic": "commands/*" } } } ] }
참고

iot:Topic 조건 키는 StringLike 조건 연산자와 와일드카드 일치를 지원합니다.

모든 주제의 모든 클라이언트에 직접 메시지를 보내는 정책

다음 정책은 발신자가 모든 주제의 모든 클라이언트에 직접 메시지를 보낼 수 있도록 허용합니다. 이는 백엔드 서비스에 무제한 액세스가 필요한 관리 또는 플릿 관리 사용 사례에 적합합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:SendDirectMessage", "Resource": "arn:aws:iot:us-west-2:123456789012:client/*", "Condition": { "StringLike": { "iot:Topic": "*" } } } ] }