View a markdown version of this page

Código - Amazon Quick

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

Código

As ações de código no Quick Automate permitem que você implemente uma lógica personalizada usando blocos de código Python, indo além do que as ações de automação padrão suportam. Eles são adequados para cálculos e transformações de dados complexos e são executados em um ambiente Python restrito para manter a segurança.

Dois tipos de ações de código:

  • Expressões de linha única: operações rápidas de uma linha que modificam variáveis sem retornar valores

  • Blocos de código personalizados: funções Multi-line Python para lógica complexa com parâmetros e valores de retorno

Quando usar ações de código:

Use blocos de código quando precisar:

  • Execute transformações de dados complexas que não estão disponíveis em ações padrão

  • Implemente cálculos ou lógica de negócios personalizados

  • Processar ou manipular estruturas de dados (listas, dicionários, JSON)

  • Trabalhe com datas, horários e fusos horários de maneiras personalizadas

  • Analise ou formate cadeias de caracteres com padrões complexos

  • Otimize o desempenho da automação consolidando várias ações em um bloco de código

Quando não usar ações de código:

Evite blocos de código quando:

  • Já existe uma ação de automação padrão para seu caso de uso

  • A operação é simples o suficiente para ações integradas

  • Você precisa interagir com APIs externas (em vez disso, use a integração da API REST)

  • Você precisa acessar sistemas de arquivos ou bancos de dados (usar integrações apropriadas)

Como acessar as ações do código:

Os blocos de código estão disponíveis por meio de várias interfaces:

  • Painel de ações (recomendado):

    • Abra sua automação no criador de automação

    • Clique no Painel de ações no lado direito

    • Localize “Bloco de código personalizado” na seção Ações de código

    • Arraste e solte o bloco de código em seu fluxo de trabalho de automação

  • Crie com o Assistant:

    • Disponível durante a geração do plano, quando o assistente determina que o código personalizado é necessário

    • O assistente sugere automaticamente blocos de código para operações complexas

    • Você pode solicitar blocos de código descrevendo suas necessidades lógicas personalizadas

Ações disponíveis:

Expressões de linha única

As expressões de linha única executam instruções Python de uma linha que realizam operações sem retornar um valor. Eles são ideais para modificações rápidas em variáveis existentes, como anexar listas, atualizar dicionários ou realizar cálculos simples que modificam o estado.

Propriedades:

  • Expressão (obrigatória): a expressão Python a ser executada (por exemplo, “my_list.append ('new item')”)

Exemplos:

  • Anexando à lista

    my_list.append("1") my_list.append(new_item)
  • Removendo itens da lista

    task_list.remove(completed_task)

Bloco de código personalizado

Os blocos de código personalizados são funções Python de várias linhas que executam lógica complexa, aceitam parâmetros e retornam valores. Eles são a opção alternativa quando ações de automação padrão e expressões de linha única não são suficientes para suas necessidades.

Propriedades:

  • Título da função (obrigatório): identificador de nome para o bloco de código (por exemplo, "Calculate_Total“)

  • Função (obrigatório): bloco de código Python que contém sua lógica personalizada.

    • Etapa 1: Definir parâmetros

      • Clique no botão “Editar” para abrir o editor de código

      • No painel Parâmetros, clique em “Adicionar” para criar novos parâmetros

      • Insira nomes de parâmetros que correspondam às suas variáveis de automação

      • Os parâmetros estão disponíveis como argumentos de função

    • Etapa 2: escreva seu código Python

  • Valor de retorno (opcional): nome da variável para armazenar a saída da função

    • Siga a estrutura de blocos de código necessária (veja abaixo)

    • Implemente sua lógica personalizada dentro da função

    • Use somente bibliotecas aprovadas e funções integradas

    • Inclua uma declaração de retorno se você precisar gerar dados

Estrutura do bloco de código

Todos os blocos de código devem seguir esse formato específico:

@code_block() def your_function_name(parameter1, parameter2, parameter3): ------------------------------------------------------------------------------------- """ Optional: Add a docstring describing what your function does """ # Your custom logic here result = parameter1 + parameter2 + parameter3 return result

Built-in Funções e importações do Python

Todas as funções incorporadas padrão do Python estão disponíveis sem importações (len, str, int, etc.)

Bibliotecas padrão aprovadas (segurança restrita)

Os blocos de código SÓ podem importar essas bibliotecas padrão:

  • base64- Base 64 encoding/decoding

  • datetime- Operações de data e hora

  • json- Análise e geração de JSON

  • math- Funções matemáticas

  • re- Expressões regulares

  • zoneinfo- Tratamento de fuso horário

nota
  • Não é possível importar bibliotecas padrão diferentes das listadas acima.

  • Não é possível instalar ou importar bibliotecas de terceiros. pip installnão é suportado em blocos de código.

Limitações

  • Ambiente Python restrito com acesso limitado à biblioteca. O ambiente de execução é baseado em RestrictedPython, um subconjunto do Python 3.10.

  • Os blocos de código não podem invocar outros blocos de código ou ações

Práticas recomendadas

  • Mantenha os blocos de código simples e focados

  • Use nomes de funções descritivos

  • Sempre prefira ações pré-criadas quando disponíveis

  • Teste seus blocos de código minuciosamente, pois as opções de depuração focadas são limitadas)

Exemplo de casos de uso do

  • Operações matemáticas (Calcular propriedades do círculo - raio como parâmetro)

    def function (radius): return { "radius": radius, "diameter": 2 * radius, "circumference": round(2 * math.pi * radius, 2), "area": round(math.pi * radius ** 2, 2) }
  • Obtendo a atualidade date/time

    def function (): now = datetime.datetime.now() return { "current_date": now.strftime("%Y-%m-%d"), "current_time": now.strftime("%H:%M:%S"), "formatted": now.strftime("%B %d, %Y at %I:%M %p"), "iso_format": now.isoformat(), "timestamp": now.timestamp() }
  • Calculando diferenças de datas - Data de início e data de término como parâmetros

    def function _(start_date_str, end_date_str): # Parse date strings (format: YYYY-MM-DD)_ start = datetime.datetime.strptime(start_date_str, "%Y-%m-%d") end = datetime.datetime.strptime(end_date_str, "%Y-%m-%d") _# Calculate difference_ difference = end - start return { "days": difference.days, "weeks": difference.days // 7, "start": start_date_str, "end": end_date_str }
  • Correspondência de padrões e manipulação de texto usando expressões regulares (validação de endereços de e-mail, números de telefone etc.)

    def function (email, phone, zip_code): email_pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$' phone_pattern = r'^\d{3}-\d{3}-\d{4}$' zip_pattern = r'^\d{5}(-\d{4})?$' return { "email_valid": bool(re.match(email_pattern, email)), "phone_valid": bool(re.match(phone_pattern, phone)), "zip_valid": bool(re.match(zip_pattern, zip_code)) }
  • Operações de lista (filtrar e transformar lista)

    def function (numbers, threshold): # Filter numbers above threshold and calculate statistics filtered = [n for n in numbers if n > threshold] if filtered: return { "filtered_numbers": filtered, "count": len(filtered), "sum": sum(filtered), "average": sum(filtered) / len(filtered), "min": min(filtered), "max": max(filtered) } else: return { "filtered_numbers": [], "count": 0, "message": "No numbers above threshold" }