Criação de uma integração de notificação para enviar notificações para tópico do Amazon SNS

Para enviar notificações para um tópico do Amazon SNS, você deve criar uma integração de notificação para esse tópico. Para fazer isso:

  1. Crie um tópico do Amazon SNS

  2. Crie a política de IAM que concede permissão para publicar neste tópico.

  3. Crie a função IAM que você atribui a esta política.

  4. Crie uma integração de notificação.

  5. Concessão de acesso Snowflake ao tópico.

Nota

Atualmente, esse recurso está limitado a contas Snowflake hospedadas no AWS.

Criar um tópico do Amazon SNS

Crie um tópico do SNS em sua conta AWS para gerenciar as notificações. Registre o Amazon Resource Name (ARN) para o tópico SNS.

Nota

Apenas tópicos SNS padrão são suportados. Não crie tópicos SNS FIFO (primeiro a entrar, primeiro a sair) para uso com notificações de erro. Atualmente, as notificações de erro enviadas para tópicos FIFO falham silenciosamente.

Para reduzir a latência e evitar cobranças de saída de dados pelo envio de notificações entre regiões, recomendamos criar o tópico SNS na mesma região que sua conta Snowflake.

Para instruções, consulte o tópico Criar um tópico do Amazon SNS na documentação do SNS.

Criar a política IAM

Crie uma política do AWS Identity and Access Management (IAM) que concede permissões para publicar no tópico SNS. A política define as seguintes ações:

  • sns:publish: Publique no tópico do SNS.

  1. Faça login no Console de gerenciamento AWS.

  2. No painel inicial, escolha Identity & Access Management (IAM).

  3. Escolha Account settings no painel de navegação à esquerda.

  4. Expanda a lista Security Token Service Regions, encontre a região AWS correspondente à região onde sua conta está localizada e escolha Activate se o status for Inactive.

  5. Escolha Policies no painel de navegação à esquerda.

  6. Selecione Create Policy.

  7. Selecione a guia JSON.

  8. Adicione um documento de política que defina as ações que podem ser tomadas sobre seu tópico SNS.

    Copie e cole o texto a seguir no editor de políticas:

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

    Substitua sns_topic_arn pelo ARN do tópico do SNS que você criou anteriormente.

  9. Selecione Review policy.

  10. Insira o nome da política (por exemplo, snowflake_sns_topic) e uma descrição opcional, e selecione Create policy.

Criar a função AWS IAM

Crie uma função AWS IAM na qual atribuir privilégios sobre o tópico SNS.

  1. Faça login no Console de gerenciamento AWS.

  2. No painel inicial, escolha Identity & Access Management (IAM):

  3. Escolha Roles no painel de navegação à esquerda.

  4. Selecione Create role.

  5. Selecione Another AWS account como o tipo de entidade confiável.

  6. No campo Account ID, digite temporariamente sua própria ID de conta AWS.

  7. Selecione a opção Require external ID. Esta opção permite que você conceda permissões sobre os recursos de sua conta Amazon (ou seja, SNS) a um terceiro (ou seja, Snowflake).

    Por enquanto, insira uma ID fictícia, como 0000. Mais tarde, você modificará a relação de confiança e substituirá a ID fictícia pela ID externa para o IAM do Snowflake gerado pelo usuário para sua conta. Uma condição na política de confiança para sua função IAM permite que seus usuários do Snowflake assumam a função usando o objeto de integração de notificação que você criará mais tarde.

  8. Selecione Next.

  9. Localize a política que você criou anteriormente e selecione esta política.

  10. Selecione Next.

  11. Digite um nome e descrição para a função e selecione Create role.

  12. Registre o valor Role ARN localizado na página de resumo de funções. Você especificará esse valor em uma ou mais etapas posteriores.

Criação da integração de notificação

Execute o comando CREATE NOTIFICATION INTEGRATION para criar uma integração de notificação. Uma integração é um objeto Snowflake que faz referência ao tópico SNS que você criou.

Nota

Se você planeja usar a integração para notificações sobre erros em tarefas ou canais, uma única integração de notificação pode oferecer suporte a múltiplas tarefas ou canais.

Ao executar o comando, defina esses parâmetros com os seguintes valores:

Por exemplo:

CREATE NOTIFICATION INTEGRATION my_notification_int
  ENABLED = TRUE
  DIRECTION = OUTBOUND
  TYPE = QUEUE
  NOTIFICATION_PROVIDER = AWS_SNS
  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

Concessão de acesso Snowflake ao tópico SNS

Recuperação do ARN do usuário IAM e do ID externo do tópico do SNS

  1. Execute o comando DESCRIBE INTEGRATION para exibir as propriedades da integração de notificação que você acabou de criar.

    Por exemplo, para exibir as propriedades da integração de notificação nomeada my_notification_int:

    DESC NOTIFICATION INTEGRATION my_notification_int;
    
    Copy
    +---------------------------+-------------------+------------------------------------------------------+----------------------+
    |   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=   |                      |
    +---------------------------+-------------------+------------------------------------------------------+----------------------+
    
  2. Registre os valores das seguintes propriedades:

    • SF_AWS_IAM_USER_ARN

      ARN para o usuário IAM do Snowflake criado para sua conta. Os usuários em sua conta Snowflake assumirão a função IAM que você criou anteriormente enviando o ID externo para esse usuário por meio de sua integração de notificação.

    • SF_AWS_EXTERNAL_ID

      ID externa para o usuário IAM do Snowflake criado para sua conta.

    Na próxima etapa, você atualizará a relação de confiança para a função IAM com esses valores.

Observe a propriedade DIRECTION, que indica a direção da mensagem em nuvem em relação ao Snowflake.

Modifique a relação de confiança na função IAM

  1. Faça login no Console de gerenciamento AWS.

  2. No painel inicial, escolha Identity & Access Management (IAM):

  3. Escolha Roles no painel de navegação à esquerda.

  4. Selecione a função que você criou anteriormente.

  5. Selecione a guia Trust relationships.

  6. Selecione Edit trust relationship.

  7. Modifique o documento de política para usar os valores das propriedades de integração de notificação que você registrou anteriormente.

    Documento de política da função 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

    Onde:

    • sf_aws_iam_user_arn é o valor SF_AWS_IAM_USER_ARN que você registrou.

    • sf_aws_external_id é o valor SF_AWS_EXTERNAL_ID que você registrou.

  8. Selecione Update Trust Policy. As alterações são salvas.