Anteriormente, o Amazon Managed Service for Apache Flink era conhecido como Amazon Kinesis Data Analytics for Apache Flink.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Informações sobre a versão anterior do Managed Service for Apache Flink
nota
As versões 1.6, 1.8 e 1.11 do Apache Flink não são suportadas pela comunidade Apache Flink há mais de três anos. Agora planejamos encerrar o suporte para essas versões no Amazon Managed Service para Apache Flink. A partir de 5 de novembro de 2024, você não poderá criar novos aplicativos para essas versões do Flink. Você pode continuar executando os aplicativos existentes no momento.
Para todas as regiões, com exceção das regiões da China e AWS GovCloud (US) Regions, a partir de 5 de fevereiro de 2025, você não poderá mais criar, iniciar ou executar aplicativos usando essas versões do Apache Flink no Amazon Managed Service para Apache Flink.
Para as regiões da China e do AWS GovCloud (US) Regions, a partir de 19 de março de 2025, você não poderá mais criar, iniciar ou executar aplicativos usando essas versões do Apache Flink no Amazon Managed Service para Apache Flink.
Você pode atualizar seus aplicativos de forma estável usando o recurso de atualizações de versão in-loco no Managed Service for Apache Flink. Para obter mais informações, consulte Use atualizações de versão in-loco para o Apache Flink.
As versões 1.15.2 e 1.13.2 do Apache Flink são suportadas pelo Managed Service for Apache Flink, mas não são mais suportadas pela comunidade Apache Flink.
Este tópico contém as seguintes seções:
- Usando o conector Apache Flink Kinesis Streams com versões anteriores do Apache Flink
- Criando aplicativos com o Apache Flink 1.8.2
- Criando aplicativos com o Apache Flink 1.6.2
- Atualizando aplicativos
- Conectores disponíveis no Apache Flink 1.6.2 e 1.8.2
- Começando: Flink 1.13.2
- Introdução: Flink 1.11.1 - descontinuando
- Introdução: Flink 1.8.2 - descontinuando
- Começando: Flink 1.6.2 - descontinuando
- Exemplos de versões anteriores (antigas) do Managed Service for Apache Flink
Usando o conector Apache Flink Kinesis Streams com versões anteriores do Apache Flink
O conector de fluxos Kinesis para o Apache Flink não estava incluído no Apache Flink antes da versão 1.11. Para que seu aplicativo use o conector Kinesis para o Apache Flink com versões anteriores do Apache Flink, você deve baixar, compilar e instalar a versão do Apache Flink que seu aplicativo usa. Esse conector é usado para consumir dados de um Kinesis Stream usado como fonte do aplicativo ou para gravar dados em um Kinesis Stream usado para saída do aplicativo.
nota
Verifique se você está criando o conector com a KPLversão 0.14.0 ou superior
Para baixar e instalar o código-fonte do Apache Flink versão 1.8.2, faça o seguinte:
Certifique-se de ter o Apache Maven
instalado e que sua variável de JAVA_HOME
ambiente aponte para um JDK em vez de a. JRE Você pode testar a instalação do Apache Maven com o seguinte comando:mvn -version
Baixe o código-fonte do Apache Flink versão 1.8.2:
wget https://archive.apache.org/dist/flink/flink-1.8.2/flink-1.8.2-src.tgz
Descompacte o código-fonte do Apache Flink:
tar -xvf flink-1.8.2-src.tgz
Vá para o diretório do código-fonte do Apache Flink:
cd flink-1.8.2
Compile e instale o Apache Flink:
mvn clean install -Pinclude-kinesis -DskipTests
nota
Se você estiver compilando o Flink no Microsoft Windows, precisará adicionar o parâmetro
-Drat.skip=true
.
Criando aplicativos com o Apache Flink 1.8.2
Esta seção contém informações sobre os componentes que você usa para criar aplicativos do Managed Service for Apache Flink que funcionam com o Apache Flink 1.8.2.
Use as seguintes versões de componentes para os aplicativos do Managed Service for Apache Flink:
Componente | Version (Versão) |
---|---|
Java | 1.8 (recomendado) |
Apache Flink | 1.8.2 |
Serviço gerenciado para Apache Flink for Flink Runtime () aws-kinesisanalytics-runtime | 1.0.1 |
Serviço gerenciado para conectores Apache Flink Flink () aws-kinesisanalytics-flink | 1.0.1 |
Apache Maven | 3.1 |
Para compilar um aplicativo usando o Apache Flink 1.8.2, execute o Maven com o seguinte parâmetro:
mvn package -Dflink.version=1.8.2
Para obter um exemplo de arquivo pom.xml
para um aplicativo do Managed Service for Apache Flink que usa o Apache Flink versão 1.8.2, consulte Aplicativo de conceitos básicos do Managed Service for Apache Flink 1.8.2
Para obter informações sobre como criar e usar o código de aplicativo para um aplicativo do Managed Service for Apache Flink, consulte. Cria uma aplicação
Criando aplicativos com o Apache Flink 1.6.2
Esta seção contém informações sobre os componentes que você usa para criar aplicativos do Managed Service for Apache Flink que funcionam com o Apache Flink 1.6.2.
Use as seguintes versões de componentes para os aplicativos do Managed Service for Apache Flink:
Componente | Version (Versão) |
---|---|
Java | 1.8 (recomendado) |
AWS Java SDK | 1.11.379 |
Apache Flink | 1.6.2 |
Serviço gerenciado para Apache Flink for Flink Runtime () aws-kinesisanalytics-runtime | 1.0.1 |
Serviço gerenciado para conectores Apache Flink Flink () aws-kinesisanalytics-flink | 1.0.1 |
Apache Maven | 3.1 |
Apache Beam | Não é compatível com o Apache Flink 1.6.2. |
nota
Ao usar o Runtime do Managed Service for Apache Flink versão 1.0.1, você especifica a versão do Apache Flink em seu arquivo pom.xml
em vez de usar o parâmetro -Dflink.version
ao compilar o código do aplicativo.
Para obter um exemplo de arquivo pom.xml
para um aplicativo do Managed Service for Apache Flink que usa o Apache Flink versão 1.6.2, consulte Aplicativo de conceitos básicos do Managed Service for Apache Flink 1.6.2
Para obter informações sobre como criar e usar o código de aplicativo para um aplicativo do Managed Service for Apache Flink, consulte. Cria uma aplicação
Atualizando aplicativos
Para atualizar a versão Apache Flink de um aplicativo Amazon Managed Service para Apache Flink, use o recurso de atualização de versão do Apache Flink no local usando o,,, ou o. AWS CLI AWS SDK AWS CloudFormation AWS Management Console Para obter mais informações, consulte Use atualizações de versão in-loco para o Apache Flink.
Você pode usar esse recurso com qualquer aplicativo existente que você usa com o Amazon Managed Service para Apache Flink em READY
ou RUNNING
estado.
Conectores disponíveis no Apache Flink 1.6.2 e 1.8.2
A estrutura do Apache Flink contém conectores para acessar dados de várias fontes.
Para obter informações sobre conectores disponíveis na estrutura do Apache Flink 1.6.2, consulte Conectores (1.6.2)
na Documentação do Apache Flink (1.6.2) . Para obter informações sobre conectores disponíveis na estrutura do Apache Flink 1.8.2, consulte Conectores (1.8.2)
na Documentação do Apache Flink (1.8.2) .
Começando: Flink 1.13.2
Esta seção apresenta os conceitos fundamentais do Managed Service for Apache Flink e o. DataStream API Ela descreve as opções disponíveis para criar e testar seus aplicativos. Ela também fornece instruções para instalar as ferramentas necessárias para concluir os tutoriais deste guia e criar seu primeiro aplicativo.
Tópicos
- Componentes de um serviço gerenciado para o aplicativo Apache Flink
- Pré-requisitos para concluir os exercícios
- Etapa 1: configurar uma AWS conta e criar um usuário administrador
- Próxima etapa
- Etapa 2: configurar o AWS Command Line Interface (AWS CLI)
- Etapa 3: criar e executar um serviço gerenciado para o aplicativo Apache Flink
- Etapa 4: limpar AWS os recursos
- Etapa 5: Próximas etapas
Componentes de um serviço gerenciado para o aplicativo Apache Flink
Para processar dados, seu aplicativo Managed Service for Apache Flink usa um aplicativo Java/Apache Maven ou Scala que processa a entrada e produz a saída usando o runtime do Apache Flink.
O aplicativo do Managed Service for Apache Flink tem os seguintes componentes:
-
Propriedades de runtime: você pode usar as propriedades de runtime para configurar seu aplicativo sem recompilar o código do aplicativo.
-
Fonte: o aplicativo consome dados usando uma fonte. Um conector de origem lê dados de um fluxo de dados do Kinesis, de um bucket do Amazon S3 etc. Para obter mais informações, consulte Adicionar fontes de dados de streaming.
-
Operadores: o aplicativo processa dados usando um ou mais operadores. Um operador pode transformar, enriquecer ou agregar dados. Para obter mais informações, consulte Operadores.
-
Coletor: o aplicativo produz dados para fontes externas usando coletores. Um conector de coletor grava dados em um stream de dados do Kinesis, um stream Firehose, um bucket do Amazon S3 etc. Para obter mais informações, consulte Grave dados usando coletores.
Depois de criar, compilar e empacotar o código da aplicativo, é necessário fazer o upload do pacote do código em um bucket do Amazon Simple Storage Service (Amazon S3). Em seguida, crie um aplicativo do Managed Service for Apache Flink. Você passa na localização do pacote de código, um fluxo de dados do Kinesis como fonte de dados de fluxo e, normalmente, um local de fluxo ou arquivo que recebe os dados processados do aplicativo.
Pré-requisitos para concluir os exercícios
Para concluir as etapas neste guia, você deve ter o seguinte:
-
Java Development Kit (JDK) versão 11
. Defina a variável de JAVA_HOME
ambiente para apontar para o local de JDK instalação. -
Recomendamos que você use um ambiente de desenvolvimento (como Eclipse Java Neon
ou IntelliJ Idea ) para desenvolver e compilar seu aplicativo. -
Cliente do Git
. Instale o cliente do Git se você ainda não tiver feito isso. -
Apache Maven Compiler Plugin
. Maven deve estar em seu caminho de trabalho. Para testar a instalação do Apache Maven, insira o seguinte: $ mvn -version
Para começar a usar, vá até Configurar uma AWS conta e criar um usuário administrador.
Etapa 1: configurar uma AWS conta e criar um usuário administrador
Inscreva-se para um Conta da AWS
Se você não tiver um Conta da AWS, conclua as etapas a seguir para criar um.
Para se inscrever em um Conta da AWS
Abra a https://portal.aws.amazon.com/billing/inscrição.
Siga as instruções online.
Parte do procedimento de inscrição envolve receber uma chamada telefônica e inserir um código de verificação no teclado do telefone.
Quando você se inscreve em um Conta da AWS, um Usuário raiz da conta da AWSé criado. O usuário raiz tem acesso a todos os Serviços da AWS e atributos na conta. Como prática recomendada de segurança, atribua o acesso administrativo a um usuário e use somente o usuário-raiz para executar tarefas que exigem acesso de usuário-raiz.
AWS envia um e-mail de confirmação após a conclusão do processo de inscrição. A qualquer momento, você pode visualizar a atividade atual da sua conta e gerenciar sua conta acessando https://aws.amazon.com/e
Criar um usuário com acesso administrativo
Depois de se inscrever em um Conta da AWS, proteja seu Usuário raiz da conta da AWS AWS IAM Identity Center, habilite e crie um usuário administrativo para que você não use o usuário root nas tarefas diárias.
Proteja seu Usuário raiz da conta da AWS
-
Faça login AWS Management Console
como proprietário da conta escolhendo Usuário raiz e inserindo seu endereço de Conta da AWS e-mail. Na próxima página, insira sua senha. Para obter ajuda ao fazer login usando o usuário raiz, consulte Fazer login como usuário raiz no Guia do usuário do Início de Sessão da AWS .
-
Ative a autenticação multifator (MFA) para seu usuário root.
Para obter instruções, consulte Habilitar um MFA dispositivo virtual para seu usuário Conta da AWS root (console) no Guia IAM do usuário.
Criar um usuário com acesso administrativo
-
Ative o IAM Identity Center.
Para obter instruções, consulte Habilitar AWS IAM Identity Center no Guia do usuário do AWS IAM Identity Center .
-
No IAM Identity Center, conceda acesso administrativo a um usuário.
Para ver um tutorial sobre como usar o Diretório do Centro de Identidade do IAM como fonte de identidade, consulte Configurar o acesso do usuário com o padrão Diretório do Centro de Identidade do IAM no Guia AWS IAM Identity Center do usuário.
Iniciar sessão como o usuário com acesso administrativo
-
Para entrar com seu usuário do IAM Identity Center, use o login URL que foi enviado ao seu endereço de e-mail quando você criou o usuário do IAM Identity Center.
Para obter ajuda para fazer login usando um usuário do IAM Identity Center, consulte Como fazer login no portal de AWS acesso no Guia Início de Sessão da AWS do usuário.
Atribuir acesso a usuários adicionais
-
No IAM Identity Center, crie um conjunto de permissões que siga as melhores práticas de aplicação de permissões com privilégios mínimos.
Para obter instruções, consulte Create a permission set no Guia do usuário do AWS IAM Identity Center .
-
Atribua usuários a um grupo e, em seguida, atribua o acesso de autenticação única ao grupo.
Para obter instruções, consulte Add groups no Guia do usuário do AWS IAM Identity Center .
Conceder acesso programático
Os usuários precisam de acesso programático se quiserem interagir com pessoas AWS fora do AWS Management Console. A forma de conceder acesso programático depende do tipo de usuário que está acessando AWS.
Para conceder acesso programático aos usuários, selecione uma das seguintes opções:
Qual usuário precisa de acesso programático? | Para | Por |
---|---|---|
Identificação da força de trabalho (Usuários gerenciados no IAM Identity Center) |
Use credenciais temporárias para assinar solicitações programáticas para o AWS CLI AWS SDKs, ou. AWS APIs |
Siga as instruções da interface que deseja utilizar.
|
IAM | Use credenciais temporárias para assinar solicitações programáticas para o AWS CLI AWS SDKs, ou. AWS APIs | Siga as instruções em Usando credenciais temporárias com AWS recursos no Guia do IAM usuário. |
IAM | (Não recomendado) Use credenciais de longo prazo para assinar solicitações programáticas para o AWS CLI, AWS SDKs, ou. AWS APIs |
Siga as instruções da interface que deseja utilizar.
|
Próxima etapa
Configure o AWS Command Line Interface (AWS CLI)
Próxima etapa
Etapa 2: configurar o AWS Command Line Interface (AWS CLI)
Etapa 2: configurar o AWS Command Line Interface (AWS CLI)
Nesta etapa, você baixa e configura o AWS CLI para usar com o Managed Service para Apache Flink.
nota
Os exercícios de conceitos básicos neste guia pressupõem que você esteja usando credenciais de administrador (adminuser
) em sua conta para executar as operações.
nota
Se você já tem o AWS CLI instalado, talvez seja necessário fazer o upgrade para obter a funcionalidade mais recente. Para obter mais informações, consulte Instalar a AWS Command Line Interface no Guia do usuário da AWS Command Line Interface . Para verificar a versão do AWS CLI, execute o seguinte comando:
aws --version
Os exercícios deste tutorial exigem a seguinte AWS CLI versão ou posterior:
aws-cli/1.16.63
Para configurar o AWS CLI
-
Faça download e configure a AWS CLI. Para obter instruções, consulte os seguintes tópicos no Guia do usuário do AWS Command Line Interface :
-
Adicione um perfil nomeado para o usuário administrador no AWS CLI
config
arquivo. Você pode usar esse perfil ao executar os comandos da AWS CLI . Para obter mais informações sobre perfis nomeados, consulte Perfis nomeados no Guia do usuário da AWS Command Line Interface .[profile adminuser] aws_access_key_id =
adminuser access key ID
aws_secret_access_key =adminuser secret access key
region =aws-region
Para obter uma lista das AWS regiões disponíveis, consulte Regiões e endpoints no Referência geral da Amazon Web Services.
nota
O código e os comandos de exemplo neste tutorial usam a região Oeste dos EUA (Oregon). Para usar uma região diferente, altere a região no código e nos comandos deste tutorial para a região que você deseja usar.
-
Verifique a configuração digitando o seguinte comando no prompt de comando:
aws help
Depois de configurar uma AWS conta e a AWS CLI, você pode tentar o próximo exercício, no qual você configura um aplicativo de amostra e testa a end-to-end configuração.
Próxima etapa
Etapa 3: criar e executar um serviço gerenciado para o aplicativo Apache Flink
Etapa 3: criar e executar um serviço gerenciado para o aplicativo Apache Flink
Neste exercício, você cria um aplicativo Managed Service for Apache Flink com fluxos de dados como origem e coletor.
Esta seção contém as seguintes etapas:
- Crie dois streams de dados do Amazon Kinesis
- Grave registros de amostra no fluxo de entrada
- Baixe e examine o código Java de streaming do Apache Flink
- Compilar o código do aplicativo
- Faça o upload do código Java de streaming do Apache Flink
- Crie e execute o serviço gerenciado para o aplicativo Apache Flink
- Próxima etapa
Crie dois streams de dados do Amazon Kinesis
Antes de criar um aplicativo do Managed Service for Apache Flink para este exercício, crie dois fluxos de dados do Kinesis (ExampleInputStream
e ExampleOutputStream
). O aplicativo usa esses fluxos para os fluxos de origem e de destino do aplicativo.
Você pode criar esses fluxos usando o console do Amazon Kinesis ou o comando da AWS CLI a seguir. Para obter instruções sobre o console, consulte Criar e atualizar fluxos de dados no Guia do desenvolvedor do Amazon Kinesis Data Streams.
Como criar os fluxos de dados (AWS CLI)
-
Para criar o primeiro stream (
ExampleInputStream
), use o seguinte comando do Amazon Kinesiscreate-stream
AWS CLI .$ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
-
Para criar o segundo fluxo que o aplicativo usa para gravar a saída, execute o mesmo comando, alterando o nome da transmissão para
ExampleOutputStream
.$ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
Grave registros de amostra no fluxo de entrada
Nesta seção, você usa um script Python para gravar registros de amostra no fluxo para o aplicativo processar.
nota
Essa seção requer AWS SDK for Python (Boto)
-
Crie um arquivo denominado
stock.py
com o conteúdo a seguir:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Mais adiante neste tutorial, você executa o script
stock.py
para enviar dados para o aplicativo.$ python stock.py
Baixe e examine o código Java de streaming do Apache Flink
O código do aplicativo Java para este exemplo está disponível em GitHub. Para fazer download do código do aplicativo, faça o seguinte:
-
Duplique o repositório remoto usando o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
-
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/GettingStarted
.
Observe o seguinte sobre o código do aplicativo:
-
Um arquivo Project Object Model (pom.xml)
contém informações sobre a configuração e as dependências da aplicação, incluindo as bibliotecas do Managed Service for Apache Flink. -
O arquivo
BasicStreamingJob.java
contém o métodomain
que define a funcionalidade do aplicativo. -
O aplicativo usa uma origem do Kinesis para ler o fluxo de origem. O trecho a seguir cria a origem do Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
-
Seu aplicativo cria conectores de origem e de destino para acessar recursos externos usando um objeto
StreamExecutionEnvironment
. -
O aplicativo cria conectores de origem e de destino usando propriedades estáticas. Para usar as propriedades do aplicativo dinâmico, use os métodos
createSinkFromApplicationProperties
ecreateSourceFromApplicationProperties
para criar os conectores. Esses métodos leem as propriedades do aplicativo para configurar os conectores.Para obter mais informações sobre as propriedades do runtime, consulte Use propriedades de tempo de execução.
Compilar o código do aplicativo
Nesta seção, você usa o compilador do Apache Maven para criar o código Java para o aplicativo. Para obter informações sobre a instalação do Apache Maven e do Java Development Kit (JDK), consulte. Cumpra os pré-requisitos para concluir os exercícios
Para compilar o código do aplicativo
-
Para usar o código do aplicativo, você o compila e o empacota em um JAR arquivo. Há duas formas de compilar e empacotar o código:
-
Use a ferramenta de linha de comando do Maven. Crie seu JAR arquivo executando o seguinte comando no diretório que contém o
pom.xml
arquivo:mvn package -Dflink.version=1.13.2
-
Use o ambiente de desenvolvimento. Consulte a documentação de seu ambiente de desenvolvimento para obter mais detalhes.
nota
O código-fonte fornecido depende de bibliotecas do Java 11.
Você pode carregar seu pacote como um JAR arquivo ou compactar seu pacote e carregá-lo como um ZIP arquivo. Se você criar seu aplicativo usando o AWS CLI, você especifica seu tipo de conteúdo de código (JARouZIP).
-
-
Se houver erros durante a compilação, verifique se sua variável de ambiente
JAVA_HOME
está definida corretamente.
Se o aplicativo for compilado com êxito, o arquivo a seguir é criado:
target/aws-kinesis-analytics-java-apps-1.0.jar
Faça o upload do código Java de streaming do Apache Flink
Nesta seção, você cria um bucket do Amazon Simple Storage Service (Amazon S3) e faz upload do código do aplicativo.
Para fazer upload do código do aplicativo
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
-
Selecione Criar bucket.
-
Insira
ka-app-code-
no campo Nome do bucket. Adicione um sufixo para o nome do bucket, como o nome do usuário, para torná-lo globalmente exclusivo. Selecione Next (Próximo).<username>
-
Na etapa Configurar opções, mantenha as configurações como estão e selecione Próximo.
-
Na etapa Definir permissões, mantenha as configurações como estão e selecione Próximo.
-
Selecione Criar bucket.
-
No console do Amazon S3, escolha o - ka-app-code
<username>
bucket e escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
aws-kinesis-analytics-java-apps-1.0.jar
que você criou na etapa anterior. Selecione Next (Próximo). -
Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o serviço gerenciado para o aplicativo Apache Flink
Você pode criar e executar um aplicativo Managed Service for Apache Flink usando o console ou a AWS CLI.
nota
Quando você cria o aplicativo usando o console, seus recursos AWS Identity and Access Management (IAM) e do Amazon CloudWatch Logs são criados para você. Ao criar o aplicativo usando o AWS CLI, você cria esses recursos separadamente.
Crie e execute o aplicativo (console)
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Descrição, insira
My java test app
. -
Em Runtime, selecione Apache Flink.
-
Deixe o menu suspenso de versão como Apache Flink versão 1.13.
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar os fluxos de dados do Kinesis.
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
aws-kinesis-analytics-java-apps-1.0.jar
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Insira o seguinte:
ID do grupo Chave Valor ProducerConfigProperties
flink.inputstream.initpos
LATEST
ProducerConfigProperties
aws.region
us-west-2
ProducerConfigProperties
AggregationEnabled
false
-
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, marque a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro na Amazon, o Managed Service for Apache Flink cria um grupo de logs e um stream de logs para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Execute o aplicativo
O gráfico de tarefas do Flink pode ser visualizado executando o aplicativo, abrindo o painel do Apache Flink e selecionando a tarefa desejada do Flink.
Pare o aplicativo
Na MyApplicationpágina, escolha Parar. Confirme a ação.
Atualizar o aplicativo
Usando o console, você pode atualizar as configurações do aplicativo, como propriedades do aplicativo, configurações de monitoramento e o local ou nome do arquivo do aplicativoJAR. Você também pode recarregar o aplicativo a JAR partir do bucket do Amazon S3 se precisar atualizar o código do aplicativo.
Na MyApplicationpágina, escolha Configurar. Atualize as configurações do aplicativo e selecione Update (Atualizar).
Crie e execute o aplicativo (AWS CLI)
Nesta seção, você usa o AWS CLI para criar e executar o aplicativo Managed Service for Apache Flink. O Managed Service for Apache Flink usa o kinesisanalyticsv2
AWS CLI comando para criar e interagir com o Managed Service for Apache Flink aplicativos.
Criação de uma política de permissões
nota
Você deve criar uma política de permissões e uma função para o seu aplicativo. Se você não criar esses IAM recursos, seu aplicativo não poderá acessar seus fluxos de dados e registros.
Primeiro, crie uma política de permissões com duas instruções: uma que concede permissões para a ação read
no fluxo de origem, e outra que concede permissões para ações write
no fluxo de destino. Em seguida, você anexa a política a uma IAM função (que você cria na próxima seção). Assim, ao assumir o perfil, o serviço Managed Service for Apache Flink terá as permissões necessárias para ler o fluxo de origem e gravar no fluxo de coleta.
Use o código a seguir para criar a política de permissões AKReadSourceStreamWriteSinkStream
. Substitua
pelo nome de usuário que você usou para criar o bucket do Amazon S3 e armazenar o código do aplicativo. Substitua o ID da conta nos nomes de recursos da Amazon (ARNs) (username
) pelo ID da sua conta.012345678901
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-
username
", "arn:aws:s3:::ka-app-code-username
/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Para step-by-step obter instruções sobre como criar uma política de permissões, consulte o Tutorial: Criar e anexar sua primeira política gerenciada pelo cliente no Guia IAM do usuário.
nota
Para acessar outros serviços da Amazon, você pode usar o AWS SDK for Java. O Managed Service for Apache Flink define automaticamente as credenciais exigidas pelo com SDK as da IAM função de execução do serviço associada ao seu aplicativo. Não é necessária nenhuma etapa adicional.
Crie uma IAM função
Nesta seção, você cria uma IAM função que o aplicativo Managed Service for Apache Flink pode assumir para ler um fluxo de origem e gravar no stream do coletor.
O Managed Service for Apache Flink não pode acessar seu fluxo sem permissões. Você concede essas permissões por meio de uma IAM função. Cada IAM função tem duas políticas anexadas. A política de confiança concede ao Managed Service for Apache Flink permissão para assumir o perfil, e a política de permissões determina o que o serviço pode fazer depois de assumir a função.
Você anexa a política de permissões que criou na seção anterior a essa função.
Para criar uma função do IAM
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
No painel de navegação, selecione Roles (Funções) e Create Role (Criar função).
-
Em Selecionar tipo de identidade de confiança, selecione Serviço da AWS . Em Choose the service that will use this role (Selecionar o serviço que usará esta função), selecione Kinesis. Em Select your use case (Selecionar seu caso de uso), selecione Kinesis Analytics.
Selecione Next: Permissions (Próximo: permissões).
-
Na página Attach permissions policies, selecione Next: Review. Você pode anexar políticas de permissões depois de criar a função.
-
Na página Create role (Criar função), insira
MF-stream-rw-role
para o Role name (Nome da função). Selecione Criar função.Agora você criou uma nova IAM função chamada
MF-stream-rw-role
. Em seguida, você atualiza as políticas de confiança e de permissões para a função. -
Anexe a política de permissões à função.
nota
Para este exercício, o Managed Service for Apache Flink assume esse perfil para ler dados de um fluxo de dados do Kinesis (origem) e gravar a saída em outro fluxo de dados do Kinesis. Depois, você anexa a política que criou na etapa anterior, Criação de uma política de permissões.
-
Na página Summary (Resumo), selecione a guia Permissions (Permissões).
-
Selecione Attach Policies.
-
Na caixa de pesquisa, insira
AKReadSourceStreamWriteSinkStream
(a política que você criou na seção anterior). -
Escolha a AKReadSourceStreamWriteSinkStreampolítica e escolha Anexar política.
-
Agora você criou a função de execução de serviço que seu aplicativo usa para acessar os recursos. Anote ARN a nova função.
Para step-by-step obter instruções sobre como criar uma função, consulte Criação de uma IAM função (console) no Guia IAM do usuário.
Crie o serviço gerenciado para o aplicativo Apache Flink
-
Salve o JSON código a seguir em um arquivo chamado
create_request.json
. Substitua ARN a função de ARN exemplo pela função que você criou anteriormente. Substitua o ARN sufixo do bucket (
) pelo sufixo que você escolheu na seção anterior. Substitua o ID da conta de exemplo (username
) na função de execução do serviço pelo ID da conta.012345678901
{ "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::
012345678901
:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username
", "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } } -
Execute a ação
CreateApplication
com a solicitação anterior para criar o aplicativo:aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
O aplicativo agora é criado. Você inicia o aplicativo na próxima etapa.
Iniciar o aplicativo
Nesta seção, você usa a ação StartApplication
para iniciar o aplicativo.
Para iniciar o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
Execute a ação
StartApplication
com a solicitação anterior para iniciar o aplicativo:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
O aplicativo agora está em execução. Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console da Amazon para verificar se o aplicativo está funcionando.
Interromper o aplicativo
Nesta seção, você usa a ação StopApplication
para interromper o aplicativo.
Como interromper o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
stop_request.json
.{ "ApplicationName": "test" }
-
Execute a ação
StopApplication
com a seguinte solicitação para interromper o aplicativo:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
O aplicativo agora está interrompido.
Adicionar uma opção de CloudWatch registro
Você pode usar o AWS CLI para adicionar um stream de CloudWatch log da Amazon ao seu aplicativo. Para obter informações sobre como usar o CloudWatch Logs com seu aplicativo, consulteConfigurar o registro de aplicativos no Managed Service para Apache Flink.
Atualizar propriedades do ambiente
Nesta seção, você usa a ação UpdateApplication
para alterar as propriedades do ambiente do aplicativo sem recompilar o código do aplicativo. Neste exemplo, você altera a região dos fluxos de origem e destino.
Para atualizar propriedades de ambiente para o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
update_properties_request.json
.{"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
-
Execute a ação
UpdateApplication
com a solicitação anterior para atualizar as propriedades do ambiente:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Atualizar o código do aplicativo
Quando precisar atualizar o código do aplicativo com uma nova versão do pacote de código, use a UpdateApplication
AWS CLI ação.
nota
Para carregar uma nova versão do código do aplicativo com o mesmo nome de arquivo, você deve especificar a nova versão do objeto. Para obter mais informações sobre o uso de versões de objetos do Amazon S3, consulte Como ativar ou desativar o controle de versão.
Para usar o AWS CLI, exclua seu pacote de código anterior do bucket do Amazon S3, faça o upload da nova versão e ligueUpdateApplication
, especificando o mesmo nome de bucket e objeto do Amazon S3 e a nova versão do objeto. O aplicativo será reiniciado com o novo pacote de código.
O exemplo de solicitação da UpdateApplication
ação a seguir recarrega o código do aplicativo e reinicia o aplicativo. Atualize o CurrentApplicationVersionId
para a versão atual do aplicativo. Você pode verificar a versão atual do aplicativo usando as ações DescribeApplication
ou ListApplications
. Atualize o sufixo do nome do bucket (<username>
) com o sufixo que você escolheu na Crie dois streams de dados do Amazon Kinesis seção.
{ "ApplicationName": "test", "CurrentApplicationVersionId":
1
, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username
", "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU
" } } } } }
Próxima etapa
Etapa 4: limpar AWS os recursos
Etapa 4: limpar AWS os recursos
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial de introdução.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
-
No painel Managed Service for Apache Flink, escolha. MyApplication
-
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seus streams de dados do Kinesis
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel Kinesis Data Streams, escolha. ExampleInputStream
-
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
-
Na página Kinesis Streams, escolha o, escolha Ações ExampleOutputStream, escolha Excluir e confirme a exclusão.
Exclua seu objeto e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
-
Escolha o ka-app-code -
<username>
balde. -
Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Na barra de navegação, selecione Políticas.
-
No controle do filtro, insira kinesis.
-
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
-
Selecione Ações da política e, em seguida, Excluir.
-
Na barra de navegação, selecione Roles (Funções).
-
Escolha a função kinesis-analytics- MyApplication -us-west-2.
-
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação, selecione Logs.
-
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
-
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Próxima etapa
Etapa 5: Próximas etapas
Agora que você criou e executou um aplicativo básico do Managed Service for Apache Flink, consulte os seguintes recursos para obter soluções mais avançadas de Managed Service for Apache Flink.
A solução AWS de streaming de dados para o Amazon Kinesis
: A solução de dados de AWS streaming para o Amazon Kinesis configura automaticamente AWS os serviços necessários para capturar, armazenar, processar e entregar dados de streaming com facilidade. A solução oferece várias opções para resolver casos de uso de dados de transmissão. A opção Managed Service for Apache Flink fornece um ETL exemplo de end-to-end streaming que demonstra um aplicativo do mundo real que executa operações analíticas em dados simulados de táxi de Nova York. A solução configura todos os AWS recursos necessários, como IAM funções e políticas, um CloudWatch painel e CloudWatch alarmes. AWS Solução de streaming de dados para a Amazon MSK
: A solução de dados de AWS streaming para a Amazon MSK fornece AWS CloudFormation modelos em que os dados fluem por produtores, armazenamento de streaming, consumidores e destinos. Clickstream Lab com Apache Flink e Apache Kafka
: um laboratório completo para casos de uso de clickstream usando Amazon Managed Streaming for Apache Kafka para armazenamento de transmissão e aplicativos Managed Service for Apache Flink for Apache Flink para processamento de fluxos. Workshop do Amazon Managed Service para Apache Flink
: Neste workshop, você cria uma arquitetura de end-to-end streaming para ingerir, analisar e visualizar dados de streaming quase em tempo real. Você decidiu melhorar as operações de uma empresa de táxi na cidade de Nova York. Você analisa os dados de telemetria de uma frota de táxis na cidade de Nova York quase em tempo real para otimizar as operações da frota. Aprenda Flink: treinamento prático: treinamento
introdutório oficial do Apache Flink que ajuda você a começar a escrever aplicativos escaláveis de streamingETL, análises e orientados a eventos. nota
Esteja ciente de que o Managed Service for Apache Flink não é compatível com a versão Apache Flink (1.12) usada neste treinamento. Você pode usar o Flink 1.15.2 no Flink Managed Service para Apache Flink.
Introdução: Flink 1.11.1 - descontinuando
nota
As versões 1.6, 1.8 e 1.11 do Apache Flink não são suportadas pela comunidade Apache Flink há mais de três anos. Planejamos descontinuar essas versões no Amazon Managed Service para Apache Flink em 5 de novembro de 2024. A partir dessa data, você não poderá criar novos aplicativos para essas versões do Flink. Você pode continuar executando os aplicativos existentes no momento. Você pode atualizar seus aplicativos de forma estável usando o recurso de atualizações de versão in-loco no Amazon Managed Service para Apache Flink. Para obter mais informações, consulte. Use atualizações de versão in-loco para o Apache Flink
Este tópico contém uma versão do Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink tutorial que usa o Apache Flink 1.11.1.
Esta seção apresenta os conceitos fundamentais do Managed Service for Apache Flink e o. DataStream API Ela descreve as opções disponíveis para criar e testar seus aplicativos. Ela também fornece instruções para instalar as ferramentas necessárias para concluir os tutoriais deste guia e criar seu primeiro aplicativo.
Tópicos
- Componentes de um serviço gerenciado para o aplicativo Apache Flink
- Pré-requisitos para concluir os exercícios
- Etapa 1: configurar uma AWS conta e criar um usuário administrador
- Etapa 2: Configurar a AWS Command Line Interface (AWS CLI)
- Etapa 3: criar e executar um serviço gerenciado para o aplicativo Apache Flink
- Etapa 4: limpar AWS os recursos
- Etapa 5: Próximas etapas
Componentes de um serviço gerenciado para o aplicativo Apache Flink
Para processar dados, seu aplicativo Managed Service for Apache Flink usa um aplicativo Java/Apache Maven ou Scala que processa a entrada e produz a saída usando o runtime do Apache Flink.
O Managed Service for Apache Flink tem os seguintes componentes:
-
Propriedades de runtime: você pode usar as propriedades de runtime para configurar seu aplicativo sem recompilar o código do aplicativo.
-
Fonte: o aplicativo consome dados usando uma fonte. Um conector de origem lê dados de um fluxo de dados do Kinesis, de um bucket do Amazon S3 etc. Para obter mais informações, consulte Adicionar fontes de dados de streaming.
-
Operadores: o aplicativo processa dados usando um ou mais operadores. Um operador pode transformar, enriquecer ou agregar dados. Para obter mais informações, consulte Operadores.
-
Coletor: o aplicativo produz dados para fontes externas usando coletores. Um conector de coletor grava dados em um stream de dados do Kinesis, um stream Firehose, um bucket do Amazon S3 etc. Para obter mais informações, consulte Grave dados usando coletores.
Depois de criar, compilar e empacotar o código da aplicativo, é necessário fazer o upload do pacote do código em um bucket do Amazon Simple Storage Service (Amazon S3). Em seguida, crie um aplicativo do Managed Service for Apache Flink. Você passa na localização do pacote de código, um fluxo de dados do Kinesis como fonte de dados de fluxo e, normalmente, um local de fluxo ou arquivo que recebe os dados processados do aplicativo.
Pré-requisitos para concluir os exercícios
Para concluir as etapas neste guia, você deve ter o seguinte:
-
Java Development Kit (JDK) versão 11
. Defina a variável de JAVA_HOME
ambiente para apontar para o local de JDK instalação. -
Recomendamos que você use um ambiente de desenvolvimento (como Eclipse Java Neon
ou IntelliJ Idea ) para desenvolver e compilar seu aplicativo. -
Cliente do Git
. Instale o cliente do Git se você ainda não tiver feito isso. -
Apache Maven Compiler Plugin
. Maven deve estar em seu caminho de trabalho. Para testar a instalação do Apache Maven, insira o seguinte: $ mvn -version
Para começar a usar, vá até Configurar uma AWS conta e criar um usuário administrador.
Etapa 1: configurar uma AWS conta e criar um usuário administrador
Inscreva-se para um Conta da AWS
Se você não tiver um Conta da AWS, conclua as etapas a seguir para criar um.
Para se inscrever em um Conta da AWS
Abra a https://portal.aws.amazon.com/billing/inscrição.
Siga as instruções online.
Parte do procedimento de inscrição envolve receber uma chamada telefônica e inserir um código de verificação no teclado do telefone.
Quando você se inscreve em um Conta da AWS, um Usuário raiz da conta da AWSé criado. O usuário raiz tem acesso a todos os Serviços da AWS e atributos na conta. Como prática recomendada de segurança, atribua o acesso administrativo a um usuário e use somente o usuário-raiz para executar tarefas que exigem acesso de usuário-raiz.
AWS envia um e-mail de confirmação após a conclusão do processo de inscrição. A qualquer momento, você pode visualizar a atividade atual da sua conta e gerenciar sua conta acessando https://aws.amazon.com/e
Criar um usuário com acesso administrativo
Depois de se inscrever em um Conta da AWS, proteja seu Usuário raiz da conta da AWS AWS IAM Identity Center, habilite e crie um usuário administrativo para que você não use o usuário root nas tarefas diárias.
Proteja seu Usuário raiz da conta da AWS
-
Faça login AWS Management Console
como proprietário da conta escolhendo Usuário raiz e inserindo seu endereço de Conta da AWS e-mail. Na próxima página, insira sua senha. Para obter ajuda ao fazer login usando o usuário raiz, consulte Fazer login como usuário raiz no Guia do usuário do Início de Sessão da AWS .
-
Ative a autenticação multifator (MFA) para seu usuário root.
Para obter instruções, consulte Habilitar um MFA dispositivo virtual para seu usuário Conta da AWS root (console) no Guia IAM do usuário.
Criar um usuário com acesso administrativo
-
Ative o IAM Identity Center.
Para obter instruções, consulte Habilitar AWS IAM Identity Center no Guia do usuário do AWS IAM Identity Center .
-
No IAM Identity Center, conceda acesso administrativo a um usuário.
Para ver um tutorial sobre como usar o Diretório do Centro de Identidade do IAM como fonte de identidade, consulte Configurar o acesso do usuário com o padrão Diretório do Centro de Identidade do IAM no Guia AWS IAM Identity Center do usuário.
Iniciar sessão como o usuário com acesso administrativo
-
Para entrar com seu usuário do IAM Identity Center, use o login URL que foi enviado ao seu endereço de e-mail quando você criou o usuário do IAM Identity Center.
Para obter ajuda para fazer login usando um usuário do IAM Identity Center, consulte Como fazer login no portal de AWS acesso no Guia Início de Sessão da AWS do usuário.
Atribuir acesso a usuários adicionais
-
No IAM Identity Center, crie um conjunto de permissões que siga as melhores práticas de aplicação de permissões com privilégios mínimos.
Para obter instruções, consulte Create a permission set no Guia do usuário do AWS IAM Identity Center .
-
Atribua usuários a um grupo e, em seguida, atribua o acesso de autenticação única ao grupo.
Para obter instruções, consulte Add groups no Guia do usuário do AWS IAM Identity Center .
Conceder acesso programático
Os usuários precisam de acesso programático se quiserem interagir com pessoas AWS fora do AWS Management Console. A forma de conceder acesso programático depende do tipo de usuário que está acessando AWS.
Para conceder acesso programático aos usuários, selecione uma das seguintes opções:
Qual usuário precisa de acesso programático? | Para | Por |
---|---|---|
Identificação da força de trabalho (Usuários gerenciados no IAM Identity Center) |
Use credenciais temporárias para assinar solicitações programáticas para o AWS CLI AWS SDKs, ou. AWS APIs |
Siga as instruções da interface que deseja utilizar.
|
IAM | Use credenciais temporárias para assinar solicitações programáticas para o AWS CLI AWS SDKs, ou. AWS APIs | Siga as instruções em Usando credenciais temporárias com AWS recursos no Guia do IAM usuário. |
IAM | (Não recomendado) Use credenciais de longo prazo para assinar solicitações programáticas para o AWS CLI, AWS SDKs, ou. AWS APIs |
Siga as instruções da interface que deseja utilizar.
|
Próxima etapa
Configure o AWS Command Line Interface (AWS CLI)
Etapa 2: Configurar a AWS Command Line Interface (AWS CLI)
Nesta etapa, você baixa e configura o AWS CLI para usar com o Managed Service para Apache Flink.
nota
Os exercícios de conceitos básicos neste guia pressupõem que você esteja usando credenciais de administrador (adminuser
) em sua conta para executar as operações.
nota
Se você já tem o AWS CLI instalado, talvez seja necessário fazer o upgrade para obter a funcionalidade mais recente. Para obter mais informações, consulte Instalar a AWS Command Line Interface no Guia do usuário da AWS Command Line Interface . Para verificar a versão do AWS CLI, execute o seguinte comando:
aws --version
Os exercícios deste tutorial exigem a seguinte AWS CLI versão ou posterior:
aws-cli/1.16.63
Para configurar o AWS CLI
-
Faça download e configure a AWS CLI. Para obter instruções, consulte os seguintes tópicos no Guia do usuário do AWS Command Line Interface :
-
Adicione um perfil nomeado para o usuário administrador no AWS CLI
config
arquivo. Você pode usar esse perfil ao executar os comandos da AWS CLI . Para obter mais informações sobre perfis nomeados, consulte Perfis nomeados no Guia do usuário da AWS Command Line Interface .[profile adminuser] aws_access_key_id =
adminuser access key ID
aws_secret_access_key =adminuser secret access key
region =aws-region
Para obter uma lista das AWS regiões disponíveis, consulte Regiões e endpoints no Referência geral da Amazon Web Services.
nota
O código e os comandos de exemplo neste tutorial usam a região Oeste dos EUA (Oregon). Para usar uma região diferente, altere a região no código e nos comandos deste tutorial para a região que você deseja usar.
-
Verifique a configuração digitando o seguinte comando no prompt de comando:
aws help
Depois de configurar uma AWS conta e a AWS CLI, você pode tentar o próximo exercício, no qual você configura um aplicativo de amostra e testa a end-to-end configuração.
Próxima etapa
Etapa 3: criar e executar um serviço gerenciado para o aplicativo Apache Flink
Etapa 3: criar e executar um serviço gerenciado para o aplicativo Apache Flink
Neste exercício, você cria um aplicativo Managed Service for Apache Flink com fluxos de dados como origem e coletor.
Esta seção contém as seguintes etapas:
- Crie dois streams de dados do Amazon Kinesis
- Grave registros de amostra no fluxo de entrada
- Baixe e examine o código Java de streaming do Apache Flink
- Compilar o código do aplicativo
- Faça o upload do código Java de streaming do Apache Flink
- Crie e execute o serviço gerenciado para o aplicativo Apache Flink
- Próxima etapa
Crie dois streams de dados do Amazon Kinesis
Antes de criar um aplicativo do Managed Service for Apache Flink para este exercício, crie dois fluxos de dados do Kinesis (ExampleInputStream
e ExampleOutputStream
). O aplicativo usa esses fluxos para os fluxos de origem e de destino do aplicativo.
Você pode criar esses fluxos usando o console do Amazon Kinesis ou o comando da AWS CLI a seguir. Para obter instruções sobre o console, consulte Criar e atualizar fluxos de dados no Guia do desenvolvedor do Amazon Kinesis Data Streams.
Como criar os fluxos de dados (AWS CLI)
-
Para criar o primeiro stream (
ExampleInputStream
), use o seguinte comando do Amazon Kinesiscreate-stream
AWS CLI .$ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
-
Para criar o segundo fluxo que o aplicativo usa para gravar a saída, execute o mesmo comando, alterando o nome da transmissão para
ExampleOutputStream
.$ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
Grave registros de amostra no fluxo de entrada
Nesta seção, você usa um script Python para gravar registros de amostra no fluxo para o aplicativo processar.
nota
Essa seção requer AWS SDK for Python (Boto)
-
Crie um arquivo denominado
stock.py
com o conteúdo a seguir:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
-
Mais adiante neste tutorial, você executa o script
stock.py
para enviar dados para o aplicativo.$ python stock.py
Baixe e examine o código Java de streaming do Apache Flink
O código do aplicativo Java para este exemplo está disponível em GitHub. Para fazer download do código do aplicativo, faça o seguinte:
-
Duplique o repositório remoto usando o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
-
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/GettingStarted
.
Observe o seguinte sobre o código do aplicativo:
-
Um arquivo Project Object Model (pom.xml)
contém informações sobre a configuração e as dependências da aplicação, incluindo as bibliotecas do Managed Service for Apache Flink. -
O arquivo
BasicStreamingJob.java
contém o métodomain
que define a funcionalidade do aplicativo. -
O aplicativo usa uma origem do Kinesis para ler o fluxo de origem. O trecho a seguir cria a origem do Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
-
Seu aplicativo cria conectores de origem e de destino para acessar recursos externos usando um objeto
StreamExecutionEnvironment
. -
O aplicativo cria conectores de origem e de destino usando propriedades estáticas. Para usar as propriedades do aplicativo dinâmico, use os métodos
createSinkFromApplicationProperties
ecreateSourceFromApplicationProperties
para criar os conectores. Esses métodos leem as propriedades do aplicativo para configurar os conectores.Para obter mais informações sobre as propriedades do runtime, consulte Use propriedades de tempo de execução.
Compilar o código do aplicativo
Nesta seção, você usa o compilador do Apache Maven para criar o código Java para o aplicativo. Para obter informações sobre a instalação do Apache Maven e do Java Development Kit (JDK), consulte. Cumpra os pré-requisitos para concluir os exercícios
Para compilar o código do aplicativo
-
Para usar o código do aplicativo, você o compila e o empacota em um JAR arquivo. Há duas formas de compilar e empacotar o código:
-
Use a ferramenta de linha de comando do Maven. Crie seu JAR arquivo executando o seguinte comando no diretório que contém o
pom.xml
arquivo:mvn package -Dflink.version=1.11.3
-
Use o ambiente de desenvolvimento. Consulte a documentação de seu ambiente de desenvolvimento para obter mais detalhes.
nota
O código-fonte fornecido depende de bibliotecas do Java 11. Certifique-se de que a versão Java do seu projeto seja 11.
Você pode carregar seu pacote como um JAR arquivo ou compactar seu pacote e carregá-lo como um ZIP arquivo. Se você criar seu aplicativo usando o AWS CLI, você especifica seu tipo de conteúdo de código (JARouZIP).
-
-
Se houver erros durante a compilação, verifique se sua variável de ambiente
JAVA_HOME
está definida corretamente.
Se o aplicativo for compilado com êxito, o arquivo a seguir é criado:
target/aws-kinesis-analytics-java-apps-1.0.jar
Faça o upload do código Java de streaming do Apache Flink
Nesta seção, você cria um bucket do Amazon Simple Storage Service (Amazon S3) e faz upload do código do aplicativo.
Para fazer upload do código do aplicativo
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
-
Selecione Criar bucket.
-
Insira
ka-app-code-
no campo Nome do bucket. Adicione um sufixo para o nome do bucket, como o nome do usuário, para torná-lo globalmente exclusivo. Selecione Next (Próximo).<username>
-
Na etapa Configurar opções, mantenha as configurações como estão e selecione Próximo.
-
Na etapa Definir permissões, mantenha as configurações como estão e selecione Próximo.
-
Selecione Criar bucket.
-
No console do Amazon S3, escolha o - ka-app-code
<username>
bucket e escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
aws-kinesis-analytics-java-apps-1.0.jar
que você criou na etapa anterior. Selecione Next (Próximo). -
Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o serviço gerenciado para o aplicativo Apache Flink
Você pode criar e executar um aplicativo Managed Service for Apache Flink usando o console ou a AWS CLI.
nota
Quando você cria o aplicativo usando o console, seus recursos AWS Identity and Access Management (IAM) e do Amazon CloudWatch Logs são criados para você. Ao criar o aplicativo usando o AWS CLI, você cria esses recursos separadamente.
Crie e execute o aplicativo (console)
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Descrição, insira
My java test app
. -
Em Runtime, selecione Apache Flink.
-
Deixe o menu suspenso de versão como Apache Flink versão 1.11 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar os fluxos de dados do Kinesis.
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
aws-kinesis-analytics-java-apps-1.0.jar
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Em Properties (Propriedades), Group ID (ID do grupo), insira
ProducerConfigProperties
. -
Insira as seguintes propriedades e valores de aplicativo:
ID do grupo Chave Valor ProducerConfigProperties
flink.inputstream.initpos
LATEST
ProducerConfigProperties
aws.region
us-west-2
ProducerConfigProperties
AggregationEnabled
false
-
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, marque a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro na Amazon, o Managed Service for Apache Flink cria um grupo de logs e um stream de logs para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Execute o aplicativo
O gráfico de tarefas do Flink pode ser visualizado executando o aplicativo, abrindo o painel do Apache Flink e selecionando a tarefa desejada do Flink.
Pare o aplicativo
Na MyApplicationpágina, escolha Parar. Confirme a ação.
Atualizar o aplicativo
Usando o console, você pode atualizar as configurações do aplicativo, como propriedades do aplicativo, configurações de monitoramento e o local ou nome do arquivo do aplicativoJAR. Você também pode recarregar o aplicativo a JAR partir do bucket do Amazon S3 se precisar atualizar o código do aplicativo.
Na MyApplicationpágina, escolha Configurar. Atualize as configurações do aplicativo e selecione Update (Atualizar).
Crie e execute o aplicativo (AWS CLI)
Nesta seção, você usa o AWS CLI para criar e executar o aplicativo Managed Service for Apache Flink. Um Managed Service for Apache Flink usa o kinesisanalyticsv2
AWS CLI comando para criar e interagir com o Managed Service for Apache Flink.
Criar uma política de permissões
nota
Você deve criar uma política de permissões e uma função para o seu aplicativo. Se você não criar esses IAM recursos, seu aplicativo não poderá acessar seus fluxos de dados e registros.
Primeiro, crie uma política de permissões com duas instruções: uma que concede permissões para a ação read
no fluxo de origem, e outra que concede permissões para ações write
no fluxo de destino. Em seguida, você anexa a política a uma IAM função (que você cria na próxima seção). Assim, ao assumir o perfil, o serviço Managed Service for Apache Flink terá as permissões necessárias para ler o fluxo de origem e gravar no fluxo de coleta.
Use o código a seguir para criar a política de permissões AKReadSourceStreamWriteSinkStream
. Substitua
pelo nome de usuário que você usou para criar o bucket do Amazon S3 e armazenar o código do aplicativo. Substitua o ID da conta nos nomes de recursos da Amazon (ARNs) (username
) pelo ID da sua conta.012345678901
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-
username
", "arn:aws:s3:::ka-app-code-username
/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Para step-by-step obter instruções sobre como criar uma política de permissões, consulte o Tutorial: Criar e anexar sua primeira política gerenciada pelo cliente no Guia IAM do usuário.
nota
Para acessar outros serviços da Amazon, você pode usar o AWS SDK for Java. O Managed Service for Apache Flink define automaticamente as credenciais exigidas pelo com SDK as da IAM função de execução do serviço associada ao seu aplicativo. Não é necessária nenhuma etapa adicional.
Criar uma IAM função
Nesta seção, você cria uma IAM função que o aplicativo Managed Service for Apache Flink pode assumir para ler um fluxo de origem e gravar no stream do coletor.
O Managed Service for Apache Flink não pode acessar seu fluxo sem permissões. Você concede essas permissões por meio de uma IAM função. Cada IAM função tem duas políticas anexadas. A política de confiança concede ao Managed Service for Apache Flink permissão para assumir o perfil, e a política de permissões determina o que o serviço pode fazer depois de assumir a função.
Você anexa a política de permissões que criou na seção anterior a essa função.
Para criar uma função do IAM
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
No painel de navegação, selecione Roles (Funções) e Create Role (Criar função).
-
Em Selecionar tipo de identidade de confiança, selecione Serviço da AWS . Em Choose the service that will use this role (Selecionar o serviço que usará esta função), selecione Kinesis. Em Select your use case (Selecionar seu caso de uso), selecione Kinesis Analytics.
Selecione Next: Permissions (Próximo: permissões).
-
Na página Attach permissions policies, selecione Next: Review. Você pode anexar políticas de permissões depois de criar a função.
-
Na página Create role (Criar função), insira
MF-stream-rw-role
para o Role name (Nome da função). Selecione Criar função.Agora você criou uma nova IAM função chamada
MF-stream-rw-role
. Em seguida, você atualiza as políticas de confiança e de permissões para a função. -
Anexe a política de permissões à função.
nota
Para este exercício, o Managed Service for Apache Flink assume esse perfil para ler dados de um fluxo de dados do Kinesis (origem) e gravar a saída em outro fluxo de dados do Kinesis. Depois, você anexa a política que criou na etapa anterior, Criar uma política de permissões.
-
Na página Summary (Resumo), selecione a guia Permissions (Permissões).
-
Selecione Attach Policies.
-
Na caixa de pesquisa, insira
AKReadSourceStreamWriteSinkStream
(a política que você criou na seção anterior). -
Escolha a AKReadSourceStreamWriteSinkStreampolítica e escolha Anexar política.
-
Agora você criou a função de execução de serviço que seu aplicativo usa para acessar os recursos. Anote ARN a nova função.
Para step-by-step obter instruções sobre como criar uma função, consulte Criação de uma IAM função (console) no Guia IAM do usuário.
Crie o serviço gerenciado para o aplicativo Apache Flink
-
Salve o JSON código a seguir em um arquivo chamado
create_request.json
. Substitua ARN a função de ARN exemplo pela função que você criou anteriormente. Substitua o ARN sufixo do bucket (
) pelo sufixo que você escolheu na seção anterior. Substitua o ID da conta de exemplo (username
) na função de execução do serviço pelo ID da conta.012345678901
{ "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_11", "ServiceExecutionRole": "arn:aws:iam::
012345678901
:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username
", "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } } -
Execute a ação
CreateApplication
com a solicitação anterior para criar o aplicativo:aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
O aplicativo agora é criado. Você inicia o aplicativo na próxima etapa.
Inicie o aplicativo
Nesta seção, você usa a ação StartApplication
para iniciar o aplicativo.
Para iniciar o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
Execute a ação
StartApplication
com a solicitação anterior para iniciar o aplicativo:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
O aplicativo agora está em execução. Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console da Amazon para verificar se o aplicativo está funcionando.
Pare o aplicativo
Nesta seção, você usa a ação StopApplication
para interromper o aplicativo.
Como interromper o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
stop_request.json
.{ "ApplicationName": "test" }
-
Execute a ação
StopApplication
com a seguinte solicitação para interromper o aplicativo:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
O aplicativo agora está interrompido.
Adicionar uma opção de CloudWatch registro
Você pode usar o AWS CLI para adicionar um stream de CloudWatch log da Amazon ao seu aplicativo. Para obter informações sobre como usar o CloudWatch Logs com seu aplicativo, consulteConfigurar o registro de aplicativos no Managed Service para Apache Flink.
Atualizar propriedades do ambiente
Nesta seção, você usa a ação UpdateApplication
para alterar as propriedades do ambiente do aplicativo sem recompilar o código do aplicativo. Neste exemplo, você altera a região dos fluxos de origem e destino.
Para atualizar propriedades de ambiente para o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
update_properties_request.json
.{"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
-
Execute a ação
UpdateApplication
com a solicitação anterior para atualizar as propriedades do ambiente:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Atualizar o código do aplicativo
Quando precisar atualizar o código do aplicativo com uma nova versão do pacote de código, use a UpdateApplication
AWS CLI ação.
nota
Para carregar uma nova versão do código do aplicativo com o mesmo nome de arquivo, você deve especificar a nova versão do objeto. Para obter mais informações sobre o uso de versões de objetos do Amazon S3, consulte Como ativar ou desativar o controle de versão.
Para usar o AWS CLI, exclua seu pacote de código anterior do bucket do Amazon S3, faça o upload da nova versão e ligueUpdateApplication
, especificando o mesmo nome de bucket e objeto do Amazon S3 e a nova versão do objeto. O aplicativo será reiniciado com o novo pacote de código.
O exemplo de solicitação da UpdateApplication
ação a seguir recarrega o código do aplicativo e reinicia o aplicativo. Atualize o CurrentApplicationVersionId
para a versão atual do aplicativo. Você pode verificar a versão atual do aplicativo usando as ações DescribeApplication
ou ListApplications
. Atualize o sufixo do nome do bucket (<username>
) com o sufixo que você escolheu na Crie dois streams de dados do Amazon Kinesis seção.
{ "ApplicationName": "test", "CurrentApplicationVersionId":
1
, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username
", "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU
" } } } } }
Próxima etapa
Etapa 4: limpar AWS os recursos
Etapa 4: limpar AWS os recursos
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial de introdução.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
-
No painel Managed Service for Apache Flink, escolha. MyApplication
-
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seus streams de dados do Kinesis
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel Kinesis Data Streams, escolha. ExampleInputStream
-
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
-
Na página Kinesis Streams, escolha o, escolha Ações ExampleOutputStream, escolha Excluir e confirme a exclusão.
Exclua seu objeto e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
-
Escolha o ka-app-code -
<username>
balde. -
Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua nossos IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Na barra de navegação, selecione Políticas.
-
No controle do filtro, insira kinesis.
-
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
-
Selecione Ações da política e, em seguida, Excluir.
-
Na barra de navegação, selecione Roles (Funções).
-
Escolha a função kinesis-analytics- MyApplication -us-west-2.
-
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação, selecione Logs.
-
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
-
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Próxima etapa
Etapa 5: Próximas etapas
Agora que você criou e executou um aplicativo básico do Managed Service for Apache Flink, consulte os seguintes recursos para obter soluções mais avançadas de Managed Service for Apache Flink.
A solução AWS de streaming de dados para o Amazon Kinesis
: A solução de dados de AWS streaming para o Amazon Kinesis configura automaticamente AWS os serviços necessários para capturar, armazenar, processar e entregar dados de streaming com facilidade. A solução oferece várias opções para resolver casos de uso de dados de transmissão. A opção Managed Service for Apache Flink fornece um ETL exemplo de end-to-end streaming que demonstra um aplicativo do mundo real que executa operações analíticas em dados simulados de táxi de Nova York. A solução configura todos os AWS recursos necessários, como IAM funções e políticas, um CloudWatch painel e CloudWatch alarmes. AWS Solução de streaming de dados para a Amazon MSK
: A solução de dados de AWS streaming para a Amazon MSK fornece AWS CloudFormation modelos em que os dados fluem por produtores, armazenamento de streaming, consumidores e destinos. Clickstream Lab com Apache Flink e Apache Kafka
: um laboratório completo para casos de uso de clickstream usando Amazon Managed Streaming for Apache Kafka para armazenamento de transmissão e aplicativos Managed Service for Apache Flink for Apache Flink para processamento de fluxos. Workshop do Amazon Managed Service para Apache Flink
: Neste workshop, você cria uma arquitetura de end-to-end streaming para ingerir, analisar e visualizar dados de streaming quase em tempo real. Você decidiu melhorar as operações de uma empresa de táxi na cidade de Nova York. Você analisa os dados de telemetria de uma frota de táxis na cidade de Nova York quase em tempo real para otimizar as operações da frota. Aprenda Flink: treinamento prático: treinamento
introdutório oficial do Apache Flink que ajuda você a começar a escrever aplicativos escaláveis de streamingETL, análises e orientados a eventos. nota
Esteja ciente de que o Managed Service for Apache Flink não é compatível com a versão Apache Flink (1.12) usada neste treinamento. Você pode usar o Flink 1.15.2 no Flink Managed Service para Apache Flink.
Exemplos de código do Apache Flink
: um GitHub repositório de uma grande variedade de exemplos de aplicativos do Apache Flink.
Introdução: Flink 1.8.2 - descontinuando
nota
As versões 1.6, 1.8 e 1.11 do Apache Flink não são suportadas pela comunidade Apache Flink há mais de três anos. Planejamos descontinuar essas versões no Amazon Managed Service para Apache Flink em 5 de novembro de 2024. A partir dessa data, você não poderá criar novos aplicativos para essas versões do Flink. Você pode continuar executando os aplicativos existentes no momento. Você pode atualizar seus aplicativos de forma estável usando o recurso de atualizações de versão in-loco no Amazon Managed Service para Apache Flink. Para obter mais informações, consulte. Use atualizações de versão in-loco para o Apache Flink
Este tópico contém uma versão do Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink tutorial que usa o Apache Flink 1.8.2.
Tópicos
- Componentes do serviço gerenciado para o aplicativo Apache Flink
- Pré-requisitos para concluir os exercícios
- Etapa 1: configurar uma AWS conta e criar um usuário administrador
- Etapa 2: configurar o AWS Command Line Interface (AWS CLI)
- Etapa 3: criar e executar um serviço gerenciado para o aplicativo Apache Flink
- Etapa 4: limpar AWS os recursos
Componentes do serviço gerenciado para o aplicativo Apache Flink
Para processar dados, seu aplicativo Managed Service for Apache Flink usa um aplicativo Java/Apache Maven ou Scala que processa a entrada e produz a saída usando o runtime do Apache Flink.
O Managed Service for Apache Flink tem os seguintes componentes:
-
Propriedades de runtime: você pode usar as propriedades de runtime para configurar seu aplicativo sem recompilar o código do aplicativo.
-
Fonte: o aplicativo consome dados usando uma fonte. Um conector de origem lê dados de um fluxo de dados do Kinesis, de um bucket do Amazon S3 etc. Para obter mais informações, consulte Adicionar fontes de dados de streaming.
-
Operadores: o aplicativo processa dados usando um ou mais operadores. Um operador pode transformar, enriquecer ou agregar dados. Para obter mais informações, consulte Operadores.
-
Coletor: o aplicativo produz dados para fontes externas usando coletores. Um conector de coletor grava dados em um stream de dados do Kinesis, um stream Firehose, um bucket do Amazon S3 etc. Para obter mais informações, consulte Grave dados usando coletores.
Depois de criar, compilar e empacotar o código da aplicativo, é necessário fazer o upload do pacote do código em um bucket do Amazon Simple Storage Service (Amazon S3). Em seguida, crie um aplicativo do Managed Service for Apache Flink. Você passa na localização do pacote de código, um fluxo de dados do Kinesis como fonte de dados de fluxo e, normalmente, um local de fluxo ou arquivo que recebe os dados processados do aplicativo.
Pré-requisitos para concluir os exercícios
Para concluir as etapas neste guia, você deve ter o seguinte:
-
Java Development Kit (JDK) versão 8
. Defina a variável de JAVA_HOME
ambiente para apontar para o local de JDK instalação. -
Para usar o conector Apache Flink Kinesis neste tutorial, você deve baixar e instalar o Apache Flink. Para obter detalhes, consulte Usando o conector Apache Flink Kinesis Streams com versões anteriores do Apache Flink.
-
Recomendamos que você use um ambiente de desenvolvimento (como Eclipse Java Neon
ou IntelliJ Idea ) para desenvolver e compilar seu aplicativo. -
Cliente do Git
. Instale o cliente do Git se você ainda não tiver feito isso. -
Apache Maven Compiler Plugin
. Maven deve estar em seu caminho de trabalho. Para testar a instalação do Apache Maven, insira o seguinte: $ mvn -version
Para começar a usar, vá até Etapa 1: configurar uma AWS conta e criar um usuário administrador.
Etapa 1: configurar uma AWS conta e criar um usuário administrador
Inscreva-se para um Conta da AWS
Se você não tiver um Conta da AWS, conclua as etapas a seguir para criar um.
Para se inscrever em um Conta da AWS
Abra a https://portal.aws.amazon.com/billing/inscrição.
Siga as instruções online.
Parte do procedimento de inscrição envolve receber uma chamada telefônica e inserir um código de verificação no teclado do telefone.
Quando você se inscreve em um Conta da AWS, um Usuário raiz da conta da AWSé criado. O usuário raiz tem acesso a todos os Serviços da AWS e atributos na conta. Como prática recomendada de segurança, atribua o acesso administrativo a um usuário e use somente o usuário-raiz para executar tarefas que exigem acesso de usuário-raiz.
AWS envia um e-mail de confirmação após a conclusão do processo de inscrição. A qualquer momento, você pode visualizar a atividade atual da sua conta e gerenciar sua conta acessando https://aws.amazon.com/e
Criar um usuário com acesso administrativo
Depois de se inscrever em um Conta da AWS, proteja seu Usuário raiz da conta da AWS AWS IAM Identity Center, habilite e crie um usuário administrativo para que você não use o usuário root nas tarefas diárias.
Proteja seu Usuário raiz da conta da AWS
-
Faça login AWS Management Console
como proprietário da conta escolhendo Usuário raiz e inserindo seu endereço de Conta da AWS e-mail. Na próxima página, insira sua senha. Para obter ajuda ao fazer login usando o usuário raiz, consulte Fazer login como usuário raiz no Guia do usuário do Início de Sessão da AWS .
-
Ative a autenticação multifator (MFA) para seu usuário root.
Para obter instruções, consulte Habilitar um MFA dispositivo virtual para seu usuário Conta da AWS root (console) no Guia IAM do usuário.
Criar um usuário com acesso administrativo
-
Ative o IAM Identity Center.
Para obter instruções, consulte Habilitar AWS IAM Identity Center no Guia do usuário do AWS IAM Identity Center .
-
No IAM Identity Center, conceda acesso administrativo a um usuário.
Para ver um tutorial sobre como usar o Diretório do Centro de Identidade do IAM como fonte de identidade, consulte Configurar o acesso do usuário com o padrão Diretório do Centro de Identidade do IAM no Guia AWS IAM Identity Center do usuário.
Iniciar sessão como o usuário com acesso administrativo
-
Para entrar com seu usuário do IAM Identity Center, use o login URL que foi enviado ao seu endereço de e-mail quando você criou o usuário do IAM Identity Center.
Para obter ajuda para fazer login usando um usuário do IAM Identity Center, consulte Como fazer login no portal de AWS acesso no Guia Início de Sessão da AWS do usuário.
Atribuir acesso a usuários adicionais
-
No IAM Identity Center, crie um conjunto de permissões que siga as melhores práticas de aplicação de permissões com privilégios mínimos.
Para obter instruções, consulte Create a permission set no Guia do usuário do AWS IAM Identity Center .
-
Atribua usuários a um grupo e, em seguida, atribua o acesso de autenticação única ao grupo.
Para obter instruções, consulte Add groups no Guia do usuário do AWS IAM Identity Center .
Conceder acesso programático
Os usuários precisam de acesso programático se quiserem interagir com pessoas AWS fora do AWS Management Console. A forma de conceder acesso programático depende do tipo de usuário que está acessando AWS.
Para conceder acesso programático aos usuários, selecione uma das seguintes opções:
Qual usuário precisa de acesso programático? | Para | Por |
---|---|---|
Identificação da força de trabalho (Usuários gerenciados no IAM Identity Center) |
Use credenciais temporárias para assinar solicitações programáticas para o AWS CLI AWS SDKs, ou. AWS APIs |
Siga as instruções da interface que deseja utilizar.
|
IAM | Use credenciais temporárias para assinar solicitações programáticas para o AWS CLI AWS SDKs, ou. AWS APIs | Siga as instruções em Usando credenciais temporárias com AWS recursos no Guia do IAM usuário. |
IAM | (Não recomendado) Use credenciais de longo prazo para assinar solicitações programáticas para o AWS CLI, AWS SDKs, ou. AWS APIs |
Siga as instruções da interface que deseja utilizar.
|
Etapa 2: configurar o AWS Command Line Interface (AWS CLI)
Nesta etapa, você baixa e configura o AWS CLI para usar com o Managed Service para Apache Flink.
nota
Os exercícios de conceitos básicos neste guia pressupõem que você esteja usando credenciais de administrador (adminuser
) em sua conta para executar as operações.
nota
Se você já tem o AWS CLI instalado, talvez seja necessário fazer o upgrade para obter a funcionalidade mais recente. Para obter mais informações, consulte Instalar a AWS Command Line Interface no Guia do usuário da AWS Command Line Interface . Para verificar a versão do AWS CLI, execute o seguinte comando:
aws --version
Os exercícios deste tutorial exigem a seguinte AWS CLI versão ou posterior:
aws-cli/1.16.63
Para configurar o AWS CLI
-
Faça download e configure a AWS CLI. Para obter instruções, consulte os seguintes tópicos no Guia do usuário do AWS Command Line Interface :
-
Adicione um perfil nomeado para o usuário administrador no AWS CLI
config
arquivo. Você pode usar esse perfil ao executar os comandos da AWS CLI . Para obter mais informações sobre perfis nomeados, consulte Perfis nomeados no Guia do usuário da AWS Command Line Interface .[profile adminuser] aws_access_key_id =
adminuser access key ID
aws_secret_access_key =adminuser secret access key
region =aws-region
Para obter uma lista das regiões disponíveis, consulte Regiões e endpoints do na Referência geral da Amazon Web Services.
nota
O código e os comandos de exemplo neste tutorial usam a região Oeste dos EUA (Oregon). Para usar uma AWS região diferente, altere a região no código e nos comandos deste tutorial para a região que você deseja usar.
-
Verifique a configuração digitando o seguinte comando no prompt de comando:
aws help
Depois de configurar uma AWS conta e a AWS CLI, você pode tentar o próximo exercício, no qual você configura um aplicativo de amostra e testa a end-to-end configuração.
Próxima etapa
Etapa 3: criar e executar um serviço gerenciado para o aplicativo Apache Flink
Etapa 3: criar e executar um serviço gerenciado para o aplicativo Apache Flink
Neste exercício, você cria um aplicativo Managed Service for Apache Flink com fluxos de dados como origem e coletor.
Esta seção contém as seguintes etapas:
- Crie dois streams de dados do Amazon Kinesis
- Grave registros de amostra no fluxo de entrada
- Baixe e examine o código Java de streaming do Apache Flink
- Compilar o código do aplicativo
- Faça o upload do código Java de streaming do Apache Flink
- Crie e execute o serviço gerenciado para o aplicativo Apache Flink
- Próxima etapa
Crie dois streams de dados do Amazon Kinesis
Antes de criar um aplicativo do Managed Service for Apache Flink para este exercício, crie dois fluxos de dados do Kinesis (ExampleInputStream
e ExampleOutputStream
). O aplicativo usa esses fluxos para os fluxos de origem e de destino do aplicativo.
Você pode criar esses fluxos usando o console do Amazon Kinesis ou o comando da AWS CLI a seguir. Para obter instruções sobre o console, consulte Criar e atualizar fluxos de dados no Guia do desenvolvedor do Amazon Kinesis Data Streams.
Como criar os fluxos de dados (AWS CLI)
-
Para criar o primeiro stream (
ExampleInputStream
), use o seguinte comando do Amazon Kinesiscreate-stream
AWS CLI .$ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
-
Para criar o segundo fluxo que o aplicativo usa para gravar a saída, execute o mesmo comando, alterando o nome da transmissão para
ExampleOutputStream
.$ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
Grave registros de amostra no fluxo de entrada
Nesta seção, você usa um script Python para gravar registros de amostra no fluxo para o aplicativo processar.
nota
Essa seção requer AWS SDK for Python (Boto)
-
Crie um arquivo denominado
stock.py
com o conteúdo a seguir:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
-
Mais adiante neste tutorial, você executa o script
stock.py
para enviar dados para o aplicativo.$ python stock.py
Baixe e examine o código Java de streaming do Apache Flink
O código do aplicativo Java para este exemplo está disponível em GitHub. Para fazer download do código do aplicativo, faça o seguinte:
-
Duplique o repositório remoto usando o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
-
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/GettingStarted_1_8
.
Observe o seguinte sobre o código do aplicativo:
-
Um arquivo Project Object Model (pom.xml)
contém informações sobre a configuração e as dependências da aplicação, incluindo as bibliotecas do Managed Service for Apache Flink. -
O arquivo
BasicStreamingJob.java
contém o métodomain
que define a funcionalidade do aplicativo. -
O aplicativo usa uma origem do Kinesis para ler o fluxo de origem. O trecho a seguir cria a origem do Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
-
Seu aplicativo cria conectores de origem e de destino para acessar recursos externos usando um objeto
StreamExecutionEnvironment
. -
O aplicativo cria conectores de origem e de destino usando propriedades estáticas. Para usar as propriedades do aplicativo dinâmico, use os métodos
createSinkFromApplicationProperties
ecreateSourceFromApplicationProperties
para criar os conectores. Esses métodos leem as propriedades do aplicativo para configurar os conectores.Para obter mais informações sobre as propriedades do runtime, consulte Use propriedades de tempo de execução.
Compilar o código do aplicativo
Nesta seção, você usa o compilador do Apache Maven para criar o código Java para o aplicativo. Para obter informações sobre a instalação do Apache Maven e do Java Development Kit (JDK), consulte. Pré-requisitos para concluir os exercícios
nota
Para usar o conector Kinesis com versões do Apache Flink anteriores à 1.11, você precisa baixar, compilar e instalar o Apache Maven. Para obter mais informações, consulte Usando o conector Apache Flink Kinesis Streams com versões anteriores do Apache Flink.
Para compilar o código do aplicativo
-
Para usar o código do aplicativo, você o compila e o empacota em um JAR arquivo. Há duas formas de compilar e empacotar o código:
-
Use a ferramenta de linha de comando do Maven. Crie seu JAR arquivo executando o seguinte comando no diretório que contém o
pom.xml
arquivo:mvn package -Dflink.version=1.8.2
-
Use o ambiente de desenvolvimento. Consulte a documentação de seu ambiente de desenvolvimento para obter mais detalhes.
nota
O código-fonte fornecido depende de bibliotecas do Java 1.8. Certifique-se de que a versão Java do seu projeto seja 1.8.
Você pode carregar seu pacote como um JAR arquivo ou compactar seu pacote e carregá-lo como um ZIP arquivo. Se você criar seu aplicativo usando o AWS CLI, você especifica seu tipo de conteúdo de código (JARouZIP).
-
-
Se houver erros durante a compilação, verifique se sua variável de ambiente
JAVA_HOME
está definida corretamente.
Se o aplicativo for compilado com êxito, o arquivo a seguir é criado:
target/aws-kinesis-analytics-java-apps-1.0.jar
Faça o upload do código Java de streaming do Apache Flink
Nesta seção, você cria um bucket do Amazon Simple Storage Service (Amazon S3) e faz upload do código do aplicativo.
Para fazer upload do código do aplicativo
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
-
Selecione Criar bucket.
-
Insira
ka-app-code-
no campo Nome do bucket. Adicione um sufixo para o nome do bucket, como o nome do usuário, para torná-lo globalmente exclusivo. Selecione Next (Próximo).<username>
-
Na etapa Configurar opções, mantenha as configurações como estão e selecione Próximo.
-
Na etapa Definir permissões, mantenha as configurações como estão e selecione Próximo.
-
Selecione Criar bucket.
-
No console do Amazon S3, escolha o - ka-app-code
<username>
bucket e escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
aws-kinesis-analytics-java-apps-1.0.jar
que você criou na etapa anterior. Selecione Next (Próximo). -
Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o serviço gerenciado para o aplicativo Apache Flink
Você pode criar e executar um aplicativo Managed Service for Apache Flink usando o console ou a AWS CLI.
nota
Quando você cria o aplicativo usando o console, seus recursos AWS Identity and Access Management (IAM) e do Amazon CloudWatch Logs são criados para você. Ao criar o aplicativo usando o AWS CLI, você cria esses recursos separadamente.
Crie e execute o aplicativo (console)
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Descrição, insira
My java test app
. -
Em Runtime, selecione Apache Flink.
-
Deixe o menu suspenso da versão como Apache Flink 1.8 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar os fluxos de dados do Kinesis.
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
aws-kinesis-analytics-java-apps-1.0.jar
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Insira as seguintes propriedades e valores de aplicativo:
ID do grupo Chave Valor ProducerConfigProperties
flink.inputstream.initpos
LATEST
ProducerConfigProperties
aws.region
us-west-2
ProducerConfigProperties
AggregationEnabled
false
-
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, marque a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro na Amazon, o Managed Service for Apache Flink cria um grupo de logs e um stream de logs para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Execute o aplicativo
-
Na MyApplicationpágina, escolha Executar. Confirme a ação.
-
Quando o aplicativo estiver em execução, atualize a página. O console mostra o Gráfico do aplicativo.
Pare o aplicativo
Na MyApplicationpágina, escolha Parar. Confirme a ação.
Atualizar o aplicativo
Usando o console, você pode atualizar as configurações do aplicativo, como propriedades do aplicativo, configurações de monitoramento e o local ou nome do arquivo do aplicativoJAR. Você também pode recarregar o aplicativo a JAR partir do bucket do Amazon S3 se precisar atualizar o código do aplicativo.
Na MyApplicationpágina, escolha Configurar. Atualize as configurações do aplicativo e selecione Update (Atualizar).
Crie e execute o aplicativo (AWS CLI)
Nesta seção, você usa o AWS CLI para criar e executar o aplicativo Managed Service for Apache Flink. O Managed Service for Apache Flink usa o kinesisanalyticsv2
AWS CLI comando para criar e interagir com o Managed Service for Apache Flink aplicativos.
Criar uma política de permissões
nota
Você deve criar uma política de permissões e uma função para o seu aplicativo. Se você não criar esses IAM recursos, seu aplicativo não poderá acessar seus fluxos de dados e registros.
Primeiro, crie uma política de permissões com duas instruções: uma que concede permissões para a ação read
no fluxo de origem, e outra que concede permissões para ações write
no fluxo de destino. Em seguida, você anexa a política a uma IAM função (que você cria na próxima seção). Assim, ao assumir o perfil, o serviço Managed Service for Apache Flink terá as permissões necessárias para ler o fluxo de origem e gravar no fluxo de coleta.
Use o código a seguir para criar a política de permissões AKReadSourceStreamWriteSinkStream
. Substitua
pelo nome de usuário que você usou para criar o bucket do Amazon S3 e armazenar o código do aplicativo. Substitua o ID da conta nos nomes de recursos da Amazon (ARNs) (username
) pelo ID da sua conta.012345678901
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-
username
", "arn:aws:s3:::ka-app-code-username
/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Para step-by-step obter instruções sobre como criar uma política de permissões, consulte o Tutorial: Criar e anexar sua primeira política gerenciada pelo cliente no Guia IAM do usuário.
nota
Para acessar outros serviços da Amazon, você pode usar o AWS SDK for Java. O Managed Service for Apache Flink define automaticamente as credenciais exigidas pelo com SDK as da IAM função de execução do serviço associada ao seu aplicativo. Não é necessária nenhuma etapa adicional.
Crie uma IAM função
Nesta seção, você cria uma IAM função que o aplicativo Managed Service for Apache Flink pode assumir para ler um fluxo de origem e gravar no stream do coletor.
O Managed Service for Apache Flink não pode acessar seu fluxo sem permissões. Você concede essas permissões por meio de uma IAM função. Cada IAM função tem duas políticas anexadas. A política de confiança concede ao Managed Service for Apache Flink permissão para assumir o perfil, e a política de permissões determina o que o serviço pode fazer depois de assumir a função.
Você anexa a política de permissões que criou na seção anterior a essa função.
Para criar uma função do IAM
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
No painel de navegação, selecione Roles (Funções) e Create Role (Criar função).
-
Em Selecionar tipo de identidade de confiança, selecione Serviço da AWS . Em Choose the service that will use this role (Selecionar o serviço que usará esta função), selecione Kinesis. Em Select your use case (Selecionar seu caso de uso), selecione Kinesis Analytics.
Selecione Next: Permissions (Próximo: permissões).
-
Na página Attach permissions policies, selecione Next: Review. Você pode anexar políticas de permissões depois de criar a função.
-
Na página Create role (Criar função), insira
MF-stream-rw-role
para o Role name (Nome da função). Selecione Criar função.Agora você criou uma nova IAM função chamada
MF-stream-rw-role
. Em seguida, você atualiza as políticas de confiança e de permissões para a função. -
Anexe a política de permissões à função.
nota
Para este exercício, o Managed Service for Apache Flink assume esse perfil para ler dados de um fluxo de dados do Kinesis (origem) e gravar a saída em outro fluxo de dados do Kinesis. Depois, você anexa a política que criou na etapa anterior, Criar uma política de permissões.
-
Na página Summary (Resumo), selecione a guia Permissions (Permissões).
-
Selecione Attach Policies.
-
Na caixa de pesquisa, insira
AKReadSourceStreamWriteSinkStream
(a política que você criou na seção anterior). -
Escolha a AKReadSourceStreamWriteSinkStreampolítica e escolha Anexar política.
-
Agora você criou a função de execução de serviço que seu aplicativo usa para acessar os recursos. Anote ARN a nova função.
Para step-by-step obter instruções sobre como criar uma função, consulte Criação de uma IAM função (console) no Guia IAM do usuário.
Crie o serviço gerenciado para o aplicativo Apache Flink
-
Salve o JSON código a seguir em um arquivo chamado
create_request.json
. Substitua ARN a função de ARN exemplo pela função que você criou anteriormente. Substitua o ARN sufixo do bucket (
) pelo sufixo que você escolheu na seção anterior. Substitua o ID da conta de exemplo (username
) na função de execução do serviço pelo ID da conta.012345678901
{ "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_8", "ServiceExecutionRole": "arn:aws:iam::
012345678901
:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username
", "FileKey": "aws-kinesis-analytics-java-apps-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } } -
Execute a ação
CreateApplication
com a solicitação anterior para criar o aplicativo:aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
O aplicativo agora é criado. Você inicia o aplicativo na próxima etapa.
Inicie o aplicativo
Nesta seção, você usa a ação StartApplication
para iniciar o aplicativo.
Para iniciar o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
Execute a ação
StartApplication
com a solicitação anterior para iniciar o aplicativo:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
O aplicativo agora está em execução. Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console da Amazon para verificar se o aplicativo está funcionando.
Pare o aplicativo
Nesta seção, você usa a ação StopApplication
para interromper o aplicativo.
Como interromper o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
stop_request.json
.{ "ApplicationName": "test" }
-
Execute a ação
StopApplication
com a seguinte solicitação para interromper o aplicativo:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
O aplicativo agora está interrompido.
Adicionar uma opção de CloudWatch registro
Você pode usar o AWS CLI para adicionar um stream de CloudWatch log da Amazon ao seu aplicativo. Para obter informações sobre como usar o CloudWatch Logs com seu aplicativo, consulteConfigurar o registro de aplicativos no Managed Service para Apache Flink.
Atualizar propriedades do ambiente
Nesta seção, você usa a ação UpdateApplication
para alterar as propriedades do ambiente do aplicativo sem recompilar o código do aplicativo. Neste exemplo, você altera a região dos fluxos de origem e destino.
Para atualizar propriedades de ambiente para o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
update_properties_request.json
.{"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
-
Execute a ação
UpdateApplication
com a solicitação anterior para atualizar as propriedades do ambiente:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Atualizar o código do aplicativo
Quando precisar atualizar o código do aplicativo com uma nova versão do pacote de código, use a UpdateApplication
AWS CLI ação.
nota
Para carregar uma nova versão do código do aplicativo com o mesmo nome de arquivo, você deve especificar a nova versão do objeto. Para obter mais informações sobre o uso de versões de objetos do Amazon S3, consulte Como ativar ou desativar o controle de versão.
Para usar o AWS CLI, exclua seu pacote de código anterior do bucket do Amazon S3, faça o upload da nova versão e ligueUpdateApplication
, especificando o mesmo nome de bucket e objeto do Amazon S3 e a nova versão do objeto. O aplicativo será reiniciado com o novo pacote de código.
O exemplo de solicitação da UpdateApplication
ação a seguir recarrega o código do aplicativo e reinicia o aplicativo. Atualize o CurrentApplicationVersionId
para a versão atual do aplicativo. Você pode verificar a versão atual do aplicativo usando as ações DescribeApplication
ou ListApplications
. Atualize o sufixo do nome do bucket (<username>
) com o sufixo que você escolheu na Crie dois streams de dados do Amazon Kinesis seção.
{ "ApplicationName": "test", "CurrentApplicationVersionId":
1
, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username
", "FileKeyUpdate": "aws-kinesis-analytics-java-apps-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU
" } } } } }
Próxima etapa
Etapa 4: limpar AWS os recursos
Etapa 4: limpar AWS os recursos
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial de introdução.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
-
No painel Managed Service for Apache Flink, escolha. MyApplication
-
Selecione Configurar.
-
Na seção Snapshots, selecione Desativar e, em seguida, selecione Atualizar.
-
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seus streams de dados do Kinesis
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel Kinesis Data Streams, escolha. ExampleInputStream
-
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
-
Na página Kinesis Streams, escolha o, escolha Ações ExampleOutputStream, escolha Excluir e confirme a exclusão.
Exclua seu objeto e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
-
Escolha o ka-app-code -
<username>
balde. -
Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Na barra de navegação, selecione Políticas.
-
No controle do filtro, insira kinesis.
-
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
-
Selecione Ações da política e, em seguida, Excluir.
-
Na barra de navegação, selecione Roles (Funções).
-
Escolha a função kinesis-analytics- MyApplication -us-west-2.
-
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação, selecione Logs.
-
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
-
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Começando: Flink 1.6.2 - descontinuando
nota
As versões 1.6, 1.8 e 1.11 do Apache Flink não são suportadas pela comunidade Apache Flink há mais de três anos. Planejamos descontinuar essas versões no Amazon Managed Service para Apache Flink em 5 de novembro de 2024. A partir dessa data, você não poderá criar novos aplicativos para essas versões do Flink. Você pode continuar executando os aplicativos existentes no momento. Você pode atualizar seus aplicativos de forma estável usando o recurso de atualizações de versão in-loco no Amazon Managed Service para Apache Flink. Para obter mais informações, consulte. Use atualizações de versão in-loco para o Apache Flink
Este tópico contém uma versão do Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink tutorial que usa o Apache Flink 1.6.2.
Tópicos
- Componentes de um serviço gerenciado para o aplicativo Apache Flink
- Pré-requisitos para concluir os exercícios
- Etapa 1: configurar uma AWS conta e criar um usuário administrador
- Etapa 2: configurar o AWS Command Line Interface (AWS CLI)
- Etapa 3: criar e executar um serviço gerenciado para o aplicativo Apache Flink
- Etapa 4: limpar AWS os recursos
Componentes de um serviço gerenciado para o aplicativo Apache Flink
Para processar dados, seu aplicativo Managed Service for Apache Flink usa um aplicativo Java/Apache Maven ou Scala que processa a entrada e produz a saída usando o runtime do Apache Flink.
um Managed Service for Apache Flink tem os seguintes componentes:
-
Propriedades de runtime: você pode usar as propriedades de runtime para configurar seu aplicativo sem recompilar o código do aplicativo.
-
Fonte: o aplicativo consome dados usando uma fonte. Um conector de origem lê dados de um fluxo de dados do Kinesis, de um bucket do Amazon S3 etc. Para obter mais informações, consulte Adicionar fontes de dados de streaming.
-
Operadores: o aplicativo processa dados usando um ou mais operadores. Um operador pode transformar, enriquecer ou agregar dados. Para obter mais informações, consulte Operadores.
-
Coletor: o aplicativo produz dados para fontes externas usando coletores. Um conector de coletor grava dados em um stream de dados do Kinesis, um stream Firehose, um bucket do Amazon S3 etc. Para obter mais informações, consulte Grave dados usando coletores.
Depois de criar, compilar e empacotar o seu aplicativo, é necessário fazer o upload do pacote do código em um bucket do Amazon Simple Storage Service (Amazon S3). Em seguida, crie um aplicativo do Managed Service for Apache Flink. Você passa na localização do pacote de código, um fluxo de dados do Kinesis como fonte de dados de fluxo e, normalmente, um local de fluxo ou arquivo que recebe os dados processados do aplicativo.
Pré-requisitos para concluir os exercícios
Para concluir as etapas neste guia, você deve ter o seguinte:
-
Java Development Kit
(JDK) versão 8. Defina a variável de JAVA_HOME
ambiente para apontar para o local de JDK instalação. -
Recomendamos que você use um ambiente de desenvolvimento (como Eclipse Java Neon
ou IntelliJ Idea ) para desenvolver e compilar seu aplicativo. -
Cliente do Git.
Instale o cliente do Git se você ainda não tiver feito isso. -
Apache Maven Compiler Plugin
. Maven deve estar em seu caminho de trabalho. Para testar a instalação do Apache Maven, insira o seguinte: $ mvn -version
Para começar a usar, vá até Etapa 1: configurar uma AWS conta e criar um usuário administrador.
Etapa 1: configurar uma AWS conta e criar um usuário administrador
Inscreva-se para um Conta da AWS
Se você não tiver um Conta da AWS, conclua as etapas a seguir para criar um.
Para se inscrever em um Conta da AWS
Abra a https://portal.aws.amazon.com/billing/inscrição.
Siga as instruções online.
Parte do procedimento de inscrição envolve receber uma chamada telefônica e inserir um código de verificação no teclado do telefone.
Quando você se inscreve em um Conta da AWS, um Usuário raiz da conta da AWSé criado. O usuário raiz tem acesso a todos os Serviços da AWS e atributos na conta. Como prática recomendada de segurança, atribua o acesso administrativo a um usuário e use somente o usuário-raiz para executar tarefas que exigem acesso de usuário-raiz.
AWS envia um e-mail de confirmação após a conclusão do processo de inscrição. A qualquer momento, você pode visualizar a atividade atual da sua conta e gerenciar sua conta acessando https://aws.amazon.com/e
Criar um usuário com acesso administrativo
Depois de se inscrever em um Conta da AWS, proteja seu Usuário raiz da conta da AWS AWS IAM Identity Center, habilite e crie um usuário administrativo para que você não use o usuário root nas tarefas diárias.
Proteja seu Usuário raiz da conta da AWS
-
Faça login AWS Management Console
como proprietário da conta escolhendo Usuário raiz e inserindo seu endereço de Conta da AWS e-mail. Na próxima página, insira sua senha. Para obter ajuda ao fazer login usando o usuário raiz, consulte Fazer login como usuário raiz no Guia do usuário do Início de Sessão da AWS .
-
Ative a autenticação multifator (MFA) para seu usuário root.
Para obter instruções, consulte Habilitar um MFA dispositivo virtual para seu usuário Conta da AWS root (console) no Guia IAM do usuário.
Criar um usuário com acesso administrativo
-
Ative o IAM Identity Center.
Para obter instruções, consulte Habilitar AWS IAM Identity Center no Guia do usuário do AWS IAM Identity Center .
-
No IAM Identity Center, conceda acesso administrativo a um usuário.
Para ver um tutorial sobre como usar o Diretório do Centro de Identidade do IAM como fonte de identidade, consulte Configurar o acesso do usuário com o padrão Diretório do Centro de Identidade do IAM no Guia AWS IAM Identity Center do usuário.
Iniciar sessão como o usuário com acesso administrativo
-
Para entrar com seu usuário do IAM Identity Center, use o login URL que foi enviado ao seu endereço de e-mail quando você criou o usuário do IAM Identity Center.
Para obter ajuda para fazer login usando um usuário do IAM Identity Center, consulte Como fazer login no portal de AWS acesso no Guia Início de Sessão da AWS do usuário.
Atribuir acesso a usuários adicionais
-
No IAM Identity Center, crie um conjunto de permissões que siga as melhores práticas de aplicação de permissões com privilégios mínimos.
Para obter instruções, consulte Create a permission set no Guia do usuário do AWS IAM Identity Center .
-
Atribua usuários a um grupo e, em seguida, atribua o acesso de autenticação única ao grupo.
Para obter instruções, consulte Add groups no Guia do usuário do AWS IAM Identity Center .
Conceder acesso programático
Os usuários precisam de acesso programático se quiserem interagir com pessoas AWS fora do AWS Management Console. A forma de conceder acesso programático depende do tipo de usuário que está acessando AWS.
Para conceder acesso programático aos usuários, selecione uma das seguintes opções:
Qual usuário precisa de acesso programático? | Para | Por |
---|---|---|
Identificação da força de trabalho (Usuários gerenciados no IAM Identity Center) |
Use credenciais temporárias para assinar solicitações programáticas para o AWS CLI AWS SDKs, ou. AWS APIs |
Siga as instruções da interface que deseja utilizar.
|
IAM | Use credenciais temporárias para assinar solicitações programáticas para o AWS CLI AWS SDKs, ou. AWS APIs | Siga as instruções em Usando credenciais temporárias com AWS recursos no Guia do IAM usuário. |
IAM | (Não recomendado) Use credenciais de longo prazo para assinar solicitações programáticas para o AWS CLI, AWS SDKs, ou. AWS APIs |
Siga as instruções da interface que deseja utilizar.
|
Etapa 2: configurar o AWS Command Line Interface (AWS CLI)
Nesta etapa, você baixa e configura o AWS CLI para usar com um serviço gerenciado para o Apache Flink.
nota
Os exercícios de conceitos básicos neste guia pressupõem que você esteja usando credenciais de administrador (adminuser
) em sua conta para executar as operações.
nota
Se você já tem o AWS CLI instalado, talvez seja necessário fazer o upgrade para obter a funcionalidade mais recente. Para obter mais informações, consulte Instalar a AWS Command Line Interface no Guia do usuário da AWS Command Line Interface . Para verificar a versão do AWS CLI, execute o seguinte comando:
aws --version
Os exercícios deste tutorial exigem a seguinte AWS CLI versão ou posterior:
aws-cli/1.16.63
Para configurar o AWS CLI
-
Faça download e configure a AWS CLI. Para obter instruções, consulte os seguintes tópicos no Guia do usuário do AWS Command Line Interface :
-
Adicione um perfil nomeado para o usuário administrador no AWS CLI
config
arquivo. Você pode usar esse perfil ao executar os comandos da AWS CLI . Para obter mais informações sobre perfis nomeados, consulte Perfis nomeados no Guia do usuário da AWS Command Line Interface .[profile adminuser] aws_access_key_id =
adminuser access key ID
aws_secret_access_key =adminuser secret access key
region =aws-region
Para obter uma lista das AWS regiões disponíveis, consulte Regiões e endpoints no Referência geral da Amazon Web Services.
nota
O código e os comandos de exemplo neste tutorial usam a região Oeste dos EUA (Oregon). Para usar uma região diferente, altere a região no código e nos comandos deste tutorial para a região que você deseja usar.
-
Verifique a configuração digitando o seguinte comando no prompt de comando:
aws help
Depois de configurar uma AWS conta e a AWS CLI, você pode tentar o próximo exercício, no qual você configura um aplicativo de amostra e testa a end-to-end configuração.
Próxima etapa
Etapa 3: criar e executar um serviço gerenciado para o aplicativo Apache Flink
Etapa 3: criar e executar um serviço gerenciado para o aplicativo Apache Flink
Neste exercício, você cria um aplicativo Managed Service for Apache Flink com fluxos de dados como origem e coletor.
Esta seção contém as seguintes etapas:
- Crie dois streams de dados do Amazon Kinesis
- Grave registros de amostra no fluxo de entrada
- Baixe e examine o código Java de streaming do Apache Flink
- Compilar o código do aplicativo
- Faça o upload do código Java de streaming do Apache Flink
- Crie e execute o serviço gerenciado para o aplicativo Apache Flink
Crie dois streams de dados do Amazon Kinesis
Antes de criar um aplicativo do Managed Service for Apache Flink para este exercício, crie dois fluxos de dados do Kinesis (ExampleInputStream
e ExampleOutputStream
). O aplicativo usa esses fluxos para os fluxos de origem e de destino do aplicativo.
Você pode criar esses fluxos usando o console do Amazon Kinesis ou o comando da AWS CLI a seguir. Para obter instruções sobre o console, consulte Criar e atualizar fluxos de dados no Guia do desenvolvedor do Amazon Kinesis Data Streams.
Como criar os fluxos de dados (AWS CLI)
-
Para criar o primeiro stream (
ExampleInputStream
), use o seguinte comando do Amazon Kinesiscreate-stream
AWS CLI .$ aws kinesis create-stream \ --stream-name ExampleInputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
-
Para criar o segundo fluxo que o aplicativo usa para gravar a saída, execute o mesmo comando, alterando o nome da transmissão para
ExampleOutputStream
.$ aws kinesis create-stream \ --stream-name ExampleOutputStream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser
Grave registros de amostra no fluxo de entrada
Nesta seção, você usa um script Python para gravar registros de amostra no fluxo para o aplicativo processar.
nota
Essa seção requer AWS SDK for Python (Boto)
-
Crie um arquivo denominado
stock.py
com o conteúdo a seguir:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
-
Mais adiante neste tutorial, você executa o script
stock.py
para enviar dados para o aplicativo.$ python stock.py
Baixe e examine o código Java de streaming do Apache Flink
O código do aplicativo Java para este exemplo está disponível em GitHub. Para fazer download do código do aplicativo, faça o seguinte:
Duplique o repositório remoto usando o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/GettingStarted_1_6
.
Observe o seguinte sobre o código do aplicativo:
Um arquivo Project Object Model (pom.xml)
contém informações sobre a configuração e as dependências do aplicativo, incluindo as bibliotecas do Managed Service for Apache Flink. O arquivo
BasicStreamingJob.java
contém o métodomain
que define a funcionalidade do aplicativo.O aplicativo usa uma origem do Kinesis para ler o fluxo de origem. O trecho a seguir cria a origem do Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
Seu aplicativo cria conectores de origem e de destino para acessar recursos externos usando um objeto
StreamExecutionEnvironment
.O aplicativo cria conectores de origem e de destino usando propriedades estáticas. Para usar as propriedades do aplicativo dinâmico, use os métodos
createSinkFromApplicationProperties
ecreateSourceFromApplicationProperties
para criar os conectores. Esses métodos leem as propriedades do aplicativo para configurar os conectores.Para obter mais informações sobre as propriedades do runtime, consulte Use propriedades de tempo de execução.
Compilar o código do aplicativo
Nesta seção, você usa o compilador do Apache Maven para criar o código Java para o aplicativo. Para obter informações sobre a instalação do Apache Maven e do Java Development Kit (JDK), consulte. Pré-requisitos para concluir os exercícios
nota
Para usar o conector do Kinesis com versões do Apache Flink anteriores a 1.11, você precisa baixar o código-fonte do conector e compilá-lo conforme descrito na documentação do Apache Flink
Para compilar o código do aplicativo
-
Para usar o código do aplicativo, você o compila e o empacota em um JAR arquivo. Há duas formas de compilar e empacotar o código:
Use a ferramenta de linha de comando do Maven. Crie seu JAR arquivo executando o seguinte comando no diretório que contém o
pom.xml
arquivo:mvn package
nota
O parâmetro -Dflink.version não é necessário para o runtime do Managed Service for Apache Flink versão 1.0.1; ele só é necessário para a versão 1.1.0 e posterior. Para obter mais informações, consulte Especifique a versão do Apache Flink do seu aplicativo.
Use o ambiente de desenvolvimento. Consulte a documentação de seu ambiente de desenvolvimento para obter mais detalhes.
Você pode carregar seu pacote como um JAR arquivo ou compactar seu pacote e carregá-lo como um ZIP arquivo. Se você criar seu aplicativo usando o AWS CLI, você especifica seu tipo de conteúdo de código (JARouZIP).
-
Se houver erros durante a compilação, verifique se sua variável de ambiente
JAVA_HOME
está definida corretamente.
Se o aplicativo for compilado com êxito, o arquivo a seguir é criado:
target/aws-kinesis-analytics-java-apps-1.0.jar
Faça o upload do código Java de streaming do Apache Flink
Nesta seção, você cria um bucket do Amazon Simple Storage Service (Amazon S3) e faz upload do código do aplicativo.
Para fazer upload do código do aplicativo
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
-
Selecione Criar bucket.
-
Insira
ka-app-code-
no campo Nome do bucket. Adicione um sufixo para o nome do bucket, como o nome do usuário, para torná-lo globalmente exclusivo. Selecione Next (Próximo).<username>
-
Na etapa Configurar opções, mantenha as configurações como estão e selecione Próximo.
-
Na etapa Definir permissões, mantenha as configurações como estão e selecione Próximo.
-
Selecione Criar bucket.
-
No console do Amazon S3, escolha o - ka-app-code
<username>
bucket e escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
aws-kinesis-analytics-java-apps-1.0.jar
que você criou na etapa anterior. Escolha Próximo. -
Na etapa Definir permissões, mantenha as configurações como estão. Escolha Próximo.
-
Na etapa Definir propriedades, mantenha as configurações como estão. Escolha Carregar.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pela aplicação.
Crie e execute o serviço gerenciado para o aplicativo Apache Flink
Você pode criar e executar um aplicativo Managed Service for Apache Flink usando o console ou a AWS CLI.
nota
Quando você cria o aplicativo usando o console, seus recursos AWS Identity and Access Management (IAM) e do Amazon CloudWatch Logs são criados para você. Ao criar o aplicativo usando o AWS CLI, você cria esses recursos separadamente.
Crie e execute o aplicativo (console)
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Descrição, insira
My java test app
. -
Em Runtime, selecione Apache Flink.
nota
O Managed Service for Apache Flink usa o Apache Flink versão 1.8.2 ou 1.6.2.
Altere o pulldown da versão para Apache Flink 1.6.
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar os fluxos de dados do Kinesis.
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/java-getting-started-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
java-getting-started-1.0.jar
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Insira as seguintes propriedades e valores de aplicativo:
ID do grupo Chave Valor ProducerConfigProperties
flink.inputstream.initpos
LATEST
ProducerConfigProperties
aws.region
us-west-2
ProducerConfigProperties
AggregationEnabled
false
-
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, marque a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro na Amazon, o Managed Service for Apache Flink cria um grupo de logs e um stream de logs para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Execute o aplicativo
-
Na MyApplicationpágina, escolha Executar. Confirme a ação.
-
Quando o aplicativo estiver em execução, atualize a página. O console mostra o Gráfico do aplicativo.
Pare o aplicativo
Na MyApplicationpágina, escolha Parar. Confirme a ação.
Atualizar o aplicativo
Usando o console, você pode atualizar as configurações do aplicativo, como propriedades do aplicativo, configurações de monitoramento e o local ou nome do arquivo do aplicativoJAR. Você também pode recarregar o aplicativo a JAR partir do bucket do Amazon S3 se precisar atualizar o código do aplicativo.
Na MyApplicationpágina, escolha Configurar. Atualize as configurações do aplicativo e selecione Update (Atualizar).
Crie e execute o aplicativo (AWS CLI)
Nesta seção, você usa o AWS CLI para criar e executar o aplicativo Managed Service for Apache Flink. O Managed Service for Apache Flink usa o kinesisanalyticsv2
AWS CLI comando para criar e interagir com o Managed Service for Apache Flink aplicativos.
Criação de uma política de permissões
Primeiro, crie uma política de permissões com duas instruções: uma que concede permissões para a ação read
no fluxo de origem, e outra que concede permissões para ações write
no fluxo de destino. Em seguida, você anexa a política a uma IAM função (que você cria na próxima seção). Assim, ao assumir o perfil, o serviço Managed Service for Apache Flink terá as permissões necessárias para ler o fluxo de origem e gravar no fluxo de coleta.
Use o código a seguir para criar a política de permissões AKReadSourceStreamWriteSinkStream
. Substitua
pelo nome de usuário que você usou para criar o bucket do Amazon S3 e armazenar o código do aplicativo. Substitua o ID da conta nos nomes de recursos da Amazon (ARNs) (username
) pelo ID da sua conta.012345678901
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-
username
", "arn:aws:s3:::ka-app-code-username
/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Para step-by-step obter instruções sobre como criar uma política de permissões, consulte o Tutorial: Criar e anexar sua primeira política gerenciada pelo cliente no Guia IAM do usuário.
nota
Para acessar outros serviços da Amazon, você pode usar o AWS SDK for Java. O Managed Service for Apache Flink define automaticamente as credenciais exigidas pelo com SDK as da IAM função de execução do serviço associada ao seu aplicativo. Não é necessária nenhuma etapa adicional.
Crie uma IAM função
Nesta seção, você cria uma IAM função que o aplicativo Managed Service for Apache Flink pode assumir para ler um fluxo de origem e gravar no stream do coletor.
O Managed Service for Apache Flink não pode acessar seu fluxo sem permissões. Você concede essas permissões por meio de uma IAM função. Cada IAM função tem duas políticas anexadas. A política de confiança concede ao Managed Service for Apache Flink permissão para assumir o perfil, e a política de permissões determina o que o serviço pode fazer depois de assumir a função.
Você anexa a política de permissões que criou na seção anterior a essa função.
Para criar uma função do IAM
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
No painel de navegação, selecione Roles (Funções) e Create Role (Criar função).
-
Em Selecionar tipo de identidade de confiança, selecione Serviço da AWS . Em Choose the service that will use this role (Selecionar o serviço que usará esta função), selecione Kinesis. Em Select your use case (Selecionar seu caso de uso), selecione Kinesis Analytics.
Selecione Next: Permissions (Próximo: permissões).
-
Na página Attach permissions policies, selecione Next: Review. Você pode anexar políticas de permissões depois de criar a função.
-
Na página Create role (Criar função), insira
MF-stream-rw-role
para o Role name (Nome da função). Selecione Criar função.Agora você criou uma nova IAM função chamada
MF-stream-rw-role
. Em seguida, você atualiza as políticas de confiança e de permissões para a função. -
Anexe a política de permissões à função.
nota
Para este exercício, o Managed Service for Apache Flink assume esse perfil para ler dados de um fluxo de dados do Kinesis (origem) e gravar a saída em outro fluxo de dados do Kinesis. Depois, você anexa a política que criou na etapa anterior, Criação de uma política de permissões.
-
Na página Summary (Resumo), selecione a guia Permissions (Permissões).
-
Selecione Attach Policies.
-
Na caixa de pesquisa, insira
AKReadSourceStreamWriteSinkStream
(a política que você criou na seção anterior). -
Escolha a AKReadSourceStreamWriteSinkStreampolítica e escolha Anexar política.
-
Agora você criou a função de execução de serviço que seu aplicativo usa para acessar os recursos. Anote ARN a nova função.
Para step-by-step obter instruções sobre como criar uma função, consulte Criação de uma IAM função (console) no Guia IAM do usuário.
Crie o serviço gerenciado para o aplicativo Apache Flink
-
Salve o JSON código a seguir em um arquivo chamado
create_request.json
. Substitua ARN a função de ARN exemplo pela função que você criou anteriormente. Substitua o ARN sufixo do bucket (
) pelo sufixo que você escolheu na seção anterior. Substitua o ID da conta de exemplo (username
) na função de execução do serviço pelo ID da conta.012345678901
{ "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_6", "ServiceExecutionRole": "arn:aws:iam::
012345678901
:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username
", "FileKey": "java-getting-started-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } } -
Execute a ação
CreateApplication
com a solicitação anterior para criar o aplicativo:aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
O aplicativo agora é criado. Você inicia o aplicativo na próxima etapa.
Inicie o aplicativo
Nesta seção, você usa a ação StartApplication
para iniciar o aplicativo.
Para iniciar o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
Execute a ação
StartApplication
com a solicitação anterior para iniciar o aplicativo:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
O aplicativo agora está em execução. Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console da Amazon para verificar se o aplicativo está funcionando.
Pare o aplicativo
Nesta seção, você usa a ação StopApplication
para interromper o aplicativo.
Como interromper o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
stop_request.json
.{ "ApplicationName": "test" }
-
Execute a ação
StopApplication
com a seguinte solicitação para interromper o aplicativo:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
O aplicativo agora está interrompido.
Adicionar uma opção de CloudWatch registro
Você pode usar o AWS CLI para adicionar um stream de CloudWatch log da Amazon ao seu aplicativo. Para obter informações sobre como usar o CloudWatch Logs com seu aplicativo, consulteConfigurar o registro de aplicativos no Managed Service para Apache Flink.
Atualizar propriedades do ambiente
Nesta seção, você usa a ação UpdateApplication
para alterar as propriedades do ambiente do aplicativo sem recompilar o código do aplicativo. Neste exemplo, você altera a região dos fluxos de origem e destino.
Para atualizar propriedades de ambiente para o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
update_properties_request.json
.{"ApplicationName": "test", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "flink.stream.initpos" : "LATEST", "aws.region" : "us-west-2", "AggregationEnabled" : "false" } }, { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2" } } ] } } }
-
Execute a ação
UpdateApplication
com a solicitação anterior para atualizar as propriedades do ambiente:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Atualizar o código do aplicativo
Quando precisar atualizar o código do aplicativo com uma nova versão do pacote de código, use a UpdateApplication
AWS CLI ação.
Para usar o AWS CLI, exclua seu pacote de código anterior do bucket do Amazon S3, faça o upload da nova versão e ligueUpdateApplication
, especificando o mesmo bucket e nome de objeto do Amazon S3. O aplicativo será reiniciado com o novo pacote de código.
O exemplo de solicitação da UpdateApplication
ação a seguir recarrega o código do aplicativo e reinicia o aplicativo. Atualize o CurrentApplicationVersionId
para a versão atual do aplicativo. Você pode verificar a versão atual do aplicativo usando as ações DescribeApplication
ou ListApplications
. Atualize o sufixo do nome do bucket (<username>
) com o sufixo que você escolheu na Crie dois streams de dados do Amazon Kinesis seção.
{ "ApplicationName": "test", "CurrentApplicationVersionId":
1
, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username
", "FileKeyUpdate": "java-getting-started-1.0.jar" } } } } }
Etapa 4: limpar AWS os recursos
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial de introdução.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
No painel Managed Service for Apache Flink, escolha. MyApplication
Selecione Configurar.
Na seção Snapshots, selecione Desativar e, em seguida, selecione Atualizar.
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seus streams de dados do Kinesis
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
No painel Kinesis Data Streams, escolha. ExampleInputStream
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
Na página Kinesis Streams, escolha o, escolha Ações ExampleOutputStream, escolha Excluir e confirme a exclusão.
Exclua seu objeto e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Escolha o ka-app-code -
<username>
balde.Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. Na barra de navegação, selecione Políticas.
No controle do filtro, insira kinesis.
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
Selecione Ações da política e, em seguida, Excluir.
Na barra de navegação, selecione Roles (Funções).
Escolha a função kinesis-analytics- MyApplication -us-west-2.
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. No painel de navegação, selecione Logs.
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Exemplos de versões anteriores (antigas) do Managed Service for Apache Flink
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
Esta seção apresenta exemplos de como criar e trabalhar com aplicativos no Managed Service for Apache Flink. Eles incluem exemplos de código e step-by-step instruções para ajudá-lo a criar serviços gerenciados para aplicativos Apache Flink e testar seus resultados.
Antes de explorar esses exemplos, recomendamos que você analise em primeiro lugar o seguinte :
nota
Esses exemplos pressupõem que você esteja usando a região Oeste dos EUA (Oregon) (us-west-2
). Se você estiver usando uma região diferente, atualize o código, os comandos e as IAM funções do aplicativo adequadamente.
DataStream APIexemplos
Os exemplos a seguir demonstram como criar aplicativos usando o Apache DataStream API Flink.
Tópicos
- Exemplo: janela caindo
- Exemplo: janela deslizante
- Exemplo: gravação em um bucket do Amazon S3
- Tutorial: Usando um serviço gerenciado para o aplicativo Apache Flink para replicar dados de um tópico em um MSK cluster para outro em um VPC
- Exemplo: use um EFO consumidor com um stream de dados do Kinesis
- Exemplo: Escrevendo para o Firehose
- Exemplo: Leia de um stream do Kinesis em uma conta diferente
- Tutorial: Usando uma loja confiável personalizada com a Amazon MSK
Exemplo: janela caindo
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
Neste exercício, você cria um aplicativo Managed Service for Apache Flink que agrega dados usando uma janela em cascata. A agregação está habilitada por padrão no Flink. Para desativá-la, use o seguinte:
sink.producer.aggregation-enabled' = 'false'
nota
Para configurar os pré-requisitos necessários para este exercício, primeiro conclua o exercício Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink.
Este tópico contém as seguintes seções:
Crie recursos dependentes
Antes de criar um aplicativo Managed Service for Apache Flink para este exercício, você cria os seguintes recursos dependentes:
Dois fluxos de dados do Kinesis (
ExampleInputStream
eExampleOutputStream
)Um bucket do Amazon S3 para armazenar o código do aplicativo (
ka-app-code-
)<username>
Você pode criar os fluxos do Kinesis e o bucket do Amazon S3 usando o console. Para obter instruções sobre como criar esses recursos, consulte os tópicos a seguir:
Criando e atualizando fluxos de dados no Guia do desenvolvedor do Amazon Kinesis Data Streams. Nomeie seu fluxo de dados
ExampleInputStream
eExampleOutputStream
.Para obter instruções, consulte Como criar um bucket do S3? no Guia do usuário do Amazon Simple Storage Service. Dê ao bucket do Amazon S3 um nome globalmente exclusivo anexando seu nome de login, como
ka-app-code-
.<username>
Grave registros de amostra no fluxo de entrada
Nesta seção, você usa um script Python para gravar registros de amostra no fluxo para o aplicativo processar.
nota
Essa seção requer AWS SDK for Python (Boto)
-
Crie um arquivo denominado
stock.py
com o conteúdo a seguir:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Execute o script
stock.py
:$ python stock.py
Mantenha o script em execução enquanto você conclui o restante do tutorial.
Baixe e examine o código do aplicativo
O código do aplicativo Java para este exemplo está disponível em GitHub. Para fazer download do código do aplicativo, faça o seguinte:
Instale o cliente do Git se você ainda não tiver feito isso. Para obter mais informações, consulte Instalando o Git
. Duplique o repositório remoto com o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/TumblingWindow
.
O código do aplicativo está localizado no arquivo TumblingWindowStreamingJob.java
. Observe o seguinte sobre o código do aplicativo:
O aplicativo usa uma origem do Kinesis para ler o fluxo de origem. O trecho a seguir cria a origem do Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
Inclua a seguinte declaração de importação:
import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
O aplicativo usa o operador
timeWindow
para encontrar a contagem dos valores de cada símbolo de ação em uma janela em cascata de cinco segundos. O código a seguir cria o operador e envia os dados agregados para um novo coletor de fluxo de dados do Kinesis:input.flatMap(new Tokenizer()) // Tokenizer for generating words .keyBy(0) // Logically partition the stream for each word .window(TumblingProcessingTimeWindows.of(Time.seconds(5))) //Flink 1.13 onward .sum(1) // Sum the number of words per partition .map(value -> value.f0 + "," + value.f1.toString() + "\n") .addSink(createSinkFromStaticConfig());
Compilar o código do aplicativo
Para compilar o aplicativo, faça o seguinte:
Instale o Java e o Maven, caso ainda não o tenha feito. Para obter mais informações, consulte Preencha os pré-requisitos necessários no tutorial Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink.
Compile o aplicativo com o seguinte comando:
mvn package -Dflink.version=1.15.3
nota
O código-fonte fornecido depende de bibliotecas do Java 11.
A compilação do aplicativo cria o JAR arquivo do aplicativo (target/aws-kinesis-analytics-java-apps-1.0.jar
).
Faça o upload do código Java de streaming do Apache Flink
Nesta seção, você faz o upload do seu aplicativo no bucket do Amazon S3 que você criou na seção Crie recursos dependentes.
-
No console do Amazon S3, escolha o - ka-app-code
<username>
bucket e escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
aws-kinesis-analytics-java-apps-1.0.jar
que você criou na etapa anterior. Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o serviço gerenciado para o aplicativo Apache Flink
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Runtime, selecione Apache Flink.
nota
O Managed Service for Apache Flink usa o Apache Flink versão 1.15.2.
Deixe o menu suspenso de versão como Apache Flink versão 1.15.2 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar os fluxos de dados do Kinesis.
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*", "arn:aws:s3:::ka-app-code-<username>
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
aws-kinesis-analytics-java-apps-1.0.jar
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, marque a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro, o Managed Service for Apache Flink cria um grupo de registros e um fluxo de registros para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Esse fluxo de logs é usado para monitorar o aplicativo. Esse não é o mesmo fluxo de logs que o aplicativo usa para enviar resultados.
Execute o aplicativo
-
Na MyApplicationpágina, escolha Executar. Deixe a opção Executar sem snapshot selecionada e confirme a ação.
-
Quando o aplicativo estiver em execução, atualize a página. O console mostra o Gráfico do aplicativo.
Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console para verificar se o aplicativo está funcionando.
Limpar recursos da AWS
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial Tumbling Window.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
no painel Managed Service for Apache Flink, escolha. MyApplication
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seus streams de dados do Kinesis
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
No painel Kinesis Data Streams, escolha. ExampleInputStream
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
Na página Kinesis Streams, escolha o, escolha Ações ExampleOutputStream, escolha Excluir e confirme a exclusão.
Exclua seu objeto e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Escolha o ka-app-code -
<username>
balde.Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. Na barra de navegação, selecione Políticas.
No controle do filtro, insira kinesis.
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
Selecione Ações da política e, em seguida, Excluir.
Na barra de navegação, selecione Roles (Funções).
Escolha a função kinesis-analytics- MyApplication -us-west-2.
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. No painel de navegação, selecione Logs.
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Exemplo: janela deslizante
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
nota
Para configurar os pré-requisitos necessários para este exercício, primeiro conclua o exercício Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink.
Este tópico contém as seguintes seções:
Crie recursos dependentes
Antes de criar um aplicativo Managed Service for Apache Flink para este exercício, você cria os seguintes recursos dependentes:
Dois fluxos de dados do Kinesis (
ExampleInputStream
eExampleOutputStream
).Um bucket do Amazon S3 para armazenar o código do aplicativo (
ka-app-code-
)<username>
Você pode criar os fluxos do Kinesis e o bucket do Amazon S3 usando o console. Para obter instruções sobre como criar esses recursos, consulte os tópicos a seguir:
Criando e atualizando fluxos de dados no Guia do desenvolvedor do Amazon Kinesis Data Streams. Nomeie seus fluxos de dados
ExampleInputStream
eExampleOutputStream
.Para obter instruções, consulte Como criar um bucket do S3? no Guia do usuário do Amazon Simple Storage Service. Dê ao bucket do Amazon S3 um nome globalmente exclusivo anexando seu nome de login, como
ka-app-code-
.<username>
Grave registros de amostra no fluxo de entrada
Nesta seção, você usa um script Python para gravar registros de amostra no fluxo para o aplicativo processar.
nota
Essa seção requer AWS SDK for Python (Boto)
-
Crie um arquivo denominado
stock.py
com o conteúdo a seguir:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { "EVENT_TIME": datetime.datetime.now().isoformat(), "TICKER": random.choice(["AAPL", "AMZN", "MSFT", "INTC", "TBV"]), "PRICE": round(random.random() * 100, 2), } def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey" ) if __name__ == "__main__": generate(STREAM_NAME, boto3.client("kinesis"))
-
Execute o script
stock.py
:$ python stock.py
Mantenha o script em execução enquanto você conclui o restante do tutorial.
Baixe e examine o código do aplicativo
O código do aplicativo Java para este exemplo está disponível em GitHub. Para fazer download do código do aplicativo, faça o seguinte:
Instale o cliente do Git se você ainda não tiver feito isso. Para obter mais informações, consulte Instalando o Git
. Duplique o repositório remoto com o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/SlidingWindow
.
O código do aplicativo está localizado no arquivo SlidingWindowStreamingJobWithParallelism.java
. Observe o seguinte sobre o código do aplicativo:
O aplicativo usa uma origem do Kinesis para ler o fluxo de origem. O trecho a seguir cria a origem do Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
O aplicativo usa o operador
timeWindow
para descobrir o valor mínimo para cada símbolo de ação em uma janela de dez segundos que desliza por cinco segundos. O código a seguir cria o operador e envia os dados agregados para um novo coletor de fluxo de dados do Kinesis:Inclua a seguinte declaração de importação:
import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows; //flink 1.13 onward
O aplicativo usa o operador
timeWindow
para encontrar a contagem dos valores de cada símbolo de ação em uma janela em cascata de cinco segundos. O código a seguir cria o operador e envia os dados agregados para um novo coletor de fluxo de dados do Kinesis:input.flatMap(new Tokenizer()) // Tokenizer for generating words .keyBy(0) // Logically partition the stream for each word .window(TumblingProcessingTimeWindows.of(Time.seconds(5))) //Flink 1.13 onward .sum(1) // Sum the number of words per partition .map(value -> value.f0 + "," + value.f1.toString() + "\n") .addSink(createSinkFromStaticConfig());
Compilar o código do aplicativo
Para compilar o aplicativo, faça o seguinte:
Instale o Java e o Maven, caso ainda não o tenha feito. Para obter mais informações, consulte Preencha os pré-requisitos necessários no tutorial Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink.
Compile o aplicativo com o seguinte comando:
mvn package -Dflink.version=1.15.3
nota
O código-fonte fornecido depende de bibliotecas do Java 11.
A compilação do aplicativo cria o JAR arquivo do aplicativo (target/aws-kinesis-analytics-java-apps-1.0.jar
).
Faça o upload do código Java de streaming do Apache Flink
Nesta seção, você faz o upload do seu aplicativo no bucket do Amazon S3 que você criou na seção Crie recursos dependentes.
-
No console do Amazon S3, escolha o - ka-app-code
<username>
bucket e, em seguida, escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
aws-kinesis-analytics-java-apps-1.0.jar
que você criou na etapa anterior. Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o serviço gerenciado para o aplicativo Apache Flink
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Runtime, selecione Apache Flink.
Deixe o menu suspenso de versão como Apache Flink versão 1.15.2 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar os fluxos de dados do Kinesis.
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*", "arn:aws:s3:::ka-app-code-<username>
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
aws-kinesis-analytics-java-apps-1.0.jar
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, marque a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro na Amazon, o Managed Service for Apache Flink cria um grupo de logs e um stream de logs para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Esse fluxo de logs é usado para monitorar o aplicativo. Esse não é o mesmo fluxo de logs que o aplicativo usa para enviar resultados.
Configurar o paralelismo do aplicativo
Este exemplo de aplicativo usa a execução paralela de tarefas. O código do aplicativo a seguir define o paralelismo do operador min
:
.setParallelism(3) // Set parallelism for the min operator
O paralelismo do aplicativo não pode ser maior do que o paralelismo provisionado, que tem um padrão de 1. Para aumentar o paralelismo do seu aplicativo, use a seguinte ação: AWS CLI
aws kinesisanalyticsv2 update-application --application-name MyApplication --current-application-version-id <VersionId> --application-configuration-update "{\"FlinkApplicationConfigurationUpdate\": { \"ParallelismConfigurationUpdate\": {\"ParallelismUpdate\": 5, \"ConfigurationTypeUpdate\": \"CUSTOM\" }}}"
Você pode recuperar o ID da versão atual do aplicativo usando as ListApplicationsações DescribeApplicationou.
Execute o aplicativo
O gráfico de tarefas do Flink pode ser visualizado executando o aplicativo, abrindo o painel do Apache Flink e selecionando a tarefa desejada do Flink.
Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console para verificar se o aplicativo está funcionando.
Limpe AWS os recursos
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial Sliding Window.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
No painel Managed Service for Apache Flink, escolha. MyApplication
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seus streams de dados do Kinesis
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
No painel Kinesis Data Streams, escolha. ExampleInputStream
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
Na página Kinesis Streams, escolha o, escolha Ações ExampleOutputStream, escolha Excluir e confirme a exclusão.
Exclua seu objeto e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Escolha o ka-app-code -
<username>
balde.Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. Na barra de navegação, selecione Políticas.
No controle do filtro, insira kinesis.
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
Selecione Ações da política e, em seguida, Excluir.
Na barra de navegação, selecione Roles (Funções).
Escolha a função kinesis-analytics- MyApplication -us-west-2.
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. No painel de navegação, selecione Logs.
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Exemplo: gravação em um bucket do Amazon S3
Neste exercício, você cria um Managed Service for Apache Flink que tem um fluxo de dados do Kinesis como origem e um bucket do Amazon S3 como coletor. Usando o coletor, você pode conferir a saída do aplicativo no console do Amazon S3.
nota
Para configurar os pré-requisitos necessários para este exercício, primeiro conclua o exercício Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink.
Este tópico contém as seguintes seções:
- Crie recursos dependentes
- Grave registros de amostra no fluxo de entrada
- Baixe e examine o código do aplicativo
- Modifique o código do aplicativo
- Compilar o código do aplicativo
- Faça o upload do código Java de streaming do Apache Flink
- Crie e execute o serviço gerenciado para o aplicativo Apache Flink
- Verifique a saída do aplicativo
- Opcional: personalize a fonte e o coletor
- Limpe AWS os recursos
Crie recursos dependentes
Antes de criar um Managed Service for Apache Flink para este exercício, você cria os seguintes recursos dependentes:
-
Um fluxo de dados do Kinesis (
ExampleInputStream
). -
Um bucket do Amazon S3 para armazenar o código e saída do aplicativo (
ka-app-code-
)<username>
nota
O Managed Service for Apache Flink não pode gravar dados no Amazon S3 com a criptografia do lado do servidor habilitada no Managed Service for Apache Flink.
Você pode criar o fluxo de dados do Kinesis e um bucket do Amazon S3 usando o console. Para obter instruções sobre como criar esses recursos, consulte os tópicos a seguir:
-
Criando e atualizando fluxos de dados no Guia do desenvolvedor do Amazon Kinesis Data Streams. Nomeie seu fluxo de dados
ExampleInputStream
. -
Para obter instruções, consulte Como criar um bucket do S3? no Guia do usuário do Amazon Simple Storage Service. Dê ao bucket do Amazon S3 um nome globalmente exclusivo anexando seu nome de login, como
ka-app-code-
. Crie duas pastas (<username>
code
edata
) no bucket do Amazon S3.
O aplicativo cria os seguintes CloudWatch recursos, caso eles ainda não existam:
-
Um grupo de logs chamado
/AWS/KinesisAnalytics-java/MyApplication
. -
Um fluxo de logs chamado
kinesis-analytics-log-stream
.
Grave registros de amostra no fluxo de entrada
Nesta seção, você usa um script Python para gravar registros de amostra no fluxo para o aplicativo processar.
nota
Essa seção requer AWS SDK for Python (Boto)
-
Crie um arquivo denominado
stock.py
com o conteúdo a seguir:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Execute o script
stock.py
:$ python stock.py
Mantenha o script em execução enquanto você conclui o restante do tutorial.
Baixe e examine o código do aplicativo
O código do aplicativo Java para este exemplo está disponível em GitHub. Para fazer download do código do aplicativo, faça o seguinte:
-
Instale o cliente do Git se você ainda não tiver feito isso. Para obter mais informações, consulte Instalando o Git
. -
Duplique o repositório remoto com o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
-
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/S3Sink
.
O código do aplicativo está localizado no arquivo S3StreamingSinkJob.java
. Observe o seguinte sobre o código do aplicativo:
-
O aplicativo usa uma origem do Kinesis para ler o fluxo de origem. O trecho a seguir cria a origem do Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
-
Você precisa incluir a seguinte declaração de importação:
import org.apache.flink.streaming.api.windowing.assigners.TumblingProcessingTimeWindows;
-
O aplicativo usa um coletor do Apache Flink S3 para gravar no Amazon S3.
O coletor lê mensagens em uma janela em cascata, codifica mensagens em objetos de bucket do S3 e envia os objetos codificados para o coletor do S3. O código a seguir codifica objetos para envio ao Amazon S3:
input.map(value -> { // Parse the JSON JsonNode jsonNode = jsonParser.readValue(value, JsonNode.class); return new Tuple2<>(jsonNode.get("ticker").toString(), 1); }).returns(Types.TUPLE(Types.STRING, Types.INT)) .keyBy(v -> v.f0) // Logically partition the stream for each word .window(TumblingProcessingTimeWindows.of(Time.minutes(1))) .sum(1) // Count the appearances by ticker per partition .map(value -> value.f0 + " count: " + value.f1.toString() + "\n") .addSink(createS3SinkFromStaticConfig());
nota
O aplicativo usa um objeto StreamingFileSink
Flink para gravar no Amazon S3. Para obter mais informações sobre oStreamingFileSink
, consulte a StreamingFileSink
Modifique o código do aplicativo
Nesta seção, você modifica o código do aplicativo para gravar a saída em seu bucket do Amazon S3.
Atualize a linha a seguir com seu nome de usuário para especificar o local de saída do aplicativo:
private static final String s3SinkPath = "s3a://ka-app-code-
<username>
/data";
Compilar o código do aplicativo
Para compilar o aplicativo, faça o seguinte:
-
Instale o Java e o Maven, caso ainda não o tenha feito. Para obter mais informações, consulte Preencha os pré-requisitos necessários no tutorial Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink.
-
Compile o aplicativo com o seguinte comando:
mvn package -Dflink.version=1.15.3
A compilação do aplicativo cria o JAR arquivo do aplicativo (target/aws-kinesis-analytics-java-apps-1.0.jar
).
nota
O código-fonte fornecido depende de bibliotecas do Java 11.
Faça o upload do código Java de streaming do Apache Flink
Nesta seção, você faz o upload do seu aplicativo no bucket do Amazon S3 que você criou na seção Crie recursos dependentes.
-
No console do Amazon S3, escolha o - ka-app-code
<username>
bucket, navegue até a pasta de código e escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
aws-kinesis-analytics-java-apps-1.0.jar
que você criou na etapa anterior. -
Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o serviço gerenciado para o aplicativo Apache Flink
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Runtime, selecione Apache Flink.
Deixe o menu suspenso de versão como Apache Flink versão 1.15.2 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Runtime, selecione Apache Flink.
-
Deixe a versão como Apache Flink versão 1.15.2 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar o stream de dados do Kinesis.
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta. Substitua <username> pelo seu nome de usuário.{ "Sid": "S3", "Effect": "Allow", "Action": [ "s3:Abort*", "s3:DeleteObject*", "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ka-app-code-<username>", "arn:aws:s3:::ka-app-code-<username>/*" ] }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:*" ] }, { "Sid": "ListCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:%LOG_GROUP_PLACEHOLDER%:log-stream:*" ] }, { "Sid": "PutCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:%LOG_GROUP_PLACEHOLDER%:log-stream:%LOG_STREAM_PLACEHOLDER%" ] }
, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" },
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
code/aws-kinesis-analytics-java-apps-1.0.jar
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, marque a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro, o Managed Service for Apache Flink cria um grupo de registros e um fluxo de registros para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Esse fluxo de logs é usado para monitorar o aplicativo. Esse não é o mesmo fluxo de logs que o aplicativo usa para enviar resultados.
Execute o aplicativo
-
Na MyApplicationpágina, escolha Executar. Deixe a opção Executar sem snapshot selecionada e confirme a ação.
-
Quando o aplicativo estiver em execução, atualize a página. O console mostra o Gráfico do aplicativo.
Verifique a saída do aplicativo
No console do Amazon S3, abra a pasta de dados em seu bucket do S3.
Depois de alguns minutos, os objetos contendo dados agregados do aplicativo serão apresentados.
nota
A agregação está habilitada por padrão no Flink. Para desativá-la, use o seguinte:
sink.producer.aggregation-enabled' = 'false'
Opcional: personalize a fonte e o coletor
Nesta seção, você personaliza as configurações dos objetos de origem e coletor.
nota
Depois de alterar as seções do código descritas nas seções a seguir, faça o seguinte para recarregar o código do aplicativo:
-
Repita as etapas da seção Compilar o código do aplicativo para compilar o código atualizado do aplicativo.
-
Repita as etapas da seção Faça o upload do código Java de streaming do Apache Flink para fazer o upload do código atualizado do aplicativo.
-
Na página do aplicativo no console, selecione Configure e, em seguida, selecione Update (Atualizar) para recarregar o código do aplicativo atualizado em seu aplicativo.
Esta seção contém as seguintes seções:
Configurar o particionamento de dados
Nesta seção, você configura os nomes das pastas que o coletor de arquivos de streaming cria no bucket do S3. Para isso, adicione um atribuidor de bucket ao coletor de arquivos de streaming.
Para personalizar os nomes das pastas criados no bucket do S3, faça o seguinte:
-
Adicione as seguintes declarações de importação ao início do arquivo
S3StreamingSinkJob.java
:import org.apache.flink.streaming.api.functions.sink.filesystem.rollingpolicies.DefaultRollingPolicy; import org.apache.flink.streaming.api.functions.sink.filesystem.bucketassigners.DateTimeBucketAssigner;
-
Atualize o método
createS3SinkFromStaticConfig()
no código para que fique como se segue:private static StreamingFileSink<String> createS3SinkFromStaticConfig() { final StreamingFileSink<String> sink = StreamingFileSink .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder<String>("UTF-8"))
.withBucketAssigner(new DateTimeBucketAssigner("yyyy-MM-dd--HH")) .withRollingPolicy(DefaultRollingPolicy.create().build())
.build(); return sink; }
O exemplo de código anterior usa o DateTimeBucketAssigner
com um formato de data personalizado para criar pastas no bucket do S3. O DateTimeBucketAssigner
usa o sistema de horário atual para criar nomes para os buckets. Se você quiser criar um atribuidor de bucket personalizado para personalizar ainda mais os nomes das pastas criadas, você pode criar uma classe que implemente. BucketAssignergetBucketId
.
Uma implementação personalizada do BucketAssigner
pode usar o parâmetro Contexto
Configurar a frequência de leitura
Nesta seção, você configura a frequência das leituras no fluxo de origem.
Por padrão, o consumidor do Kinesis Streams lê o fluxo de origem cinco vezes por segundo. Essa frequência causará problemas se houver mais de um cliente lendo o fluxo ou se o aplicativo precisar tentar ler um registro novamente. Você pode evitar esses problemas definindo a frequência de leitura do consumidor.
Para definir a frequência de leitura do consumidor do Kinesis, você define a configuração SHARD_GETRECORDS_INTERVAL_MILLIS
.
O exemplo de código a seguir define a configuração SHARD_GETRECORDS_INTERVAL_MILLIS
para um segundo:
kinesisConsumerConfig.setProperty(ConsumerConfigConstants.SHARD_GETRECORDS_INTERVAL_MILLIS, "1000");
Configurar o buffer de gravação
Nesta seção, você define a frequência de gravação e outras configurações do coletor.
Por padrão, o aplicativo grava no bucket de destino a cada minuto. Você pode alterar esse intervalo e outras configurações configurando o objeto DefaultRollingPolicy
.
nota
O coletor de arquivos de streaming do Apache Flink grava em seu bucket de saída toda vez que o aplicativo cria um ponto de verificação. Por padrão, o aplicativo cria um ponto de verificação a cada minuto. Para aumentar o intervalo de gravação do coletor do S3, você também deve aumentar o intervalo do ponto de verificação.
Para configurar o objeto DefaultRollingPolicy
, faça o seguinte:
-
Aumente a
CheckpointInterval
configuração do aplicativo. A entrada a seguir para a UpdateApplicationação define o intervalo do ponto de verificação em 10 minutos:{ "ApplicationConfigurationUpdate": { "FlinkApplicationConfigurationUpdate": { "CheckpointConfigurationUpdate": { "ConfigurationTypeUpdate" : "CUSTOM", "CheckpointIntervalUpdate": 600000 } } }, "ApplicationName": "MyApplication", "CurrentApplicationVersionId":
5
}Para usar o código anterior, especifique a versão atual do aplicativo. Você pode recuperar a versão do aplicativo usando a ListApplicationsação.
-
Adicione a seguinte declaração de importação ao início do arquivo
S3StreamingSinkJob.java
:import java.util.concurrent.TimeUnit;
-
Atualize o método
createS3SinkFromStaticConfig
no arquivoS3StreamingSinkJob.java
para que fique como se segue:private static StreamingFileSink<String> createS3SinkFromStaticConfig() { final StreamingFileSink<String> sink = StreamingFileSink .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder<String>("UTF-8"))
.withBucketAssigner(new DateTimeBucketAssigner("yyyy-MM-dd--HH")) .withRollingPolicy( DefaultRollingPolicy.create() .withRolloverInterval(TimeUnit.MINUTES.toMillis(8)) .withInactivityInterval(TimeUnit.MINUTES.toMillis(5)) .withMaxPartSize(1024 * 1024 * 1024) .build())
.build(); return sink; }O exemplo de código anterior define a frequência de gravações no bucket do Amazon S3 em oito minutos.
Para obter mais informações sobre como configurar o coletor de arquivos de streaming do Apache Flink, consulte Formatos codificados por linha
Limpe AWS os recursos
Esta seção inclui procedimentos para limpar AWS recursos que você criou no tutorial do Amazon S3.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel Managed Service for Apache Flink, escolha. MyApplication
-
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seu stream de dados do Kinesis
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
-
No painel Kinesis Data Streams, escolha. ExampleInputStream
-
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
Exclua seus objetos e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
-
Escolha o ka-app-code -
<username>
balde. -
Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Na barra de navegação, selecione Políticas.
-
No controle do filtro, insira kinesis.
-
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
-
Selecione Ações da política e, em seguida, Excluir.
-
Na barra de navegação, selecione Funções.
-
Escolha a função kinesis-analytics- MyApplication -us-west-2.
-
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. -
Na barra de navegação, selecione Logs.
-
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
-
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Tutorial: Usando um serviço gerenciado para o aplicativo Apache Flink para replicar dados de um tópico em um MSK cluster para outro em um VPC
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
O tutorial a seguir demonstra como criar uma Amazon VPC com um MSK cluster da Amazon e dois tópicos, e como criar um serviço gerenciado para o aplicativo Apache Flink que lê um MSK tópico da Amazon e grava em outro.
nota
Para configurar os pré-requisitos necessários para este exercício, primeiro conclua o exercício Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink.
Este tutorial contém as seguintes seções:
Crie uma Amazon VPC com um MSK cluster da Amazon
Para criar uma amostra VPC e um MSK cluster da Amazon para acessar a partir de um aplicativo Managed Service for Apache Flink, siga o tutorial Getting Started Using Amazon MSK.
Ao concluir o tutorial, observe o seguinte:
Na Etapa 3: Crie um tópico, repita o comando
kafka-topics.sh --create
para criar um tópico de destino chamadoAWSKafkaTutorialTopicDestination
:bin/kafka-topics.sh --create --zookeeper
ZooKeeperConnectionString
--replication-factor 3 --partitions 1 --topic AWS KafkaTutorialTopicDestinationRegistre a lista de servidores bootstrap do seu cluster. Você pode obter a lista de servidores bootstrap com o seguinte comando (substituir
ClusterArn
com o ARN do seu MSK cluster):aws kafka get-bootstrap-brokers --region us-west-2 --cluster-arn
ClusterArn
{... "BootstrapBrokerStringTls": "b-2.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-1.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-3.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094" }Ao seguir as etapas dos tutoriais, certifique-se de usar a AWS região selecionada no código, nos comandos e nas entradas do console.
Crie o código do aplicativo
Nesta seção, você baixará e compilará o JAR arquivo do aplicativo. Recomendamos usar o Java 11.
O código do aplicativo Java para este exemplo está disponível em GitHub. Para fazer download do código do aplicativo, faça o seguinte:
Instale o cliente do Git se você ainda não tiver feito isso. Para obter mais informações, consulte Instalando o Git
. Duplique o repositório remoto com o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
O código do aplicativo está localizado no arquivo
amazon-kinesis-data-analytics-java-examples/KafkaConnectors/KafkaGettingStartedJob.java
. Você pode examinar o código para se familiarizar com a estrutura do código do aplicativo Managed Service for Apache Flink.Use a ferramenta Maven de linha de comando ou seu ambiente de desenvolvimento preferido para criar o arquivo. JAR Para compilar o JAR arquivo usando a ferramenta Maven de linha de comando, digite o seguinte:
mvn package -Dflink.version=1.15.3
Se a compilação for feita com sucesso, o seguinte arquivo será criado:
target/KafkaGettingStartedJob-1.0.jar
nota
O código-fonte fornecido depende de bibliotecas do Java 11. Se você estiver usando um ambiente de desenvolvimento,
Faça o upload do código Java de streaming do Apache Flink
Nesta seção, você faz o upload do seu aplicativo no bucket do Amazon S3 que você criou no tutorial Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink.
nota
Se você excluiu o bucket do Amazon S3 no tutorial de introdução, siga a etapa Faça o upload do JAR arquivo de código do aplicativo novamente.
-
No console do Amazon S3, escolha o - ka-app-code
<username>
bucket e escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
KafkaGettingStartedJob-1.0.jar
que você criou na etapa anterior. Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink. https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Runtime, selecione Apache Flink 1.15.2.
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
KafkaGettingStartedJob-1.0.jar
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
.nota
Quando você especifica recursos do aplicativo usando o console (como CloudWatch Logs ou AmazonVPC), o console modifica sua função de execução do aplicativo para conceder permissão para acessar esses recursos.
-
Em Propriedades, selecione Adicionar grupo. Insira as seguintes propriedades:
ID do grupo Chave Valor KafkaSource
tópico AWS KafkaTutorialTopic KafkaSource
bootstrap.servers The bootstrap server list you saved previously
KafkaSource
security.protocol SSL KafkaSource
ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts KafkaSource
ssl.truststore.password changeit nota
O ssl.truststore.password para o certificado padrão é “changeit”; você não precisa alterar esse valor se estiver usando o certificado padrão.
Selecione Adicionar grupo novamente. Insira as seguintes propriedades:
ID do grupo Chave Valor KafkaSink
tópico AWS KafkaTutorialTopicDestination KafkaSink
bootstrap.servers The bootstrap server list you saved previously
KafkaSink
security.protocol SSL KafkaSink
ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts KafkaSink
ssl.truststore.password changeit KafkaSink
transaction.timeout.ms 1000 O código do aplicativo lê as propriedades do aplicativo acima para configurar a fonte e o coletor usados para interagir com o seu MSK cluster VPC e o da Amazon. Para obter mais informações sobre usar as propriedades, consulte Use propriedades de tempo de execução.
-
Em Snapshots, selecione Desativar. Isso facilitará a atualização do aplicativo sem carregar dados inválidos do estado do aplicativo.
-
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, escolha a caixa de seleção Ativar.
-
Na seção Virtual Private Cloud (VPC), escolha a VPC para associar ao seu aplicativo. Escolha as sub-redes e o grupo de segurança associados à sua VPC que você deseja que o aplicativo use para acessar VPC os recursos.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro, o Managed Service for Apache Flink cria um grupo de registros e um fluxo de registros para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Esse fluxo de logs é usado para monitorar o aplicativo.
Execute o aplicativo
O gráfico de tarefas do Flink pode ser visualizado executando o aplicativo, abrindo o painel do Apache Flink e selecionando a tarefa desejada do Flink.
Teste o aplicativo
Nesta seção, você grava registros no tópico de origem. O aplicativo lê registros do tópico de origem e os grava no tópico de destino. Você verifica se o aplicativo está funcionando gravando registros no tópico de origem e lendo registros do tópico de destino.
Para escrever e ler registros dos tópicos, siga as etapas na Etapa 6: Produzir e consumir dados no MSK tutorial Getting Started Using Amazon.
Para ler o tópico de destino, use o nome do tópico de destino em vez do nome do tópico de origem em sua segunda conexão com o cluster:
bin/kafka-console-consumer.sh --bootstrap-server
BootstrapBrokerString
--consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning
Se nenhum registro aparecer no tópico de destino, consulte a seção Não é possível acessar recursos em um VPC no tópico Solucionar problemas de serviço gerenciado para Apache Flink.
Exemplo: use um EFO consumidor com um stream de dados do Kinesis
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
Neste exercício, você cria um serviço gerenciado para o aplicativo Apache Flink que lê um stream de dados do Kinesis usando um consumidor Enhanced Fan-Out (). EFO Se um consumidor do Kinesis usaEFO, o serviço Kinesis Data Streams fornece sua própria largura de banda dedicada, em vez de fazer com que o consumidor compartilhe a largura de banda fixa do stream com os outros consumidores que estão lendo o stream.
Para obter mais informações sobre como usar EFO com o consumidor Kinesis, consulte FLIP-128: Enhanced Fan Out for Kinesis
O aplicativo que você cria neste exemplo usa o conector AWS Kinesis (flink-connector-kinesis) 1.15.3.
nota
Para configurar os pré-requisitos necessários para este exercício, primeiro conclua o exercício Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink.
Este tópico contém as seguintes seções:
Crie recursos dependentes
Antes de criar um aplicativo Managed Service for Apache Flink para este exercício, você cria os seguintes recursos dependentes:
Dois fluxos de dados do Kinesis (
ExampleInputStream
eExampleOutputStream
)Um bucket do Amazon S3 para armazenar o código do aplicativo (
ka-app-code-
)<username>
Você pode criar os fluxos do Kinesis e o bucket do Amazon S3 usando o console. Para obter instruções sobre como criar esses recursos, consulte os tópicos a seguir:
Criando e atualizando fluxos de dados no Guia do desenvolvedor do Amazon Kinesis Data Streams. Nomeie seu fluxo de dados
ExampleInputStream
eExampleOutputStream
.Para obter instruções, consulte Como criar um bucket do S3? no Guia do usuário do Amazon Simple Storage Service. Dê ao bucket do Amazon S3 um nome globalmente exclusivo anexando seu nome de login, como
ka-app-code-
.<username>
Grave registros de amostra no fluxo de entrada
Nesta seção, você usa um script Python para gravar registros de amostra no fluxo para o aplicativo processar.
nota
Essa seção requer AWS SDK for Python (Boto)
-
Crie um arquivo denominado
stock.py
com o conteúdo a seguir:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Execute o script
stock.py
:$ python stock.py
Mantenha o script em execução enquanto você conclui o restante do tutorial.
Baixe e examine o código do aplicativo
O código do aplicativo Java para este exemplo está disponível em GitHub. Para fazer download do código do aplicativo, faça o seguinte:
Instale o cliente do Git se você ainda não tiver feito isso. Para obter mais informações, consulte Instalando o Git
. Duplique o repositório remoto com o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/EfoConsumer
.
O código do aplicativo está localizado no arquivo EfoApplication.java
. Observe o seguinte sobre o código do aplicativo:
Você habilita o EFO consumidor definindo os seguintes parâmetros no consumidor Kinesis:
RECORD_ PUBLISHER _TYPE: defina esse parâmetro EFOpara que seu aplicativo use um EFO consumidor para acessar os dados do Kinesis Data Stream.
EFO_ CONSUMER _NAME: defina esse parâmetro como um valor de string exclusivo entre os consumidores desse fluxo. A reutilização de um nome de consumidor no mesmo Kinesis Data Stream fará com que o consumidor anterior que usava esse nome seja excluído.
O exemplo de código a seguir demonstra como atribuir valores às propriedades de configuração do consumidor para usar um EFO consumidor para ler o fluxo de origem:
consumerConfig.putIfAbsent(RECORD_PUBLISHER_TYPE, "EFO"); consumerConfig.putIfAbsent(EFO_CONSUMER_NAME, "basic-efo-flink-app");
Compilar o código do aplicativo
Para compilar o aplicativo, faça o seguinte:
Instale o Java e o Maven, caso ainda não o tenha feito. Para obter mais informações, consulte Preencha os pré-requisitos necessários no tutorial Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink.
Compile o aplicativo com o seguinte comando:
mvn package -Dflink.version=1.15.3
nota
O código-fonte fornecido depende de bibliotecas do Java 11.
A compilação do aplicativo cria o JAR arquivo do aplicativo (target/aws-kinesis-analytics-java-apps-1.0.jar
).
Faça o upload do código Java de streaming do Apache Flink
Nesta seção, você faz o upload do seu aplicativo no bucket do Amazon S3 que você criou na seção Crie recursos dependentes.
-
No console do Amazon S3, escolha o - ka-app-code
<username>
bucket e escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
aws-kinesis-analytics-java-apps-1.0.jar
que você criou na etapa anterior. Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o serviço gerenciado para o aplicativo Apache Flink
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Runtime, selecione Apache Flink.
nota
O Managed Service for Apache Flink usa o Apache Flink versão 1.15.2.
Deixe o menu suspenso de versão como Apache Flink versão 1.15.2 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar os fluxos de dados do Kinesis.
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta.nota
Essas permissões concedem ao aplicativo a capacidade de acessar o EFO consumidor.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*", "arn:aws:s3:::ka-app-code-<username>
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "AllStreams", "Effect": "Allow", "Action": [ "kinesis:ListShards", "kinesis:ListStreamConsumers", "kinesis:DescribeStreamSummary" ], "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/*" }, { "Sid": "Stream", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:RegisterStreamConsumer", "kinesis:DeregisterStreamConsumer" ], "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }, { "Sid": "Consumer", "Effect": "Allow", "Action": [ "kinesis:DescribeStreamConsumer", "kinesis:SubscribeToShard" ], "Resource": [ "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream/consumer/my-efo-flink-app", "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream/consumer/my-efo-flink-app:*" ] }
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
aws-kinesis-analytics-java-apps-1.0.jar
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Em Propriedades, selecione Criar grupo.
-
Insira as seguintes propriedades e valores de aplicativo:
ID do grupo Chave Valor ConsumerConfigProperties
flink.stream.recordpublisher
EFO
ConsumerConfigProperties
flink.stream.efo.consumername
basic-efo-flink-app
ConsumerConfigProperties
INPUT_STREAM
ExampleInputStream
ConsumerConfigProperties
flink.inputstream.initpos
LATEST
ConsumerConfigProperties
AWS_REGION
us-west-2
-
Em Propriedades, selecione Criar grupo.
-
Insira as seguintes propriedades e valores de aplicativo:
ID do grupo Chave Valor ProducerConfigProperties
OUTPUT_STREAM
ExampleOutputStream
ProducerConfigProperties
AWS_REGION
us-west-2
ProducerConfigProperties
AggregationEnabled
false
-
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, marque a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro, o Managed Service for Apache Flink cria um grupo de registros e um fluxo de registros para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Esse fluxo de logs é usado para monitorar o aplicativo. Esse não é o mesmo fluxo de logs que o aplicativo usa para enviar resultados.
Execute o aplicativo
O gráfico de tarefas do Flink pode ser visualizado executando o aplicativo, abrindo o painel do Apache Flink e selecionando a tarefa desejada do Flink.
Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console para verificar se o aplicativo está funcionando.
Você também pode conferir o nome do seu consumidor () no console do Kinesis Data Streams, na guia Enhanced fan-out do stream de dados. basic-efo-flink-app
Limpe AWS os recursos
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial efo Window.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
no painel Managed Service for Apache Flink, escolha. MyApplication
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seus streams de dados do Kinesis
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
No painel Kinesis Data Streams, escolha. ExampleInputStream
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
Na página Kinesis Streams, escolha o, escolha Ações ExampleOutputStream, escolha Excluir e confirme a exclusão.
Excluir seu objeto e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Escolha o ka-app-code -
<username>
balde.Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. Na barra de navegação, selecione Políticas.
No controle do filtro, insira kinesis.
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
Selecione Ações da política e, em seguida, Excluir.
Na barra de navegação, selecione Roles (Funções).
Escolha a função kinesis-analytics- MyApplication -us-west-2.
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. No painel de navegação, selecione Logs.
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Exemplo: Escrevendo para o Firehose
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
Neste exercício, você cria um serviço gerenciado para o aplicativo Apache Flink que tem um stream de dados do Kinesis como fonte e um stream do Firehose como coletor. Usando o coletor, você pode conferir a saída do aplicativo em um bucket do Amazon S3.
nota
Para configurar os pré-requisitos necessários para este exercício, primeiro conclua o exercício Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink.
Esta seção contém as seguintes etapas:
- Crie recursos dependentes
- Grave registros de amostra no fluxo de entrada
- Baixe e examine o código Java de streaming do Apache Flink
- Compilar o código do aplicativo
- Faça o upload do código Java de streaming do Apache Flink
- Crie e execute o serviço gerenciado para o aplicativo Apache Flink
- Limpar recursos da AWS
Crie recursos dependentes
Antes de criar um Managed Service for Apache Flink para este exercício, você cria os seguintes recursos dependentes:
Um fluxo de dados do Kinesis (
ExampleInputStream
)Um stream do Firehose no qual o aplicativo grava a saída ()
ExampleDeliveryStream
.Um bucket do Amazon S3 para armazenar o código do aplicativo (
ka-app-code-
)<username>
Você pode criar o stream do Kinesis, os buckets do Amazon S3 e o stream do Firehose usando o console. Para obter instruções sobre como criar esses recursos, consulte os tópicos a seguir:
Criando e atualizando fluxos de dados no Guia do desenvolvedor do Amazon Kinesis Data Streams. Nomeie seu fluxo de dados
ExampleInputStream
.Criação de um stream de entrega do Amazon Kinesis Data Firehose no Guia do desenvolvedor do Amazon Data Firehose. Dê um nome ao seu stream do Firehose.
ExampleDeliveryStream
Ao criar o stream Firehose, crie também o destino e a função S3 do stream Firehose. IAMPara obter instruções, consulte Como criar um bucket do S3? no Guia do usuário do Amazon Simple Storage Service. Dê ao bucket do Amazon S3 um nome globalmente exclusivo anexando seu nome de login, como
ka-app-code-
.<username>
Grave registros de amostra no fluxo de entrada
Nesta seção, você usa um script Python para gravar registros de amostra no fluxo para o aplicativo processar.
nota
Essa seção requer AWS SDK for Python (Boto)
-
Crie um arquivo denominado
stock.py
com o conteúdo a seguir:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Execute o script
stock.py
:$ python stock.py
Mantenha o script em execução enquanto você conclui o restante do tutorial.
Baixe e examine o código Java de streaming do Apache Flink
O código do aplicativo Java para este exemplo está disponível em GitHub. Para fazer download do código do aplicativo, faça o seguinte:
Duplique o repositório remoto com o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/FirehoseSink
.
O código do aplicativo está localizado no arquivo FirehoseSinkStreamingJob.java
. Observe o seguinte sobre o código do aplicativo:
O aplicativo usa uma origem do Kinesis para ler o fluxo de origem. O trecho a seguir cria a origem do Kinesis:
return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties));
O aplicativo usa um coletor Firehose para gravar dados em um stream do Firehose. O trecho a seguir cria o coletor Firehose:
private static KinesisFirehoseSink<String> createFirehoseSinkFromStaticConfig() { Properties sinkProperties = new Properties(); sinkProperties.setProperty(AWS_REGION, region); return KinesisFirehoseSink.<String>builder() .setFirehoseClientProperties(sinkProperties) .setSerializationSchema(new SimpleStringSchema()) .setDeliveryStreamName(outputDeliveryStreamName) .build(); }
Compilar o código do aplicativo
Para compilar o aplicativo, faça o seguinte:
Instale o Java e o Maven, caso ainda não o tenha feito. Para obter mais informações, consulte Preencha os pré-requisitos necessários no tutorial Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink.
Para usar o conector Kinesis no aplicativo a seguir, você precisa baixar, compilar e instalar o Apache Maven. Para obter mais informações, consulte Usando o conector Apache Flink Kinesis Streams com versões anteriores do Apache Flink.
Compile o aplicativo com o seguinte comando:
mvn package -Dflink.version=1.15.3
nota
O código-fonte fornecido depende de bibliotecas do Java 11.
A compilação do aplicativo cria o JAR arquivo do aplicativo (target/aws-kinesis-analytics-java-apps-1.0.jar
).
Faça o upload do código Java de streaming do Apache Flink
Nesta seção, você faz o upload do seu aplicativo no bucket do Amazon S3 que você criou na seção Crie recursos dependentes.
Para fazer upload do código do aplicativo
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
-
No console, escolha o ka-app-code -
<username>
bucket e, em seguida, escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
java-getting-started-1.0.jar
que você criou na etapa anterior. Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o serviço gerenciado para o aplicativo Apache Flink
Você pode criar e executar um aplicativo Managed Service for Apache Flink usando o console ou a AWS CLI.
nota
Quando você cria o aplicativo usando o console, seus recursos AWS Identity and Access Management (IAM) e do Amazon CloudWatch Logs são criados para você. Ao criar o aplicativo usando o AWS CLI, você cria esses recursos separadamente.
Crie e execute o aplicativo (console)
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Descrição, insira
My java test app
. -
Em Runtime, selecione Apache Flink.
nota
O Managed Service for Apache Flink usa o Apache Flink versão 1.15.2.
Deixe o menu suspenso de versão como Apache Flink versão 1.15.2 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar o aplicativo usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar o stream de dados do Kinesis e o stream do Firehose.
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua todas as instâncias da conta de amostra IDs (
012345678901
) com o ID da sua conta.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/java-getting-started-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteDeliveryStream", "Effect": "Allow", "Action": "firehose:*", "Resource": "arn:aws:firehose:us-west-2:012345678901
:deliverystream/ExampleDeliveryStream" }
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
java-getting-started-1.0.jar
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, marque a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro, o Managed Service for Apache Flink cria um grupo de registros e um fluxo de registros para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Execute o aplicativo
O gráfico de tarefas do Flink pode ser visualizado executando o aplicativo, abrindo o painel do Apache Flink e selecionando a tarefa desejada do Flink.
Pare o aplicativo
Na MyApplicationpágina, escolha Parar. Confirme a ação.
Atualizar o aplicativo
Usando o console, você pode atualizar as configurações do aplicativo, como propriedades do aplicativo, configurações de monitoramento e o local ou nome do arquivo do aplicativoJAR.
Na MyApplicationpágina, escolha Configurar. Atualize as configurações do aplicativo e selecione Update (Atualizar).
nota
Para atualizar o código do aplicativo no console, você deve alterar o nome do objeto doJAR, usar um bucket S3 diferente ou usar o AWS CLI conforme descrito na Atualizar o código do aplicativo seção. Se o nome do arquivo ou o bucket não mudar, o código do aplicativo não será recarregado quando você selecionar Atualizar na página Configure.
Crie e execute o aplicativo (AWS CLI)
Nesta seção, você usa o AWS CLI para criar e executar o aplicativo Managed Service for Apache Flink.
Criação de uma política de permissões
Primeiro, crie uma política de permissões com duas instruções: uma que concede permissões para a ação read
no fluxo de origem, e outra que concede permissões para ações write
no fluxo de destino. Em seguida, você anexa a política a uma IAM função (que você cria na próxima seção). Assim, ao assumir o perfil, o serviço Managed Service for Apache Flink terá as permissões necessárias para ler o fluxo de origem e gravar no fluxo de coleta.
Use o código a seguir para criar a política de permissões AKReadSourceStreamWriteSinkStream
. Substituir username
com o nome de usuário que você usará para criar o bucket do Amazon S3 para armazenar o código do aplicativo. Substitua o ID da conta nos nomes de recursos da Amazon (ARNs) (
) pelo ID da sua conta.012345678901
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": ["arn:aws:s3:::ka-app-code-
username
", "arn:aws:s3:::ka-app-code-username
/*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteDeliveryStream", "Effect": "Allow", "Action": "firehose:*", "Resource": "arn:aws:firehose:us-west-2:012345678901
:deliverystream/ExampleDeliveryStream" } ] }
Para step-by-step obter instruções sobre como criar uma política de permissões, consulte o Tutorial: Criar e anexar sua primeira política gerenciada pelo cliente no Guia IAM do usuário.
nota
Para acessar outros serviços da Amazon, você pode usar o AWS SDK for Java. O Managed Service for Apache Flink define automaticamente as credenciais exigidas pelo com SDK as da IAM função de execução do serviço associada ao seu aplicativo. Não é necessária nenhuma etapa adicional.
Crie uma IAM função
Nesta seção, você cria uma IAM função que o aplicativo Managed Service for Apache Flink pode assumir para ler um fluxo de origem e gravar no stream do coletor.
O Managed Service for Apache Flink não pode acessar seu fluxo se não tiver permissões. Você concede essas permissões por meio de uma IAM função. Cada IAM função tem duas políticas anexadas. A política de confiança concede ao Managed Service for Apache Flink a permissão de assumir a função. A política de permissões determina o que o Managed Service for Apache Flink pode fazer depois de assumir a função.
Você anexa a política de permissões que criou na seção anterior a essa função.
Para criar uma função do IAM
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
No painel de navegação, selecione Roles (Funções) e Create Role (Criar função).
-
Em Selecionar tipo de identidade de confiança, selecione Serviço da AWS . Em Choose the service that will use this role (Selecionar o serviço que usará esta função), selecione Kinesis. Em Select your use case (Selecionar seu caso de uso), selecione Kinesis Analytics.
Selecione Next: Permissions (Próximo: permissões).
-
Na página Attach permissions policies, selecione Next: Review. Você pode anexar políticas de permissões depois de criar a função.
-
Na página Create role (Criar função), insira
MF-stream-rw-role
para o Role name (Nome da função). Selecione Criar função.Agora você criou uma nova IAM função chamada
MF-stream-rw-role
. Em seguida, você atualiza as políticas de confiança e de permissões para a função. -
Anexe a política de permissões à função.
nota
Para este exercício, o Managed Service for Apache Flink assume esse perfil para ler dados de um fluxo de dados do Kinesis (origem) e gravar a saída em outro fluxo de dados do Kinesis. Depois, você anexa a política que criou na etapa anterior, Criação de uma política de permissões.
-
Na página Summary (Resumo), selecione a guia Permissions (Permissões).
-
Selecione Attach Policies.
-
Na caixa de pesquisa, insira
AKReadSourceStreamWriteSinkStream
(a política que você criou na seção anterior). -
Escolha a AKReadSourceStreamWriteSinkStreampolítica e escolha Anexar política.
-
Agora você criou a função de execução de serviço que seu aplicativo usará para acessar os recursos. Anote ARN a nova função.
Para step-by-step obter instruções sobre como criar uma função, consulte Criação de uma IAM função (console) no Guia IAM do usuário.
Crie o serviço gerenciado para o aplicativo Apache Flink
-
Salve o JSON código a seguir em um arquivo chamado
create_request.json
. Substitua ARN a função de ARN exemplo pela função que você criou anteriormente. Substitua o ARN sufixo do bucket pelo sufixo que você escolheu na Crie recursos dependentes seção (ka-app-code-
.) Substitua o ID da conta de amostra (<username>
012345678901
) na função de execução do serviço com o ID da sua conta.{ "ApplicationName": "test", "ApplicationDescription": "my java test app", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::
012345678901
:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username
", "FileKey": "java-getting-started-1.0.jar" } }, "CodeContentType": "ZIPFILE" } } } } -
Execute a ação
CreateApplication
com a solicitação anterior para criar o aplicativo:aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
O aplicativo agora é criado. Você inicia o aplicativo na próxima etapa.
Inicie o aplicativo
Nesta seção, você usa a ação StartApplication
para iniciar o aplicativo.
Para iniciar o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
start_request.json
.{ "ApplicationName": "test", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
-
Execute a ação
StartApplication
com a solicitação anterior para iniciar o aplicativo:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
O aplicativo agora está em execução. Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console da Amazon para verificar se o aplicativo está funcionando.
Pare o aplicativo
Nesta seção, você usa a ação StopApplication
para interromper o aplicativo.
Como interromper o aplicativo
-
Salve o JSON código a seguir em um arquivo chamado
stop_request.json
.{ "ApplicationName": "test" }
-
Execute a ação
StopApplication
com a seguinte solicitação para interromper o aplicativo:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
O aplicativo agora está interrompido.
Adicionar uma opção de CloudWatch registro
Você pode usar o AWS CLI para adicionar um stream de CloudWatch log da Amazon ao seu aplicativo. Para obter informações sobre como usar o CloudWatch Logs com seu aplicativo, consulteConfigurar o registro de aplicativos no Managed Service para Apache Flink.
Atualizar o código do aplicativo
Quando precisar atualizar o código do aplicativo com uma nova versão do pacote de código, use a UpdateApplication
AWS CLI ação.
Para usar o AWS CLI, exclua seu pacote de código anterior do bucket do Amazon S3, faça o upload da nova versão e ligueUpdateApplication
, especificando o mesmo bucket e nome de objeto do Amazon S3.
O exemplo de solicitação da UpdateApplication
ação a seguir recarrega o código do aplicativo e reinicia o aplicativo. Atualize o CurrentApplicationVersionId
para a versão atual do aplicativo. Você pode verificar a versão atual do aplicativo usando as ações DescribeApplication
ou ListApplications
. Atualize o sufixo do nome do bucket (<username
>) com o sufixo que você escolheu na Crie recursos dependentes seção.
{ "ApplicationName": "test", "CurrentApplicationVersionId":
1
, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-username
", "FileKeyUpdate": "java-getting-started-1.0.jar" } } } } }
Limpar recursos da AWS
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial de introdução.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
No painel Managed Service for Apache Flink, escolha. MyApplication
Selecione Configurar.
Na seção Snapshots, selecione Desativar e, em seguida, selecione Atualizar.
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seu stream de dados do Kinesis
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
No painel Kinesis Data Streams, escolha. ExampleInputStream
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
Exclua seu stream do Firehose
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
No painel Firehose, escolha. ExampleDeliveryStream
Na ExampleDeliveryStreampágina, escolha Excluir stream do Firehose e confirme a exclusão.
Exclua seu objeto e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Escolha o ka-app-code -
<username>
balde.Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Se você criou um bucket do Amazon S3 para o destino do seu stream do Firehose, exclua esse bucket também.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. Na barra de navegação, selecione Políticas.
No controle do filtro, insira kinesis.
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
Selecione Ações da política e, em seguida, Excluir.
Se você criou uma nova política para seu stream do Firehose, exclua essa política também.
Na barra de navegação, selecione Roles (Funções).
Escolha a função kinesis-analytics- MyApplication -us-west-2.
Selecione Excluir função e, em seguida, confirme a exclusão.
Se você criou uma nova função para seu stream do Firehose, exclua essa função também.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. No painel de navegação, selecione Logs.
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Exemplo: Leia de um stream do Kinesis em uma conta diferente
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
Este exemplo demonstra como criar um Managed Service para o aplicativo Apache Flink que lê dados de um fluxo do Kinesis em uma conta diferente. Neste exemplo, você usará uma conta para o fluxo de origem do Kinesis e uma segunda conta para o aplicativo Managed Service for Apache Flink e para o fluxo de dados do coletor do Kinesis.
Este tópico contém as seguintes seções:
Pré-requisitos
Neste tutorial, você modifica o exemplo da Introdução para ler dados de um fluxo do Kinesis em uma conta diferente. Conclua o tutorial Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink antes de continuar.
Você precisa de duas AWS contas para concluir este tutorial: uma para o fluxo de origem e outra para o aplicativo e o stream do coletor. Use a AWS conta que você usou para o tutorial de introdução para o stream do aplicativo e do coletor. Use uma conta AWS diferente para o fluxo de origem.
Configuração
Você acessará suas duas AWS contas usando perfis nomeados. Modifique suas AWS credenciais e arquivos de configuração para incluir dois perfis que contenham a região e as informações de conexão de suas duas contas.
O arquivo de credencial de exemplo a seguir contém dois perfis nomeados, ka-source-stream-account-profile
e ka-sink-stream-account-profile
. Use a conta que você usou no tutorial da Introdução para a conta do fluxo do coletor.
[ka-source-stream-account-profile] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY [ka-sink-stream-account-profile] aws_access_key_id=AKIAI44QH8DHBEXAMPLE aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
O arquivo de configuração de exemplo a seguir contém os mesmos perfis nomeados com informações de região e formato de saída.
[profile ka-source-stream-account-profile] region=us-west-2 output=json [profile ka-sink-stream-account-profile] region=us-west-2 output=json
nota
Este tutorial não usa o ka-sink-stream-account-profile
. Ele está incluído como um exemplo de como acessar duas AWS contas diferentes usando perfis.
Para obter mais informações sobre como usar perfis nomeados com o AWS CLI, consulte Perfis nomeados na AWS Command Line Interfacedocumentação.
Criar stream de origem do Kinesis
Nesta seção, você criará o fluxo do Kinesis na conta de origem.
Use o comando a seguir para criar o fluxo do Kinesis que o aplicativo usará como entrada. Observe que o parâmetro --profile
especifica qual perfil de conta usar.
$ aws kinesis create-stream \ --stream-name SourceAccountExampleInputStream \ --shard-count 1 \ --profile ka-source-stream-account-profile
Crie e atualize IAM funções e políticas
Para permitir o acesso a objetos em todas AWS as contas, você cria uma IAM função e uma política na conta de origem. Em seguida, você modifica a IAM política na conta do coletor. Para obter informações sobre a criação de IAM funções e políticas, consulte os tópicos a seguir no Guia AWS Identity and Access Management do usuário:
Funções e políticas da conta Sink
Edite a
kinesis-analytics-service-MyApplication-us-west-2
política do tutorial da Introdução. Essa política permite que o perfil da conta de origem seja assumido para ler o fluxo de origem.nota
Quando você usa o console para criar seu aplicativo, o console cria uma política chamada
kinesis-analytics-service-
e um perfil chamado<application name>
-<application region>
kinesisanalytics-
.<application name>
-<application region>
Adicione a seção destacada abaixo à política. Substitua o ID da conta de amostra (
SOURCE01234567
) com o ID da conta que você usará para o stream de origem.{ "Version": "2012-10-17", "Statement": [
{ "Sid": "AssumeRoleInSourceAccount", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::SOURCE01234567:role/KA-Source-Stream-Role" },
{ "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-username
/aws-kinesis-analytics-java-apps-1.0.jar" ] }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678
:log-group:*" ] }, { "Sid": "ListCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:SINK012345678
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] } ] }Abra a
kinesis-analytics-MyApplication-us-west-2
função e anote seu nome de recurso da Amazon (ARN). Ele será necessário na próxima seção. A função ARN se parece com a seguinte.arn:aws:iam::
SINK012345678
:role/service-role/kinesis-analytics-MyApplication-us-west-2
Funções e políticas da conta de origem
Crie uma política na conta de origem chamada
KA-Source-Stream-Policy
. Use o seguinte JSON para a política. Substitua o número da conta de exemplo pelo número da conta de origem.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadInputStream", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetRecords", "kinesis:GetShardIterator", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:us-west-2:
SOURCE123456784
:stream/SourceAccountExampleInputStream" } ] }Crie um perfil na conta de origem chamado
MF-Source-Stream-Role
. Faça o seguinte para criar o perfil usando o caso de uso do Managed Flink:No IAM Management Console, escolha Create Role.
Na página Criar perfil, selecione AWS Serviço. Na lista de serviços, selecione Kinesis.
Na seção Selecione seu caso de uso, selecione Managed Service for Apache Flink.
Selecione Next: Permissions (Próximo: permissões).
Adicione a política de permissões
KA-Source-Stream-Policy
que criada na etapa anterior. Selecione Next: Tags (Próximo: tags).Selecione Next: Review (Próximo: revisar).
Nomeie a função
KA-Source-Stream-Role
. Seu aplicativo usará esse perfil para acessar o fluxo de origem.
Adicione a conta
kinesis-analytics-MyApplication-us-west-2
ARN do coletor à relação de confiança daKA-Source-Stream-Role
função na conta de origem:Abra o
KA-Source-Stream-Role
no IAM console.Selecione a guia Relacionamentos de confiança.
Selecione Edit trust relationship (Editar relação de confiança).
Use o código a seguir para a relação de confiança. Substitua o ID da conta de amostra (
) com o ID da sua conta sink.SINK012345678
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
:role/service-role/kinesis-analytics-MyApplication-us-west-2" }, "Action": "sts:AssumeRole" } ] }SINK012345678
Atualize o script Python
Nesta seção, você atualiza o script Python que gera dados de amostra para usar no perfil da conta de origem.
Atualize o script stock.py
com as seguintes alterações destacadas.
import json import boto3 import random import datetime
import os os.environ['AWS_PROFILE'] ='ka-source-stream-account-profile' os.environ['AWS_DEFAULT_REGION'] = 'us-west-2'
kinesis = boto3.client('kinesis') def getReferrer(): data = {} now = datetime.datetime.now() str_now = now.isoformat() data['event_time'] = str_now data['ticker'] = random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']) price = random.random() * 100 data['price'] = round(price, 2) return data while True: data = json.dumps(getReferrer()) print(data) kinesis.put_record( StreamName="SourceAccountExampleInputStream
", Data=data, PartitionKey="partitionkey")
Atualizar o aplicativo Java
Nesta seção, você atualiza o código do aplicativo Java para assumir a função da conta de origem ao ler o fluxo de origem.
Faça as alterações a seguir no arquivo BasicStreamingJob.java
. Substitua o número da conta de origem do exemplo (SOURCE01234567
) com o número da sua conta de origem.
package com.amazonaws.services.managed-flink; import com.amazonaws.services.managed-flink.runtime.KinesisAnalyticsRuntime; import org.apache.flink.api.common.serialization.SimpleStringSchema; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisConsumer; import org.apache.flink.streaming.connectors.kinesis.FlinkKinesisProducer; import org.apache.flink.streaming.connectors.kinesis.config.ConsumerConfigConstants;
import org.apache.flink.streaming.connectors.kinesis.config.AWSConfigConstants;
import java.io.IOException; import java.util.Map; import java.util.Properties; /** * A basic Managed Service for Apache Flink for Java application with Kinesis data streams * as source and sink. */ public class BasicStreamingJob { private static final String region = "us-west-2"; private static final String inputStreamName ="SourceAccountExampleInputStream";
private static final String outputStreamName = ExampleOutputStream;private static final String roleArn = "arn:aws:iam::SOURCE01234567:role/KA-Source-Stream-Role"; private static final String roleSessionName = "ksassumedrolesession";
private static DataStream<String> createSourceFromStaticConfig(StreamExecutionEnvironment env) { Properties inputProperties = new Properties();inputProperties.setProperty(AWSConfigConstants.AWS_CREDENTIALS_PROVIDER, "ASSUME_ROLE"); inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_ARN, roleArn); inputProperties.setProperty(AWSConfigConstants.AWS_ROLE_SESSION_NAME, roleSessionName);
inputProperties.setProperty(ConsumerConfigConstants.AWS_REGION, region); inputProperties.setProperty(ConsumerConfigConstants.STREAM_INITIAL_POSITION, "LATEST"); return env.addSource(new FlinkKinesisConsumer<>(inputStreamName, new SimpleStringSchema(), inputProperties)); } private static KinesisStreamsSink<String> createSinkFromStaticConfig() { Properties outputProperties = new Properties(); outputProperties.setProperty(AWSConfigConstants.AWS_REGION, region); return KinesisStreamsSink.<String>builder() .setKinesisClientProperties(outputProperties) .setSerializationSchema(new SimpleStringSchema()) .setStreamName(outputProperties.getProperty("OUTPUT_STREAM", "ExampleOutputStream")) .setPartitionKeyGenerator(element -> String.valueOf(element.hashCode())) .build(); } public static void main(String[] args) throws Exception { // set up the streaming execution environment final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<String> input = createSourceFromStaticConfig(env); input.addSink(createSinkFromStaticConfig()); env.execute("Flink Streaming Java API Skeleton"); } }
Crie, carregue e execute o aplicativo
Faça o seguinte para atualizar e executar o aplicativo:
Compile o aplicativo novamente executando o comando a seguir no diretório com o arquivo
pom.xml
.mvn package -Dflink.version=1.15.3
Exclua o JAR arquivo anterior do seu bucket do Amazon Simple Storage Service (Amazon S3) e, em seguida, faça o upload do
aws-kinesis-analytics-java-apps-1.0.jar
novo arquivo no bucket do S3.Na página do aplicativo no console Managed Service for Apache Flink, escolha Configurar, Atualizar para recarregar o arquivo do aplicativo. JAR
Execute o script
stock.py
para enviar dados para o fluxo de origem.python stock.py
Agora, o aplicativo lê dados do fluxo do Kinesis na outra conta.
Você pode ver se o aplicativo está funcionando verificando a métrica PutRecords.Bytes
do fluxo ExampleOutputStream
. Se houver atividade no fluxo de saída, o aplicativo está funcionando corretamente.
Tutorial: Usando uma loja confiável personalizada com a Amazon MSK
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
Fonte de dados atual APIs
Se você estiver usando a fonte de dados atualAPIs, seu aplicativo poderá aproveitar o utilitário Amazon MSK Config Providers descrito aqui.
... // define names of config providers: builder.setProperty("config.providers", "secretsmanager,s3import"); // provide implementation classes for each provider: builder.setProperty("config.providers.secretsmanager.class", "com.amazonaws.kafka.config.providers.SecretsManagerConfigProvider"); builder.setProperty("config.providers.s3import.class", "com.amazonaws.kafka.config.providers.S3ImportConfigProvider"); String region = appProperties.get(Helpers.S3_BUCKET_REGION_KEY).toString(); String keystoreS3Bucket = appProperties.get(Helpers.KEYSTORE_S3_BUCKET_KEY).toString(); String keystoreS3Path = appProperties.get(Helpers.KEYSTORE_S3_PATH_KEY).toString(); String truststoreS3Bucket = appProperties.get(Helpers.TRUSTSTORE_S3_BUCKET_KEY).toString(); String truststoreS3Path = appProperties.get(Helpers.TRUSTSTORE_S3_PATH_KEY).toString(); String keystorePassSecret = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_KEY).toString(); String keystorePassSecretField = appProperties.get(Helpers.KEYSTORE_PASS_SECRET_FIELD_KEY).toString(); // region, etc.. builder.setProperty("config.providers.s3import.param.region", region); // properties builder.setProperty("ssl.truststore.location", "${s3import:" + region + ":" + truststoreS3Bucket + "/" + truststoreS3Path + "}"); builder.setProperty("ssl.keystore.type", "PKCS12"); builder.setProperty("ssl.keystore.location", "${s3import:" + region + ":" + keystoreS3Bucket + "/" + keystoreS3Path + "}"); builder.setProperty("ssl.keystore.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}"); builder.setProperty("ssl.key.password", "${secretsmanager:" + keystorePassSecret + ":" + keystorePassSecretField + "}"); ...
Mais detalhes e uma explicação passo a passo podem ser encontrados aqui
Legado SourceFunction APIs
Se você estiver usando o legado SourceFunction APIs, seu aplicativo usará esquemas personalizados de serialização e desserialização que substituem o open
método para carregar o armazenamento confiável personalizado. Isso torna o truststore disponível para o aplicativo após o aplicativo ser reiniciado ou substituído pelos encadeamentos.
O truststore personalizado é recuperado e armazenado usando o seguinte código:
public static void initializeKafkaTruststore() { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); URL inputUrl = classLoader.getResource("kafka.client.truststore.jks"); File dest = new File("/tmp/kafka.client.truststore.jks"); try { FileUtils.copyURLToFile(inputUrl, dest); } catch (Exception ex) { throw new FlinkRuntimeException("Failed to initialize Kakfa truststore", ex); } }
nota
Para configurar os pré-requisitos necessários para este exercício, em primeiro lugar conclua o exercício. Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink
O tutorial a seguir demonstra como se conectar com segurança (criptografia em trânsito) a um cluster do Kafka que usa certificados de servidor emitidos por uma Autoridade Certificadora (AC) personalizada, privada ou, até mesmo, auto-hospedada.
Para conectar qualquer cliente Kafka com segurança TLS a um cluster Kafka, o cliente Kafka (como o aplicativo Flink de exemplo) deve confiar na cadeia de confiança completa apresentada pelos certificados de servidor do cluster Kafka (da CA emissora até a CA de nível raiz). Como exemplo de um armazenamento confiável personalizado, usaremos um MSK cluster da Amazon com a autenticação mútua TLS (MTLS) ativada. Isso significa que os nós do MSK cluster usam certificados de servidor emitidos por uma Autoridade de AWS Certificação Privada (CA ACM privada) do Certificate Manager que é privada de sua conta e região e, portanto, não é confiável para o armazenamento confiável padrão da Java Virtual Machine (JVM) que executa o aplicativo Flink.
nota
-
Um armazenamento de chaves é usado para armazenar a chave privada e os certificados de identidade que um aplicativo deve apresentar ao servidor ou ao cliente para verificação.
-
Um armazenamento confiável é usado para armazenar certificados de Autoridades Certificadas (CA) que verificam o certificado apresentado pelo servidor em uma SSL conexão.
Você também pode usar a técnica deste tutorial para interações entre um aplicativo Managed Service for Apache Flink e outras fontes do Apache Kafka, como:
Um cluster Apache Kafka personalizado hospedado em ( AWS Amazon ou EC2
Amazon) EKS Um cluster Confluent Kafka hospedado em
AWS Um cluster Kafka local acessado por meio de ou AWS Direct Connect
VPN
Este tutorial contém as seguintes seções:
Crie um VPC com um MSK cluster da Amazon
Para criar uma amostra VPC e um MSK cluster da Amazon para acessar a partir de um aplicativo Managed Service for Apache Flink, siga o tutorial Getting Started Using Amazon MSK.
Ao concluir o tutorial, faça também o seguinte:
Na Etapa 3: Crie um tópico, repita o comando
kafka-topics.sh --create
para criar um tópico de destino chamadoAWS KafkaTutorialTopicDestination
:bin/kafka-topics.sh --create --bootstrap-server
ZooKeeperConnectionString
--replication-factor 3 --partitions 1 --topic AWSKafkaTutorialTopicDestinationnota
Se o comando
kafka-topics.sh
retornar umZooKeeperClientTimeoutException
, verifique se o grupo de segurança do cluster do Kafka tem uma regra de entrada para permitir todo o tráfego do endereço IP privado da instância do cliente.Registre a lista de servidores bootstrap do seu cluster. Você pode obter a lista de servidores bootstrap com o seguinte comando (substituir
ClusterArn
com o ARN do seu MSK cluster):aws kafka get-bootstrap-brokers --region us-west-2 --cluster-arn
ClusterArn
{... "BootstrapBrokerStringTls": "b-2.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-1.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094,b-3.awskafkatutorialcluste.t79r6y.c4.kafka.us-west-2.amazonaws.com:9094" }Ao seguir as etapas deste tutorial e os tutoriais de pré-requisitos, certifique-se de usar a AWS região selecionada no código, nos comandos e nas entradas do console.
Crie um armazenamento confiável personalizado e aplique-o ao seu cluster
Nesta seção, você cria uma autoridade de certificação (CA) personalizada, a usa para gerar um armazenamento confiável personalizado e a aplica ao seu MSK cluster.
Para criar e aplicar seu truststore personalizado, siga o tutorial de Autenticação do cliente no Guia do desenvolvedor do Amazon Managed Streaming for Apache Kafka.
Crie o código do aplicativo
Nesta seção, você baixa e compila o JAR arquivo do aplicativo.
O código do aplicativo Java para este exemplo está disponível em GitHub. Para fazer download do código do aplicativo, faça o seguinte:
Instale o cliente do Git se você ainda não tiver feito isso. Para obter mais informações, consulte Instalando o Git
. Duplique o repositório remoto com o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
O código do aplicativo está localizado no
amazon-kinesis-data-analytics-java-examples/CustomKeystore
. Você pode examinar o código para se familiarizar com a estrutura do código do Managed Service for Apache Flink.Use a ferramenta Maven de linha de comando ou seu ambiente de desenvolvimento preferido para criar o JAR arquivo. Para compilar o JAR arquivo usando a ferramenta Maven da linha de comando, digite o seguinte:
mvn package -Dflink.version=1.15.3
Se a compilação for feita com sucesso, o seguinte arquivo será criado:
target/flink-app-1.0-SNAPSHOT.jar
nota
O código-fonte fornecido depende de bibliotecas do Java 11.
Faça o upload do código Java de streaming do Apache Flink
Nesta seção, você faz o upload do código do seu aplicativo no bucket do Amazon S3 que você criou no tutorial Tutorial: Comece a usar o serviço DataStream API gerenciado para Apache Flink.
nota
Se você excluiu o bucket do Amazon S3 no tutorial de introdução, siga a etapa Faça o upload do JAR arquivo de código do aplicativo novamente.
-
No console do Amazon S3, escolha o - ka-app-code
<username>
bucket e escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
flink-app-1.0-SNAPSHOT.jar
que você criou na etapa anterior. Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Runtime, selecione Apache Flink 1.15.2.
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
flink-app-1.0-SNAPSHOT.jar
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
.nota
Quando você especifica recursos do aplicativo usando o console (como registros ou umVPC), o console modifica sua função de execução do aplicativo para conceder permissão para acessar esses recursos.
-
Em Propriedades, selecione Adicionar grupo. Insira as seguintes propriedades:
ID do grupo Chave Valor KafkaSource
tópico AWS KafkaTutorialTopic KafkaSource
bootstrap.servers The bootstrap server list you saved previously
KafkaSource
security.protocol SSL KafkaSource
ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts KafkaSource
ssl.truststore.password changeit nota
O ssl.truststore.password para o certificado padrão é “changeit”; você não precisa alterar esse valor se estiver usando o certificado padrão.
Selecione Adicionar grupo novamente. Insira as seguintes propriedades:
ID do grupo Chave Valor KafkaSink
tópico AWS KafkaTutorialTopicDestination KafkaSink
bootstrap.servers The bootstrap server list you saved previously
KafkaSink
security.protocol SSL KafkaSink
ssl.truststore.location /usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts KafkaSink
ssl.truststore.password changeit KafkaSink
transaction.timeout.ms 1000 O código do aplicativo lê as propriedades do aplicativo acima para configurar a fonte e o coletor usados para interagir com o seu MSK cluster VPC e o da Amazon. Para obter mais informações sobre usar as propriedades, consulte Use propriedades de tempo de execução.
-
Em Snapshots, selecione Desativar. Isso facilitará a atualização do aplicativo sem carregar dados inválidos do estado do aplicativo.
-
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, escolha a caixa de seleção Ativar.
-
Na seção Virtual Private Cloud (VPC), escolha a VPC para associar ao seu aplicativo. Escolha as sub-redes e o grupo de segurança associados à sua VPC que você deseja que o aplicativo use para acessar VPC os recursos.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro, o Managed Service for Apache Flink cria um grupo de registros e um fluxo de registros para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Esse fluxo de logs é usado para monitorar o aplicativo.
Execute o aplicativo
O gráfico de tarefas do Flink pode ser visualizado executando o aplicativo, abrindo o painel do Apache Flink e selecionando a tarefa desejada do Flink.
Teste o aplicativo
Nesta seção, você grava registros no tópico de origem. O aplicativo lê registros do tópico de origem e os grava no tópico de destino. Você verifica se o aplicativo está funcionando gravando registros no tópico de origem e lendo registros do tópico de destino.
Para escrever e ler registros dos tópicos, siga as etapas na Etapa 6: Produzir e consumir dados no MSK tutorial Getting Started Using Amazon.
Para ler o tópico de destino, use o nome do tópico de destino em vez do nome do tópico de origem em sua segunda conexão com o cluster:
bin/kafka-console-consumer.sh --bootstrap-server
BootstrapBrokerString
--consumer.config client.properties --topic AWS KafkaTutorialTopicDestination --from-beginning
Se nenhum registro aparecer no tópico de destino, consulte a seção Não é possível acessar recursos em um VPC no tópico Solucionar problemas de serviço gerenciado para Apache Flink.
Exemplos de Python
Os exemplos a seguir demonstram como criar aplicativos usando Python com a tabela Apache Flink. API
Tópicos
Exemplo: criação de uma janela giratória em Python
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
Neste exercício, você cria um aplicativo Python Managed Service for Apache Flink que agrega dados usando uma janela em cascata.
nota
Para configurar os pré-requisitos necessários para este exercício, primeiro conclua o exercício Tutorial: Comece a usar o Python no Managed Service para Apache Flink.
Este tópico contém as seguintes seções:
Crie recursos dependentes
Antes de criar um aplicativo Managed Service for Apache Flink para este exercício, você cria os seguintes recursos dependentes:
Dois fluxos de dados do Kinesis (
ExampleInputStream
eExampleOutputStream
)Um bucket do Amazon S3 para armazenar o código do aplicativo (
ka-app-code-
)<username>
Você pode criar os fluxos do Kinesis e o bucket do Amazon S3 usando o console. Para obter instruções sobre como criar esses recursos, consulte os tópicos a seguir:
Criando e atualizando fluxos de dados no Guia do desenvolvedor do Amazon Kinesis Data Streams. Nomeie seus fluxos de dados
ExampleInputStream
eExampleOutputStream
.Para obter instruções, consulte Como criar um bucket do S3? no Guia do usuário do Amazon Simple Storage Service. Dê ao bucket do Amazon S3 um nome globalmente exclusivo anexando seu nome de login, como
ka-app-code-
.<username>
Grave registros de amostra no fluxo de entrada
Nesta seção, você usa um script Python para gravar registros de amostra no fluxo para o aplicativo processar.
nota
Essa seção requer AWS SDK for Python (Boto)
nota
O script do Python nesta seção usa o AWS CLI. Você deve configurar seu AWS CLI para usar as credenciais da sua conta e a região padrão. Para configurar seu AWS CLI, digite o seguinte:
aws configure
-
Crie um arquivo denominado
stock.py
com o conteúdo a seguir:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Execute o script
stock.py
:$ python stock.py
Mantenha o script em execução enquanto você conclui o restante do tutorial.
Baixe e examine o código do aplicativo
O código do aplicativo Python para este exemplo está disponível em. GitHub Para fazer download do código do aplicativo, faça o seguinte:
Instale o cliente do Git se você ainda não tiver feito isso. Para obter mais informações, consulte Instalando o Git
. Duplique o repositório remoto com o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/python/TumblingWindow
.
O código do aplicativo está localizado no arquivo tumbling-windows.py
. Observe o seguinte sobre o código do aplicativo:
O aplicativo usa uma origem de tabela do Kinesis para ler o fluxo de origem. O trecho a seguir chama a função
create_table
para criar a origem de tabela Kinesis:table_env.execute_sql( create_input_table(input_table_name, input_stream, input_region, stream_initpos) )
A
create_table
função usa um SQL comando para criar uma tabela que é apoiada pela fonte de streaming:def create_input_table(table_name, stream_name, region, stream_initpos): return """ CREATE TABLE {0} ( ticker VARCHAR(6), price DOUBLE, event_time TIMESTAMP(3), WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND ) PARTITIONED BY (ticker) WITH ( 'connector' = 'kinesis', 'stream' = '{1}', 'aws.region' = '{2}', 'scan.stream.initpos' = '{3}', 'format' = 'json', 'json.timestamp-format.standard' = 'ISO-8601' ) """.format(table_name, stream_name, region, stream_initpos)
O aplicativo usa o operador
Tumble
para agregar registros em uma janela em cascata especificada e retornar os registros agregados como um objeto de tabela:tumbling_window_table = ( input_table.window( Tumble.over("10.seconds").on("event_time").alias("ten_second_window") ) .group_by("ticker, ten_second_window") .select("ticker, price.min as price, to_string(ten_second_window.end) as event_time")
O aplicativo usa o conector Kinesis Flink, do
flink-sql-connector-kinesis-1.15.2.jar
.
Comprima e faça o upload do código Python de streaming do Apache Flink
Nesta seção, você faz o upload do seu aplicativo no bucket do Amazon S3 que você criou na seção Crie recursos dependentes.
Use seu aplicativo de compressão preferido para comprimir os arquivos
tumbling-windows.py
eflink-sql-connector-kinesis-1.15.2.jar
. Nomeie o arquivo comomyapp.zip
.-
No console do Amazon S3, escolha o - ka-app-code
<username>
bucket e escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
myapp.zip
que você criou na etapa anterior. Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o serviço gerenciado para o aplicativo Apache Flink
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Runtime, selecione Apache Flink.
nota
O Managed Service for Apache Flink usa o Apache Flink versão 1.15.2.
Deixe o menu suspenso de versão como Apache Flink versão 1.15.2 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
myapp.zip
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Em Propriedades, selecione Adicionar grupo.
-
Insira o seguinte:
ID do grupo Chave Valor consumer.config.0
input.stream.name
ExampleInputStream
consumer.config.0
aws.region
us-west-2
consumer.config.0
scan.stream.initpos
LATEST
Selecione Save (Salvar).
Em Propriedades, selecione Adicionar grupo novamente.
Insira o seguinte:
ID do grupo Chave Valor producer.config.0
output.stream.name
ExampleOutputStream
producer.config.0
aws.region
us-west-2
producer.config.0
shard.count
1
Em Propriedades, selecione Adicionar grupo novamente. Em ID do grupo, digite
kinesis.analytics.flink.run.options
. Esse grupo de propriedades especiais informa ao aplicativo onde encontrar seus recursos de código. Para obter mais informações, consulte Especifique seus arquivos de código.Insira o seguinte:
ID do grupo Chave Valor kinesis.analytics.flink.run.options
python
tumbling-windows.py
kinesis.analytics.flink.run.options
jarfile
flink-sql-connector-kinesis-1.15.2.jar
-
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, marque a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro, o Managed Service for Apache Flink cria um grupo de registros e um fluxo de registros para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Esse fluxo de logs é usado para monitorar o aplicativo. Esse não é o mesmo fluxo de logs que o aplicativo usa para enviar resultados.
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar os fluxos de dados do Kinesis.
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*", "arn:aws:s3:::ka-app-code-<username>
/myapp.zip" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Execute o aplicativo
O gráfico de tarefas do Flink pode ser visualizado executando o aplicativo, abrindo o painel do Apache Flink e selecionando a tarefa desejada do Flink.
Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console para verificar se o aplicativo está funcionando.
Limpe AWS os recursos
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial Tumbling Window.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
no painel Managed Service for Apache Flink, escolha. MyApplication
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seus streams de dados do Kinesis
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
No painel Kinesis Data Streams, escolha. ExampleInputStream
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
Na página Kinesis Streams, escolha o, escolha Ações ExampleOutputStream, escolha Excluir e confirme a exclusão.
Exclua seu objeto e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Escolha o ka-app-code -
<username>
balde.Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. Na barra de navegação, selecione Políticas.
No controle do filtro, insira kinesis.
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
Selecione Ações da política e, em seguida, Excluir.
Na barra de navegação, selecione Roles (Funções).
Escolha a função kinesis-analytics- MyApplication -us-west-2.
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. No painel de navegação, selecione Logs.
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Exemplo: criação de uma janela deslizante em Python
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
nota
Para configurar os pré-requisitos necessários para este exercício, primeiro conclua o exercício Tutorial: Comece a usar o Python no Managed Service para Apache Flink.
Este tópico contém as seguintes seções:
Crie recursos dependentes
Antes de criar um aplicativo Managed Service for Apache Flink para este exercício, você cria os seguintes recursos dependentes:
Dois fluxos de dados do Kinesis (
ExampleInputStream
eExampleOutputStream
)Um bucket do Amazon S3 para armazenar o código do aplicativo (
ka-app-code-
)<username>
Você pode criar os fluxos do Kinesis e o bucket do Amazon S3 usando o console. Para obter instruções sobre como criar esses recursos, consulte os tópicos a seguir:
Criando e atualizando fluxos de dados no Guia do desenvolvedor do Amazon Kinesis Data Streams. Nomeie seus fluxos de dados
ExampleInputStream
eExampleOutputStream
.Para obter instruções, consulte Como criar um bucket do S3? no Guia do usuário do Amazon Simple Storage Service. Dê ao bucket do Amazon S3 um nome globalmente exclusivo anexando seu nome de login, como
ka-app-code-
.<username>
Grave registros de amostra no fluxo de entrada
Nesta seção, você usa um script Python para gravar registros de amostra no fluxo para o aplicativo processar.
nota
Essa seção requer AWS SDK for Python (Boto)
nota
O script do Python nesta seção usa o AWS CLI. Você deve configurar seu AWS CLI para usar as credenciais da sua conta e a região padrão. Para configurar seu AWS CLI, digite o seguinte:
aws configure
-
Crie um arquivo denominado
stock.py
com o conteúdo a seguir:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Execute o script
stock.py
:$ python stock.py
Mantenha o script em execução enquanto você conclui o restante do tutorial.
Baixe e examine o código do aplicativo
O código do aplicativo Python para este exemplo está disponível em. GitHub Para fazer download do código do aplicativo, faça o seguinte:
Instale o cliente do Git se você ainda não tiver feito isso. Para obter mais informações, consulte Instalando o Git
. Duplique o repositório remoto com o seguinte comando:
git clone https://github.com/aws-samples/>amazon-kinesis-data-analytics-java-examples
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/python/SlidingWindow
.
O código do aplicativo está localizado no arquivo sliding-windows.py
. Observe o seguinte sobre o código do aplicativo:
O aplicativo usa uma origem de tabela do Kinesis para ler o fluxo de origem. O trecho a seguir chama a função
create_input_table
para criar a origem de tabela Kinesis:table_env.execute_sql( create_input_table(input_table_name, input_stream, input_region, stream_initpos) )
A
create_input_table
função usa um SQL comando para criar uma tabela que é apoiada pela fonte de streaming:def create_input_table(table_name, stream_name, region, stream_initpos): return """ CREATE TABLE {0} ( ticker VARCHAR(6), price DOUBLE, event_time TIMESTAMP(3), WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND ) PARTITIONED BY (ticker) WITH ( 'connector' = 'kinesis', 'stream' = '{1}', 'aws.region' = '{2}', 'scan.stream.initpos' = '{3}', 'format' = 'json', 'json.timestamp-format.standard' = 'ISO-8601' ) """.format(table_name, stream_name, region, stream_initpos) }
O aplicativo usa o operador
Slide
para agregar registros em uma janela deslizante especificada e retornar os registros agregados como um objeto de tabela:sliding_window_table = ( input_table .window( Slide.over("10.seconds") .every("5.seconds") .on("event_time") .alias("ten_second_window") ) .group_by("ticker, ten_second_window") .select("ticker, price.min as price, to_string(ten_second_window.end) as event_time") )
O aplicativo usa o conector Kinesis Flink, do arquivo -1.15.2.jar. flink-sql-connector-kinesis
Comprima e faça o upload do código Python de streaming do Apache Flink
Nesta seção, você faz o upload do seu aplicativo no bucket do Amazon S3 que você criou na seção Crie recursos dependentes.
Esta seção descreve como empacotar seu aplicativo Python.
Use seu aplicativo de compressão preferido para comprimir os arquivos
sliding-windows.py
eflink-sql-connector-kinesis-1.15.2.jar
. Nomeie o arquivo comomyapp.zip
.-
No console do Amazon S3, escolha o - ka-app-code
<username>
bucket e escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
myapp.zip
que você criou na etapa anterior. Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o serviço gerenciado para o aplicativo Apache Flink
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Runtime, selecione Apache Flink.
nota
O Managed Service for Apache Flink usa o Apache Flink versão 1.15.2.
Deixe o menu suspenso de versão como Apache Flink versão 1.15.2 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
myapp.zip
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Em Propriedades, selecione Adicionar grupo.
-
Insira as seguintes propriedades e valores de aplicativo:
ID do grupo Chave Valor consumer.config.0
input.stream.name
ExampleInputStream
consumer.config.0
aws.region
us-west-2
consumer.config.0
scan.stream.initpos
LATEST
Selecione Save (Salvar).
Em Propriedades, selecione Adicionar grupo novamente.
Insira as seguintes propriedades e valores de aplicativo:
ID do grupo Chave Valor producer.config.0
output.stream.name
ExampleOutputStream
producer.config.0
aws.region
us-west-2
producer.config.0
shard.count
1
Em Propriedades, selecione Adicionar grupo novamente. Em ID do grupo, digite
kinesis.analytics.flink.run.options
. Esse grupo de propriedades especiais informa ao aplicativo onde encontrar seus recursos de código. Para obter mais informações, consulte Especifique seus arquivos de código.Insira as seguintes propriedades e valores de aplicativo:
ID do grupo Chave Valor kinesis.analytics.flink.run.options
python
sliding-windows.py
kinesis.analytics.flink.run.options
jarfile
flink-sql-connector-kinesis_1.15.2.jar
-
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, marque a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro, o Managed Service for Apache Flink cria um grupo de registros e um fluxo de registros para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Esse fluxo de logs é usado para monitorar o aplicativo. Esse não é o mesmo fluxo de logs que o aplicativo usa para enviar resultados.
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar os fluxos de dados do Kinesis.
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*", "arn:aws:s3:::ka-app-code-<username>
/myapp.zip" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" }
Execute o aplicativo
O gráfico de tarefas do Flink pode ser visualizado executando o aplicativo, abrindo o painel do Apache Flink e selecionando a tarefa desejada do Flink.
Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console para verificar se o aplicativo está funcionando.
Limpe AWS os recursos
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial Sliding Window.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
no painel Managed Service for Apache Flink, escolha. MyApplication
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seus streams de dados do Kinesis
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
No painel Kinesis Data Streams, escolha. ExampleInputStream
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
Na página Kinesis Streams, escolha o, escolha Ações ExampleOutputStream, escolha Excluir e confirme a exclusão.
Exclua seu objeto e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Escolha o ka-app-code -
<username>
balde.Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. Na barra de navegação, selecione Políticas.
No controle do filtro, insira kinesis.
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
Selecione Ações da política e, em seguida, Excluir.
Na barra de navegação, selecione Roles (Funções).
Escolha a função kinesis-analytics- MyApplication -us-west-2.
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. No painel de navegação, selecione Logs.
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Exemplo: enviar dados de streaming para o Amazon S3 em Python
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
Neste exercício, você cria um aplicativo Managed Service for Apache Flink em Python que transmite dados para um coletor do Amazon Simple Storage Service.
nota
Para configurar os pré-requisitos necessários para este exercício, primeiro conclua o exercício Tutorial: Comece a usar o Python no Managed Service para Apache Flink.
Este tópico contém as seguintes seções:
Crie recursos dependentes
Antes de criar um aplicativo Managed Service for Apache Flink para este exercício, você cria os seguintes recursos dependentes:
Um fluxo de dados do Kinesis (
ExampleInputStream
)Um bucket do Amazon S3 para armazenar o código e saída do aplicativo (
ka-app-code-
)<username>
nota
O Managed Service for Apache Flink não pode gravar dados no Amazon S3 com a criptografia do lado do servidor habilitada no Managed Service for Apache Flink.
Você pode criar o fluxo de dados do Kinesis e um bucket do Amazon S3 usando o console. Para obter instruções sobre como criar esses recursos, consulte os tópicos a seguir:
Criando e atualizando fluxos de dados no Guia do desenvolvedor do Amazon Kinesis Data Streams. Nomeie seu fluxo de dados
ExampleInputStream
.Para obter instruções, consulte Como criar um bucket do S3? no Guia do usuário do Amazon Simple Storage Service. Dê ao bucket do Amazon S3 um nome globalmente exclusivo anexando seu nome de login, como
ka-app-code-
.<username>
Grave registros de amostra no fluxo de entrada
Nesta seção, você usa um script Python para gravar registros de amostra no fluxo para o aplicativo processar.
nota
Essa seção requer AWS SDK for Python (Boto)
nota
O script do Python nesta seção usa o AWS CLI. Você deve configurar seu AWS CLI para usar as credenciais da sua conta e a região padrão. Para configurar seu AWS CLI, digite o seguinte:
aws configure
-
Crie um arquivo denominado
stock.py
com o conteúdo a seguir:import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
-
Execute o script
stock.py
:$ python stock.py
Mantenha o script em execução enquanto você conclui o restante do tutorial.
Baixe e examine o código do aplicativo
O código do aplicativo Python para este exemplo está disponível em. GitHub Para fazer download do código do aplicativo, faça o seguinte:
Instale o cliente do Git se você ainda não tiver feito isso. Para obter mais informações, consulte Instalando o Git
. Duplique o repositório remoto com o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/python/S3Sink
.
O código do aplicativo está localizado no arquivo streaming-file-sink.py
. Observe o seguinte sobre o código do aplicativo:
O aplicativo usa uma origem de tabela do Kinesis para ler o fluxo de origem. O trecho a seguir chama a função
create_source_table
para criar a origem de tabela Kinesis:table_env.execute_sql( create_source_table(input_table_name, input_stream, input_region, stream_initpos) )
A
create_source_table
função usa um SQL comando para criar uma tabela que é apoiada pela fonte de streaming.import datetime import json import random import boto3 STREAM_NAME = "ExampleInputStream" def get_data(): return { 'event_time': datetime.datetime.now().isoformat(), 'ticker': random.choice(['AAPL', 'AMZN', 'MSFT', 'INTC', 'TBV']), 'price': round(random.random() * 100, 2)} def generate(stream_name, kinesis_client): while True: data = get_data() print(data) kinesis_client.put_record( StreamName=stream_name, Data=json.dumps(data), PartitionKey="partitionkey") if __name__ == '__main__': generate(STREAM_NAME, boto3.client('kinesis', region_name='us-west-2'))
O aplicativo usa o conector
filesystem
para enviar registros para um bucket do Amazon S3:def create_sink_table(table_name, bucket_name): return """ CREATE TABLE {0} ( ticker VARCHAR(6), price DOUBLE, event_time VARCHAR(64) ) PARTITIONED BY (ticker) WITH ( 'connector'='filesystem', 'path'='s3a://{1}/', 'format'='json', 'sink.partition-commit.policy.kind'='success-file', 'sink.partition-commit.delay' = '1 min' ) """.format(table_name, bucket_name)
O aplicativo usa o conector Kinesis Flink, do arquivo -1.15.2.jar. flink-sql-connector-kinesis
Comprima e faça o upload do código Python de streaming do Apache Flink
Nesta seção, você faz o upload do seu aplicativo no bucket do Amazon S3 que você criou na seção Crie recursos dependentes.
Use seu aplicativo de compactação preferido para compactar os arquivos
streaming-file-sink.py
e flink-sql-connector-kinesis-1.15.2.jar. Nomeie o arquivo como myapp.zip
.-
No console do Amazon S3, escolha o - ka-app-code
<username>
bucket e escolha Upload. -
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
myapp.zip
que você criou na etapa anterior. Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o serviço gerenciado para o aplicativo Apache Flink
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Runtime, selecione Apache Flink.
nota
O Managed Service for Apache Flink usa o Apache Flink versão 1.15.2.
Deixe o menu suspenso de versão como Apache Flink versão 1.15.2 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
myapp.zip
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Em Propriedades, selecione Adicionar grupo.
-
Insira as seguintes propriedades e valores de aplicativo:
ID do grupo Chave Valor consumer.config.0
input.stream.name
ExampleInputStream
consumer.config.0
aws.region
us-west-2
consumer.config.0
scan.stream.initpos
LATEST
Selecione Save (Salvar).
Em Propriedades, selecione Adicionar grupo novamente. Em ID do grupo, digite
kinesis.analytics.flink.run.options
. Esse grupo de propriedades especiais informa ao aplicativo onde encontrar seus recursos de código. Para obter mais informações, consulte Especifique seus arquivos de código.Insira as seguintes propriedades e valores de aplicativo:
ID do grupo Chave Valor kinesis.analytics.flink.run.options
python
streaming-file-sink.py
kinesis.analytics.flink.run.options
jarfile
S3Sink/lib/flink-sql-connector-kinesis-1.15.2.jar
Em Propriedades, selecione Adicionar grupo novamente. Em ID do grupo, digite
sink.config.0
. Esse grupo de propriedades especiais informa ao aplicativo onde encontrar seus recursos de código. Para obter mais informações, consulte Especifique seus arquivos de código.Insira as seguintes propriedades e valores do aplicativo: (substituir
bucket-name
com o nome real do seu bucket do Amazon S3.)ID do grupo Chave Valor sink.config.0
output.bucket.name
bucket-name
-
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, marque a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro, o Managed Service for Apache Flink cria um grupo de registros e um fluxo de registros para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Esse fluxo de logs é usado para monitorar o aplicativo. Esse não é o mesmo fluxo de logs que o aplicativo usa para enviar resultados.
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar os fluxos de dados do Kinesis.
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "logs:DescribeLogGroups", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*", "arn:aws:s3:::ka-app-code-<username>
/myapp.zip" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": "logs:DescribeLogStreams", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": "logs:PutLogEvents", "Resource": "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:
] }012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteObjects", "Effect": "Allow", "Action": [ "s3:Abort*", "s3:DeleteObject*", "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ka-app-code-<username>", "arn:aws:s3:::ka-app-code-<username>/*" ] }
Execute o aplicativo
O gráfico de tarefas do Flink pode ser visualizado executando o aplicativo, abrindo o painel do Apache Flink e selecionando a tarefa desejada do Flink.
Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console para verificar se o aplicativo está funcionando.
Limpe AWS os recursos
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial Sliding Window.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
no painel Managed Service for Apache Flink, escolha. MyApplication
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seu stream de dados do Kinesis
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
No painel Kinesis Data Streams, escolha. ExampleInputStream
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
Exclua seus objetos e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Escolha o ka-app-code -
<username>
balde.Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. Na barra de navegação, selecione Políticas.
No controle do filtro, insira kinesis.
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
Selecione Ações da política e, em seguida, Excluir.
Na barra de navegação, selecione Roles (Funções).
Escolha a função kinesis-analytics- MyApplication -us-west-2.
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. No painel de navegação, selecione Logs.
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Exemplos de Scala
Os exemplos a seguir demonstram como criar aplicativos usando o Scala com o Apache Flink.
Tópicos
Exemplo: criação de uma janela giratória no Scala
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
nota
A partir da versão 1.15, o Flink não tem mais o Scala. Agora, os aplicativos podem usar o Java API de qualquer versão do Scala. O Flink ainda usa o Scala em alguns componentes importantes internamente, mas não expõe o Scala no carregador de classes do código do usuário. Por isso, os usuários precisam adicionar dependências do Scala em seus arquivos jar.
Para obter mais informações sobre as mudanças do Scala no Flink 1.15, consulte Sem o Scala na versão 1.15
Neste exercício, você criará um aplicativo de streaming simples que usa o Scala 3.2.0 e o Java do Flink. DataStream API O aplicativo lê os dados do fluxo do Kinesis, os agrega usando janelas deslizantes e grava os resultados no fluxo de saída do Kinesis.
nota
Para configurar os pré-requisitos necessários para este exercício, conclua primeiro o exercício Introdução (Scala).
Este tópico contém as seguintes seções:
Baixe e examine o código do aplicativo
O código do aplicativo Python para este exemplo está disponível em. GitHub Para fazer download do código do aplicativo, faça o seguinte:
Instale o cliente do Git se você ainda não tiver feito isso. Para obter mais informações, consulte Instalando o Git
. Duplique o repositório remoto com o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/scala/TumblingWindow
.
Observe o seguinte sobre o código do aplicativo:
Um arquivo
build.sbt
contém informações sobre a configuração e as dependências do aplicativo, incluindo as bibliotecas do Managed Service for Apache Flink.O arquivo
BasicStreamingJob.scala
contém o método principal que define a funcionalidade do aplicativo.O aplicativo usa uma origem do Kinesis para ler o fluxo de origem. O trecho a seguir cria a origem do Kinesis:
private def createSource: FlinkKinesisConsumer[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val inputProperties = applicationProperties.get("ConsumerConfigProperties") new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName), new SimpleStringSchema, inputProperties) }
O aplicativo também usa um coletor do Kinesis para gravar no fluxo de resultados. O trecho a seguir cria o coletor do Kinesis:
private def createSink: KinesisStreamsSink[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val outputProperties = applicationProperties.get("ProducerConfigProperties") KinesisStreamsSink.builder[String] .setKinesisClientProperties(outputProperties) .setSerializationSchema(new SimpleStringSchema) .setStreamName(outputProperties.getProperty(streamNameKey, defaultOutputStreamName)) .setPartitionKeyGenerator((element: String) => String.valueOf(element.hashCode)) .build }
O aplicativo usa o operador de janela para encontrar a contagem de valores para cada símbolo de ação em uma janela em cascata de cinco segundos. O código a seguir cria o operador e envia os dados agregados para um novo coletor de fluxo de dados do Kinesis:
environment.addSource(createSource) .map { value => val jsonNode = jsonParser.readValue(value, classOf[JsonNode]) new Tuple2[String, Int](jsonNode.get("ticker").toString, 1) } .returns(Types.TUPLE(Types.STRING, Types.INT)) .keyBy(v => v.f0) // Logically partition the stream for each ticker .window(TumblingProcessingTimeWindows.of(Time.seconds(10))) .sum(1) // Sum the number of tickers per partition .map { value => value.f0 + "," + value.f1.toString + "\n" } .sinkTo(createSink)
O aplicativo cria conectores de origem e coletor para acessar recursos externos usando um StreamExecutionEnvironment objeto.
O aplicativo cria conectores de origem e de coletores usando propriedades dinâmicas do aplicativo. As propriedades de runtime do aplicativo para ler e configurar os conectores. Para obter mais informações sobre as propriedades de runtime, consulte Propriedades de runtime.
Compile e faça o upload do código do aplicativo
Nesta seção, você compila e faz o upload do código do aplicativo para um bucket do Amazon S3.
Compilar o código do aplicativo
Use a ferramenta de SBT
Para usar o código do aplicativo, você o compila e o empacota em um JAR arquivo. Você pode compilar e empacotar seu código comSBT:
sbt assembly
-
Se o aplicativo for compilado com êxito, o arquivo a seguir é criado:
target/scala-3.2.0/tumbling-window-scala-1.0.jar
Faça o upload do código Scala do Apache Flink Streaming
Nesta seção, você cria um bucket do Amazon S3 e faz upload do código do seu aplicativo.
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Selecione Create bucket (Criar bucket)
Insira
ka-app-code-<username>
no campo Nome do bucket. Adicione um sufixo para o nome do bucket, como o nome do usuário, para torná-lo globalmente exclusivo. Selecione Next (Próximo).Na etapa Configurar opções, mantenha as configurações como estão e selecione Próximo.
Na etapa Definir permissões, mantenha as configurações como estão e selecione Próximo.
Selecione Criar bucket.
Selecione o bucket
ka-app-code-<username>
e, em seguida, selecione Upload.-
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
tumbling-window-scala-1.0.jar
que você criou na etapa anterior. Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o aplicativo (console)
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Descrição, insira
My Scala test app
. -
Em Runtime, selecione Apache Flink.
-
Deixe a versão como Apache Flink versão 1.15.2 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Configurar o aplicativo
Siga o procedimento a seguir para configurar o aplicativo.
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
tumbling-window-scala-1.0.jar
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Em Propriedades, selecione Adicionar grupo.
-
Insira o seguinte:
ID do grupo Chave Valor ConsumerConfigProperties
input.stream.name
ExampleInputStream
ConsumerConfigProperties
aws.region
us-west-2
ConsumerConfigProperties
flink.stream.initpos
LATEST
Selecione Save (Salvar).
Em Propriedades, selecione Adicionar grupo novamente.
Insira o seguinte:
ID do grupo Chave Valor ProducerConfigProperties
output.stream.name
ExampleOutputStream
ProducerConfigProperties
aws.region
us-west-2
-
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, escolha a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro na Amazon, o Managed Service for Apache Flink cria um grupo de logs e um stream de logs para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar o bucket do Amazon S3.
Para editar a IAM política para adicionar permissões de bucket do S3
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/tumbling-window-scala-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Execute o aplicativo
O gráfico de tarefas do Flink pode ser visualizado executando o aplicativo, abrindo o painel do Apache Flink e selecionando a tarefa desejada do Flink.
Pare o aplicativo
Para interromper o aplicativo, na MyApplicationpágina, escolha Parar. Confirme a ação.
Crie e execute o aplicativo (CLI)
Nesta seção, você usa o AWS Command Line Interface para criar e executar o aplicativo Managed Service for Apache Flink. Use o AWS CLI comando kinesisanalyticsv2 para criar e interagir com o Managed Service para aplicativos Apache Flink.
Criação de uma política de permissões
nota
Você deve criar uma política de permissões e uma função para o seu aplicativo. Se você não criar esses IAM recursos, seu aplicativo não poderá acessar seus fluxos de dados e registros.
Primeiro, crie uma política de permissões com duas instruções: uma que concede permissões para a ação de ler no fluxo de origem, e outra que concede permissões para ações de gravação no fluxo de coleta. Em seguida, você anexa a política a uma IAM função (que você cria na próxima seção). Assim, ao assumir o perfil, o serviço Managed Service for Apache Flink terá as permissões necessárias para ler o fluxo de origem e gravar no fluxo de coleta.
Use o código a seguir para criar a política de permissões AKReadSourceStreamWriteSinkStream
. Substitua username
pelo nome de usuário que você usou para criar o bucket do Amazon S3 e armazenar o código do aplicativo. Substitua o ID da conta nos Amazon Resource Names (ARNs) (012345678901)
pelo ID da sua conta. A função MF-stream-rw-role
de execução do serviço deve ser adaptada à função específica do cliente.
{ "ApplicationName": "tumbling_window", "ApplicationDescription": "Scala tumbling window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/
MF-stream-rw-role
", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-username
", "FileKey": "tumbling-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901
:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
Para step-by-step obter instruções sobre como criar uma política de permissões, consulte o Tutorial: Criar e anexar sua primeira política gerenciada pelo cliente no Guia IAM do usuário.
Crie uma IAM função
Nesta seção, você cria uma IAM função que o aplicativo Managed Service for Apache Flink pode assumir para ler um fluxo de origem e gravar no stream do coletor.
O Managed Service for Apache Flink não pode acessar seu fluxo sem permissões. Você concede essas permissões por meio de uma IAM função. Cada IAM função tem duas políticas anexadas. A política de confiança concede ao Managed Service for Apache Flink permissão para assumir o perfil, e a política de permissões determina o que o serviço pode fazer depois de assumir a função.
Você anexa a política de permissões que criou na seção anterior a essa função.
Para criar uma função do IAM
Abra o IAM console em https://console.aws.amazon.com/iam/
. No painel de navegação, selecione Perfis e Criar perfil.
Em Selecionar tipo de identidade de confiança, selecione AWS Serviço
Em Choose the service that will use this role (Selecionar o serviço que usará esta função), selecione Kinesis.
Em Selecione seu caso de uso, selecione Managed Service for Apache Flink.
Selecione Next: Permissions (Próximo: permissões).
Na página Attach permissions policies, selecione Next: Review. Você pode anexar políticas de permissões depois de criar a função.
Na página Create role (Criar função), insira
MF-stream-rw-role
para o Role name (Nome da função). Selecione Criar função.Agora você criou uma nova IAM função chamada
MF-stream-rw-role
. Em seguida, você atualiza as políticas de confiança e de permissões para a funçãoAnexe a política de permissões à função.
nota
Para este exercício, o Managed Service for Apache Flink assume esse perfil para ler dados de um fluxo de dados do Kinesis (origem) e gravar a saída em outro fluxo de dados do Kinesis. Depois, você anexa a política que criou na etapa anterior, Crie uma política de permissões.
Na página Summary (Resumo), selecione a guia Permissions (Permissões).
Selecione Attach Policies.
Na caixa de pesquisa, insira
AKReadSourceStreamWriteSinkStream
(a política que você criou na seção anterior).Selecione a política
AKReadSourceStreamWriteSinkStream
e selecione Anexar política.
Agora você criou a função de execução de serviço que seu aplicativo usa para acessar os recursos. Anote ARN a nova função.
Para step-by-step obter instruções sobre como criar uma função, consulte Criação de uma IAM função (console) no Guia IAM do usuário.
Criar o aplicativo
Salve o JSON código a seguir em um arquivo chamadocreate_request.json
. Substitua ARN a função de ARN exemplo pela função que você criou anteriormente. Substitua o ARN sufixo do bucket (nome de usuário) pelo sufixo que você escolheu na seção anterior. Substitua o ID da conta de exemplo (012345678901) na função de execução do serviço pelo ID da conta. ServiceExecutionRole
Deve incluir a função de IAM usuário que você criou na seção anterior.
"ApplicationName": "tumbling_window", "ApplicationDescription": "Scala getting started application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-
username
", "FileKey": "tumbling-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901
:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
Execute o CreateApplicationcom a seguinte solicitação para criar o aplicativo:
aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
O aplicativo agora é criado. Você inicia o aplicativo na próxima etapa.
Inicie o aplicativo
Nesta seção, você usa a StartApplicationação para iniciar o aplicativo.
Para iniciar o aplicativo
Salve o JSON código a seguir em um arquivo chamado
start_request.json
.{ "ApplicationName": "tumbling_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
Execute a ação
StartApplication
com a solicitação anterior para iniciar o aplicativo:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
O aplicativo agora está em execução. Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console da Amazon para verificar se o aplicativo está funcionando.
Pare o aplicativo
Nesta seção, você usa a StopApplicationação para interromper o aplicativo.
Como interromper o aplicativo
Salve o JSON código a seguir em um arquivo chamado
stop_request.json
.{ "ApplicationName": "tumbling_window" }
Execute a ação
StopApplication
com a solicitação anterior para interromper o aplicativo:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
O aplicativo agora está interrompido.
Adicionar uma opção de CloudWatch registro
Você pode usar o AWS CLI para adicionar um stream de CloudWatch log da Amazon ao seu aplicativo. Para obter informações sobre como usar o CloudWatch Logs com seu aplicativo, consulte Como configurar o registro de aplicativos.
Atualizar propriedades do ambiente
Nesta seção, você usa a UpdateApplicationação para alterar as propriedades do ambiente do aplicativo sem recompilar o código do aplicativo. Neste exemplo, você altera a região dos fluxos de origem e destino.
Para atualizar propriedades de ambiente para o aplicativo
Salve o JSON código a seguir em um arquivo chamado
update_properties_request.json
.{"ApplicationName": "tumbling_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } } }
Execute a ação
UpdateApplication
com a solicitação anterior para atualizar as propriedades do ambiente:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Atualizar o código do aplicativo
Quando precisar atualizar o código do aplicativo com uma nova versão do pacote de código, use a UpdateApplicationCLIação.
nota
Para carregar uma nova versão do código do aplicativo com o mesmo nome de arquivo, você deve especificar a nova versão do objeto. Para obter mais informações sobre o uso de versões de objetos do Amazon S3, consulte Como ativar ou desativar o controle de versão.
Para usar o AWS CLI, exclua seu pacote de código anterior do bucket do Amazon S3, faça o upload da nova versão e ligueUpdateApplication
, especificando o mesmo nome de bucket e objeto do Amazon S3 e a nova versão do objeto. O aplicativo será reiniciado com o novo pacote de código.
O exemplo de solicitação da UpdateApplication
ação a seguir recarrega o código do aplicativo e reinicia o aplicativo. Atualize o CurrentApplicationVersionId
para a versão atual do aplicativo. Você pode verificar a versão atual do aplicativo usando as ações DescribeApplication
ou ListApplications
. Atualize o sufixo do nome do bucket (<username>) com o sufixo que você selecionou na seção Crie recursos dependentes.
{ "ApplicationName": "tumbling_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-
username
", "FileKeyUpdate": "tumbling-window-scala-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }
Limpe AWS os recursos
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial Tumbling Window.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
no painel Managed Service for Apache Flink, escolha. MyApplication
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seus streams de dados do Kinesis
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
No painel Kinesis Data Streams, escolha. ExampleInputStream
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
Na página Kinesis Streams, escolha o, escolha Ações ExampleOutputStream, escolha Excluir e confirme a exclusão.
Exclua seu objeto e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Escolha o ka-app-code -
<username>
balde.Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. Na barra de navegação, selecione Políticas.
No controle do filtro, insira kinesis.
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
Selecione Ações da política e, em seguida, Excluir.
Na barra de navegação, selecione Roles (Funções).
Escolha a função kinesis-analytics- MyApplication -us-west-2.
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. No painel de navegação, selecione Logs.
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Exemplo: criação de uma janela deslizante no Scala
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
nota
A partir da versão 1.15, o Flink não tem mais o Scala. Agora, os aplicativos podem usar o Java API de qualquer versão do Scala. O Flink ainda usa o Scala em alguns componentes importantes internamente, mas não expõe o Scala no carregador de classes do código do usuário. Por isso, os usuários precisam adicionar dependências do Scala em seus arquivos jar.
Para obter mais informações sobre as mudanças do Scala no Flink 1.15, consulte Sem o Scala na versão 1.15
Neste exercício, você criará um aplicativo de streaming simples que usa o Scala 3.2.0 e o Java do Flink. DataStream API O aplicativo lê os dados do fluxo do Kinesis, os agrega usando janelas deslizantes e grava os resultados no fluxo de saída do Kinesis.
nota
Para configurar os pré-requisitos necessários para este exercício, conclua primeiro o exercício Introdução (Scala).
Este tópico contém as seguintes seções:
Baixe e examine o código do aplicativo
O código do aplicativo Python para este exemplo está disponível em. GitHub Para fazer download do código do aplicativo, faça o seguinte:
Instale o cliente do Git se você ainda não tiver feito isso. Para obter mais informações, consulte Instalando o Git
. Duplique o repositório remoto com o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/scala/SlidingWindow
.
Observe o seguinte sobre o código do aplicativo:
Um arquivo
build.sbt
contém informações sobre a configuração e as dependências do aplicativo, incluindo as bibliotecas do Managed Service for Apache Flink.O arquivo
BasicStreamingJob.scala
contém o método principal que define a funcionalidade do aplicativo.O aplicativo usa uma origem do Kinesis para ler o fluxo de origem. O trecho a seguir cria a origem do Kinesis:
private def createSource: FlinkKinesisConsumer[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val inputProperties = applicationProperties.get("ConsumerConfigProperties") new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName), new SimpleStringSchema, inputProperties) }
O aplicativo também usa um coletor do Kinesis para gravar no fluxo de resultados. O trecho a seguir cria o coletor do Kinesis:
private def createSink: KinesisStreamsSink[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val outputProperties = applicationProperties.get("ProducerConfigProperties") KinesisStreamsSink.builder[String] .setKinesisClientProperties(outputProperties) .setSerializationSchema(new SimpleStringSchema) .setStreamName(outputProperties.getProperty(streamNameKey, defaultOutputStreamName)) .setPartitionKeyGenerator((element: String) => String.valueOf(element.hashCode)) .build }
O aplicativo usa o operador de janela para encontrar a contagem de valores para cada símbolo de ação em uma janela de dez segundos que desliza por cinco segundos. O código a seguir cria o operador e envia os dados agregados para um novo coletor de fluxo de dados do Kinesis:
environment.addSource(createSource) .map { value => val jsonNode = jsonParser.readValue(value, classOf[JsonNode]) new Tuple2[String, Double](jsonNode.get("ticker").toString, jsonNode.get("price").asDouble) } .returns(Types.TUPLE(Types.STRING, Types.DOUBLE)) .keyBy(v => v.f0) // Logically partition the stream for each word .window(SlidingProcessingTimeWindows.of(Time.seconds(10), Time.seconds(5))) .min(1) // Calculate minimum price per ticker over the window .map { value => value.f0 + String.format(",%.2f", value.f1) + "\n" } .sinkTo(createSink)
O aplicativo cria conectores de origem e coletor para acessar recursos externos usando um StreamExecutionEnvironment objeto.
O aplicativo cria conectores de origem e de coletores usando propriedades dinâmicas do aplicativo. As propriedades de runtime do aplicativo para ler e configurar os conectores. Para obter mais informações sobre as propriedades de runtime, consulte Propriedades de runtime.
Compile e faça o upload do código do aplicativo
Nesta seção, você compila e faz o upload do código do aplicativo para um bucket do Amazon S3.
Compilar o código do aplicativo
Use a ferramenta de SBT
Para usar o código do aplicativo, você o compila e o empacota em um JAR arquivo. Você pode compilar e empacotar seu código comSBT:
sbt assembly
-
Se o aplicativo for compilado com êxito, o arquivo a seguir é criado:
target/scala-3.2.0/sliding-window-scala-1.0.jar
Faça o upload do código Scala do Apache Flink Streaming
Nesta seção, você cria um bucket do Amazon S3 e faz upload do código do seu aplicativo.
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Selecione Create bucket (Criar bucket)
Insira
ka-app-code-<username>
no campo Nome do bucket. Adicione um sufixo para o nome do bucket, como o nome do usuário, para torná-lo globalmente exclusivo. Selecione Next (Próximo).Na etapa Configurar opções, mantenha as configurações como estão e selecione Próximo.
Na etapa Definir permissões, mantenha as configurações como estão e selecione Próximo.
Selecione Criar bucket.
Selecione o bucket
ka-app-code-<username>
e, em seguida, selecione Upload.-
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
sliding-window-scala-1.0.jar
que você criou na etapa anterior. Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o aplicativo (console)
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Descrição, insira
My Scala test app
. -
Em Runtime, selecione Apache Flink.
-
Deixe a versão como Apache Flink versão 1.15.2 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Configurar o aplicativo
Siga o procedimento a seguir para configurar o aplicativo.
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
sliding-window-scala-1.0.jar.
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Em Propriedades, selecione Adicionar grupo.
-
Insira o seguinte:
ID do grupo Chave Valor ConsumerConfigProperties
input.stream.name
ExampleInputStream
ConsumerConfigProperties
aws.region
us-west-2
ConsumerConfigProperties
flink.stream.initpos
LATEST
Selecione Save (Salvar).
Em Propriedades, selecione Adicionar grupo novamente.
Insira o seguinte:
ID do grupo Chave Valor ProducerConfigProperties
output.stream.name
ExampleOutputStream
ProducerConfigProperties
aws.region
us-west-2
-
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, escolha a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro na Amazon, o Managed Service for Apache Flink cria um grupo de logs e um stream de logs para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar o bucket do Amazon S3.
Para editar a IAM política para adicionar permissões de bucket do S3
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/sliding-window-scala-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Execute o aplicativo
O gráfico de tarefas do Flink pode ser visualizado executando o aplicativo, abrindo o painel do Apache Flink e selecionando a tarefa desejada do Flink.
Pare o aplicativo
Para interromper o aplicativo, na MyApplicationpágina, escolha Parar. Confirme a ação.
Crie e execute o aplicativo (CLI)
Nesta seção, você usa o AWS Command Line Interface para criar e executar o aplicativo Managed Service for Apache Flink. Use o AWS CLI comando kinesisanalyticsv2 para criar e interagir com o Managed Service para aplicativos Apache Flink.
Criação de uma política de permissões
nota
Você deve criar uma política de permissões e uma função para o seu aplicativo. Se você não criar esses IAM recursos, seu aplicativo não poderá acessar seus fluxos de dados e registros.
Primeiro, crie uma política de permissões com duas instruções: uma que concede permissões para a ação de ler no fluxo de origem, e outra que concede permissões para ações de gravação no fluxo de coleta. Em seguida, você anexa a política a uma IAM função (que você cria na próxima seção). Assim, ao assumir o perfil, o serviço Managed Service for Apache Flink terá as permissões necessárias para ler o fluxo de origem e gravar no fluxo de coleta.
Use o código a seguir para criar a política de permissões AKReadSourceStreamWriteSinkStream
. Substitua username
pelo nome de usuário que você usou para criar o bucket do Amazon S3 e armazenar o código do aplicativo. Substitua o ID da conta nos Amazon Resource Names (ARNs) (012345678901)
pelo ID da sua conta.
{ "ApplicationName": "sliding_window", "ApplicationDescription": "Scala sliding window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-
username
", "FileKey": "sliding-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901
:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
Para step-by-step obter instruções sobre como criar uma política de permissões, consulte o Tutorial: Criar e anexar sua primeira política gerenciada pelo cliente no Guia IAM do usuário.
Crie uma IAM função
Nesta seção, você cria uma IAM função que o aplicativo Managed Service for Apache Flink pode assumir para ler um fluxo de origem e gravar no stream do coletor.
O Managed Service for Apache Flink não pode acessar seu fluxo sem permissões. Você concede essas permissões por meio de uma IAM função. Cada IAM função tem duas políticas anexadas. A política de confiança concede ao Managed Service for Apache Flink permissão para assumir o perfil, e a política de permissões determina o que o serviço pode fazer depois de assumir a função.
Você anexa a política de permissões que criou na seção anterior a essa função.
Para criar uma função do IAM
Abra o IAM console em https://console.aws.amazon.com/iam/
. No painel de navegação, selecione Perfis e Criar perfil.
Em Selecionar tipo de identidade de confiança, selecione AWS Serviço
Em Choose the service that will use this role (Selecionar o serviço que usará esta função), selecione Kinesis.
Em Selecione seu caso de uso, selecione Managed Service for Apache Flink.
Selecione Next: Permissions (Próximo: permissões).
Na página Attach permissions policies, selecione Next: Review. Você pode anexar políticas de permissões depois de criar a função.
Na página Create role (Criar função), insira
MF-stream-rw-role
para o Role name (Nome da função). Selecione Criar função.Agora você criou uma nova IAM função chamada
MF-stream-rw-role
. Em seguida, você atualiza as políticas de confiança e de permissões para a funçãoAnexe a política de permissões à função.
nota
Para este exercício, o Managed Service for Apache Flink assume esse perfil para ler dados de um fluxo de dados do Kinesis (origem) e gravar a saída em outro fluxo de dados do Kinesis. Depois, você anexa a política que criou na etapa anterior, Crie uma política de permissões.
Na página Summary (Resumo), selecione a guia Permissions (Permissões).
Selecione Attach Policies.
Na caixa de pesquisa, insira
AKReadSourceStreamWriteSinkStream
(a política que você criou na seção anterior).Selecione a política
AKReadSourceStreamWriteSinkStream
e selecione Anexar política.
Agora você criou a função de execução de serviço que seu aplicativo usa para acessar os recursos. Anote ARN a nova função.
Para step-by-step obter instruções sobre como criar uma função, consulte Criação de uma IAM função (console) no Guia IAM do usuário.
Criar o aplicativo
Salve o JSON código a seguir em um arquivo chamadocreate_request.json
. Substitua ARN a função de ARN exemplo pela função que você criou anteriormente. Substitua o ARN sufixo do bucket (nome de usuário) pelo sufixo que você escolheu na seção anterior. Substitua o ID da conta de exemplo (012345678901) na função de execução do serviço pelo ID da conta.
{ "ApplicationName": "sliding_window", "ApplicationDescription": "Scala sliding_window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-
username
", "FileKey": "sliding-window-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901
:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
Execute o CreateApplicationcom a seguinte solicitação para criar o aplicativo:
aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
O aplicativo agora é criado. Você inicia o aplicativo na próxima etapa.
Inicie o aplicativo
Nesta seção, você usa a StartApplicationação para iniciar o aplicativo.
Para iniciar o aplicativo
Salve o JSON código a seguir em um arquivo chamado
start_request.json
.{ "ApplicationName": "sliding_window", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
Execute a ação
StartApplication
com a solicitação anterior para iniciar o aplicativo:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
O aplicativo agora está em execução. Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console da Amazon para verificar se o aplicativo está funcionando.
Pare o aplicativo
Nesta seção, você usa a StopApplicationação para interromper o aplicativo.
Como interromper o aplicativo
Salve o JSON código a seguir em um arquivo chamado
stop_request.json
.{ "ApplicationName": "sliding_window" }
Execute a ação
StopApplication
com a solicitação anterior para interromper o aplicativo:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
O aplicativo agora está interrompido.
Adicionar uma opção de CloudWatch registro
Você pode usar o AWS CLI para adicionar um stream de CloudWatch log da Amazon ao seu aplicativo. Para obter informações sobre como usar o CloudWatch Logs com seu aplicativo, consulte Como configurar o registro de aplicativos.
Atualizar propriedades do ambiente
Nesta seção, você usa a UpdateApplicationação para alterar as propriedades do ambiente do aplicativo sem recompilar o código do aplicativo. Neste exemplo, você altera a região dos fluxos de origem e destino.
Para atualizar propriedades de ambiente para o aplicativo
Salve o JSON código a seguir em um arquivo chamado
update_properties_request.json
.{"ApplicationName": "sliding_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleOutputStream" } } ] } } }
Execute a ação
UpdateApplication
com a solicitação anterior para atualizar as propriedades do ambiente:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Atualizar o código do aplicativo
Quando precisar atualizar o código do aplicativo com uma nova versão do pacote de código, use a UpdateApplicationCLIação.
nota
Para carregar uma nova versão do código do aplicativo com o mesmo nome de arquivo, você deve especificar a nova versão do objeto. Para obter mais informações sobre o uso de versões de objetos do Amazon S3, consulte Como ativar ou desativar o controle de versão.
Para usar o AWS CLI, exclua seu pacote de código anterior do bucket do Amazon S3, faça o upload da nova versão e ligueUpdateApplication
, especificando o mesmo nome de bucket e objeto do Amazon S3 e a nova versão do objeto. O aplicativo será reiniciado com o novo pacote de código.
O exemplo de solicitação da UpdateApplication
ação a seguir recarrega o código do aplicativo e reinicia o aplicativo. Atualize o CurrentApplicationVersionId
para a versão atual do aplicativo. Você pode verificar a versão atual do aplicativo usando as ações DescribeApplication
ou ListApplications
. Atualize o sufixo do nome do bucket (<username>) com o sufixo que você selecionou na seção Crie recursos dependentes.
{ "ApplicationName": "sliding_window", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-
username
", "FileKeyUpdate": "-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }
Limpe AWS os recursos
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial da janela deslizante.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
no painel Managed Service for Apache Flink, escolha. MyApplication
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seus streams de dados do Kinesis
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
No painel Kinesis Data Streams, escolha. ExampleInputStream
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
Na página Kinesis Streams, escolha o, escolha Ações ExampleOutputStream, escolha Excluir e confirme a exclusão.
Exclua seu objeto e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Escolha o ka-app-code -
<username>
balde.Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. Na barra de navegação, selecione Políticas.
No controle do filtro, insira kinesis.
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
Selecione Ações da política e, em seguida, Excluir.
Na barra de navegação, selecione Roles (Funções).
Escolha a função kinesis-analytics- MyApplication -us-west-2.
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. No painel de navegação, selecione Logs.
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.
Exemplo: enviar dados de streaming para o Amazon S3 em Scala
nota
Para obter exemplos atuais, consulteExemplos para criar e trabalhar com o Managed Service para aplicativos Apache Flink.
nota
A partir da versão 1.15, o Flink não tem mais o Scala. Agora, os aplicativos podem usar o Java API de qualquer versão do Scala. O Flink ainda usa o Scala em alguns componentes importantes internamente, mas não expõe o Scala no carregador de classes do código do usuário. Por isso, os usuários precisam adicionar dependências do Scala em seus arquivos jar.
Para obter mais informações sobre as mudanças do Scala no Flink 1.15, consulte Sem o Scala na versão 1.15
Neste exercício, você criará um aplicativo de streaming simples que usa o Scala 3.2.0 e o Java do Flink. DataStream API O aplicativo lê os dados do fluxo do Kinesis, os agrega usando janelas deslizantes e grava os resultados no S3.
nota
Para configurar os pré-requisitos necessários para este exercício, conclua primeiro o exercício Introdução (Scala). Você só precisa criar uma pasta adicional data/
no bucket ka-app-code do Amazon S3 -. <username>
Este tópico contém as seguintes seções:
Baixe e examine o código do aplicativo
O código do aplicativo Python para este exemplo está disponível em. GitHub Para fazer download do código do aplicativo, faça o seguinte:
Instale o cliente do Git se você ainda não tiver feito isso. Para obter mais informações, consulte Instalando o Git
. Duplique o repositório remoto com o seguinte comando:
git clone https://github.com/aws-samples/amazon-kinesis-data-analytics-examples.git
Navegue até o diretório
amazon-kinesis-data-analytics-java-examples/scala/S3Sink
.
Observe o seguinte sobre o código do aplicativo:
Um arquivo
build.sbt
contém informações sobre a configuração e as dependências do aplicativo, incluindo as bibliotecas do Managed Service for Apache Flink.O arquivo
BasicStreamingJob.scala
contém o método principal que define a funcionalidade do aplicativo.O aplicativo usa uma origem do Kinesis para ler o fluxo de origem. O trecho a seguir cria a origem do Kinesis:
private def createSource: FlinkKinesisConsumer[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val inputProperties = applicationProperties.get("ConsumerConfigProperties") new FlinkKinesisConsumer[String](inputProperties.getProperty(streamNameKey, defaultInputStreamName), new SimpleStringSchema, inputProperties) }
O aplicativo também usa StreamingFileSink a para gravar em um bucket do Amazon S3: `
def createSink: StreamingFileSink[String] = { val applicationProperties = KinesisAnalyticsRuntime.getApplicationProperties val s3SinkPath = applicationProperties.get("ProducerConfigProperties").getProperty("s3.sink.path") StreamingFileSink .forRowFormat(new Path(s3SinkPath), new SimpleStringEncoder[String]("UTF-8")) .build() }
O aplicativo cria conectores de origem e coletor para acessar recursos externos usando um StreamExecutionEnvironment objeto.
O aplicativo cria conectores de origem e de coletores usando propriedades dinâmicas do aplicativo. As propriedades de runtime do aplicativo para ler e configurar os conectores. Para obter mais informações sobre as propriedades de runtime, consulte Propriedades de runtime.
Compile e faça o upload do código do aplicativo
Nesta seção, você compila e faz o upload do código do aplicativo para um bucket do Amazon S3.
Compilar o código do aplicativo
Use a ferramenta de SBT
Para usar o código do aplicativo, você o compila e o empacota em um JAR arquivo. Você pode compilar e empacotar seu código comSBT:
sbt assembly
-
Se o aplicativo for compilado com êxito, o arquivo a seguir é criado:
target/scala-3.2.0/s3-sink-scala-1.0.jar
Faça o upload do código Scala do Apache Flink Streaming
Nesta seção, você cria um bucket do Amazon S3 e faz upload do código do seu aplicativo.
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Selecione Create bucket (Criar bucket)
Insira
ka-app-code-<username>
no campo Nome do bucket. Adicione um sufixo para o nome do bucket, como o nome do usuário, para torná-lo globalmente exclusivo. Selecione Next (Próximo).Na etapa Configurar opções, mantenha as configurações como estão e selecione Próximo.
Na etapa Definir permissões, mantenha as configurações como estão e selecione Próximo.
Selecione Criar bucket.
Selecione o bucket
ka-app-code-<username>
e, em seguida, selecione Upload.-
Na etapa Selecionar arquivos, selecione Adicionar arquivos. Navegue até o arquivo
s3-sink-scala-1.0.jar
que você criou na etapa anterior. Você não precisa alterar nenhuma das configurações para o objeto, em seguida, selecione Upload.
O código passa a ser armazenado em um bucket do Amazon S3 que pode ser acessado pelo aplicativo.
Crie e execute o aplicativo (console)
Siga estas etapas para criar, configurar, atualizar e executar o aplicativo usando o console.
Criar o aplicativo
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
-
No painel do Managed Service for Apache Flink, selecione Criar aplicativo de análise.
-
Na página Managed Service for Apache Flink - Criar aplicativo, forneça os detalhes do aplicativo da seguinte forma:
-
Em Nome do aplicativo, insira
MyApplication
. -
Em Descrição, insira
My java test app
. -
Em Runtime, selecione Apache Flink.
-
Deixe a versão como Apache Flink versão 1.15.2 (versão recomendada).
-
-
Para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Selecione Create application (Criar aplicativo).
nota
Ao criar um serviço gerenciado para o aplicativo Apache Flink usando o console, você tem a opção de criar uma IAM função e uma política para seu aplicativo. O aplicativo usa essa função e política para acessar os recursos dependentes. Esses IAM recursos são nomeados usando o nome do aplicativo e a região da seguinte forma:
-
Política:
kinesis-analytics-service-
MyApplication
-us-west-2
-
Função:
kinesisanalytics-
MyApplication
-us-west-2
Configurar o aplicativo
Siga o procedimento a seguir para configurar o aplicativo.
Configurar o aplicativo
-
Na MyApplicationpágina, escolha Configurar.
-
Na página Configurar aplicativo, forneça o Local do código:
-
Em Bucket do Amazon S3, insira
ka-app-code-
.<username>
-
Em Caminho do objeto do Amazon S3, insira
s3-sink-scala-1.0.jar
.
-
-
Em Acesso aos recursos do aplicativo, para permissões de acesso, escolha Criar/atualizar IAM função
kinesis-analytics-MyApplication-us-west-2
. -
Em Propriedades, selecione Adicionar grupo.
-
Insira o seguinte:
ID do grupo Chave Valor ConsumerConfigProperties
input.stream.name
ExampleInputStream
ConsumerConfigProperties
aws.region
us-west-2
ConsumerConfigProperties
flink.stream.initpos
LATEST
Selecione Save (Salvar).
-
Em Propriedades, selecione Adicionar grupo.
-
Insira o seguinte:
ID do grupo Chave Valor ProducerConfigProperties
s3.sink.path
s3a://ka-app-code-
<user-name>
/data -
Em Monitoramento, confirme se Nível de monitoramento de métricas está definido como Aplicativo.
-
Para CloudWatch registrar, escolha a caixa de seleção Ativar.
-
Selecione Atualizar.
nota
Quando você opta por ativar o CloudWatch registro na Amazon, o Managed Service for Apache Flink cria um grupo de logs e um stream de logs para você. Os nomes desses recursos são os seguintes:
-
Grupo de logs:
/aws/kinesis-analytics/MyApplication
-
Fluxo de logs:
kinesis-analytics-log-stream
Edite a IAM política
Edite a IAM política para adicionar permissões para acessar o bucket do Amazon S3.
Para editar a IAM política para adicionar permissões de bucket do S3
Abra o IAM console em https://console.aws.amazon.com/iam/
. -
Selecione Policies (Políticas). Selecione a política
kinesis-analytics-service-MyApplication-us-west-2
que o console criou para você na seção anterior. -
Na página Summary (Resumo), selecione Edit policy (Editar política). Escolha a JSONguia.
-
Adicione a seção destacada do exemplo de política a seguir à política. Substitua a conta de amostra IDs (
012345678901
) com o ID da sua conta.{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:Abort*", "s3:DeleteObject*", "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:ListBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::ka-app-code-<username>", "arn:aws:s3:::ka-app-code-<username>/*" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:
012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" } ] }
Execute o aplicativo
O gráfico de tarefas do Flink pode ser visualizado executando o aplicativo, abrindo o painel do Apache Flink e selecionando a tarefa desejada do Flink.
Pare o aplicativo
Para interromper o aplicativo, na MyApplicationpágina, escolha Parar. Confirme a ação.
Crie e execute o aplicativo (CLI)
Nesta seção, você usa o AWS Command Line Interface para criar e executar o aplicativo Managed Service for Apache Flink. Use o AWS CLI comando kinesisanalyticsv2 para criar e interagir com o Managed Service para aplicativos Apache Flink.
Criação de uma política de permissões
nota
Você deve criar uma política de permissões e uma função para o seu aplicativo. Se você não criar esses IAM recursos, seu aplicativo não poderá acessar seus fluxos de dados e registros.
Primeiro, crie uma política de permissões com duas instruções: uma que concede permissões para a ação de ler no fluxo de origem, e outra que concede permissões para ações de gravação no fluxo de coleta. Em seguida, você anexa a política a uma IAM função (que você cria na próxima seção). Assim, ao assumir o perfil, o serviço Managed Service for Apache Flink terá as permissões necessárias para ler o fluxo de origem e gravar no fluxo de coleta.
Use o código a seguir para criar a política de permissões AKReadSourceStreamWriteSinkStream
. Substitua username
pelo nome de usuário que você usou para criar o bucket do Amazon S3 e armazenar o código do aplicativo. Substitua o ID da conta nos Amazon Resource Names (ARNs) (012345678901)
pelo ID da sua conta.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::ka-app-code-
username
/getting-started-scala-1.0.jar" ] }, { "Sid": "DescribeLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:*" ] }, { "Sid": "DescribeLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:*" ] }, { "Sid": "PutLogEvents", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-west-2:012345678901
:log-group:/aws/kinesis-analytics/MyApplication:log-stream:kinesis-analytics-log-stream" ] }, { "Sid": "ReadInputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleInputStream" }, { "Sid": "WriteOutputStream", "Effect": "Allow", "Action": "kinesis:*", "Resource": "arn:aws:kinesis:us-west-2:012345678901
:stream/ExampleOutputStream" } ] }
Para step-by-step obter instruções sobre como criar uma política de permissões, consulte o Tutorial: Criar e anexar sua primeira política gerenciada pelo cliente no Guia IAM do usuário.
Crie uma IAM função
Nesta seção, você cria uma IAM função que o aplicativo Managed Service for Apache Flink pode assumir para ler um fluxo de origem e gravar no stream do coletor.
O Managed Service for Apache Flink não pode acessar seu fluxo sem permissões. Você concede essas permissões por meio de uma IAM função. Cada IAM função tem duas políticas anexadas. A política de confiança concede ao Managed Service for Apache Flink permissão para assumir o perfil, e a política de permissões determina o que o serviço pode fazer depois de assumir a função.
Você anexa a política de permissões que criou na seção anterior a essa função.
Para criar uma função do IAM
Abra o IAM console em https://console.aws.amazon.com/iam/
. No painel de navegação, selecione Perfis e Criar perfil.
Em Selecionar tipo de identidade de confiança, selecione AWS Serviço
Em Choose the service that will use this role (Selecionar o serviço que usará esta função), selecione Kinesis.
Em Selecione seu caso de uso, selecione Managed Service for Apache Flink.
Selecione Next: Permissions (Próximo: permissões).
Na página Attach permissions policies, selecione Next: Review. Você pode anexar políticas de permissões depois de criar a função.
Na página Create role (Criar função), insira
MF-stream-rw-role
para o Role name (Nome da função). Selecione Criar função.Agora você criou uma nova IAM função chamada
MF-stream-rw-role
. Em seguida, você atualiza as políticas de confiança e de permissões para a funçãoAnexe a política de permissões à função.
nota
Para este exercício, o Managed Service for Apache Flink assume esse perfil para ler dados de um fluxo de dados do Kinesis (origem) e gravar a saída em outro fluxo de dados do Kinesis. Depois, você anexa a política que criou na etapa anterior, Crie uma política de permissões.
Na página Summary (Resumo), selecione a guia Permissions (Permissões).
Selecione Attach Policies.
Na caixa de pesquisa, insira
AKReadSourceStreamWriteSinkStream
(a política que você criou na seção anterior).Selecione a política
AKReadSourceStreamWriteSinkStream
e selecione Anexar política.
Agora você criou a função de execução de serviço que seu aplicativo usa para acessar os recursos. Anote ARN a nova função.
Para step-by-step obter instruções sobre como criar uma função, consulte Criação de uma IAM função (console) no Guia IAM do usuário.
Criar o aplicativo
Salve o JSON código a seguir em um arquivo chamadocreate_request.json
. Substitua ARN a função de ARN exemplo pela função que você criou anteriormente. Substitua o ARN sufixo do bucket (nome de usuário) pelo sufixo que você escolheu na seção anterior. Substitua o ID da conta de exemplo (012345678901) na função de execução do serviço pelo ID da conta.
{ "ApplicationName": "s3_sink", "ApplicationDescription": "Scala tumbling window application", "RuntimeEnvironment": "FLINK-1_15", "ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role", "ApplicationConfiguration": { "ApplicationCodeConfiguration": { "CodeContent": { "S3ContentLocation": { "BucketARN": "arn:aws:s3:::ka-app-code-
username
", "FileKey": "s3-sink-scala-1.0.jar" } }, "CodeContentType": "ZIPFILE" }, "EnvironmentProperties": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "s3.sink.path" : "s3a://ka-app-code-<username>/data" } } ] } }, "CloudWatchLoggingOptions": [ { "LogStreamARN": "arn:aws:logs:us-west-2:012345678901
:log-group:MyApplication:log-stream:kinesis-analytics-log-stream" } ] }
Execute o CreateApplicationcom a seguinte solicitação para criar o aplicativo:
aws kinesisanalyticsv2 create-application --cli-input-json file://create_request.json
O aplicativo agora é criado. Você inicia o aplicativo na próxima etapa.
Inicie o aplicativo
Nesta seção, você usa a StartApplicationação para iniciar o aplicativo.
Para iniciar o aplicativo
Salve o JSON código a seguir em um arquivo chamado
start_request.json
.{{ "ApplicationName": "s3_sink", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }
Execute a ação
StartApplication
com a solicitação anterior para iniciar o aplicativo:aws kinesisanalyticsv2 start-application --cli-input-json file://start_request.json
O aplicativo agora está em execução. Você pode verificar as métricas do Managed Service for Apache Flink no CloudWatch console da Amazon para verificar se o aplicativo está funcionando.
Pare o aplicativo
Nesta seção, você usa a StopApplicationação para interromper o aplicativo.
Como interromper o aplicativo
Salve o JSON código a seguir em um arquivo chamado
stop_request.json
.{ "ApplicationName": "s3_sink" }
Execute a ação
StopApplication
com a solicitação anterior para interromper o aplicativo:aws kinesisanalyticsv2 stop-application --cli-input-json file://stop_request.json
O aplicativo agora está interrompido.
Adicionar uma opção de CloudWatch registro
Você pode usar o AWS CLI para adicionar um stream de CloudWatch log da Amazon ao seu aplicativo. Para obter informações sobre como usar o CloudWatch Logs com seu aplicativo, consulte Como configurar o registro de aplicativos.
Atualizar propriedades do ambiente
Nesta seção, você usa a UpdateApplicationação para alterar as propriedades do ambiente do aplicativo sem recompilar o código do aplicativo. Neste exemplo, você altera a região dos fluxos de origem e destino.
Para atualizar propriedades de ambiente para o aplicativo
Salve o JSON código a seguir em um arquivo chamado
update_properties_request.json
.{"ApplicationName": "s3_sink", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "EnvironmentPropertyUpdates": { "PropertyGroups": [ { "PropertyGroupId": "ConsumerConfigProperties", "PropertyMap" : { "aws.region" : "us-west-2", "stream.name" : "ExampleInputStream", "flink.stream.initpos" : "LATEST" } }, { "PropertyGroupId": "ProducerConfigProperties", "PropertyMap" : { "s3.sink.path" : "s3a://ka-app-code-<username>/data" } } ] } } }
Execute a ação
UpdateApplication
com a solicitação anterior para atualizar as propriedades do ambiente:aws kinesisanalyticsv2 update-application --cli-input-json file://update_properties_request.json
Atualizar o código do aplicativo
Quando precisar atualizar o código do aplicativo com uma nova versão do pacote de código, use a UpdateApplicationCLIação.
nota
Para carregar uma nova versão do código do aplicativo com o mesmo nome de arquivo, você deve especificar a nova versão do objeto. Para obter mais informações sobre o uso de versões de objetos do Amazon S3, consulte Como ativar ou desativar o controle de versão.
Para usar o AWS CLI, exclua seu pacote de código anterior do bucket do Amazon S3, faça o upload da nova versão e ligueUpdateApplication
, especificando o mesmo nome de bucket e objeto do Amazon S3 e a nova versão do objeto. O aplicativo será reiniciado com o novo pacote de código.
O exemplo de solicitação da UpdateApplication
ação a seguir recarrega o código do aplicativo e reinicia o aplicativo. Atualize o CurrentApplicationVersionId
para a versão atual do aplicativo. Você pode verificar a versão atual do aplicativo usando as ações DescribeApplication
ou ListApplications
. Atualize o sufixo do nome do bucket (<username>) com o sufixo que você selecionou na seção Crie recursos dependentes.
{ "ApplicationName": "s3_sink", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationCodeConfigurationUpdate": { "CodeContentUpdate": { "S3ContentLocationUpdate": { "BucketARNUpdate": "arn:aws:s3:::ka-app-code-
username
", "FileKeyUpdate": "s3-sink-scala-1.0.jar", "ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU" } } } } }
Limpe AWS os recursos
Esta seção inclui procedimentos para limpar AWS recursos criados no tutorial Tumbling Window.
Este tópico contém as seguintes seções:
Exclua seu aplicativo Managed Service for Apache Flink
Abra o console do Managed Service for Apache Flink em /flink https://console.aws.amazon.com
no painel Managed Service for Apache Flink, escolha. MyApplication
Na página do aplicativo, selecione Excluir e, em seguida, confirme a exclusão.
Exclua seus streams de dados do Kinesis
Abra o console do Kinesis em https://console.aws.amazon.com /kinesis.
No painel Kinesis Data Streams, escolha. ExampleInputStream
Na ExampleInputStreampágina, escolha Excluir Kinesis Stream e confirme a exclusão.
Na página Kinesis Streams, escolha o, escolha Ações ExampleOutputStream, escolha Excluir e confirme a exclusão.
Exclua seu objeto e bucket do Amazon S3
Abra o console do Amazon S3 em. https://console.aws.amazon.com/s3/
Escolha o ka-app-code -
<username>
balde.Selecione Excluir e, em seguida, insira o nome do bucket para confirmar a exclusão.
Exclua seus IAM recursos
Abra o IAM console em https://console.aws.amazon.com/iam/
. Na barra de navegação, selecione Políticas.
No controle do filtro, insira kinesis.
Escolha a política kinesis-analytics-service- MyApplication -us-west-2.
Selecione Ações da política e, em seguida, Excluir.
Na barra de navegação, selecione Roles (Funções).
Escolha a função kinesis-analytics- MyApplication -us-west-2.
Selecione Excluir função e, em seguida, confirme a exclusão.
Exclua seus CloudWatch recursos
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. No painel de navegação, selecione Logs.
Escolha o grupo/aws/kinesis-analytics/MyApplicationlog.
Selecione Excluir grupo de logs e, em seguida, confirme a exclusão.