AWS SNS를 사용하여 작업에 대한 오류 알림 활성화하기

이 항목에서는 AWS SNS(Amazon Web Services Simple Notification Service)를 사용한 작업에 대한 오류 알림 지원 구성 지침을 제공합니다.

Amazon AWS SNS를 사용하여 오류 알림 활성화하기

작업 알림을 활성화하려면 다음 섹션의 단계를 따르십시오.

1단계: Amazon SNS 항목 만들기

모든 오류 메시지를 처리하기 위해 AWS 계정에 SNS 항목을 만듭니다. SNS 항목의 ARN(Amazon Resource Name)을 기록합니다.

참고

표준 SNS 항목만 지원됩니다. 오류 알림에 사용할 SNS FIFO(first in, first out) 항목을 만들지 마십시오. 현재, FIFO 항목으로 전송된 오류 알림은 자동으로 실패합니다.

대기 시간을 줄이고 전체 리전 으로 알림을 보내기 위한 데이터 송신 요금이 발생하지 않도록 하려면 Snowflake 계정과 동일한 리전에 SNS 항목을 만드는 것이 좋습니다.

지침은 SNS 설명서에서 Amazon SNS 항목 만들기 를 참조하십시오.

2단계: IAM 정책 만들기

SNS 항목에 대한 게시 권한을 부여하는 AWS IAM(Identity and Access Management) 정책을 만듭니다. 이 정책은 다음 작업을 정의합니다.

  • sns:publish

    SNS 항목에 게시합니다.

  1. AWS 관리 콘솔에 로그인합니다.

  2. 홈 대시보드에서 Identity & Access Management (IAM)를 선택합니다.

  3. 왼쪽 탐색 창에서 Account settings 을 선택합니다.

  4. Security Token Service Regions 목록을 확장하고 계정이 위치한 리전 에 해당하는 AWS 리전을 찾아 상태가 Inactive 이면 Activate 을 선택합니다.

  5. 왼쪽 탐색 창에서 Policies 을 선택합니다.

  6. Create Policy 를 클릭합니다.

  7. JSON 탭을 클릭합니다.

  8. SNS 항목에 대해 취할 수 있는 조치 사항을 정의하는 정책 문서를 추가합니다.

    다음 텍스트를 복사하여 정책 편집기에 붙여넣습니다.

    {
        "Version": "2012-10-17",
        "Statement": [
          {
             "Effect": "Allow",
             "Action": [
                 "sns:Publish"
             ],
             "Resource": "<sns_topic_arn>"
          }
        ]
     }
    
    Copy

    sns_topic_arn 을 이 항목의 1단계: Amazon SNS 항목 만들기 에서 만든 SNS 항목의 ARN으로 바꿉니다.

  9. Review policy 를 클릭합니다.

  10. 정책 이름(예: snowflake_sns_topic)과 선택 사항으로 설명을 입력합니다. Create policy 를 클릭합니다.

3단계: AWS IAM 역할 만들기

SNS 항목에 대한 권한을 할당할 AWS IAM 역할을 만듭니다.

  1. AWS 관리 콘솔에 로그인합니다.

  2. 홈 대시보드에서 Identity & Access Management (IAM)를 선택합니다.

  3. 왼쪽 탐색 창에서 Roles 을 선택합니다.

  4. Create role 버튼을 클릭합니다.

  5. Another AWS account 을 신뢰할 수 있는 엔터티 타입으로 선택합니다.

  6. Account ID 필드에 본인의 AWS 계정 ID를 임시로 입력합니다.

  7. Require external ID 옵션을 선택합니다. 이 옵션을 사용하면 Amazon 계정 리소스(즉, SNS)에 대한 권한을 서드 파티(즉, Snowflake)에 부여할 수 있습니다.

    지금은 0000 과 같은 더미 ID를 입력하십시오. 나중에 신뢰 관계를 수정하고 더미 ID를 계정에 대해 생성된 Snowflake IAM 사용자의 외부 ID로 바꿉니다. Snowflake 사용자는 IAM 역할에 대한 신뢰 정책의 조건을 통해 나중에 만들 알림 통합 오브젝트를 사용하여 역할을 맡을 수 있습니다.

  8. Next 버튼을 클릭합니다.

  9. 이 항목의 2단계: IAM 정책 만들기 에서 만든 정책을 찾아 이 정책을 선택합니다.

  10. Next 버튼을 클릭합니다.

  11. 역할의 이름과 설명을 입력하고 Create role 버튼을 클릭합니다.

  12. 역할 요약 페이지에 있는 Role ARN 값을 기록합니다. 하나 이상의 이후 단계에서 이 값을 지정하게 됩니다.

4단계: 알림 통합 만들기

CREATE NOTIFICATION INTEGRATION 을 사용하여 알림 통합을 만듭니다. 통합은 만든 SNS 항목을 참조하는 Snowflake 오브젝트입니다.

단일 알림 통합은 여러 작업파이프 를 지원할 수 있습니다.

참고

계정 관리자(ACCOUNTADMIN 역할의 사용자) 또는 전역 CREATE INTEGRATION 권한이 있는 역할만 이 SQL 명령을 실행할 수 있습니다.

CREATE NOTIFICATION INTEGRATION <integration_name>
  ENABLED = true
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = AWS_SNS
  DIRECTION = OUTBOUND
  AWS_SNS_TOPIC_ARN = '<topic_arn>'
  AWS_SNS_ROLE_ARN = '<iam_role_arn>'
Copy

여기서

<통합_이름>

새 통합의 이름입니다.

DIRECTION = OUTBOUND

Snowflake에 관한 클라우드 메시징의 방향입니다. 오류 알림을 구성할 때만 필요합니다.

<항목_arn>

이 항목의 1단계: Amazon SNS 항목 만들기 에서 기록한 SNS 항목 ARN입니다.

<iam_역할_arn>

이 항목의 3단계: AWS IAM 역할 만들기 에서 기록한 IAM 역할 ARN입니다.

예:

CREATE NOTIFICATION INTEGRATION my_notification_int
  ENABLED = true
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = AWS_SNS
  DIRECTION = OUTBOUND
  AWS_SNS_TOPIC_ARN = 'arn:aws:sns:us-east-2:111122223333:sns_topic'
  AWS_SNS_ROLE_ARN = 'arn:aws:iam::111122223333:role/error_sns_role';
Copy

5단계: SNS 항목에 대한 Snowflake 액세스 권한 부여하기

IAM 사용자 ARN과 SNS 항목 외부 ID를 검색합니다.

  1. DESCRIBE INTEGRATION 실행:

    DESC NOTIFICATION INTEGRATION <integration_name>;
    
    Copy

    여기서

    • integration_name4단계: 알림 통합 만들기 에서 만든 알림 통합의 이름입니다.

    예:

    DESC NOTIFICATION INTEGRATION my_notification_int;
    
    +---------------------------+-------------------+------------------------------------------------------+----------------------+
    |   property                |   property_type   |   property_value                                     |   property_default   |
    +---------------------------+-------------------+------------------------------------------------------+----------------------+
    |   ENABLED                 |   Boolean         |   true                                               |   false              |
    |   NOTIFICATION_PROVIDER   |   String          |   AWS_SNS                                            |                      |
    |   DIRECTION               |   String          |   OUTBOUND                                           |   INBOUND            |
    |   AWS_SNS_TOPIC_ARN       |   String          |   arn:aws:sns:us-east-2:111122223333:myaccount       |                      |
    |   AWS_SNS_ROLE_ARN        |   String          |   arn:aws:iam::111122223333:role/myrole              |                      |
    |   SF_AWS_IAM_USER_ARN     |   String          |   arn:aws:iam::123456789001:user/c_myaccount         |                      |
    |   SF_AWS_EXTERNAL_ID      |   String          |   MYACCOUNT_SFCRole=2_a123456/s0aBCDEfGHIJklmNoPq=   |                      |
    +---------------------------+-------------------+------------------------------------------------------+----------------------+
    
    Copy
  2. 생성된 다음 값을 기록합니다.

    SF_AWS_IAM_USER_ARN:

    계정에 대해 생성된 Snowflake IAM 사용자의 ARN. Snowflake 계정의 사용자는 알림 통합을 사용하여 이 사용자의 외부 ID를 제출하여 3단계: AWS IAM 역할 만들기 에서 만든 IAM 역할을 맡게 됩니다.

    SF_AWS_EXTERNAL_ID:

    계정에 대해 생성된 Snowflake IAM 사용자의 외부 ID입니다.

    다음 단계에서는 이러한 값으로 IAM 역할의 신뢰 관계를 업데이트합니다.

Snowflake에 관한 클라우드 메시징의 방향을 나타내는 DIRECTION 속성에 유의하십시오.

IAM 역할의 신뢰 관계 수정하기

  1. AWS 관리 콘솔에 로그인합니다.

  2. 홈 대시보드에서 Identity & Access Management (IAM)를 선택합니다.

  3. 왼쪽 탐색 창에서 Roles 을 선택합니다.

  4. 이 항목의 3단계: AWSIAM 역할 만들기 에서 만든 역할을 클릭합니다.

  5. Trust relationships 탭을 클릭합니다.

  6. Edit trust relationship 버튼을 클릭합니다.

  7. 이 항목의 IAM 사용자 ARN 및 SNS 항목 외부 ID 검색하기 에서 기록한 DESC NOTIFICATION INTEGRATION 출력값으로 정책 문서를 수정합니다.

    IAM 역할에 대한 정책 문서

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "",
          "Effect": "Allow",
          "Principal": {
            "AWS": "<sf_aws_iam_user_arn>"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "sts:ExternalId": "<sf_aws_external_id>"
            }
          }
        }
      ]
    }
    
    Copy

    여기서

    • sf_aws_iam_user_arn 은 사용자가 기록한 SF_AWS_IAM_USER_ARN 값입니다.

    • sf_aws_external_id 는 사용자가 기록한 SF_AWS_EXTERNAL_ID 값입니다.

  8. Update Trust Policy 버튼을 클릭합니다. 변경 사항이 저장됩니다.

6단계: 작업에서 오류 알림 활성화하기

그런 다음 ERROR_INTEGRATION을 알림 통합의 이름으로 설정하여 독립 실행형 또는 루트 작업에서 오류 알림을 활성화합니다. (CREATE TASK를 사용해) 작업을 생성하거나 (ALTER TASK를 사용해) 이후에 생성할 때 속성을 설정할 수 있습니다.

자세한 내용은 오류 알림을 보내도록 작업 구성하기 섹션을 참조하십시오.