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 delimitado por texto que é armazenado 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",
"VersionId": "BcK42coT2jE1234VHLUvBV1yLNod2OEt"
}
}No fluxo de trabalho JSONatabaseado a seguir, observe que ele Parameters foi 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"
"VersionId": "BcK42coT2jE1234VHLUvBV1yLNod2OEt"
}
}
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.
Resource-
A ação de integração da API Amazon S3 que o Step Functions usará, como
arn:aws:states:::s3:getObject Arguments (JSONata) orParameters(JSONPath)-
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.
Se o bucket tiver o versionamento ativado, você também poderá fornecer a versão do objeto Amazon S3.
ReaderConfig-
Um objeto JSON que especifica os seguintes detalhes:
-
InputTypeAceita um dos seguintes valores:
CSV,JSON,JSONL,PARQUET,MANIFEST.Especifica o tipo de fonte de dados do Amazon S3, como um arquivo delimitado por texto
CSV(), objeto, arquivo JSON, linhas JSON, arquivo Parquet, manifesto do Athena ou uma lista de inventário do Amazon S3. No Workflow Studio, você pode selecionar um tipo de entrada na fonte do item do S3.A maioria dos tipos de entrada que usam
S3GetObjectrecuperação também suportaExpectedBucketOwnerVersionIdcampos em seus parâmetros. Os arquivos Parquet são a única exceção que não suportaVersionId.Os arquivos de entrada suportam os seguintes tipos de compactação externa: GZIP, ZSTD.
Exemplos de nomes de arquivo:
myObject.jsonl.gzmyObject.csv.zstde.Nota: Os arquivos Parquet são um tipo de arquivo binário compactado internamente. As compressões GZIP, ZSTD e Snappy são suportadas.
-
TransformationOpcional. O valor será ou
NONEouLOAD_AND_FLATTEN.Se não for especificado,
NONEserá assumido. Quando definido comoLOAD_AND_FLATTEN, você também deve definirInputType.Comportamento padrão: o mapa iterará sobre objetos de metadados retornados de chamadas para.
S3:ListObjectsV2Quando definido comoLOAD_AND_FLATTEN, o mapa lerá e processará os objetos de dados reais referenciados na lista de resultados. -
ManifestTypeOpcional. O valor será ou
ATHENA_DATAouS3_INVENTORY.Nota: Se definido como
S3_INVENTORY, você também não deve especificarInputTypeporque se presume que o tipo sejaCSV. -
CSVDelimiterVocê pode especificar esse campo quando
InputTypeforCSVouMANIFEST.Aceita um dos seguintes valores:
COMMA(padrão),PIPE,SEMICOLON,SPACE,TAB.nota
Com o
CSVDelimitercampo,ItemReaderpode processar arquivos delimitados por caracteres que não sejam uma vírgula. As referências a “arquivos CSV” também incluem arquivos que usam delimitadores alternativos especificados pelo campo.CSVDelimiter -
CSVHeaderLocationVocê pode especificar esse campo quando
InputTypeforCSVouMANIFEST.Aceita um dos seguintes valores para especificar a localização do cabeçalho da coluna:
-
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 contiver os seguintes dados.
1,307,3.5,1256677221 1,481,3.5,1256677456 1,1091,1.5,1256677471 ...Você pode fornecer a seguinte matriz JSON como cabeçalho CSV:
"ItemReader": { "ReaderConfig": { "InputType": "CSV", "CSVHeaderLocation": "GIVEN", "CSVHeaders": ["userId","movieId","rating","timestamp"] } }
Tamanho do cabeçalho CSV
O Step Functions suporta cabeçalhos de até 10 KiB para arquivos delimitados por texto.
-
-
MaxItemsPor padrão, o
Mapestado itera sobre todos os itens no conjunto de dados especificado. Ao configurarMaxItems, você pode limitar o número de itens de dados passados para oMapestado. Por exemplo, se você fornecer um arquivo delimitado por texto que contém 1.000 linhas e definir um limite de 100, o intérprete passará somente 100 linhas para o estado Mapa Distribuído. O estadoMapprocessa os itens em ordem sequencial, começando depois da linha do cabeçalho.Para JSONPathfluxos de trabalho, você pode usar
MaxItemsPathum caminho de referência para um par de valores-chave na entrada de estado que é resolvido como um número inteiro. Observe que você pode especificar umMaxItemsouMaxItemsPath, mas não ambos.nota
Você pode especificar um limite de até 100.000.000 após o qual
Distributed Mapele interrompe a leitura dos itens.
-
Requisitos para conta e região
Seus buckets do Amazon S3 devem estar na mesma máquina de estado Conta da AWS e Região da AWS na mesma.
Observe que, embora sua máquina de estado possa acessar arquivos em buckets diferentes Contas da AWS que estejam na mesma Região da AWS, o Step Functions só suporta a listagem de objetos em buckets do Amazon S3 que estejam na mesma máquina e na Conta da AWS Região da AWS mesma máquina de estado.
Processamento de conjuntos de dados aninhados (atualizado em 11 de setembro de 2025)
Com o novo Transformation parâmetro, você pode especificar um valor de LOAD_AND_FLATTEN e o mapa lerá os objetos de dados reais referenciados na lista de resultados de uma chamada paraS3:ListObjectsV2.
Antes dessa versão, você precisaria criar mapas distribuídos aninhados para recuperar os metadados e processar os dados reais. O primeiro mapa iteraria sobre os metadados retornados S3:ListObjectsV2 e invocaria fluxos de trabalho secundários. Outro mapa dentro de cada máquina de estado secundário leria os dados reais de arquivos individuais. Com a opção de transformação, você pode realizar as duas etapas ao mesmo tempo.
Imagine que você queira executar uma auditoria diária nos últimos 24 arquivos de log que seu sistema produz de hora em hora e armazena no Amazon S3. Seu estado de mapa distribuído pode listar os arquivos de log comS3:ListObjectsV2, em seguida, iterar sobre os metadados de cada objeto, ou agora pode carregar e analisar os objetos de dados reais armazenados em seu bucket do Amazon S3.
Usar a LOAD_AND_FLATTEN opção pode aumentar a escalabilidade, reduzir as contagens de execuções de mapas abertos e processar vários objetos simultaneamente. Normalmente, os trabalhos do Athena e do Amazon EMR geram resultados que podem ser processados com a nova configuração.
Veja a seguir um exemplo dos parâmetros em uma ItemReader definição:
{ "QueryLanguage": "JSONata", "States": { ... "Map": { ... "ItemReader": { "Resource": "arn:aws:states:::s3:listObjectsV2", "ReaderConfig": { // InputType is required if Transformation is LOAD_AND_FLATTEN. "InputType": "CSV | JSON | JSONL | PARQUET", // Transformation is OPTIONAL and defaults to NONE if not present "Transformation": "NONE | LOAD_AND_FLATTEN" }, "Arguments": { "Bucket": "amzn-s3-demo-bucket1", "Prefix": "{% $states.input.PrefixKey %}" } }, ... } }
Exemplos de conjuntos de dados
Você pode especificar uma das seguintes opções como conjunto de dados:
nota
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 Recomendações de 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.
A entrada pode ser uma matriz JSON, um objeto JSON ou uma matriz dentro de um nó de um objeto JSON.
Step Functions iterará diretamente sobre os elementos de uma matriz ou os pares de valores-chave de um objeto JSON.
Para selecionar um nó específico que contém uma matriz de um objeto JSON, você pode usar o ItemsPath (Mapa, JSONPath somente) ou usar uma JSONata expressão no Items campo para JSONata estados.
Para processar itens individuais, o estado Mapa Distribuído inicia a execução de um fluxo de trabalho secundário para cada item. 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 ItemReader campo não é necessário quando seu conjunto de dados são dados JSON de uma etapa anterior.
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 ETage Key, dos dados reais 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. Em seguida, a matriz retornada após a invocação da ação ListObjectsV2 da API contém 100 itens de metadados. O estado do Mapa Distribuído então inicia 100 execuções de fluxo de trabalho secundário para processar cada item.
Para processar objetos de dados diretamente, sem fluxos de trabalho aninhados, você pode escolher a opção Transformação LOAD_AND_FLATTEN para processar itens diretamente.
nota
-
O Step Functions também incluirá um item para cada pasta criada no bucket do Amazon S3 usando o console do Amazon S3. Os itens da pasta resultam no início de execuções adicionais do fluxo de trabalho secundário.
Para evitar a criação de execuções adicionais de fluxo de trabalho secundário para cada 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 Recomendações de 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.
Com suporte aprimorado para o S3 ListObjects V2 como fonte de entrada no Distributed Map, suas máquinas de estado podem ler e processar vários objetos de dados diretamente dos buckets do Amazon S3, eliminando a necessidade de mapas aninhados para processar os metadados!
Com a LOAD_AND_FLATTEN opção, sua máquina de estado fará o seguinte:
Leia o conteúdo real de cada objeto listado pela chamada do Amazon S3
ListObjectsV2.Analise o conteúdo com base em InputType (CSV, JSON, JSONL, Parquet).
Crie itens a partir do conteúdo do arquivo (linhas/registros) em vez de metadados.
Com a opção de transformação, você não precisa mais de mapas distribuídos aninhados para processar os metadados. Usar a opção LOAD_AND_FLATTEN aumenta a escalabilidade, reduz a contagem ativa de execuções de mapas e processa vários objetos simultaneamente.
A configuração a seguir mostra a configuração de umItemReader:
"ItemReader": {
"Resource": "arn:aws:states:::s3:listObjectsV2",
"ReaderConfig": {
"InputType": "JSON",
"Transformation": "LOAD_AND_FLATTEN"
},
"Arguments": {
"Bucket": "S3_BUCKET_NAME",
"Prefix": "S3_BUCKET_PREFIX"
}
}Recomendação de prefixo de bucket
Recomendamos incluir uma barra final no seu prefixo. Por exemplo, se você selecionar dados com um prefixo defolder1, sua máquina de estado processará ambos folder1/myData.csv e. folder10/myData.csv O uso folder1/ processará estritamente apenas uma pasta.
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 ou um objeto JSON.
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.
Se o arquivo JSON contiver uma estrutura de objeto aninhada, você poderá selecionar o nó específico com seu conjunto de dados com um. ItemsPointer Por exemplo, a configuração a seguir extrairia uma lista aninhada de produtos em destaque no inventário.
"ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "InputType": "JSON", "ItemsPointer": "/inventory/products/featured" }, "Arguments": { "Bucket": "amzn-s3-demo-bucket", "Key": "nested-data-file.json" } }
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 suporta a leitura de um item de até 8 MB de um arquivo delimitado por texto, JSON ou arquivo de linhas JSON se você aplicar o
ItemSelectorcampo opcional para reduzir o tamanho do item. -
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 Recomendações de 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 . Você armazenou esse arquivo em um prefixo chamado factcheck.json, em um bucket do Amazon S3. A seguir, veja um exemplo do conjunto de dados JSON.jsonDataset
[
{
"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"
},
...
]Um estado de mapa distribuído pode aceitar um arquivo de linhas JSON armazenado em um bucket do Amazon S3 como um conjunto de dados.
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 suporta a leitura de um item de até 8 MB de um arquivo delimitado por texto, JSON ou arquivo de linhas JSON se você aplicar o
ItemSelectorcampo opcional para reduzir o tamanho do item. -
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 Recomendações de 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.
Neste exemplo, imagine que você tenha um arquivo JSON Lines chamado. Você armazenou esse arquivo em um prefixo chamado factcheck.jsonl, em um bucket do Amazon S3. Veja a seguir um exemplo do conteúdo do arquivo.jsonlDataset
{"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"}nota
Com o CSVDelimiter campo, ItemReader pode processar arquivos delimitados por caracteres que não sejam uma vírgula. As referências a “arquivos CSV” também incluem arquivos que usam delimitadores alternativos especificados pelo campo. CSVDelimiter
Um estado de mapa distribuído pode aceitar um arquivo delimitado por texto armazenado em um bucket do Amazon S3 como um conjunto de dados. Se você usar um arquivo delimitado por texto como seu conjunto de dados, precisará especificar um cabeçalho de coluna. Para obter informações sobre como especificar um cabeçalho, consulteConteúdo do ItemReader campo.
O Step Functions analisa arquivos delimitados por texto com base nas seguintes regras:
-
O delimitador que separa os campos é especificado por in.
CSVDelimiterReaderConfig O delimitador é padronizado como.COMMA -
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.StringToJsonem 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.
-
Barras invertidas (\) são outra forma de escapar de caracteres especiais. As barras invertidas só funcionam com outras barras invertidas, aspas duplas e com o separador de campo configurado, como vírgula ou barra vertical. Uma barra invertida seguida por qualquer outro caractere é removida silenciosamente.
-
Você pode preservar as barras invertidas repetindo-as. Por exemplo:
path,size C:\\Program Files\\MyApp.exe,6534512 -
Barras invertidas que escapam das aspas duplas (
\") só funcionam quando incluídas em pares, então recomendamos escapar das 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 o Step Functions analisa um arquivo delimitado por texto, 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 especificado. Em seguida, o Map estado itera em cada linha do arquivo e inicia a execução de um fluxo de trabalho secundário para processar os itens em cada linha. Por exemplo, suponha que você forneça um arquivo delimitado por texto que contenha 100 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 suporta a leitura de um item de até 8 MB de um arquivo delimitado por texto, JSON ou arquivo de linhas JSON se você aplicar o
ItemSelectorcampo opcional para reduzir o tamanho do item. -
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 Recomendações de 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.
Os arquivos Parquet podem ser usados como fonte de entrada. Os arquivos Apache Parquet armazenados no Amazon S3 fornecem processamento eficiente de dados colunares em grande escala.
Ao usar arquivos Parquet, as seguintes condições se aplicam:
256 MB é o tamanho máximo do grupo de linhas e 5 MB é o tamanho máximo do rodapé. Se você fornecer arquivos de entrada que excedam qualquer um dos limites, sua máquina de estado retornará um erro de tempo de execução.
O
VersionIdcampo não é suportado paraInputType=Parquet.A compactação interna de dados GZIP, ZSTD e Snappy tem suporte nativo. Nenhuma extensão de nome de arquivo é necessária.
O seguinte mostra um exemplo de configuração de ASL para InputType definir como Parquet:
"ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "InputType": "PARQUET" }, "Arguments": { "Bucket": "amzn-s3-demo-bucket", "Key": "my-parquet-data-file-1.parquet" } }
Processamento de trabalhos em grande escala
Para trabalhos de escala extremamente grande, o Step Functions usará muitos leitores de entrada. Os leitores intercalam o processamento, o que pode fazer com que alguns pausem enquanto outros progridem. O progresso intermitente é o comportamento esperado em grande escala.
Você pode usar os arquivos de manifesto do Athena, gerados a partir dos resultados da UNLOAD consulta, para especificar a origem dos arquivos de dados para seu estado do Mapa. Você configura ManifestType paraATHENA_DATA, e InputType para CSVJSONL, ouParquet.
Ao executar uma UNLOAD consulta, o Athena gera um arquivo de manifesto de dados além dos objetos de dados reais. O arquivo de manifesto fornece uma lista CSV estruturada dos arquivos de dados. Tanto o manifesto quanto os arquivos de dados são salvos no local do resultado da consulta do Athena no Amazon S3.
UNLOAD (<YOUR_SELECT_QUERY>) TO 'S3_URI_FOR_STORING_DATA_OBJECT' WITH (format = 'JSON')
Visão geral conceitual do processo, em resumo:
-
Selecione seus dados de uma tabela usando uma
UNLOADconsulta no Athena. -
O Athena gerará um arquivo de manifesto (CSV) e os objetos de dados no Amazon S3.
-
Configure o Step Functions para ler o arquivo de manifesto e processar a entrada.
O recurso pode processar os formatos de saída CSV, JSONL e Parquet do Athena. Todos os objetos referenciados em um único arquivo de manifesto devem ter o mesmo InputType formato. Observe que os objetos CSV exportados por uma UNLOAD consulta não incluem cabeçalho na primeira linha. Veja CSVHeaderLocation se você precisa fornecer cabeçalhos de coluna.
O contexto do mapa também incluirá um $states.context.Map.Item.Source para que você possa personalizar o processamento com base na fonte dos dados.
Veja a seguir um exemplo de configuração de um ItemReader configurado para usar um manifesto do Athena:
"ItemReader": { "Resource": "arn:aws:states:::s3:getObject", "ReaderConfig": { "ManifestType": "ATHENA_DATA", "InputType": "CSV | JSONL | PARQUET" }, "Arguments": { "Bucket": "<S3_BUCKET_NAME>", "Key": "<S3_KEY_PREFIX><QUERY_ID>-manifest.csv" } }
Usando o padrão de manifesto Athena no Workflow Studio
Um cenário comum para processamento de dados aplica um mapa aos dados provenientes de uma consulta UNLOAD do Athena. O mapa invoca uma função Lambda para processar cada item descrito no manifesto do Athena. O Step Functions Workflow Studio fornece um padrão pronto que combina todos esses componentes em um bloco que você pode arrastar para a tela da sua máquina de estado.
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.
Por padrão, o Map estado então itera sobre os objetos no inventário para retornar uma matriz de metadados de objetos de inventário do Amazon S3.
Se você especificar ManifestType como S3_INVENTORY, InputType não poderá ser especificado.
nota
-
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 Recomendações de 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
O Step Functions não oferece suporte a um relatório de inventário do Amazon S3 definido pelo usuário como conjunto de dados.
O formato de saída do seu relatório de inventário do Amazon S3 deve ser CSV.
O exemplo a seguir de um arquivo de manifesto de inventário do Amazon S3 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.
Recomendações de 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. As políticas geradas incluem os privilégios mínimos necessários para permitir que a função de máquina de estado invoque a ação da StartExecution API para o estado do Mapa Distribuído e acesse AWS recursos, como buckets e objetos do Amazon S3 e funções Lambda.
Recomendamos incluir somente as permissões necessárias em suas políticas do IAM. Por exemplo, se seu fluxo de trabalho incluir um Map estado 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 seus 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 a seguir mostram técnicas para conceder os privilégios mínimos necessários para acessar seus conjuntos de dados do Amazon S3 usando ListObjects as ações de V2 e API. GetObject
exemplo condição usando um objeto Amazon S3 como conjunto de dados
A condição a seguir concede o mínimo de privilégios para acessar objetos em uma pasta de um bucket do Amazon S3.processImages
"Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "processImages" ] } }
exemplo usando um arquivo CSV como conjunto de dados
O exemplo a seguir mostra as ações necessárias para acessar um arquivo CSV chamado.ratings.csv
"Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/csvDataset/ratings.csv" ]
exemplo usando um inventário do Amazon S3 como conjunto de dados
Veja a seguir exemplos de recursos para um manifesto de inventário e arquivos de dados do Amazon S3.
"Resource": [ "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/YYYY-MM-DDTHH-MMZ/manifest.json", "arn:aws:s3:::myPrefix/amzn-s3-demo-bucket/myConfig-id/data/*" ]
exemplo usando ListObjects V2 para restringir a um prefixo de pasta
Ao usar a ListObjectsV2, duas políticas serão geradas. Uma é necessária para permitir a listagem do conteúdo do bucket (ListBucket) e outra política permitirá recuperar objetos no bucket (GetObject).
Veja a seguir exemplos de ações, recursos e uma condição:
"Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket" ], "Condition": { "StringLike": { "s3:prefix": [ "/path/to/your/json/" ] } }
"Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/path/to/your/json/*" ]
Observe que não GetObject será definido o escopo e você usará um curinga (*) para o objeto.