Configurações de exportação para destinos compatíveis do Nuvem AWS
Os componentes do Greengrass definidos pelo usuário usam o StreamManagerClient
no Stream Manager SDK para interagir com o Gerenciador de fluxos. Quando um componente cria um fluxo ou atualiza um fluxo, ele passa um objeto MessageStreamDefinition
que representa as propriedades do fluxo, incluindo a definição de exportação. O objeto ExportDefinition
contém as configurações de exportação definidas para o fluxo. O gerenciador de fluxo usa essas configurações de exportação para determinar onde e como exportar o fluxo.
Você pode definir zero ou mais configurações de exportação em um fluxo, incluindo várias configurações de exportação para um único tipo de destino. Por exemplo, você pode exportar um fluxo para dois canais do AWS IoT Analytics e um fluxo de dados do Kinesis.
Para tentativas de exportação malsucedidas, o gerenciador de fluxo tenta continuamente exportar dados para a Nuvem AWS em intervalos de até cinco minutos. Não há um limite máximo para o número de novas tentativas.
nota
O StreamManagerClient
também fornece um destino alvo que você pode usar para exportar fluxos para um servidor HTTP. Este destino deve ser usado apenas para fins de teste. Ele não é estável e nem compatível para uso em ambientes de produção.
Destinos Nuvem AWS compatíveis
Você é responsável pela manutenção desses recursos da Nuvem AWS.
Canais do AWS IoT Analytics
O gerenciador de fluxo fornece suporte a exportações automáticas para o AWS IoT Analytics. O AWS IoT Analytics permite realizar análises avançadas em seus dados para ajudar a tomar decisões de negócios e aprimorar os modelos de machine learning. Para obter mais informações, consulte O que é o AWS IoT Analytics? no AWS IoT Analytics Guia do usuário do .
No Stream Manager SDK, os componentes do Greengrass usam IoTAnalyticsConfig
para definir a configuração de exportação para esse tipo de destino. Para mais informações, consulte a referência do SDK para seu idioma de destino:
-
IoTAnalyticsConfig
no SDK para Python -
IoTAnalyticsConfig
no SDK para Java -
IoTAnalyticsConfig
no SDK para Node.js
Requisitos
Esse destino de exportação tem os seguintes requisitos:
-
Os canais do destino no AWS IoT Analytics devem estar nas mesmas Conta da AWS e Região da AWS que o dispositivo principal do Greengrass.
-
O Autorize os dispositivos principais a interagir com os serviços da AWS deve conceder a permissão
iotanalytics:BatchPutMessage
para os canais de destino. Por exemplo:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotanalytics:BatchPutMessage" ], "Resource": [ "arn:aws:iotanalytics:
region
:account-id
:channel/channel_1_name
", "arn:aws:iotanalytics:region
:account-id
:channel/channel_2_name
" ] } ] }Você pode conceder acesso granular ou condicional aos recursos, por exemplo, usando um esquema de nomeação
*
curinga. Para obter mais informações, consulte Adicionando e removendo políticas do IAM no Guia do usuário do IAM.
Exportando para o AWS IoT Analytics
Para criar um fluxo que exporte para o AWS IoT Analytics, os componentes do Greengrass criam um fluxo com uma definição de exportação que inclui um ou mais objetos IoTAnalyticsConfig
. Esse objeto define as configurações de exportação, como canal de destino, tamanho do lote, intervalo do lote e prioridade.
Quando os componentes do Greengrass recebem dados de dispositivos, eles anexam mensagens que contêm um blob de dados ao fluxo de destino.
Em seguida, o gerenciador de fluxo exporta os dados com base nas configurações de lote e na prioridade definidas nas configurações de exportação do fluxo.
Amazon Kinesis Data Streams
O gerenciador de fluxos é compatível com exportações automáticas para o Amazon Kinesis Data Streams. O Kinesis Data Streams é muito usado para agregar dados de alto volume e carregá-los em um data warehouse ou cluster do MapReduce. Para obter mais informações, consulte O que é o Amazon Kinesis Data Streams? no Guia do desenvolvedor do Amazon Kinesis.
No Stream Manager SDK, os componentes do Greengrass usam KinesisConfig
para definir a configuração de exportação para esse tipo de destino. Para mais informações, consulte a referência do SDK para seu idioma de destino:
-
KinesisConfig
no SDK para Python -
KinesisConfig
no SDK para Java -
KinesisConfig
no SDK para Node.js
Requisitos
Esse destino de exportação tem os seguintes requisitos:
-
Os fluxos de destino no Kinesis Data Streams devem estar nas mesmas Conta da AWS e Região da AWS que o dispositivo principal do Greengrass.
-
O Autorize os dispositivos principais a interagir com os serviços da AWS deve conceder a permissão
kinesis:PutRecords
para os fluxos de dados de destino. Por exemplo:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecords" ], "Resource": [ "arn:aws:kinesis:
region
:account-id
:stream/stream_1_name
", "arn:aws:kinesis:region
:account-id
:stream/stream_2_name
" ] } ] }Você pode conceder acesso granular ou condicional aos recursos, por exemplo, usando um esquema de nomeação
*
curinga. Para obter mais informações, consulte Adicionando e removendo políticas do IAM no Guia do usuário do IAM.
Exportação do Kinesis Data Streams
Para criar um fluxo que exporte para o Kinesis Data Streams, os componentes do Greengrass criam um fluxo com uma definição de exportação que inclui um ou mais objetos KinesisConfig
. Esse objeto define as configurações de exportação, como fluxo de dados, tamanho do lote, intervalo do lote e prioridade.
Quando os componentes do Greengrass recebem dados de dispositivos, eles anexam mensagens que contêm um blob de dados ao fluxo de destino. Em seguida, o gerenciador de fluxo exporta os dados com base nas configurações de lote e na prioridade definidas nas configurações de exportação do fluxo.
O gerenciador de fluxo gera uma UUID exclusiva e aleatória como chave de partição para cada registro carregado no Amazon Kinesis.
Propriedades do ativo AWS IoT SiteWise
O gerenciador de fluxo fornece suporte a exportações automáticas para o AWS IoT SiteWise. O AWS IoT SiteWise permite coletar, organizar e analisar dados de equipamentos industriais em escala. Para mais informações, consulte O que é o AWS IoT SiteWise? no AWS IoT SiteWise Guia do usuário.
No Stream Manager SDK, os componentes do Greengrass usam IoTSiteWiseConfig
para definir a configuração de exportação para esse tipo de destino. Para mais informações, consulte a referência do SDK para seu idioma de destino:
-
IoTSiteWiseConfig
no SDK para Python -
IoTSiteWiseConfig
no SDK para Java -
IoTSiteWiseConfig
no SDK para Node.js
nota
A AWS também fornece componentes do AWS IoT SiteWise, que oferecem uma solução predefinida que você pode usar para transmitir dados da origem OPC-UA. Para ter mais informações, consulte Coletor OPC-UA do IoT SiteWise.
Requisitos
Esse destino de exportação tem os seguintes requisitos:
-
As propriedades do ativo de destino no AWS IoT SiteWise devem estar nas mesmas Conta da AWS e Região da AWS que o dispositivo principal do Greengrass.
nota
Para obter a lista de Região da AWS com suporte do AWS IoT SiteWise, consulte Endpoints e cotas do AWS IoT SiteWise na Referência geral da AWS.
-
O Autorize os dispositivos principais a interagir com os serviços da AWS deve conceder a permissão
iotsitewise:BatchPutAssetPropertyValue
para as propriedades do ativo do destino. O exemplo de política a seguir usa a chave de condiçãoiotsitewise:assetHierarchyPath
para conceder acesso a um ativo raiz de destino e seus ativos secundários. É possível remover oCondition
da política para conceder acesso a todos os seus ativos AWS IoT SiteWise, ou especificar ARNs para determinados ativos.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotsitewise:BatchPutAssetPropertyValue", "Resource": "*", "Condition": { "StringLike": { "iotsitewise:assetHierarchyPath": [ "/
root node asset ID
", "/root node asset ID
/*" ] } } } ] }Você pode conceder acesso granular ou condicional aos recursos, por exemplo, usando um esquema de nomeação
*
curinga. Para obter mais informações, consulte Adicionando e removendo políticas do IAM no Guia do usuário do IAM.Para informações importantes sobre segurança, consulte a autorização BatchPutAssetPropertyValue no Guia do usuário do AWS IoT SiteWise.
Exportando para o AWS IoT SiteWise
Para criar um fluxo que exporte para o AWS IoT SiteWise, os componentes do Greengrass criam um fluxo com uma definição de exportação que inclui um ou mais objetos IoTSiteWiseConfig
. Esse objeto define as configurações de exportação, como tamanho do lote, intervalo do lote e prioridade.
Quando os componentes do Greengrass recebem dados de propriedades de ativos dos dispositivos, eles anexam mensagens que contêm um blob de dados ao fluxo de destino. As mensagens são objetos PutAssetPropertyValueEntry
serializados em JSON que contêm valores de propriedade para uma ou mais propriedades de ativos. Para obter mais informações, consulte Anexar mensagem para destinos de exportação do AWS IoT SiteWise.
nota
Ao enviar dados para o AWS IoT SiteWise, os dados devem atender aos requisitos da ação BatchPutAssetPropertyValue
. Para obter mais informações, consulte BatchPutAssetPropertyValue na AWS IoT SiteWise Referência de API.
Em seguida, o gerenciador de fluxo exporta os dados com base nas configurações de lote e na prioridade definidas nas configurações de exportação do fluxo.
Você pode ajustar as configurações do Gerenciador de fluxos e a lógica do componente do Greengrass para criar sua estratégia de exportação. Por exemplo:
-
Para exportações quase em tempo real, defina configurações baixas de tamanho de lote e intervalo e anexe os dados ao fluxo quando forem recebidos.
-
Para otimizar o agrupamento em lotes, mitigar as restrições de largura de banda ou minimizar os custos, os componentes do Greengrass podem agrupar os pontos de dados de carimbo de data/hora, qualidade e valor (TQV, Timestamp-Quality-Value) recebidos em uma única propriedade de ativo antes de anexar os dados ao fluxo. Uma estratégia é agrupar entradas para até 10 (dez) combinações diferentes de propriedade e ativo, ou aliases de propriedade, em uma mensagem, em vez de enviar mais de uma entrada para a mesma propriedade. Isso ajuda o gerenciador de fluxo a permanecer dentro das cotas do AWS IoT SiteWise.
Objetos do Amazon S3
O gerenciador de fluxo é compatível com exportações automáticas para o Amazon S3. Você pode utilizar o Amazon S3 para armazenar e recuperar grandes volumes de dados. Para obter mais informações, consulte O que é o Amazon S3? no Guia do desenvolvedor do Amazon Simple Storage Service.
No Stream Manager SDK, os componentes do Greengrass usam S3ExportTaskExecutorConfig
para definir a configuração de exportação para esse tipo de destino. Para mais informações, consulte a referência do SDK para seu idioma de destino:
-
S3ExportTaskExecutorConfig
no SDK para Python -
S3ExportTaskExecutorConfig
no SDK para Java -
S3ExportTaskExecutorConfig
no SDK para Node.js
Requisitos
Esse destino de exportação tem os seguintes requisitos:
-
Os buckets de destino do Amazon S3 devem estar na mesma Conta da AWS que o dispositivo principal do Greengrass.
-
Se uma função do Lambda executada no modo de contêiner do Greengrass grava arquivos de entrada no diretório de arquivos de entrada, você deve montar o diretório como um volume no contêiner com permissões de gravação. Esse procedimento garante que os arquivos sejam gravados no sistema de arquivos raiz e fiquem visíveis para o componente Gerenciador de fluxos, executado fora do contêiner.
-
Se um componente de contêiner do Docker grava arquivos de entrada no diretório de arquivos de entrada, você deve montar o diretório como um volume no contêiner com permissões de gravação. Esse procedimento garante que os arquivos sejam gravados no sistema de arquivos raiz e fiquem visíveis para o componente Gerenciador de fluxos, executado fora do contêiner.
-
O Autorize os dispositivos principais a interagir com os serviços da AWS deve conceder as permissões a seguir para os buckets de destino. Por exemplo:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::
bucket-1-name
/*", "arn:aws:s3:::bucket-2-name
/*" ] } ] }Você pode conceder acesso granular ou condicional aos recursos, por exemplo, usando um esquema de nomeação
*
curinga. Para obter mais informações, consulte Adicionando e removendo políticas do IAM no Guia do usuário do IAM.
Exportar para o Amazon S3
Para criar um fluxo que exporte para o Amazon S3, os componentes do Greengrass usam o objeto S3ExportTaskExecutorConfig
para configurar a política de exportação. A política define as configurações de exportação, como o limite e a prioridade de upload em várias partes. Para exportações do Amazon S3, o gerenciador de fluxo carrega dados que ele lê de arquivos locais no dispositivo principal. Para iniciar um upload, os componentes do Greengrass anexam uma tarefa de exportação ao fluxo de destino. A tarefa de exportação contém informações sobre o arquivo de entrada e o objeto de destino do Amazon S3. O Gerenciador de fluxos executa as tarefas na sequência em que elas são anexadas ao fluxo.
nota
O bucket de destino já deve existir na sua Conta da AWS. Se um objeto para a chave especificada não existir, o gerenciador de fluxo criará o objeto para você.
O gerenciador de fluxo usa a propriedade de limite de upload de várias partes, a configuração do tamanho mínimo das partes e o tamanho do arquivo de entrada para determinar como fazer upload dos dados. O limite de upload de várias partes deve ser maior que o tamanho mínimo das partes. Se você quiser fazer upload de dados em paralelo, pode criar vários fluxos.
As chaves que especificam seus objetos de destino do Amazon S3 podem incluir strings Java DateTimeFormatter!{timestamp:
. Você pode usar esses espaços reservados de data e hora para particionar dados no Amazon S3 com base na hora em que os dados do arquivo de entrada foram carregados. Por exemplo, o nome da chave a seguir é resolvido para um valor como value
}my-key/2020/12/31/data.txt
.
my-key/!{timestamp:YYYY}/!{timestamp:MM}/!{timestamp:dd}/data.txt
nota
Se você quiser monitorar o status de exportação de um fluxo, primeiro crie um fluxo de status e, em seguida, configure o fluxo de exportação para usá-lo. Para ter mais informações, consulte Monitorar tarefas de exportação.
Gerenciar dados de entrada
Você pode criar códigos que os aplicativos de IoT usam para gerenciar o ciclo de vida dos dados de entrada. O exemplo de fluxo de trabalho a seguir mostra como você pode usar os componentes do Greengrass para gerenciar esses dados.
-
Um processo local recebe dados de dispositivos ou periféricos e, em seguida, grava os dados em arquivos em um diretório no dispositivo principal. Esses são os arquivos de entrada para o gerenciador de fluxo.
-
O componente do Greengrass verifica o diretório e anexa uma tarefa de exportação ao fluxo de destino quando um novo arquivo é criado. A tarefa é um objeto
S3ExportTaskDefinition
serializado em JSON que especifica a URL do arquivo de entrada, o bucket e a chave do Amazon S3 de destino, além dos metadados opcionais do usuário. -
O gerenciador de fluxo lê o arquivo de entrada e exporta os dados para o Amazon S3 na ordem das tarefas anexadas. O bucket de destino já deve existir na sua Conta da AWS. Se um objeto para a chave especificada não existir, o gerenciador de fluxo criará o objeto para você.
-
O componente do Greengrass lê as mensagens de um fluxo de status para monitorar o status da exportação. Depois que as tarefas de exportação forem concluídas, o componente do Greengrass poderá excluir os arquivos de entrada correspondentes. Para ter mais informações, consulte Monitorar tarefas de exportação.
Monitorar tarefas de exportação
Você pode criar códigos que os aplicativos de IoT usam para monitorar o status das suas exportações do Amazon S3. Os componentes do Greengrass devem criar um fluxo de status e configurar o fluxo de exportação para gravar as atualizações de status no fluxo de status. Um único fluxo de status pode receber atualizações de status de vários fluxos que são exportados para o Amazon S3.
Primeiro, crie um fluxo para usar como fluxo de status. Você pode configurar as políticas de tamanho e retenção do fluxo para controlar a vida útil das mensagens de status. Por exemplo:
-
Defina
Persistence
comoMemory
se você não quiser armazenar as mensagens de status. -
Defina
StrategyOnFull
comoOverwriteOldestData
para que as novas mensagens de status não sejam perdidas.
Em seguida, crie ou atualize o fluxo de exportação para usar o fluxo de status. Especificamente, defina a propriedade de configuração de status da configuração de exportação S3ExportTaskExecutorConfig
do fluxo. Essa configuração instrui o Gerenciador de fluxos a gravar as mensagens de status sobre as tarefas de exportação no fluxo de status. No objeto StatusConfig
, especifique o nome do fluxo de status e o nível de detalhe. Os valores suportados a seguir variam do menos detalhado (ERROR
) ao mais detalhado (TRACE
). O padrão é INFO
.
-
ERROR
-
WARN
-
INFO
-
DEBUG
-
TRACE
O exemplo de fluxo de trabalho a seguir mostra como os componentes do Greengrass podem usar um fluxo de status para monitorar o status da exportação.
-
Conforme descrito no fluxo de trabalho anterior, um componente do anexa uma tarefa de exportação a um fluxo configurado para gravar mensagens de status sobre as tarefas de exportação em um fluxo de status. A operação de append retorna um número de sequência que representa a ID da tarefa.
-
U componente do Greengrass lê as mensagens sequencialmente do fluxo de status e as filtra com base no nome do fluxo e no ID da tarefa, ou com base em uma propriedade da tarefa de exportação do contexto da mensagem. Por exemplo, o componente do Greengrass pode filtrar por URL do arquivo de entrada da tarefa de exportação, que é representada pelo objeto
S3ExportTaskDefinition
no contexto da mensagem.Os códigos de status a seguir indicam que uma tarefa de exportação atingiu um estado concluído:
-
Success
. O upload foi concluído com êxito. -
Failure
. O gerenciador de fluxo encontrou um erro, por exemplo, o bucket especificado não existe. Depois de resolver o problema, você pode reanexar a tarefa de exportação ao fluxo. -
Canceled
. A tarefa foi interrompida porque a definição de fluxo ou de exportação foi excluída, ou o período de vida útil (TTL) da tarefa expirou.
nota
A tarefa também pode ter um status de
InProgress
ouWarning
. O gerenciador de fluxo emite avisos quando um evento retorna um erro que não afeta a execução da tarefa. Por exemplo, uma falha na limpeza de um upload parcial retorna um aviso. -
-
Depois que as tarefas de exportação forem concluídas, o componente do Greengrass poderá excluir os arquivos de entrada correspondentes.
O exemplo a seguir mostra como um componente do Greengrass pode ler e processar as mensagens de status.