기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon SNS에서 메시지 필터링을 사용하면 필터 정책에 따라 구독자에게 선택적으로 메시지를 전달할 수 있습니다. 이러한 정책에서는 메시지가 구독에 전달되려면 충족되어야 하는 조건을 정의합니다. 원시 메시지 전송은 메시지 처리에 영향을 미칠 수 있는 옵션이지만 구독 필터가 작동하는 데 필수는 아닙니다.
Amazon SNS 콘솔을 사용하여 필터 정책을 Amazon SNS 구독에 적용할 수 있습니다. 또는 프로그래밍 방식으로 정책을 적용하려면 Amazon SNS API, AWS Command Line Interface (AWS CLI) 또는 Amazon SNS를 지원하는 AWS SDK를 사용할 수 있습니다. 를 사용할 수도 있습니다 AWS CloudFormation.
원시 메시지 전송 사용
원시 메시지 전송을 사용하면 추가 인코딩 또는 변환 없이 메시지 페이로드를 구독자에게 있는 그대로 전달할 수 있습니다. 이는 구독자가 처리하는 데 원본 메시지 형식을 필요로 하는 경우에 유용할 수 있습니다. 하지만 원시 메시지 전송은 구독 필터의 기능과는 직접적인 관련이 없습니다.
구독 필터 적용
메시지 필터를 구독에 적용하려면 JSON 구문을 사용하여 필터 정책을 정의합니다. 이 정책에서는 메시지가 구독에 전달되려면 충족되어야 하는 조건을 지정합니다. 필터는 메시지 속성, 메시지 구조, 메시지 콘텐츠와 같은 메시지 속성을 기반으로 작동할 수 있습니다.
원시 메시지 전송과 구독 필터 간의 관계
원시 메시지 전송을 사용하면 구독자가 메시지를 전송하고 처리하는 방식에 영향을 미칠 수 있지만 구독 필터를 사용하기 위한 사전 조건은 아닙니다. 하지만 구독자가 수정 없이 원본 메시지 형식을 요구하는 시나리오에서는 구독 필터와 함께 원시 메시지 전송을 사용하는 것이 도움이 될 수 있습니다.
효과적인 필터링을 위한 고려 사항
메시지 필터링을 구현할 경우 애플리케이션 및 구독자의 특정 요구 사항을 고려하세요. 메시지 전송 기준과 정확하게 일치하는 필터 정책을 정의하여 효율적이고 대상에 맞게 메시지를 배포합니다.
중요
AWS IAM 및 Amazon SNS와 같은 서비스는 최종 일관성이라는 분산 컴퓨팅 모델을 사용합니다. 구독 필터 정책의 추가 또는 변경 사항이 완전히 적용되려면 최대 15분이 소요됩니다.
AWS Management Console
Amazon SNS 콘솔
에 로그인합니다. -
탐색 창에서 구독을 선택합니다.
-
구독을 선택한 후 편집을 선택합니다.
-
편집(Edit) 페이지에서 구독 필터 정책(Subscription filter policy) 섹션을 확장합니다.
-
속성 기반 필터링 또는 페이로드 기반 필터링 중에서 선택합니다.
-
JSON 편집기(JSON editor) 필드에서 필터 정책의 JSON 본문(JSON body)을 제공합니다.
-
Save changes(변경 사항 저장)를 선택합니다.
Amazon SNS에서 구독에 필터 정책을 적용합니다.
AWS CLI
AWS Command Line Interface (AWS CLI)를 사용하여 필터 정책을 적용하려면 다음 예제와 같이 set-subscription-attributes
명령을 사용합니다. --attribute-name
옵션의 경우 FilterPolicy
를 지정합니다. --attribute-value
의 경우 JSON 정책을 지정합니다.
$
aws sns set-subscription-attributes --subscription-arn
arn:aws:sns: ...
--attribute-name FilterPolicy --attribute-value'{"store":["example_corp"],"event":["order_placed"]}'
정책에 유효한 JSON을 제공하려면 속성 이름과 값을 큰 따옴표로 묶습니다. 또한 전체 정책 인수를 따옴표로 묶어야 합니다. 따옴표 이스케이프를 방지하려면, 위의 예제와 같이 작은따옴표를 사용하여 정책을 묶고 큰따옴표를 사용하여 JSON 이름과 값을 묶을 수 있습니다.
속성 기반(기본값)에서 페이로드 기반 메시지 필터링으로 전환하려면 set-subscription-attributes 명령도 사용할 수 있습니다. --attribute-name
옵션의 경우 FilterPolicyScope
를 지정합니다. --attribute-value
에서 MessageBody
를 지정합니다.
$
aws sns set-subscription-attributes --subscription-arn arn:aws:sns: ... --attribute-name FilterPolicyScope --attribute-value MessageBody
필터 정책이 적용되었는지 확인하려면 get-subscription-attributes
명령을 사용합니다. 터미널 출력의 속성에는 다음 예제와 같이 FilterPolicy
키에 대한 필터 정책이 표시되어야 합니다:
$
aws sns get-subscription-attributes --subscription-arn arn:aws:sns: ...
{
"Attributes": {
"Endpoint": "endpoint . . .",
"Protocol": "https",
"RawMessageDelivery": "false",
"EffectiveDeliveryPolicy": "delivery policy . . .",
"ConfirmationWasAuthenticated": "true",
"FilterPolicy": "{\"store\": [\"example_corp\"], \"event\": [\"order_placed\"]}",
"FilterPolicyScope": "MessageAttributes",
"Owner": "111122223333",
"SubscriptionArn": "arn:aws:sns: . . .",
"TopicArn": "arn:aws:sns: . . ."
}
}
AWS SDKs
다음 코드 예제는 SetSubscriptionAttributes
의 사용 방법을 보여 줍니다.
중요
Java 2.x 예제용 SDK를 사용하는 경우 클래스 SNSMessageFilterPolicy
는 즉시 사용할 수 없습니다. 이 클래스를 설치하는 방법에 대한 지침은 GitHub 웹 사이트의 예제
- AWS CLI
-
구독 속성을 설정하려면
다음
set-subscription-attributes
예제에서는 SQS 구독에RawMessageDelivery
속성을 설정합니다.aws sns set-subscription-attributes \ --subscription-arn
arn:aws:sns:us-east-1:123456789012:mytopic:f248de18-2cf6-578c-8592-b6f1eaa877dc
\ --attribute-nameRawMessageDelivery
\ --attribute-valuetrue
이 명령은 출력을 생성하지 않습니다.
다음
set-subscription-attributes
예제에서는 SQS 구독에FilterPolicy
속성을 설정합니다.aws sns set-subscription-attributes \ --subscription-arn
arn:aws:sns:us-east-1:123456789012:mytopic:f248de18-2cf6-578c-8592-b6f1eaa877dc
\ --attribute-nameFilterPolicy
\ --attribute-value "{ \"anyMandatoryKey\": [\"any\", \"of\", \"these\"] }"이 명령은 출력을 생성하지 않습니다.
다음
set-subscription-attributes
예제에서는 SQS 구독에서FilterPolicy
속성을 제거합니다.aws sns set-subscription-attributes \ --subscription-arn
arn:aws:sns:us-east-1:123456789012:mytopic:f248de18-2cf6-578c-8592-b6f1eaa877dc
\ --attribute-nameFilterPolicy
\ --attribute-value"{}"
이 명령은 출력을 생성하지 않습니다.
-
API 세부 정보는 AWS CLI 명령 참조의 SetSubscriptionAttributes
를 참조하세요.
-
Amazon SNS API
Amazon SNS API를 사용하여 필터 정책을 적용하려면 SetSubscriptionAttributes
작업에 대한 요청을 수행합니다. AttributeName
파라미터를 FilterPolicy
로 설정하고 AttributeValue
파라미터를 필터 정책 JSON으로 설정합니다.
속성 기반(기본값)에서 페이로드 기반 메시지 필터링으로 전환하려는 경우에도 SetSubscriptionAttributes
작업을 사용할 수 있습니다. AttributeName
매개 변수를 FilterPolicyScope
로 설정하고 AttributeValue
매개 변수를 MessageBody
로 설정합니다.
AWS CloudFormation
를 사용하여 필터 정책을 적용하려면 JSON 또는 YAML 템플릿을 AWS CloudFormation사용하여 스택을 AWS CloudFormation 생성합니다. 자세한 내용은 AWS CloudFormation 사용 설명서의 AWS::SNS::Subscription
리소스 FilterPolicy
속성과 예제 AWS CloudFormation 템플릿을
-
AWS CloudFormation 콘솔
에 로그인합니다. -
스택 생성을 선택합니다.
-
템플릿 선택 페이지에서 Amazon S3에 템플릿 업로드를 선택하고 파일을 선택한 후 다음을 선택합니다.
-
세부 정보 지정 페이지에서 다음 작업을 수행합니다.
-
스택 이름에
MyFilterPolicyStack
을 입력합니다. -
myHttpEndpoint에 주제를 구독할 HTTP 엔드포인트를 입력합니다.
작은 정보
HTTP 엔드포인트가 없는 경우 하나를 생성합니다.
-
-
옵션 페이지에서 다음을 선택합니다.
-
검토 페이지에서 생성을 선택합니다.