Como eu configuro o AWS Kinesis Firehose para poder copiar em Redshift?

7

Problema

Eu configurei um Firehose e selecionei as opções que, aparentemente, resultariam na transmissão dos dados para o Redshift. Eu tenho uma única Firehose e uma única tabela de destino no Redshift. Os dados estão aparecendo corretamente no bucket S3 intermediário, mas não atingindo o Redshift.

Eu permiti o acesso [1] do CIDR da região Firehose ao cluster por meio de grupos de segurança Redshift. Eu dei ao Firehose as credenciais para o cluster Redshift e testei as credenciais. O cluster é acessível publicamente.

A tabela STL_LOAD_ERRORS está vazia, que é onde eu esperaria ver os erros produzidos por qualquer instrução de cópia que foi tentada e falhou. Também não há eventos DeliveryToRedshift no CloudWatch. Isso me leva a acreditar que não há sequer uma tentativa de chegar a Redshift.

Estou usando Opções COPY do Redshift para especificar um arquivo jsonpath para a cópia. Atualmente tenho: json "s3://app-event-data/_jsonpaths/_bigtable.jsonpath.json" . Esse arquivo existe em s3 naquele local e se parece com o arquivo jsonpath [3]. Eu também tentei adicionar credenciais a essa caixa, mas não é necessário.

Atualização 1

Eu habilitei o login no Redshift, o que me mostrou que há autenticações bem-sucedidas sendo feitas da Firehose. Em seguida, criei um novo grupo de parâmetros com o log de atividades do usuário ativado e reiniciei o cluster. Esperando pelo próximo lote de log agora.

Referências

  1. link
  2. link
  3. link

Por que o ServerFault? Melhor site do StackExchange para perguntar sobre o Amazon AWS

Eu teria marcado essa pergunta: amazon-kinesis amazon-firehose amazon-redshift

    
por ogc-nick 20.11.2015 / 01:31

1 resposta

7

Aqui estão todas as coisas inicialmente configuradas incorretamente e, eventualmente, ajustadas para que o Firehose copie dados corretamente para o Redshift:

  1. Verifique se o intervalo selecionado está na mesma região do cluster do redshift. Você pode especificar a REGIÃO se por algum motivo, você deseja incorrer em cobranças adicionais . Não é possível alterar a região de um intervalo depois de criá-lo .

Issoéumpoucoconfusonoinícioporqueoseletorderegiãonoconsoledeblocosdiz"global".

  • A Firehose não citará identificadores para você, portanto, se o nome da tabela fornecido no formulário exigir cotações, será necessário adicioná-las você mesmo. O mesmo vale para nomes de colunas.
  • Aspas simples apenas nas opções de cópia.

  • Conceda ao Firehose acesso ao seu cluster Redshift autorizando o CIDR / IP correto na guia de segurança Redshift. Você pode encontrar o CIDR / IP correto para a região em que criou seu Firehose em aqui . Você não precisa criar um novo grupo Cluster Security para fazer isso. Você pode simplesmente adicioná-lo ao padrão. Se você adicionar um novo grupo de segurança, precisará reconfigurar o cluster no painel para usar o novo grupo de segurança. Ele não pode ter 2.

  • O Redshift COPY não aceita registro de data e hora com fusos horários fora do UTC. Se você estiver usando um formato como RFC3339, precisará colocar os horários em UTC primeiro e especificar TIMEFORMAT 'auto' nas opções de cópia.

  • Para ter alguma ideia do que está acontecendo quando as coisas não estão funcionando, é necessário ativar Log de atividades do usuário no Redshift por:

    • habilitando o log (obviamente)
    • criandoumnovogrupodeparâmetros

    • definindouser_activity_loggingparatrue

    • modificandoseuclusterparausaronovogrupodeparâmetros

    • robootseucluster

    Enable user activity logging achievement unlocked

        
    por 21.11.2015 / 01:23