SYSTEM$SEND_SNOWFLAKE_NOTIFICATION을 사용하여 알림 보내기

참고

모든 Snowflake 고객은 이 기능을 사용하여 이메일 메시지를 보낼 수 있습니다. 알림 시스템 저장 프로시저에서 보낸 이메일 메시지는 AWS(Amazon Web Services) SES(Simple Email Service)를 사용하여 Snowflake의 AWS 배포를 통해 처리됩니다. AWS를 사용하여 보낸 이메일 메시지의 내용은 메시지 전달을 관리하기 위해 Snowflake에서 최대 30일간 보관할 수 있습니다. 이 기간이 지나면 메시지 내용이 삭제됩니다.

이메일 주소, 웹훅 또는 클라우드 서비스(Amazon SNS, Google Cloud PubSub 또는 Azure Event Grid)에서 제공하는 큐로 알림을 보내야 하는 경우에는 SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 저장 프로시저를 사용하십시오.

이 저장 프로시저를 1회 호출하면 다음을 수행할 수 있습니다.

  • 여러 유형의 대상(이메일 주소, 웹훅 및 큐)에 메시지를 보냅니다.

  • 여러 이메일 주소, 웹훅, 큐에 메시지를 보냅니다.

  • 알림 통합 유형에 따라 지정된 형식(일반 텍스트 또는 이메일의 경우 HTML, 큐의 경우 JSON)으로 메시지를 보냅니다.

예를 들어, 한 번의 호출로 일반 텍스트, HTML, JSON 형식의 메시지를 여러 개의 이메일 주소와 여러 개의 SNS, PubSub, Event Grid 항목으로 보낼 수 있습니다.

여러 알림 통합을 사용하면 알림을 각기 다른 큐에 보낼 수 있습니다. 또한 이메일 주소와 제목 줄이 서로 다른 여러 개의 이메일 알림 통합을 생성할 수 있으므로 여러 수신자에 대한 이메일 메시지를 쉽게 구성할 수 있습니다.

알림 보내기

알림을 보내기 전에, 알림을 보내는 데 사용할 알림 통합이 있어야 합니다. 이메일 알림을 보내는 경우, 수신자의 이메일 주소도 확인해야 합니다. 자세한 내용은 Snowflake의 알림 섹션을 참조하십시오.

이메일 주소나 큐로 알림을 보내려면 SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 저장 프로시저를 호출하여 사용할 메시지와 알림 통합을 지정합니다.

다음은 이 저장 프로시저에 대한 호출의 예입니다.

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
   -- Message type and content.
  '{ "text/html": "<p>This is a message.</p>" }',
  -- Integration used to send the notification and values used for the subject and recipients.
  -- These values override the defaults specified in the integration.
  '{
    "my_email_int": {
      "subject": "Status update",
      "toAddress": ["person_a@example.com", "person_b@example.com"],
      "ccAddress": ["person_c@example.com"],
      "bccAddress": ["person_d@example.com"]
    }
  }'
);
Copy

위 예제와 같이 JSON 형식의 문자열을 인자로 전달하여 보낼 메시지와 사용할 알림 통합을 지정합니다.

이러한 문자열의 구문은 SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 섹션을 참조하십시오.

이러한 JSON 형식의 문자열을 구성하려면 TEXT_HTML 같은 도우미 함수를 호출하여 메시지를 지정하고 EMAIL_INTEGRATION_CONFIG 를 호출하여 알림 통합, 제목줄 및 이메일 주소를 지정할 수 있습니다. 예:

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  SNOWFLAKE.NOTIFICATION.TEXT_HTML('<p>a message</p>'),
  SNOWFLAKE.NOTIFICATION.EMAIL_INTEGRATION_CONFIG(
    'my_email_int',
    'Status update',
    ARRAY_CONSTRUCT('person_a@example.com', 'person_b@example.com'),
    ARRAY_CONSTRUCT('person_c@example.com'),
    ARRAY_CONSTRUCT('person_d@example.com')
  )
);
Copy

사용할 수 있는 수준의 목록은 SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 매개 변수를 참조하십시오.

이메일 알림 통합에서 기본값 재정의

이메일 알림 통합에 지정된 기본값 과 다른 수신자 집합 또는 다른 제목 줄을 사용하려면 SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 에 전달하는 통합 구성 오브젝트의 다음 속성을 설정합니다.

  • subject (256자를 초과할 수 없음)

  • toAddress

  • ccAddress

  • bccAddress

예를 들어, 이메일 알림 통합 my_email_int 을 사용하고 제목, “받는 사람:” 라인, “참조:” 라인 및 “숨은 참조:” 라인을 재정의합니다.

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  '{ "text/html": "<p>This is a message.</p>" }',
  '{
    "my_email_int": {
      "subject": "Status update",
      "toAddress": ["person_a@example.com", "person_b@example.com"],
      "ccAddress": ["person_c@example.com"],
      "bccAddress": ["person_d@example.com"]
    }
  }'
);
Copy

통합 구성을 위한 JSON 형식의 문자열을 구성하려면 EMAIL_INTEGRATION_CONFIG 도우미 함수를 호출하면 됩니다.

예를 들어, “Service down”이라는 제목으로 oncall-a@snowflake.comoncall-b@snowflake.com으로 이메일 메시지를 보내려면 다음 명령을 실행합니다.

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  SNOWFLAKE.NOTIFICATION.TEXT_PLAIN('Your message'),
  SNOWFLAKE.NOTIFICATION.EMAIL_INTEGRATION_CONFIG(
    'my_email_int,
    'Service down',
    ARRAY_CONSTRUCT('oncall-a@example.com', 'oncall-b@example.com')
  )
);
Copy

이메일 메시지에 “참조:” 및 “숨은 참조:” 라인을 포함하려면 해당 라인에 대한 이메일 주소 배열과 함께 추가 인자를 전달합니다.

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  SNOWFLAKE.NOTIFICATION.TEXT_PLAIN('Your message'),
  SNOWFLAKE.NOTIFICATION.EMAIL_INTEGRATION_CONFIG(
    'my_email_int,
    'Service down',
    ARRAY_CONSTRUCT('oncall-a@example.com', 'oncall-b@example.com'),
    ARRAY_CONSTRUCT('cc-a@example.com', 'cc-b@example.com'),
    ARRAY_CONSTRUCT('bcc-a@example.com', 'bcc-b@example.com')
  )
);
Copy

“참조:” 또는 “숨은 참조:” 라인만 설정하려면(둘 다 설정하지 않으려면) 해당 인자에 빈 배열 또는 NULL을 전달합니다. 도우미 함수를 사용하지 않고 JSON 오브젝트를 구성하는 경우 JSON 오브젝트에서 ccAddress 또는 bccAddress 속성을 생략합니다.

HTML, 일반 텍스트 및 JSON 메시지 보내기

HTML, 일반 텍스트 또는 JSON으로 메시지를 보내려면 메시지 유형을 속성의 이름으로, 메시지를 속성의 값으로 포함하는 JSON 오브젝트를 전달합니다.

'{ "<message_type>": "<message>" }'
Copy

"message_type" 은 다음 값 중 하나일 수 있습니다.

  • "text/html"

  • "text/plain"

  • "application/json"

예:

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  '{ "text/html": "<p>This is a message.</p>" }',
  '{ "my_email_int": {} }'
);
Copy

메시지에 대한 JSON 오브젝트를 구성하려면 다음 도우미 함수를 사용할 수 있습니다.

  • HTML 메시지의 경우 TEXT_HTML 을 호출합니다.

  • 일반 텍스트의 경우 TEXT_HTML 을 호출합니다.

  • JSON 메시지의 경우 APPLICATION_JSON 을 호출합니다.

다음 예제에서는 my_email_int 이메일 알림 통합을 사용하여 HTML 메시지를 보냅니다.

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  SNOWFLAKE.NOTIFICATION.TEXT_HTML('<p>a message</p>'),
  SNOWFLAKE.NOTIFICATION.INTEGRATION('my_email_int')
);
Copy

다음 예에서는 동일한 통합을 사용하여 일반 텍스트 메시지를 보냅니다.

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  SNOWFLAKE.NOTIFICATION.TEXT_PLAIN('A message'),
  SNOWFLAKE.NOTIFICATION.INTEGRATION('my_email_int')
);
Copy

다음 예제에서는 my_queue_int 알림 통합에서 지정한 큐로 JSON 메시지를 보냅니다. 큐에 대한 알림 통합을 만드는 방법에 대한 지침은 다음 항목을 참조하십시오.

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{ "name": "value" }'),
  SNOWFLAKE.NOTIFICATION.INTEGRATION('my_sns_int')
);
Copy

여러 통합을 사용하여 알림 보내기

다음과 같은 경우 여러 통합을 사용하여 메시지를 보낼 수 있습니다.

  • 동일한 함수 호출로 이메일과 항목으로 메시지를 보내려고 합니다.

  • 다양한 이메일 알림 통합을 통해 지정된 다양한 이메일 주소로 메시지를 보내려는 경우.

여러 통합을 사용하려면 ARRAY_CONSTRUCT 함수를 호출하여 통합 구성의 배열을 구성하고 배열을 SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 저장 프로시저의 두 번째 인자로 전달합니다.

예를 들어, 일반 텍스트 메시지를 큐와 다른 알림 통합에 구성된 이메일 주소로 보내려면 다음을 수행합니다.

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  '{"text/plain":"A message"}',
  ARRAY_CONSTRUCT(
    '{"my_sns_int":{}}',
    '{"my_email_int":{}}',
 )
);
Copy

참고

배열에는 동일한 알림 통합에 대해 두 개 이상의 오브젝트가 포함될 수 없습니다.

도우미 함수를 사용하여 통합 구성을 구성하려는 경우 도우미 함수가 반환한 값을 ARRAY_CONSTRUCT 함수에 전달할 수 있습니다. 예:

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  SNOWFLAKE.NOTIFICATION.TEXT_PLAIN('A message'),
  ARRAY_CONSTRUCT(
    SNOWFLAKE.NOTIFICATION.INTEGRATION('my_sns_int'),
    SNOWFLAKE.NOTIFICATION.INTEGRATION('my_email_int')
  )
);
Copy

다음 예제에서는 다양한 형식의 메시지를 큐와 이메일 주소로 보냅니다.

CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
  ARRAY_CONSTRUCT(
    SNOWFLAKE.NOTIFICATION.TEXT_PLAIN('A message'),
    SNOWFLAKE.NOTIFICATION.TEXT_HTML('<p>A message</p>'),
    SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{ "name": "value" }')
  ),
  ARRAY_CONSTRUCT(
    SNOWFLAKE.NOTIFICATION.INTEGRATION('my_sns_int'),
    SNOWFLAKE.NOTIFICATION.INTEGRATION('my_email_int')
  )
);
Copy