코드 - Amazon Quick

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

코드

Quick Automate의 코드 작업을 사용하면 표준 자동화 작업이 지원하는 것 이상으로 Python 코드 블록을 사용하여 사용자 지정 로직을 구현할 수 있습니다. 복잡한 데이터 변환 및 계산에 적합하며 제한된 Python 환경 내에서 실행되어 보안을 유지합니다.

두 가지 유형의 코드 작업:

  • 한 줄 표현식: 값을 반환하지 않고 변수를 수정하는 빠른 한 줄 작업

  • 사용자 지정 코드 블록: 파라미터 및 반환 값이 있는 복잡한 로직을 위한 다중 라인 Python 함수

코드 작업을 사용해야 하는 경우:

다음과 같은 경우 코드 블록을 사용합니다.

  • 표준 작업에서 사용할 수 없는 복잡한 데이터 변환 수행

  • 사용자 지정 비즈니스 로직 또는 계산 구현

  • 데이터 구조 처리 또는 조작(목록, 사전, JSON)

  • 사용자 지정 방식으로 날짜, 시간 및 시간대 작업

  • 복잡한 패턴으로 문자열 구문 분석 또는 형식 지정

  • 여러 작업을 하나의 코드 블록으로 통합하여 자동화 성능 최적화

코드 작업을 사용하지 않는 경우:

다음과 같은 경우 코드 블록을 피합니다.

  • 사용 사례에 대한 표준 자동화 작업이 이미 있습니다.

  • 작업은 기본 제공 작업에 충분히 간단합니다.

  • 외부 APIs( 대신 REST API 통합 사용).

  • 파일 시스템 또는 데이터베이스에 액세스해야 합니다(적절한 통합 사용).

코드 작업에 액세스하는 방법:

코드 블록은 여러 인터페이스를 통해 사용할 수 있습니다.

  • 작업 패널(권장):

    • 자동화 빌더에서 자동화를 엽니다.

    • 오른쪽의 작업 패널을 클릭합니다.

    • 코드 작업 섹션에서 "사용자 지정 코드 블록"을 찾습니다.

    • 코드 블록을 자동화 워크플로로 끌어서 놓기

  • 어시스턴트를 사용하여 빌드:

    • 어시스턴트가 사용자 지정 코드가 필요하다고 판단할 때 계획 생성 중에 사용 가능

    • 어시스턴트는 복잡한 작업을 위한 코드 블록을 자동으로 제안합니다.

    • 사용자 지정 로직 요구 사항을 설명하여 코드 블록을 요청할 수 있습니다.

사용 가능한 작업:

한 줄 표현식

한 줄 표현식은 값을 반환하지 않고 작업을 수행하는 한 줄 Python 문을 실행합니다. 목록에 추가, 사전 업데이트 또는 상태를 수정하는 간단한 계산 수행과 같은 기존 변수를 빠르게 수정하는 데 적합합니다.

속성:

  • 표현식(필수): 실행할 Python 표현식(예: "my_list.append('new item')")

:

  • 목록에 추가

    my_list.append("1") my_list.append(new_item)
  • 목록 항목 제거

    task_list.remove(completed_task)

사용자 지정 코드 블록

사용자 지정 코드 블록은 복잡한 로직을 실행하고, 파라미터를 수락하고, 값을 반환하는 다중 라인 Python 함수입니다. 표준 자동화 작업과 단일 라인 표현식이 요구 사항에 충분하지 않은 경우 대체 옵션입니다.

속성:

  • 함수 제목(필수): 코드 블록의 이름 식별자(예: "Calculate_Total")

  • 함수(필수): 사용자 지정 로직이 포함된 Python 코드 블록입니다.

    • 1단계: 파라미터 정의

      • "편집" 버튼을 클릭하여 코드 편집기를 엽니다.

      • 파라미터 패널에서 "추가"를 클릭하여 새 파라미터를 생성합니다.

      • 자동화 변수와 일치하는 파라미터 이름을 입력합니다.

      • 파라미터는 함수 인수로 사용할 수 있습니다.

    • 2단계: Python 코드 작성

  • 반환 값(선택 사항): 함수의 출력을 저장할 변수 이름입니다.

    • 필요한 코드 블록 구조를 따릅니다(아래 참조).

    • 함수 내에서 사용자 지정 로직 구현

    • 승인된 라이브러리 및 내장 함수만 사용

    • 데이터를 출력해야 하는 경우 반환 문 포함

코드 블록 구조

모든 코드 블록은 다음 특정 형식을 따라야 합니다.

@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

기본 제공 Python 함수 및 가져오기

모든 표준 Python 내장 함수는 가져오기 없이 사용할 수 있습니다(len, str, int 등).

승인된 표준 라이브러리(보안 제한)

코드 블록은 다음 표준 라이브러리만 가져올 수 있습니다.

  • base64 - Base64 인코딩/디코딩

  • datetime - 날짜 및 시간 작업

  • json - JSON 구문 분석 및 생성

  • math - 수학 함수

  • re - 정규식

  • zoneinfo - 시간대 처리

참고
  • 위에 나열된 라이브러리 이외의 표준 라이브러리는 가져올 수 없습니다.

  • 타사 라이브러리를 설치하거나 가져올 수 없습니다. pip install는 코드 블록에서 지원되지 않습니다.

제한 사항

  • 라이브러리 액세스가 제한된 제한된 Python 환경. 실행 환경은 Python 3.10의 하위 집합인 RestrictedPython을 기반으로 합니다.

  • 코드 블록은 다른 코드 블록 또는 작업을 호출할 수 없습니다.

모범 사례

  • 코드 블록을 단순하고 집중적으로 유지

  • 설명 함수 이름 사용

  • 사용 가능한 경우 항상 사전 구축된 작업을 선호합니다.

  • 집중 디버깅 옵션이 제한되어 있으므로 코드 블록을 철저히 테스트합니다.)

사용 사례 예

  • 수학 작업(원형 속성 계산 - 반경을 파라미터로 사용

    def function (radius): return { "radius": radius, "diameter": 2 * radius, "circumference": round(2 * math.pi * radius, 2), "area": round(math.pi * radius ** 2, 2) }
  • 현재 날짜/시간 가져오기

    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() }
  • 날짜 차이 계산 - 파라미터로 시작 날짜 및 종료 날짜 계산

    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 }
  • 정규식을 사용한 패턴 일치 및 텍스트 조작(이메일 주소, 전화번호 등 검증)

    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)) }
  • 목록 작업(필터 및 변환 목록)

    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" }