배포 만들기 - AWS IoT Greengrass

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

배포 만들기

사물 또는 사물 그룹을 대상으로 하는 배포를 생성할 수 있습니다.

배포를 생성할 때 배포할 소프트웨어 구성 요소와 배포 작업이 대상 장치에 롤아웃되는 방식을 구성합니다. 에 제공하는 JSON 파일에서 배포를 정의할 수 있습니다. AWS CLI

배포 대상은 구성 요소를 실행할 장치를 결정합니다. 코어 기기 하나에 배포하려면 사물을 지정하세요. 여러 코어 디바이스에 배포하려면 해당 디바이스를 포함하는 사물 그룹을 지정하십시오. 사물 그룹을 구성하는 방법에 대한 자세한 내용은 AWS IoT개발자 안내서의 정적 사물 그룹동적 사물 그룹을 참조하십시오.

이 섹션의 단계에 따라 대상에 대한 배포를 생성하십시오. 배포가 있는 대상의 소프트웨어 구성 요소를 업데이트하는 방법에 대한 자세한 내용은 을 참조하십시오배포 수정.

주의

CreateDeployment작업을 통해 코어 디바이스에서 구성 요소를 제거할 수 있습니다. 구성 요소가 새 배포가 아닌 이전 배포에 있는 경우 코어 장치는 해당 구성 요소를 제거합니다. 구성 요소를 제거하지 않으려면 먼저 ListDeployments작업을 사용하여 배포 대상에 이미 기존 배포가 있는지 확인하십시오. 그런 다음 새 배포를 만들 때 GetDeployment작업을 사용하여 기존 배포에서 시작하십시오.

배포를 만들려면 (AWS CLI)
  1. 라는 deployment.json 파일을 만든 다음 다음 JSON 객체를 파일에 복사합니다. TargetARN을 배포 대상으로 지정할 사물 또는 사물 그룹의 ARN으로 대체합니다. AWS IoT 사물 및 사물 그룹 ARN의 형식은 다음과 같습니다.

    • 사물: arn:aws:iot:region:account-id:thing/thingName

    • 사물 그룹: arn:aws:iot:region:account-id:thinggroup/thingGroupName

    { "targetArn": "targetArn" }
  2. 배포 대상에 수정하려는 기존 배포가 있는지 확인하십시오. 다음을 따릅니다.

    1. 다음 명령을 실행하여 배포 대상의 배포를 나열합니다. TargetARN을 대상 사물 또는 사물 그룹의 ARN으로 대체합니다AWS IoT.

      aws greengrassv2 list-deployments --target-arn targetArn

      응답에는 대상에 대한 최신 배포 목록이 포함되어 있습니다. 응답이 비어 있는 경우 대상에 기존 배포가 없는 것이므로 건너뛰어도 됩니다. 단계 3 그렇지 않으면 다음 단계에서 사용할 수 있도록 응답에서 deploymentId을 복사합니다.

      참고

      대상의 최신 수정 버전 이외의 배포를 수정할 수도 있습니다. --history-filter ALL인수를 지정하여 대상의 모든 배포를 나열합니다. 그런 다음 수정하려는 배포의 ID를 복사합니다.

    2. 다음 명령을 실행하여 배포의 세부 정보를 가져옵니다. 이러한 세부 정보에는 메타데이터, 구성 요소 및 작업 구성이 포함됩니다. Deploymentid를 이전 단계의 ID로 교체합니다.

      aws greengrassv2 get-deployment --deployment-id deploymentId

      응답에는 배포의 세부 정보가 포함됩니다.

    3. 이전 명령의 응답에서 다음 키-값 쌍을 로 복사합니다. deployment.json 새 배포에서 이러한 값을 변경할 수 있습니다.

      • deploymentName— 디플로이먼트 이름.

      • components— 디플로이먼트의 구성 요소. 구성 요소를 제거하려면 이 개체에서 구성 요소를 제거하십시오.

      • deploymentPolicies— 배포 정책.

      • iotJobConfiguration— 배포의 작업 구성.

      • tags— 디플로이먼트의 태그.

  3. (선택 사항) 배포 이름을 정의합니다. 디플로이먼트네임을 디플로이먼트의 이름으로 바꿉니다.

    { "targetArn": "targetArn", "deploymentName": "deploymentName" }
  4. 각 구성 요소를 추가하여 대상 장치를 배포합니다. 이렇게 하려면 키-값 쌍을 components 개체에 추가합니다. 여기서 키는 구성 요소 이름이고 값은 해당 구성 요소의 세부 정보가 포함된 개체입니다. 추가하는 각 구성 요소에 대해 다음 세부 정보를 지정하십시오.

    • version— 배포할 구성 요소 버전.

    • configurationUpdate— 배포할 구성 업데이트입니다. 업데이트는 각 대상 장치에 있는 구성 요소의 기존 구성을 수정하거나, 대상 장치에 구성 요소가 없는 경우 구성 요소의 기본 구성을 수정하는 패치 작업입니다. 다음과 같은 구성 업데이트를 지정할 수 있습니다.

      • Reset reset update () - (선택 사항) 대상 장치에서 기본값으로 재설정할 구성 값을 정의하는 JSON 포인터 목록입니다. AWS IoT Greengrass Core 소프트웨어는 병합 업데이트를 적용하기 전에 재설정 업데이트를 적용합니다. 자세한 설명은 업데이트 재설정 섹션을 참조하세요.

      • 업데이트 병합 (merge) — (선택 사항) 대상 장치에 병합할 구성 값을 정의하는 JSON 문서입니다. JSON 문서를 문자열로 직렬화해야 합니다. 자세한 설명은 병합 업데이트 섹션을 참조하세요.

    • runWith— (선택 사항) AWS IoT Greengrass Core 소프트웨어가 코어 장치에서 이 구성 요소의 프로세스를 실행하는 데 사용하는 시스템 프로세스 옵션입니다. runWith개체에서 매개변수를 생략하면 AWS IoT Greengrass Core 소프트웨어는 Greengrass nucleus 구성 요소에 구성한 기본값을 사용합니다.

      다음 옵션 중 하나를 지정할 수 있습니다.

      • posixUser— Linux 코어 디바이스에서 이 구성 요소를 실행하는 데 사용할 POSIX 시스템 사용자 및 그룹 (선택 사항) 사용자 및 그룹 (지정된 경우) 은 각 Linux 코어 장치에 존재해야 합니다. user:group 형식으로 사용자와 그룹을 콜론(:)으로 구분하여 지정합니다. 그룹은 선택 사항입니다. 그룹을 지정하지 않으면 AWS IoT Greengrass Core 소프트웨어는 사용자의 기본 그룹을 사용합니다. 자세한 설명은 구성 요소를 실행하는 사용자를 구성하십시오. 섹션을 참조하세요.

      • windowsUser— Windows 코어 장치에서 이 구성 요소를 실행하는 데 사용할 Windows 사용자입니다. 사용자는 각 Windows 코어 장치에 존재해야 하며 사용자 이름과 암호는 LocalSystem 계정의 자격 증명 관리자 인스턴스에 저장되어 있어야 합니다. 자세한 설명은 구성 요소를 실행하는 사용자를 구성하십시오. 섹션을 참조하세요.

        이 기능은 v2.5.0 이상의 Greengrass 핵 구성 요소에서 사용할 수 있습니다.

      • systemResourceLimits— 이 구성 요소의 프로세스에 적용할 시스템 리소스 제한 시스템 리소스 제한을 일반 및 비컨테이너식 Lambda 구성 요소에 적용할 수 있습니다. 자세한 설명은 구성 요소에 대한 시스템 리소스 제한을 구성합니다. 섹션을 참조하세요.

        다음 옵션 중 하나를 지정할 수 있습니다.

        • cpus이 구성 요소의 프로세스가 코어 장치에서 사용할 수 있는 최대 CPU 시간입니다. 코어 디바이스의 총 CPU 시간은 디바이스의 CPU 코어 수와 같습니다. 예를 들어 CPU 코어가 4개인 코어 장치의 경우 이 값을 2 설정하여 이 구성 요소의 프로세스를 각 CPU 코어의 50% 사용량으로 제한할 수 있습니다. CPU 코어가 1개인 기기에서는 이 값을 0.25 설정하여 이 구성 요소의 프로세스 CPU 사용량을 25% 로 제한할 수 있습니다. 이 값을 CPU AWS IoT Greengrass 코어 수보다 큰 수로 설정하는 경우 Core 소프트웨어는 구성 요소의 CPU 사용량을 제한하지 않습니다.

        • memory이 구성 요소의 프로세스가 코어 장치에서 사용할 수 있는 최대 RAM 크기 (KB)

        이 기능은 Greengrass 핵 구성 요소 v2.4.0 이상에서 사용할 수 있습니다. AWS IoT Greengrass현재 Windows 코어 디바이스에서는 이 기능을 지원하지 않습니다.

     

    예 기본 구성 업데이트 예시

    다음 예제 components 객체는 다음과 같은 구성 매개 변수가 필요한 구성 요소를 배포하도록 지정합니다pythonVersion. com.example.PythonRuntime

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.PythonRuntime": { "componentVersion": "1.0.0", "configurationUpdate": { "merge": "{\"pythonVersion\":\"3.7\"}" } } } }
    예 재설정 및 병합 업데이트를 포함한 구성 업데이트의 예

    다음과 같은 기본 구성을 가진 산업용 대시보드 구성 요소를 예로 들어 보겠습니다. com.example.IndustrialDashboard

    { "name": null, "mode": "REQUEST", "network": { "useHttps": true, "port": { "http": 80, "https": 443 }, }, "tags": [] }

    다음 구성 업데이트에는 다음 지침이 지정되어 있습니다.

    1. HTTPS 설정을 기본값 (true) 으로 재설정합니다.

    2. 산업용 태그 목록을 빈 목록으로 재설정합니다.

    3. 두 보일러의 온도 및 압력 데이터 스트림을 식별하는 산업용 태그 목록을 병합하십시오.

    { "reset": [ "/network/useHttps", "/tags" ], "merge": { "tags": [ "/boiler/1/temperature", "/boiler/1/pressure", "/boiler/2/temperature", "/boiler/2/pressure" ] } }

    다음 예제 components 객체는 이 산업용 대시보드 구성 요소 및 구성 업데이트를 배포하도록 지정합니다.

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } } }
  5. (선택 사항) 배포를 위한 배포 정책을 정의합니다. 코어 디바이스가 안전하게 배포를 적용할 수 있는 시기 또는 코어 디바이스가 배포를 적용하지 못할 경우 취해야 할 조치를 구성할 수 있습니다. 이렇게 하려면 deploymentPolicies deployment.json 개체를 추가한 후 다음 중 하나를 수행하십시오.

    1. (선택 사항) 구성 요소 업데이트 정책을 지정합니다 (componentUpdatePolicy). 이 정책은 배포를 통해 구성 요소가 업데이트 준비가 될 때까지 업데이트를 연기할 수 있는지 여부를 정의합니다. 예를 들어 구성 요소를 다시 시작하여 업데이트를 적용하려면 먼저 리소스를 정리하거나 중요한 작업을 완료해야 할 수 있습니다. 또한 이 정책은 구성 요소가 업데이트 알림에 응답해야 하는 시간을 정의합니다.

      이 정책은 다음 매개 변수를 가진 객체입니다.

      • action— (선택 사항) 구성 요소에 알림을 보내고 업데이트 준비가 되면 보고할 때까지 기다릴지 여부. 다음 옵션 중 하나를 선택합니다.

        • NOTIFY_COMPONENTS - 배포는 해당 구성 요소를 중지하고 업데이트하기 전에 각 구성 요소에 알립니다. 구성 요소는 SubscribeToComponentUpdates IPC 작업을 사용하여 이러한 알림을 수신할 수 있습니다.

        • SKIP_NOTIFY_COMPONENTS - 배포는 구성 요소에 알리거나 업데이트해도 안전할 때까지 기다리지 않습니다.

        기본값은 NOTIFY_COMPONENTS입니다.

      • timeoutInSeconds각 구성 요소가 DeferComponentUpdate IPC 작업과 함께 업데이트 알림에 응답해야 하는 시간 (초) 이 시간 내에 구성 요소가 응답하지 않으면 코어 기기에서 배포가 진행됩니다.

        기본값은 60초입니다.

    2. (선택 사항) 구성 검증 정책 (configurationValidationPolicy) 을 지정합니다. 이 정책은 각 구성 요소가 배포에서 구성 업데이트를 검증해야 하는 시간을 정의합니다. 구성 요소는 SubscribeToValidateConfigurationUpdates IPC 작업을 사용하여 자체 구성 업데이트에 대한 알림을 구독할 수 있습니다. 그러면 구성 요소가 SendConfigurationValidityReport IPC 작업을 사용하여 구성 업데이트가 유효한지 AWS IoT Greengrass Core 소프트웨어에 알릴 수 있습니다. 구성 업데이트가 유효하지 않으면 배포가 실패합니다.

      이 정책은 다음 매개변수가 있는 객체입니다.

      • timeoutInSeconds(선택 사항) 각 구성 요소가 구성 업데이트를 검증하는 데 걸리는 시간 (초). 이 시간 내에 구성 요소가 응답하지 않으면 코어 기기에서 배포가 진행됩니다.

        기본값은 30초입니다.

    3. (선택 사항) 장애 처리 정책 (failureHandlingPolicy) 을 지정합니다. 이 정책은 배포가 실패할 경우 장치를 롤백할지 여부를 정의하는 문자열입니다. 다음 옵션 중 하나를 선택합니다.

      • ROLLBACK— 코어 디바이스에서 배포가 실패하는 경우 AWS IoT Greengrass 코어 소프트웨어는 해당 코어 디바이스를 이전 구성으로 롤백합니다.

      • DO_NOTHING— 코어 디바이스에서 배포가 실패하는 경우 AWS IoT Greengrass Core 소프트웨어는 새 구성을 유지합니다. 새 구성이 유효하지 않으면 구성 요소가 손상될 수 있습니다.

      기본값은 ROLLBACK입니다.

    에서의 배포는 다음 예와 비슷할 deployment.json 수 있습니다.

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } }, "deploymentPolicies": { "componentUpdatePolicy": { "action": "NOTIFY_COMPONENTS", "timeoutInSeconds": 30 }, "configurationValidationPolicy": { "timeoutInSeconds": 60 }, "failureHandlingPolicy": "ROLLBACK" } }
  6. (선택 사항) 배포 중지, 출시 또는 제한 시간을 정의합니다. AWS IoT GreengrassAWS IoT Core작업을 사용하여 코어 장치에 배포를 전송하므로 이러한 옵션은 작업의 구성 옵션과 동일합니다. AWS IoT Core 자세한 내용은 AWS IoT개발자 안내서의 Job rollout 및 abort 구성을 참조하십시오.

    작업 옵션을 정의하려면 iotJobConfiguration 오브젝트를 추가하십시오. deployment.json 그런 다음 구성할 옵션을 정의합니다.

    에서의 배포는 다음 예와 비슷할 deployment.json 수 있습니다.

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.IndustrialDashboard": { "componentVersion": "1.0.0", "configurationUpdate": { "reset": [ "/network/useHttps", "/tags" ], "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}" } } }, "deploymentPolicies": { "componentUpdatePolicy": { "action": "NOTIFY_COMPONENTS", "timeoutInSeconds": 30 }, "configurationValidationPolicy": { "timeoutInSeconds": 60 }, "failureHandlingPolicy": "ROLLBACK" }, "iotJobConfiguration": { "abortConfig": { "criteriaList": [ { "action": "CANCEL", "failureType": "ALL", "minNumberOfExecutedThings": 100, "thresholdPercentage": 5 } ] }, "jobExecutionsRolloutConfig": { "exponentialRate": { "baseRatePerMinute": 5, "incrementFactor": 2, "rateIncreaseCriteria": { "numberOfNotifiedThings": 10, "numberOfSucceededThings": 5 } }, "maximumPerMinute": 50 }, "timeoutConfig": { "inProgressTimeoutInMinutes": 5 } } }
  7. (선택 사항) 배포에 태그 (tags) 를 추가합니다. 자세한 설명은 AWS IoT Greengrass Version 2 리소스 태깅 섹션을 참조하세요.

  8. 다음 명령어를 실행하여 배포를 생성합니다deployment.json.

    aws greengrassv2 create-deployment --cli-input-json file://deployment.json

    응답에는 이 배포를 deploymentId 식별하는 a가 포함됩니다. 배포 ID를 사용하여 배포 상태를 확인할 수 있습니다. 자세한 내용은 배포 상태를 확인합니다 의 상태를 확인하세요 의을(를) 참조하세요.