Criação de um canal de entrada de ML no AWS Clean Rooms ML - AWS Clean Rooms

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

Criação de um canal de entrada de ML no AWS Clean Rooms ML

Pré-requisitos:

  • E Conta da AWS com acesso a AWS Clean Rooms

  • Uma colaboração configurada AWS Clean Rooms onde você deseja criar o canal de entrada de ML

  • Permissões para consultar dados e criar canais de entrada de ML na colaboração.

  • (Opcional) Um algoritmo de modelo existente para associar ao canal de entrada de ML ou permissões para criar um novo

  • (Opcional) Tabelas com regras de análise que podem ser executadas para o modelo especificado.

  • (Opcional) Um modelo de consulta ou análise SQL existente a ser usado para gerar o conjunto de dados

  • (Opcional) Uma função de serviço existente com permissões apropriadas ou permissões para criar uma nova função de serviço

  • (Opcional) Uma AWS KMS chave personalizada se você quiser usar sua própria chave de criptografia

  • Permissões apropriadas para criar e gerenciar modelos de ML na colaboração

Um canal de entrada de ML é um conjunto de dados criado a partir de uma consulta de dados específica. Membros com a capacidade de consultar dados podem preparar seus dados para treinamento e inferência criando um canal de entrada de ML. A criação de um canal de entrada de ML permite que os dados sejam usados em diferentes modelos de treinamento dentro da mesma colaboração. Você deve criar canais de entrada de ML separados para treinamento e inferência.

Para criar um canal de entrada de ML, você deve especificar a consulta SQL usada para consultar os dados de entrada e criar o canal de entrada de ML. Os resultados dessa consulta nunca são compartilhados com nenhum membro e permanecem dentro dos limites do Clean Rooms ML. O Amazon Resource Name (ARN) de referência é usado nas próximas etapas para treinar um modelo ou executar inferência.

Console
Para criar um canal de entrada de ML (console)
  1. Faça login no Console de gerenciamento da AWS e abra o AWS Clean Rooms console em https://console.aws.amazon.com/cleanrooms.

  2. No painel de navegação à esquerda, escolha Colaborações.

  3. Na página Colaborações, escolha a colaboração em que você deseja criar um canal de entrada de ML.

  4. Depois que a colaboração for aberta, escolha a guia Modelos de ML.

  5. Em Modelos de ML personalizados, na seção Canais de entrada de ML, escolha Criar canal de entrada de ML.

  6. Na página Criar canal de entrada de ML, para obter detalhes do canal de entrada de ML, faça o seguinte:

    1. Em Nome, insira um nome exclusivo para seu canal.

    2. (Opcional) Em Descrição, insira uma descrição do seu canal.

    3. Em Algoritmo do modelo associado, selecione o algoritmo a ser usado.

      Escolha Associar algoritmo de modelo para adicionar um novo.

  7. Para Conjunto de dados, escolha um método para gerar o conjunto de dados de treinamento:

    • Escolha a consulta SQL para usar os resultados de uma consulta SQL como o conjunto de dados de treinamento.

      Se você escolheu consulta SQL, insira sua consulta no campo Consulta SQL.

      (Opcional) Para importar uma consulta que você usou recentemente, escolha Importar de consultas recentes.

    • Escolha Modelo de análise para usar os resultados de um modelo de análise como conjunto de dados de treinamento.

      Atenção

      A geração de dados sintéticos protege contra a inferência de atributos individuais, independentemente de indivíduos específicos estarem presentes no conjunto de dados original ou de atributos de aprendizagem desses indivíduos. No entanto, isso não impede que valores literais do conjunto de dados original, incluindo informações de identificação pessoal (PII), apareçam no conjunto de dados sintético.

      Recomendamos evitar valores no conjunto de dados de entrada associados a apenas um titular de dados, pois eles podem reidentificar um titular de dados. Por exemplo, se apenas um usuário residir em um CEP, a presença desse CEP no conjunto de dados sintético confirmaria que o usuário estava no conjunto de dados original. Técnicas como truncar valores de alta precisão ou substituir catálogos incomuns por outros podem ser usadas para mitigar esse risco. Essas transformações podem fazer parte da consulta usada para criar o canal de entrada de ML.

    1. Se nenhuma tabela estiver associada, escolha Associar tabela para adicionar tabelas com uma regra de análise que possa ser executada para o modelo especificado.

    2. Escolha o tipo de trabalhador a ser usado ao criar esse canal de dados. O tipo de trabalhador padrão é CR.1X. Especifique o número de trabalhadores a serem usados. O número padrão do trabalhador é 16. Para especificar as propriedades do Spark:

      1. Expanda as propriedades do Spark.

      2. Escolha Adicionar propriedades do Spark.

      3. Na caixa de diálogo de propriedades do Spark, escolha um nome de propriedade na lista suspensa e insira um Valor.

      A tabela a seguir fornece uma definição para cada propriedade.

      Para obter mais informações sobre as propriedades do Spark, consulte Propriedades do Spark na documentação do Apache Spark.

      Nome da propriedade Description Valor padrão

      Falhas do Spark.Task.max

      Controla quantas vezes consecutivas uma tarefa pode falhar antes que o trabalho falhe. Requer um valor maior ou igual a 1. O número de novas tentativas permitidas é igual a esse valor menos 1. A contagem de falhas é reiniciada se alguma tentativa for bem-sucedida. Falhas em tarefas diferentes não se acumulam até esse limite.

      4

      spark.sql.files. maxPartitionBytes

      Define o número máximo de bytes a serem compactados em uma única partição ao ler fontes baseadas em arquivos, como Parquet, JSON e ORC.

      128 MB

      Spark.Hadoop.FS.S3.max Tentativas

      Define o número máximo de tentativas para operações de arquivos do Amazon S3.

      spark.network.timeout

      Define o tempo limite padrão para todas as interações de rede. Substitui as seguintes configurações de tempo limite se elas não estiverem definidas:

      • spark.storage. blockManagerHeartbeatTimeoutMs

      • spark.shuffle.io.Tempo limite de conexão

      • spark.rpc.askTimeout

      • Spark.rpc.LookupTimeout

      Década de 120

      spark.rdd.com press

      Especifica se as partições RDD serializadas devem ser compactadas usando spark.io.compression.codec. Aplica-se a StorageLevel .MEMORY_ONLY_SER em Java e Scala ou .MEMORY_ONLY em Python. StorageLevel Reduz o espaço de armazenamento, mas requer tempo adicional de processamento da CPU.

      FALSE

      spark.shuffle.spill.compress

      Especifica se os dados de derramamento aleatório devem ser compactados usando spark.io.compression.codec.

      TRUE

      spark.sql.adaptativo. advisoryPartitionSizeInBytes

      Define o tamanho de destino em bytes para partições aleatórias durante a otimização adaptativa quando spark.sql.adaptive.enabled é verdadeiro. Controla o tamanho da partição ao unir partições pequenas ou dividir partições inclinadas.

      (valor de spark.sql.adaptive.shuffle. targetPostShuffleInputSize)

      spark.sql.adaptativo. autoBroadcastJoinLimite

      Define o tamanho máximo da tabela em bytes para transmissão aos nós de trabalho durante as junções. Aplica-se somente na estrutura adaptativa. Usa o mesmo valor padrão de spark.sql. autoBroadcastJoinLimite. Defina como -1 para desativar a transmissão.

      (none)

      spark.sql.adaptive.coalescePartitions.Enabled

      Especifica se as partições aleatórias contíguas devem ser unidas com base em spark.sql.adaptive. advisoryPartitionSizeInBytes para otimizar o tamanho da tarefa. Requer que spark.sql.adaptive.enabled seja verdadeiro.

      TRUE

      Partições spark.sql.adaptive.coalesce. initialPartitionNum

      Define o número inicial de partições aleatórias antes da coalescência. Requer que spark.sql.adaptive.enabled e spark.sql.adaptive.coalescePartitions.enabled sejam verdadeiros. O padrão é o valor de spark.sql.shuffle.partitions.

      (none)

      Partições spark.sql.adaptive.coalesce. minPartitionSize

      Define o tamanho mínimo para partições aleatórias agrupadas para evitar que as partições se tornem muito pequenas durante a otimização adaptativa.

      1 MB

      spark.sql.adaptive.coalescePartitions.Parallelism First

      Especifica se os tamanhos das partições devem ser calculados com base no paralelismo do cluster em vez de spark.sql.adaptive. advisoryPartitionSizeInBytes durante a coalescência de partições. Gera tamanhos de partição menores do que o tamanho de destino configurado para maximizar o paralelismo. Recomendamos definir isso como false em clusters ocupados para melhorar a utilização dos recursos, evitando pequenas tarefas excessivas.

      TRUE

      spark.sql.adaptive.enabled

      Especifica se a execução adaptativa de consultas deve ser habilitada para otimizar novamente os planos de consulta durante a execução da consulta, com base em estatísticas precisas de tempo de execução.

      TRUE

      spark.sql.adaptativo. forceOptimizeSkewedJunte-se

      Especifica se a ativação deve ser forçada, OptimizeSkewedJoin mesmo que isso introduza um embaralhamento extra.

      FALSE

      spark.sql.adaptativo. localShuffleReader.ativado

      Especifica se os leitores aleatórios locais devem ser usados quando o particionamento aleatório não é necessário, como após a conversão de junções de classificação e mesclagem em junções de hash de transmissão. Requer que spark.sql.adaptive.enabled seja verdadeiro.

      TRUE

      spark.sql.adaptativo. maxShuffledHashJoinLocalMapThreshold

      Define o tamanho máximo da partição em bytes para criar mapas de hash locais. Prioriza as junções de hash embaralhadas sobre as junções de classificação e mesclagem quando:

      • Esse valor é igual ou excede spark.sql.adaptive. advisoryPartitionSizeInBytes

      • Todos os tamanhos de partição estão dentro desse limite

      Substitui spark.sql.join. preferSortMergeConfiguração de junção.

      0 bytes

      spark.sql.adaptativo. optimizeSkewsInRebalancePartitions.habilitado

      Especifica se as partições aleatórias distorcidas devem ser otimizadas dividindo-as em partições menores com base em spark.sql.adaptive. advisoryPartitionSizeInBytes. Requer que spark.sql.adaptive.enabled seja verdadeiro.

      TRUE

      spark.sql.adaptativo. rebalancePartitionsSmallPartitionFactor

      Define o fator limite de tamanho para mesclar partições durante a divisão. Partições menores que esse fator multiplicado por spark.sql.adaptive. advisoryPartitionSizeInBytes são mesclados.

      0.2

      spark.sql.adaptive.skewJoin.Enabled

      Especifica se deve lidar com a distorção de dados em junções embaralhadas dividindo e, opcionalmente, replicando partições distorcidas. Aplica-se às junções de hash embaralhadas e sorte-mescladas. Requer que spark.sql.adaptive.enabled seja verdadeiro.

      TRUE

      spark.sql.adaptive.skewJoin. skewedPartitionFactor

      Determina o fator de tamanho que determina a inclinação da partição. Uma partição é distorcida quando seu tamanho excede ambos:

      • Esse fator multiplicado pelo tamanho médio da partição

      • O valor de spark.sql.adaptive.skewJoin. skewedPartitionThresholdInBytes

      5

      spark.sql.adaptive.skewJoin. skewedPartitionThresholdInBytes

      Define o limite de tamanho em bytes para identificar partições distorcidas. Uma partição é distorcida quando seu tamanho excede ambos:

      • Esse limite

      • O tamanho médio da partição multiplicado por spark.sql.adaptive.SkewJoin. skewedPartitionFactor

      Recomendamos definir esse valor maior que spark.sql.adaptive. advisoryPartitionSizeInBytes.

      256 MB

      spark.sql. autoBroadcastJoinLimite

      Define o tamanho máximo da tabela em bytes para transmissão aos nós de trabalho durante as junções. Defina como -1 para desativar a transmissão.

      10 MB

      Spark.sql.Tempo limite de transmissão

      Controla o período de tempo limite em segundos para as operações de transmissão durante as junções de transmissão.

      300 segundos

      spark.sql.cbo.enabled

      Especifica se a otimização baseada em custos (CBO) deve ser ativada para a estimativa das estatísticas do plano.

      FALSE

      spark.sql.cbo.joinreorder.dp.star.filter

      Especifica se a heurística do filtro de junção em estrela deve ser aplicada durante a enumeração de junção com base no custo.

      FALSE

      spark.sql.cbo.joinReorder.dp.Threshold

      Define o número máximo de nós unidos permitidos no algoritmo de programação dinâmica.

      12

      spark.sql.cbo.joinReorder.enabled

      Especifica se a reordenação de junções deve ser ativada na otimização baseada em custos (CBO).

      FALSE

      spark.sql.cbo.planStats.Enabled

      Especifica se as contagens de linhas e estatísticas de colunas do catálogo devem ser buscadas durante a geração do plano lógico.

      FALSE

      spark.sql.cbo. starSchemaDetection

      Especifica se a reordenação de junções deve ser ativada com base na detecção do esquema em estrela.

      FALSE

      spark.sql.files. maxPartitionNum

      Define o número máximo de partições de arquivo divididas para fontes baseadas em arquivos (Parquet, JSON e ORC). Redimensiona as partições quando a contagem inicial excede esse valor. Esse é um alvo sugerido, não um limite garantido.

      (none)

      spark.sql.files. maxRecordsPerArquivo

      Define o número máximo de registros a serem gravados em um único arquivo. Nenhum limite se aplica quando definido como zero ou um valor negativo.

      0

      spark.sql.files. minPartitionNum

      Define o número mínimo de partições de arquivo divididas para fontes baseadas em arquivos (Parquet, JSON e ORC). O padrão é spark.sql. leafNodeDefaultParalelismo. Esse é um alvo sugerido, não um limite garantido.

      (none)

      spark.sql. inMemoryColumnarArmazenamento. Tamanho do lote

      Controla o tamanho do lote para armazenamento em cache colunar. Aumentar o tamanho melhora a utilização e a compactação da memória, mas aumenta o risco de out-of-memory erros.

      10000

      spark.sql. inMemoryColumnarArmazenamento. Comprimido

      Especifica se os codecs de compressão devem ser selecionados automaticamente para colunas com base nas estatísticas de dados.

      TRUE

      spark.sql. inMemoryColumnarArmazenamento. enableVectorizedReader

      Especifica se a leitura vetorizada deve ser ativada para o armazenamento em cache colunar.

      TRUE

      spark.sql.legacy. allowHashOnMapType

      Especifica se as operações de hash devem ser permitidas em estruturas de dados do tipo mapa. Essa configuração antiga mantém a compatibilidade com o tratamento de tipos de mapas das versões mais antigas do Spark.

      spark.sql.legacy. allowNegativeScaleOfDecimal

      Especifica se valores de escala negativos devem ser permitidos nas definições de tipo decimal. Essa configuração antiga mantém a compatibilidade com versões mais antigas do Spark que suportavam escalas decimais negativas.

      spark.sql.legacy. castComplexTypesToString.habilitado

      Especifica se o comportamento legado deve ser ativado para converter tipos complexos em cadeias de caracteres. Mantém a compatibilidade com as regras de conversão de tipos das versões mais antigas do Spark.

      spark.sql.legacy. charVarcharAsCorda

      Especifica se os tipos CHAR e VARCHAR devem ser tratados como tipos STRING. Essa configuração antiga fornece compatibilidade com o tratamento de tipos de string das versões mais antigas do Spark.

      spark.sql.legacy. createEmptyCollectionUsingStringType

      Especifica se as coleções vazias devem ser criadas usando elementos do tipo string. Essa configuração antiga mantém a compatibilidade com o comportamento de inicialização da coleção das versões mais antigas do Spark.

      spark.sql.legacy. exponentLiteralAsDecimal. Ativado

      Especifica se os literais exponenciais devem ser interpretados como tipos decimais. Essa configuração antiga mantém a compatibilidade com o tratamento literal numérico das versões mais antigas do Spark.

      spark.sql.legacy.json. allowEmptyString.ativado

      Especifica se as cadeias de caracteres vazias devem ser permitidas no processamento de JSON. Essa configuração antiga mantém a compatibilidade com o comportamento de análise JSON das versões mais antigas do Spark.

      spark.sql.legacy.parquet.int96 RebaseModelRead

      Especifica se o modo antigo de rebase de INT96 carimbo de data/hora deve ser usado ao ler arquivos Parquet. Essa configuração antiga mantém a compatibilidade com o tratamento de timestamp das versões mais antigas do Spark.

      spark.sql.legacy. timeParserPolicy

      Controla o comportamento da análise de tempo para compatibilidade com versões anteriores. Essa configuração herdada determina como os carimbos de data/hora e as datas são analisados a partir de cadeias de caracteres.

      Spark.sql.legacy.TypeCoertion. datetimeToString.ativado

      Especifica se o comportamento de coerção do tipo legado deve ser ativado ao converter valores de data e hora em cadeias de caracteres. Mantém a compatibilidade com as regras de conversão de data e hora das versões mais antigas do Spark.

      spark.sql. maxSinglePartitionBytes

      Define o tamanho máximo da partição em bytes. O planejador introduz operações aleatórias para partições maiores para melhorar o paralelismo.

      128m

      spark.sql.Cache de metadados TTLSeconds

      Controla o time-to-live (TTL) para caches de metadados. Aplica-se aos metadados do arquivo de partição e aos caches do catálogo de sessões. Requer:

      • Um valor positivo maior que zero

      • Spark.sql.CatalogImplementation configurada para hive

      • spark.sql.hive. filesourcePartitionFileCacheSize maior que zero

      • spark.sql.hive. manageFilesourcePartitions definido como verdadeiro

      -1000 ms

      spark.sql.optimizer. collapseProjectAlwaysEm linha

      Especifica se as projeções e expressões embutidas adjacentes devem ser reduzidas, mesmo quando isso causa duplicação.

      FALSE

      spark.sql.optimizer. dynamicPartitionPruning.ativado

      Especifica se devem ser gerados predicados para colunas de partição usadas como chaves de junção.

      TRUE

      spark.sql.optimizer. enableCsvExpressionOtimização

      Especifica se as expressões CSV devem ser otimizadas no otimizador de SQL removendo colunas desnecessárias das operações from_csv.

      TRUE

      spark.sql.optimizer. enableJsonExpressionOtimização

      Especifica se as expressões JSON devem ser otimizadas no otimizador de SQL por meio de:

      • Removendo colunas desnecessárias das operações from_json

      • Simplificando as combinações from_json e to_json

      • Otimizando as operações named_struct

      TRUE

      spark.sql.optimizer.Regras excluídas

      Define as regras do otimizador a serem desativadas, identificadas por nomes de regras separados por vírgula. Algumas regras não podem ser desativadas, pois são necessárias para serem corretas. O otimizador registra quais regras foram desativadas com sucesso.

      (none)

      spark.sql.optimizer.runtime.BloomFilter. applicationSideScanSizeThreshold

      Define o tamanho mínimo de escaneamento agregado em bytes necessário para injetar um filtro Bloom no lado do aplicativo.

      10 GB

      spark.sql.optimizer.runtime.BloomFilter. creationSideThreshold

      Define o limite máximo de tamanho para injetar um filtro Bloom no lado da criação.

      10 MB

      spark.sql.optimizer.runtime.BloomFilter.Enabled

      Especifica se um filtro Bloom deve ser inserido para reduzir os dados aleatórios quando um lado de uma junção aleatória tem um predicado seletivo.

      TRUE

      spark.sql.optimizer.runtime.BloomFilter. expectedNumItems

      Define o número padrão de itens esperados no filtro Bloom em tempo de execução.

      1000000

      spark.sql.optimizer.runtime.BloomFilter. maxNumBits

      Define o número máximo de bits permitidos no filtro Bloom em tempo de execução.

      67108864

      spark.sql.optimizer.runtime.BloomFilter. maxNumItems

      Define o número máximo de itens esperados permitidos no filtro Bloom em tempo de execução.

      4000000

      spark.sql.optimizer.runtime.bloomfilter.number.threshold

      Limita o número máximo de filtros de tempo de execução não DPP permitidos por consulta para evitar out-of-memory erros no driver.

      10

      spark.sql.optimizer.runtime.bloomfilter.Numbits

      Define o número padrão de bits usados no filtro Bloom em tempo de execução.

      8388608

      spark.sql.optimizer.runtime. rowlevelOperationGroupFiltro ativado

      Especifica se a filtragem de grupos de tempo de execução deve ser ativada para operações em nível de linha. Permite que as fontes de dados:

      • Remova grupos inteiros de dados (como arquivos ou partições) usando filtros de fonte de dados

      • Execute consultas em tempo de execução para identificar registros correspondentes

      • Descarte grupos desnecessários para evitar regravações caras

      Limitações:

      • Nem todas as expressões podem ser convertidas em filtros de fonte de dados

      • Algumas expressões exigem avaliação do Spark (como subconsultas)

      TRUE

      spark.sql.optimizer.RuntimeFilter. semiJoinReduction.ativado

      Especifica se uma junção semi-aleatória deve ser inserida para reduzir os dados aleatórios quando um lado de uma junção aleatória tem um predicado seletivo.

      FALSE

      spark.sql.parquet.aggregatePushdown

      Especifica se os agregados devem ser enviados para o Parquet para otimização. Suporta:

      • MIN e MAX para tipos booleano, inteiro, flutuante e de data

      • CONTAGEM para todos os tipos de dados

      Lança uma exceção se faltarem estatísticas em qualquer rodapé do arquivo Parquet.

      FALSE

      spark.sql.parquet. columnarReaderBatchTamanho

      Controla o número de linhas em cada lote de leitores vetorizados do Parquet. Escolha um valor que equilibre a sobrecarga de desempenho e o uso de memória para evitar out-of-memory erros.

      4096

      spark.sql.session.fuso horário

      Define o fuso horário da sessão para lidar com carimbos de data/hora em literais de string e conversão de objetos Java. Aceita:

      • area/city Formato baseado IDs na região (como América/Los_Angeles)

      • Deslocamentos de zona no formato (+/-) HH, (+/-) HH:mm ou (+/-) HH:mm:ss (como -08 ou + 01:00)

      • UTC ou Z como aliases para + 00:00

      (valor do fuso horário local)

      spark.sql.shuffle.partições

      Define o número padrão de partições para o embaralhamento de dados durante junções ou agregações. Não pode ser modificado entre reinicializações de consultas de streaming estruturadas no mesmo local do ponto de verificação.

      200

      spark.sql. shuffledHashJoinFator

      Define o fator de multiplicação usado para determinar a elegibilidade da junção de hash aleatória. Uma junção de hash aleatória é selecionada quando o tamanho dos dados do lado pequeno multiplicado por esse fator é menor que o tamanho dos dados do lado grande.

      3

      spark.sql.sources. parallelPartitionDiscovery.limite

      Define o número máximo de caminhos para a listagem de arquivos do lado do driver com fontes baseadas em arquivos (Parquet, JSON e ORC). Quando excedidos durante a descoberta da partição, os arquivos são listados usando uma tarefa distribuída separada do Spark.

      32

      spark.sql.statistics.histogram.enabled

      Especifica se devem ser gerados histogramas de altura equivalente durante o cálculo das estatísticas da coluna para melhorar a precisão da estimativa. Requer uma varredura de tabela adicional além da necessária para estatísticas básicas de colunas.

      FALSE

    3. Em Retenção de dados em dias, insira o número de dias para manter os dados.

    4. Para Formato de resultado, escolha CSV ou Parquet como o formato de dados que o canal de entrada ML deve usar.

  8. Em Acesso ao serviço, escolha o nome da função de serviço existente que será usado para acessar essa tabela ou escolha Criar e usar uma nova função de serviço.

  9. Em Criptografia, escolha o segredo Criptografar com uma chave KMS personalizada para especificar sua própria chave KMS e informações relacionadas. Caso contrário, o Clean Rooms ML gerenciará a criptografia.

  10. Escolha Criar canal de entrada de ML.

    Levará alguns minutos para criar o canal de entrada de ML. Você pode ver uma lista de canais de entrada de ML na guia Modelos de ML.

nota

Depois que o canal de entrada de ML for criado, você não poderá editá-lo.

API

Para criar um canal de entrada de ML (API)

Execute o código a seguir com seus parâmetros específicos:

import boto3 acr_client = boto3.client('cleanroomsml') acr_client.create_ml_input_channel( name="ml_input_channel_name", membershipIdentifier='membership_id', configuredModelAlgorithmAssociations=[configured_model_algorithm_association_arn], retentionInDays=1, inputChannel={ "dataSource": { "protectedQueryInputParameters": { "sqlParameters": { "queryString": "select * from table", "computeConfiguration": { "worker": { "type": "CR.1X", "number": 16, "properties": { "spark": { "spark configuration key": "spark configuration value", } } } }, "resultFormat": "PARQUET" } } }, "roleArn": "arn:aws:iam::111122223333:role/role_name" } ) channel_arn = resp['ML Input Channel ARN']