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á.
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 recursos do IAM, seu aplicativo não poderá acessar seus fluxos de logs e dados.
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, anexe a política a um perfil do IAM (que será criado 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 usado 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 Tutorial: Criar e anexar sua primeira política gerenciada pelo cliente no Guia do usuário do IAM.
Criar uma política do IAM
Nesta seção, você cria um perfil do IAM que o aplicativo Managed Service for Apache Flink pode assumir para ler um fluxo de origem e gravar no fluxo de coleta.
O Managed Service for Apache Flink não pode acessar seu fluxo sem permissões. Essas permissões são concedidas usando um perfil do IAM. Cada perfil do IAM 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.
Anexe a política de permissões que criou na seção anterior a essa função.
Para criar uma perfil do IAM
Abra o console do IAM 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. É possível anexar políticas de permissões depois de criar a função.
Na página Criar função, insira
MF-stream-rw-role
para o Nome da função. Selecione Criar função.Foi criado um perfil do IAM chamado
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 criada 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 o ARN da nova função.
Para step-by-step obter instruções sobre como criar uma função, consulte Como criar uma função do IAM (console) no Guia do usuário do IAM.
Criar o aplicativo
Salve o seguinte código JSON em um arquivo chamado create_request.json
. Substitua o ARN da função de amostra pelo ARN da função criada anteriormente. Substitua o sufixo do ARN do bucket (nome do usuário) pelo sufixo que você selecionou 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": "getting_started",
"ApplicationDescription": "Scala getting started application",
"RuntimeEnvironment": "FLINK-1_19",
"ServiceExecutionRole": "arn:aws:iam::012345678901:role/MF-stream-rw-role",
"ApplicationConfiguration": {
"ApplicationCodeConfiguration": {
"CodeContent": {
"S3ContentLocation": {
"BucketARN": "arn:aws:s3:::ka-app-code-username
",
"FileKey": "getting-started-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. Inicie o aplicativo na próxima etapa.
Inicie o aplicativo
Nesta seção, a ação StartApplication será usada para iniciar o aplicativo.
Para iniciar o aplicativo
Salve o seguinte código JSON em um arquivo chamado
start_request.json
.{ "ApplicationName": "getting_started", "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, a ação StopApplication será usada para interromper o aplicativo.
Como interromper o aplicativo
Salve o seguinte código JSON 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 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 seguinte código JSON em um arquivo chamado
update_properties_request.json
.{ "ApplicationName": "getting_started", "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 ação da UpdateApplicationCLI.
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": "getting_started",
"CurrentApplicationVersionId": 1,
"ApplicationConfigurationUpdate": {
"ApplicationCodeConfigurationUpdate": {
"CodeContentUpdate": {
"S3ContentLocationUpdate": {
"BucketARNUpdate": "arn:aws:s3:::ka-app-code-<username>",
"FileKeyUpdate": "getting-started-scala-1.0.jar",
"ObjectVersionUpdate": "SAMPLEUehYngP87ex1nzYIGYgfhypvDU"
}
}
}
}
}