ItemReader (Mapa) - AWS Step Functions

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á.

ItemReader (Mapa)

O campo ItemReader é um objeto JSON, que especifica um conjunto de dados e sua localização. Um estado Mapa Distribuído usa esse conjunto de dados como entrada.

O exemplo a seguir mostra a sintaxe do ItemReader campo em um fluxo de trabalho JSONPathbaseado, para um conjunto de dados em um arquivo CSV armazenado em um bucket do Amazon S3.

"ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "myBucket", "Key": "csvDataset/ratings.csv", "VersionId": "BcK42coT2jE1234VHLUvBV1yLNod2OEt" } }

O exemplo a seguir mostra que, em fluxos de trabalho JSONata baseados, Parameters é substituído por Argumentos.

"ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Arguments": { "Bucket": "amzn-s3-demo-bucket", "Key": "csvDataset/ratings.csv" } }
dica

No Workflow Studio, você especifica o conjunto de dados e sua localização no campo Origem do item.

Conteúdo do ItemReader campo

Dependendo do seu conjunto de dados, o conteúdo do campo ItemReader varia. Por exemplo, se seu conjunto de dados for uma matriz JSON transmitida de uma etapa anterior do fluxo de trabalho, o campo ItemReader será omitido. Se seu conjunto de dados for uma fonte de dados do Amazon S3, esse campo conterá os seguintes subcampos.

ReaderConfig

Um objeto JSON que especifica os seguintes detalhes:

  • InputType

    Aceita um dos seguintes valores:CSV,JSON,MANIFEST.

    Especifica o tipo de fonte de dados do Amazon S3, como arquivo CSV, objeto, arquivo JSON ou uma lista do inventário Amazon S3. No Workflow Studio, você pode selecionar um tipo de entrada na lista suspensa de origem do item do Amazon S3, sob o campo Origem do item.

  • CSVHeaderLocation

    nota

    Esse campo deverá ser especificado somente se um arquivo CSV for usado como conjunto de dados.

    Aceita um dos seguintes valores para especificar a localização do cabeçalho da coluna:

    Importante

    Atualmente, o Step Functions suporta cabeçalhos CSV de até 10 KiB.

    • FIRST_ROW — use essa opção se a primeira linha do arquivo for o cabeçalho.

    • GIVEN — use essa opção para especificar o cabeçalho na definição da máquina de estado. Por exemplo, se seu arquivo CSV contém os seguintes dados.

      1,307,3.5,1256677221 1,481,3.5,1256677456 1,1091,1.5,1256677471 ...

      Forneça a seguinte matriz JSON como cabeçalho CSV.

      "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "GIVEN", "CSVHeaders": [ "userId", "movieId", "rating", "timestamp" ] } }
    dica

    No Workflow Studio, você pode encontrar essa opção em Configuração adicional, no campo Origem do item.

  • MaxItems

    Limita o número de itens de dados transmitidos para o estado Map. Por exemplo, suponha que você vá fornecer um arquivo CSV contendo mil linhas e especificar um limite de cem. Em seguida, o intérprete transmite apenas cem linhas para o estado Map. O estado Map processa os itens em ordem sequencial, começando depois da linha do cabeçalho.

    Por padrão, o estado Map itera todos os itens no conjunto de dados especificado.

    nota

    Atualmente, você pode especificar um limite de até cem milhões. O estado Mapa Distribuído interrompe a leitura de itens além desse limite.

    dica

    No Workflow Studio, você pode encontrar essa opção em Configuração adicional, no campo Origem do item.

    Como alternativa, você pode especificar um caminho de referência para um par de chave-valor existente na entrada do estado Mapa Distribuído. Esse caminho deve ser resolvido como um inteiro positivo. O caminho de referência é especificado no subcampo MaxItemsPath.

    Importante

    Você pode especificar o MaxItems ou o subcampo MaxItemsPath, mas não ambos.

Resource

A ação da API do Amazon S3 que o Step Functions deve invocar dependendo do conjunto de dados especificado.

Parameters

Um objeto JSON que especifica o nome do bucket do Amazon S3 e a chave do objeto em que o conjunto de dados está armazenado. Nesse campo, você também pode fornecer a versão do objeto Amazon S3, se o bucket tiver o versionamento ativado.

Importante

Certifique-se de que seus buckets do Amazon S3 estejam sob a mesma máquina de estado Conta da AWS e Região da AWS sob a mesma.

Exemplos de conjuntos de dados

Você pode especificar uma das seguintes opções como conjunto de dados:

Importante

O Step Functions precisa das devidas permissões para acessar conjuntos de dados do Amazon S3 que você usa. Para obter informações sobre políticas do IAM para o conjunto de dados, consulte Políticas do IAM para conjuntos de dados.

Um estado Mapa Distribuído pode aceitar uma entrada JSON transmitida de uma etapa anterior no fluxo de trabalho. Essa entrada deve ser ou conter uma matriz dentro de um nó específico. Para selecionar um nó que contenha a matriz, você pode usar o campo ItemsPath (Mapa, JSONPath somente).

Para processar itens individuais na matriz, o estado Mapa Distribuído inicia a execução de um fluxo de trabalho secundário para cada item da matriz. As guias a seguir mostram exemplos da entrada transmitidas para o estado Map e a entrada correspondente para a execução de um fluxo de trabalho secundário.

nota

O Step Functions omite o campo ItemReader quando o conjunto de dados é uma matriz JSON de uma etapa anterior.

Input passed to the Map state

Considere a seguinte matriz JSON de três itens.

"facts": [ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" }, { "verdict": "mostly-true", "statement_date": "5/18/2016", "statement_source": "news" } ]
Input passed to a child workflow execution

O estado Mapa Distribuído inicia três execuções do fluxo de trabalho secundário. Cada execução recebe um item de matriz como entrada. O exemplo a seguir mostra a entrada recebida pela execução de um fluxo de trabalho secundário.

{ "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }

Um estado Mapa Distribuído pode iterar os objetos que são armazenados em um bucket do Amazon S3. Quando a execução do fluxo de trabalho atinge o Map estado, o Step Functions invoca a ação da API ListObjectsV2, que retorna uma matriz dos metadados do objeto Amazon S3. Nessa matriz, cada item contém dados, como ETaguma chave, dos dados armazenados no bucket.

Para processar itens individuais na matriz, o estado Mapa Distribuído inicia a execução de um fluxo de trabalho secundário. Por exemplo, suponha que seu bucket do Amazon S3 contenha cem imagens. Então, a matriz retornada após invocar a ação da API ListObjectsV2 contém cem itens. O estado Mapa Distribuído inicia cem execuções de fluxo de trabalho secundário para processar cada item da matriz.

nota
  • Atualmente, o Step Functions também inclui um item para cada pasta criada em um bucket do Amazon S3 específico usando o console do Amazon S3. Isso resulta em uma execução adicional de fluxo de trabalho secundário, iniciada pelo estado Mapa Distribuído. Para evitar a criação de uma execução adicional de fluxo de trabalho secundário para a pasta, recomendamos que você use o AWS CLI para criar pastas. Para obter informações, consulte Comandos de alto nível do Amazon S3 no Guia do usuário da AWS Command Line Interface .

  • O Step Functions precisa das devidas permissões para acessar conjuntos de dados do Amazon S3 que você usa. Para obter informações sobre políticas do IAM para o conjunto de dados, consulte Políticas do IAM para conjuntos de dados.

As guias a seguir mostram exemplos da sintaxe do campo ItemReader e da entrada transmitida para a execução de um fluxo de trabalho secundário para esse conjunto de dados.

ItemReader syntax

Nesse exemplo, foi mostrado como organizar seus dados, que incluem imagens, arquivos JSON e objetos, dentro de um prefixo nomeado processData em um bucket do Amazon S3 designado amzn-s3-demo-bucket.

"ItemReader": { "Resource": "arn:aws:states:::s3:listObjectsV2", "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Prefix": "processData" } }
Input passed to a child workflow execution

O estado Mapa Distribuído iniciará quantas execuções de fluxo de trabalho secundário forem necessárias para o número de itens no bucket do Amazon S3. O exemplo a seguir mostra a entrada recebida pela execução de um fluxo de trabalho secundário.

{ "Etag": "\"05704fbdccb224cb01c59005bebbad28\"", "Key": "processData/images/n02085620_1073.jpg", "LastModified": 1668699881, "Size": 34910, "StorageClass": "STANDARD" }

Um estado Mapa Distribuído pode aceitar um arquivo JSON armazenado em um bucket do Amazon S3 como um conjunto de dados. O arquivo JSON deve conter uma matriz.

Quando a execução do fluxo de trabalho atinge o Map estado, o Step Functions invoca a ação da GetObjectAPI para buscar o arquivo JSON especificado. O estado Map então itera cada item na matriz e inicia a execução de um fluxo de trabalho secundário para cada item. Por exemplo, se seu arquivo JSON contiver mil itens de matriz, o estado Map iniciará mil execuções de fluxo de trabalho secundário.

nota
  • A entrada de execução usada para iniciar a execução de um fluxo de trabalho secundário não pode exceder 256 KiB. No entanto, o Step Functions oferece suporte à leitura de um item de até 8 MB de um arquivo CSV ou JSON quando você aplica o campo ItemSelector opcional para reduzir o tamanho de um item.

  • Atualmente, o Step Functions suporta 10 GB como o tamanho máximo de um arquivo individual no Amazon S3.

  • O Step Functions precisa das devidas permissões para acessar conjuntos de dados do Amazon S3 que você usa. Para obter informações sobre políticas do IAM para o conjunto de dados, consulte Políticas do IAM para conjuntos de dados.

As guias a seguir mostram exemplos da sintaxe do campo ItemReader e da entrada transmitida para a execução de um fluxo de trabalho secundário para esse conjunto de dados.

Por exemplo, imagine que você tenha um arquivo JSON chamado factcheck.json. Você armazenou esse arquivo em um prefixo chamado jsonDataset, em um bucket do Amazon S3. A seguir, veja um exemplo do conjunto de dados JSON.

[ { "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }, { "verdict": "false", "statement_date": "6/7/2022", "statement_source": "television" }, { "verdict": "mostly-true", "statement_date": "5/18/2016", "statement_source": "news" }, ... ]
ItemReader syntax
"ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "InputType": "JSON" }, "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Key": "jsonDataset/factcheck.json" } }
Input to a child workflow execution

O estado Mapa Distribuído iniciará quantas execuções de fluxo de trabalho secundário forem necessárias para o número de itens de matriz presentes no arquivo JSON. O exemplo a seguir mostra a entrada recebida pela execução de um fluxo de trabalho secundário.

{ "verdict": "true", "statement_date": "6/11/2008", "statement_source": "speech" }

Um estado Mapa Distribuído pode aceitar um arquivo CSV armazenado em um bucket do Amazon S3 como um conjunto de dados. Se você usar um arquivo CSV como conjunto de dados, precisará especificar um cabeçalho de coluna CSV. Para obter informações sobre como especificar um cabeçalho CSV, consulte Conteúdo do ItemReader campo.

O Step Functions analisa arquivos CSV com base nas seguintes regras:

  • As vírgulas (,) são um delimitador que separa campos.

  • As novas linhas são um delimitador que separa registros.

  • Os campos são tratados como strings. Para conversões de tipo de dados, use a função intrínseca States.StringToJson em ItemSelector (Mapa).

  • Não são necessárias aspas duplas (“ ”) nas strings. No entanto, strings delimitadas por aspas duplas podem conter vírgulas e novas linhas sem agir como delimitadores de registro.

  • É possível preservar as aspas duplas repetindo-as.

  • Se o número de campos em uma linha for menor que o número de campos no cabeçalho, o Step Functions fornecerá strings vazias para os valores que estão faltando.

  • Se o número de campos em uma linha for maior que aquele no cabeçalho, o Step Functions vai ignorar os campos adicionais.

Para obter mais informações sobre como Step Functions analisa um arquivo CSV, consulte Example of parsing an input CSV file.

Quando a execução do fluxo de trabalho atinge o Map estado, o Step Functions invoca a ação da GetObjectAPI para buscar o arquivo CSV especificado. O estado Map então itera cada linha no arquivo CSV e inicia a execução de um fluxo de trabalho secundário para processar os itens em cada linha. Por exemplo, suponha que você vá fornecer um arquivo CSV contendo cem linhas como entrada. Então, o intérprete transmitirá cada linha para o estado Map. O estado Map processa os itens em ordem serial, começando depois da linha do cabeçalho.

nota
  • A entrada de execução usada para iniciar a execução de um fluxo de trabalho secundário não pode exceder 256 KiB. No entanto, o Step Functions oferece suporte à leitura de um item de até 8 MB de um arquivo CSV ou JSON quando você aplica o campo ItemSelector opcional para reduzir o tamanho de um item.

  • Atualmente, o Step Functions suporta 10 GB como o tamanho máximo de um arquivo individual no Amazon S3.

  • O Step Functions precisa das devidas permissões para acessar conjuntos de dados do Amazon S3 que você usa. Para obter informações sobre políticas do IAM para o conjunto de dados, consulte Políticas do IAM para conjuntos de dados.

As guias a seguir mostram exemplos da sintaxe do campo ItemReader e da entrada transmitida para a execução de um fluxo de trabalho secundário para esse conjunto de dados.

ItemReader syntax

Por exemplo, digamos que você tenha um arquivo CSV chamado ratings.csv. Você armazenou esse arquivo em um prefixo designado csvDataset, em um bucket do Amazon S3.

{ "ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "FIRST_ROW" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "amzn-s3-demo-bucket", "Key": "csvDataset/ratings.csv" } } }
Input to a child workflow execution

O estado Mapa Distribuído iniciará quantas execuções de fluxo de trabalho secundário forem necessárias para o número de linhas presentes no arquivo CSV, excluindo a linha de cabeçalho, se presente no arquivo. O exemplo a seguir mostra a entrada recebida pela execução de um fluxo de trabalho secundário.

{ "rating": "3.5", "movieId": "307", "userId": "1", "timestamp": "1256677221" }

Um estado Mapa Distribuído pode aceitar um manifesto do Inventário Amazon S3 armazenado em um bucket do Amazon S3 como um conjunto de dados.

Quando a execução do fluxo de trabalho atinge o Map estado, o Step Functions invoca a ação da GetObjectAPI para buscar o arquivo de manifesto de inventário especificado do Amazon S3. O estado Map então itera os objetos no inventário para retornar uma matriz de metadados de objetos do Inventário Amazon S3.

nota
  • Atualmente, o Step Functions suporta 10 GB como o tamanho máximo de um arquivo individual em um relatório de inventário do Amazon S3 após a descompactação. No entanto, o Step Functions é capaz de processar mais de 10 GB se o tamanho de cada arquivo individual é inferior a esse valor.

  • O Step Functions precisa das devidas permissões para acessar conjuntos de dados do Amazon S3 que você usa. Para obter informações sobre políticas do IAM para o conjunto de dados, consulte Políticas do IAM para conjuntos de dados.

Veja a seguir o exemplo de um arquivo de inventário no formato CSV. Esse arquivo inclui os objetos chamados csvDataset e imageDataset, que são armazenados em um bucket do Amazon S3 com o nome amzn-s3-demo-source-bucket.

"amzn-s3-demo-source-bucket","csvDataset/","0","2022-11-16T00:27:19.000Z" "amzn-s3-demo-source-bucket","csvDataset/titles.csv","3399671","2022-11-16T00:29:32.000Z" "amzn-s3-demo-source-bucket","imageDataset/","0","2022-11-15T20:00:44.000Z" "amzn-s3-demo-source-bucket","imageDataset/n02085620_10074.jpg","27034","2022-11-15T20:02:16.000Z" ...
Importante

Atualmente, o Step Functions não oferece suporte ao uso do relatório do Inventário Amazon S3 definido pelo usuário como um conjunto de dados. Você também deve se certificar de que o formato de saída do seu relatório do Inventário Amazon S3 seja CSV. Para obter mais informações sobre os Inventários Amazon S3 e como configurá-los, consulte Inventário Amazon S3 no Guia do usuário do Amazon S3.

O exemplo a seguir de um arquivo de manifesto de inventário mostra os cabeçalhos CSV dos metadados do objeto de inventário.

{ "sourceBucket" : "amzn-s3-demo-source-bucket", "destinationBucket" : "arn:aws:s3:::amzn-s3-demo-inventory", "version" : "2016-11-30", "creationTimestamp" : "1668560400000", "fileFormat" : "CSV", "fileSchema" : "Bucket, Key, Size, LastModifiedDate", "files" : [ { "key" : "amzn-s3-demo-bucket/destination-prefix/data/20e55de8-9c21-45d4-99b9-46c732000228.csv.gz", "size" : 7300, "MD5checksum" : "a7ff4a1d4164c3cd55851055ec8f6b20" } ] }

As guias a seguir mostram exemplos da sintaxe do campo ItemReader e da entrada transmitida para a execução de um fluxo de trabalho secundário para esse conjunto de dados.

ItemReader syntax
{ "ItemReader": { "ReaderConfig": { "InputType": "MANIFEST" }, "Resource": "arn:aws:states:::s3:getObject", "Parameters": { "Bucket": "amzn-s3-demo-destination-bucket", "Key": "destination-prefix/amzn-s3-demo-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json" } } }
Input to a child workflow execution
{ "LastModifiedDate": "2022-11-16T00:29:32.000Z", "Bucket": "amzn-s3-demo-source-bucket", "Size": "3399671", "Key": "csvDataset/titles.csv" }

Dependendo dos campos selecionados ao configurar o relatório do Inventário Amazon S3, o conteúdo do arquivo manifest.json pode variar do exemplo mostrado.

Políticas do IAM para conjuntos de dados

Ao criar fluxos de trabalho com o console do Step Functions, o Step Functions pode gerar automaticamente políticas do IAM com base nos recursos na definição de fluxo de trabalho. Essas políticas incluem os privilégios mínimos necessários para permitir que o perfil da máquina de estado invoque a ação da API StartExecution para o estado Mapa Distribuído. Essas políticas também incluem os privilégios mínimos necessários: Step Functions para acessar AWS recursos, como buckets e objetos do Amazon S3 e funções Lambda. É altamente recomendável que você inclua apenas as permissões que forem necessárias em suas políticas do IAM. Por exemplo, se o fluxo de trabalho incluir um estado Map no modo distribuído, defina o escopo de suas políticas até o bucket e a pasta específicos do Amazon S3 que contêm o conjunto de dados.

Importante

Se você especificar um bucket e um objeto do Amazon S3, ou prefixo, com um caminho de referência para um par de valores-chave existente na entrada do estado Mapa Distribuído, certifique-se de atualizar as políticas de IAM do fluxo de trabalho. Defina o escopo das políticas até o bucket e os nomes de objetos para os quais o caminho é resolvido em runtime.

Os exemplos de políticas do IAM a seguir concedem os privilégios mínimos necessários para acessar seus conjuntos de dados do Amazon S3 usando ListObjectsas ações de GetObjectV2 e API.

exemplo Política do IAM para objeto do Amazon S3 como conjunto de dados

O exemplo a seguir mostra uma política do IAM que concede os privilégios mínimos para acessar os objetos organizados em processImages em um bucket do Amazon S3 chamado amzn-s3-demo-bucket.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages" ] } } } ] }
exemplo Política do IAM para um arquivo CSV como conjunto de dados

O exemplo a seguir mostra uma política do IAM que concede os privilégios mínimos para acessar um arquivo CSV chamado ratings.csv.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/csvDataset/ratings.csv" ] } ] }
exemplo Política do IAM para um inventário Amazon S3 como conjunto de dados

O exemplo a seguir mostra uma política do IAM que concede os privilégios mínimos para acessar um relatório de inventário Amazon S3.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::destination-prefix/amzn-s3-demo-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json", "arn:aws:s3:::destination-prefix/amzn-s3-demo-bucket/config-ID/data/*" ] } ] }