AWS IoT 작업 준비 - AWS IoT Core

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

AWS IoT 작업 준비

AWS IoT Device Management 소프트웨어 패키지 카탈로그는 대체 파라미터를 통해 AWS IoT 작업을 확장하고 AWS IoT 플릿 인덱싱, 동적 사물 그룹 및 예약된 AWS IoT 사물의 섀도우와 통합합니다.

참고

소프트웨어 패키지 카탈로그에서 제공하는 모든 기능을 사용하려면 다음과 같은 AWS Identity and Access Management (IAM) 역할 및 정책을 생성해야 합니다. AWS IoT 패키지 버전을 배포할 수 있는 작업 권한AWS IoT 예약된 명명된 섀도우를 업데이트할 수 있는 작업 권한. 자세한 내용은 보안 준비를 참조하세요.

AWS IoT 작업에 대한 대체 파라미터

대체 파라미터를 AWS IoT 작업 문서 내의 자리 표시자로 사용할 수 있습니다. 작업 서비스는 대체 파라미터를 발견하면 작업이 해당 파라미터 값에 대한 명명된 소프트웨어 버전의 속성을 가리키도록 합니다. 이 프로세스를 사용하여 단일 작업 문서를 만들고 범용 속성을 통해 메타데이터를 작업에 전달할 수 있습니다. 예를 들어 Amazon Simple Storage Service(Amazon S3) URL, 소프트웨어 패키지 Amazon 리소스 이름(ARN) 또는 서명을 패키지 버전 속성을 통해 작업 문서에 전달할 수 있습니다.

대체 파라미터는 작업 문서에서 다음과 같이 형식이 지정되어야 합니다.

  • 소프트웨어 패키지 이름 및 패키지 버전

    • 사이의 빈 문자열은 소프트웨어 패키지 이름 대체 파라미터를 package::version 나타냅니다. 사이의 빈 문자열은 소프트웨어 패키지 버전 대체 파라미터를 version::attribute 나타냅니다. 작업 문서에서 패키지 이름 및 패키지 버전 대체 파라미터를 사용하려면 다음 예제를 참조하세요${aws:iot:package::version::attributes:<attributekey>}.

    • 작업 문서는 패키지 버전 세부 정보의 버전을 ARN 사용하여 이러한 대체 파라미터를 자동으로 채웁니다. API 또는 CLI 명령을 사용하여 단일 패키지 배포에 대한 작업 또는 작업 템플릿을 생성하는 경우 패키지 버전용 버전ARNCreateJob 및 의 destinationPackageVersions 파라미터로 표시됩니다DescribeJob.

  • 소프트웨어 패키지 버전의 모든 속성

    • 작업 문서에서 소프트웨어 패키지 버전 대체 파라미터의 모든 속성을 사용하려면 다음 예제를 참조하세요. ${aws:iot:package:<packageName>:version:<versionName>:attributes}

참고

패키지 이름, 패키지 버전 및 모든 속성 대체 파라미터를 함께 사용할 수 있습니다. 작업 문서에서 세 가지 대체 파라미터를 모두 사용하려면 다음 예제를 참조하세요. ${aws:iot:package::version::attributes}

다음 예제에서는 라는 소프트웨어 패키지가 samplePackage 있고 라는 패키지 버전이 있으며 속성2.1.5은 다음과 같습니다.

  • 이름: s3URL, 값: https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile

    • 이 속성은 Amazon S3에 저장된 코드 파일의 위치를 식별합니다.

  • 이름: signature, 값: aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj

    • 이 속성은 디바이스에 보안 조치로 필요한 코드 서명 값을 제공합니다. 자세한 내용은 작업용 코드 서명을 참조하세요. 참고: 이 속성은 예시이며 소프트웨어 패키지 카탈로그 또는 작업에 필요하지 않습니다.

s3URL의 경우, 작업 문서 파라미터는 다음과 같이 작성됩니다.

{ "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}" }

signature의 경우, 작업 문서 파라미터는 다음과 같이 작성됩니다.

{ "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}" }

전체 작업 문서는 다음과 같이 작성됩니다.

{ ... "Steps": { "uninstall": ["samplePackage"], "download": [ { "samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}" }, ], "signature": [ "samplePackage" : "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}" ] } }

대체가 이루어지면 다음 작업 문서가 디바이스에 배포됩니다.

{ ... "Steps": { "uninstall": ["samplePackage"], "download": [ { "samplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile" }, ], "signature": [ "samplePackage" : "aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj" ] } }

대체 파라미터(전/후 보기)

대체 파라미터는 기본 패키지 버전과 같은 다양한 플래그$default를 사용하여 작업 문서의 생성을 간소화합니다. 이렇게 하면 해당 플래그가 특정 패키지 버전에서 참조된 메타데이터로 자동 채워지므로 각 작업 배포에 대해 특정 패키지 버전 메타데이터를 수동으로 입력할 필요가 없습니다. 기본 패키지 버전과 같은 패키지 버전 속성에 $default 대한 자세한 내용은 섹션을 참조하세요배포를 위한 작업 문서 및 패키지 버전 준비.

에서 패키지 버전의 작업 배포 중에 배포 지침 파일 편집기 창의 대체 미리 보기 버튼을 AWS Management Console전환하여 대체 파라미터가 있는 작업 문서를 보거나 없는 작업 문서를 봅니다.

DescribeJobGetJobDocument 의 “before-substitution” 파라미터를 사용하여 대체 파라미터가 제거되기 전과 후에 API 응답을 볼 APIs수 있습니다. DescribeJobGetJobDocument 와 함께 다음 예제를 참조하세요APIs.

  • DescribeJob

    • 기본 보기

      { "jobId": "<jobId>", "description": "<description>", "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/1.0.2"] }
    • 치환 보기 전

      { "jobId": "<jobId>", "description": "<description>", "destinationPackageVersions": ["arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default"] }
  • GetJobDocument

    • 기본 보기

      { "attributes": { "location": "prod-artifacts.s3.us-east-1.amazonaws.com/mqtt-core", "signature": "IQoJb3JpZ2luX2VjEIrwEaCXVzLWVhc3QtMSJHMEUCIAofPNPpZ9cI", "streamName": "mqtt-core", "fileId": "0" }, }
    • 치환 보기 전

      { "attributes": "${aws:iot:package:TestPackage:version:$default:attributes}", }

AWS IoT 작업, 작업 문서 생성 및 작업 배포에 대한 자세한 내용은 작업을 참조하세요.

배포를 위한 작업 문서 및 패키지 버전 준비

패키지 버전이 생성되면 배포 준비 중임을 나타내는 draft 상태가 됩니다. 배포를 위해 패키지 버전을 준비하려면 작업 문서를 생성하고, 작업이 액세스할 수 있는 위치(예: Amazon S3)에 문서를 저장하고, 패키지 버전에 작업 문서가 사용할 속성 값이 있는지 확인해야 합니다. (참고: 패키지 버전이 draft 상태인 동안에만 패키지 버전의 속성을 업데이트할 수 있습니다.)

단일 패키지 배포를 위한 AWS IoT 작업 또는 작업 템플릿을 생성할 때 작업 문서를 사용자 지정하는 데 다음과 같은 옵션이 있습니다.

배포 지침 파일(recipe)

  • 패키지 버전의 배포 지침 파일에는 패키지 버전을 여러 디바이스에 배포하기 위한 인라인 작업 문서를 포함한 배포 지침이 포함되어 있습니다. 파일은 빠르고 효율적인 작업 배포를 위해 특정 배포 지침을 패키지 버전에 연결합니다.

    에서 새 패키지 생성 워크플로의 버전 배포 구성 탭에 있는 배포 지침 파일 미리 보기 창에서 파일을 생성할 AWS Management Console수 있습니다. AWS IoT 를 사용하여 권장 파일에서 시작을 사용하여 패키지 버전 속성에서 AWS IoT 지침 파일을 자동으로 생성하거나 자체 배포 지침 파일 사용을 사용하여 Amazon S3 버킷에 저장된 기존 작업 문서를 사용할 수 있습니다.

    참고

    자체 작업 문서를 사용하는 경우 배포 지침 파일 미리 보기 창에서 직접 업데이트할 수 있지만 Amazon S3 버킷에 저장된 원본 작업 문서는 자동으로 업데이트되지 않습니다.

    AWS CLI 또는 CreatePackageVersion, GetPackageVersion또는 와 같은 API 명령을 사용하는 경우 는 인라인 작업 문서가 포함된 배포 지침 파일을 UpdatePackageVersion recipe 나타냅니다.

    작업 문서가 무엇인지에 대한 자세한 내용은 섹션을 참조하세요기본 개념.

    로 표시된 배포 지침 파일은 다음 예제를 참조하세요recipe.

    { "packageName": "sample-package-name", "versionName": "sample-package-version", ... "recipe": "{...}" }
    참고

    패키지 버전이 패키지 버전 메타데이터와 별개인 published 상태일 때 로 표시되는 배포 지침 파일을 업데이트할 recipe 수 있습니다. 작업 배포 중에 변경할 수 없게 됩니다.

Artifact 버전 속성

  • artifact 소프트웨어 패키지 버전의 버전 속성을 사용하여 패키지 버전 아티팩트의 Amazon S3 위치를 추가할 수 있습니다. 작업을 사용하여 AWS IoT 패키지 버전의 작업 배포가 트리거되면 ${aws:iot:package:<packageName>:version:<versionName>:artifact-location:s3-presigned-url} 작업 문서의 미리 서명된 URL 자리 표시자가 Amazon S3 버킷, 버킷 키 및 Amazon S3 버킷에 저장된 파일의 버전을 사용하여 업데이트됩니다. 패키지 버전 아티팩트를 저장하는 Amazon S3 버킷은 패키지 버전이 생성된 동일한 리전에 있어야 합니다.

    참고

    Amazon S3 버킷에 동일한 파일의 여러 객체 버전을 저장하려면 버킷에서 버전 관리를 활성화해야 합니다. 자세한 내용은 버킷에서 버전 관리를 활성화 를 참조하세요.

    CreatePackageVersion 또는 UpdatePackageVersion API 작업을 사용할 때 Amazon S3 버킷의 패키지 버전 아티팩트에 액세스하려면 다음 권한이 있어야 합니다.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObjectVersion", "Resource": "arn:<partition>:s3:::<bucket>/<key>" } ] }

    CreatePackageVersionUpdatePackageVersion API 작업의 버전 속성artifact에 대한 자세한 내용은 CreatePackageVersion 및 섹션을 참조하세요UpdatePackageVersion.

    새 패키지 버전을 생성할 때 Amazon S3에서 아티팩트 위치를 artifact 지원하는 버전 속성을 보여주는 다음 예제를 참조하세요.

    { "packageName": "sample package name", "versionName": "1.0", "artifact": { "s3Location": { "bucket": "firmware", "key": "image.bin", "version": "12345" } } }
    참고

    패키지 버전이 draft 상태 상태에서 published 상태 상태로 업데이트되면 패키지 버전 속성과 아티팩트 위치를 변경할 수 없게 됩니다. 이 정보를 업데이트하려면 새 패키지 버전을 생성하고 draft 상태 상태에서 해당 업데이트를 수행해야 합니다.

패키지 버전

  • 기본 소프트웨어 패키지 버전은 안전하고 안정적인 패키지 버전을 제공하는 소프트웨어 패키지의 사용 가능한 버전에 표시될 수 있습니다. 이는 AWS IoT 작업을 사용하여 디바이스 플릿에 기본 패키지 버전을 배포할 때 소프트웨어 패키지의 기본 버전으로 사용됩니다. 소프트웨어 $default 패키지의 패키지 버전을 배포하는 작업을 생성할 때 작업 문서와 새 작업 배포의 패키지 버전이 와 일치해야 합니다$default. 작업 배포의 패키지 버전은 API 및 CLI 명령 및 VersionARNdestinationPackageVersions 대해 로 표시됩니다 AWS Management Console. 작업 문서의 패키지 버전은 아래에 표시된 다음 작업 문서 자리 표시자로 표시됩니다.

    arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$default

    기본 패키지 버전을 사용하여 작업 또는 작업 템플릿을 생성하려면 아래와 같이 CreateJob 또는 CreateJobTemplate API 명령에서 $default 플래그를 사용합니다.

    "$ aws iot create-job \ --destination-package-versions "arn:aws:iot:us-west-2:123456789012:package/TestPackage/version/$default" --document file://jobdoc.json
    참고

    기본 버전을 참조하는 $default 패키지 버전 속성은 작업을 통한 AWS IoT 작업 배포에 대한 기본 패키지 버전을 참조할 때만 필요한 선택적 속성입니다.

패키지 버전이 만족스러우면 AWS IoT 콘솔의 소프트웨어 패키지 세부 정보 페이지를 통해 게시하거나 UpdatePackageVersion API 작업을 발행하여 게시합니다. 그런 다음 AWS IoT 콘솔을 통해 또는 CreateJob API 작업을 발급하여 작업을 생성할 때 패키지 버전을 참조할 수 있습니다.

배포 시 패키지 및 버전 이름 지정

소프트웨어 패키지 버전을 디바이스에 배포하려면 작업 문서에 참조된 소프트웨어 패키지 및 패키지 버전이 CreateJob API 작업의 destinationPackageVersions 파라미터에 명시된 소프트웨어 패키지 및 패키지 버전과 일치하는지 확인합니다. 일치하지 않는 경우 두 참조를 모두 일치하라는 오류 메시지가 표시됩니다. 소프트웨어 패키지 카탈로그 오류 메시지에 대한 자세한 내용은 섹션을 참조하세요일반 오류 메시지 문제 해결.

작업 문서에 참조된 소프트웨어 패키지 및 패키지 버전 외에도 작업 문서에 참조되지 않은 CreateJob API 작업의 destinationPackageVersions 파라미터에 추가 소프트웨어 패키지 및 패키지 버전을 포함할 수 있습니다. 디바이스가 추가 소프트웨어 패키지 버전을 제대로 설치하기 위해 필요한 설치 정보가 작업 문서에 포함되어 있는지 확인합니다. CreateJob API 작업에 대한 자세한 내용은 섹션을 참조하세요CreateJob.

AWS IoT 동적 사물 그룹을 통한 작업 대상 지정

소프트웨어 패키지 카탈로그는 플릿 인덱싱, AWS IoT 작업AWS IoT 동적 사물 그룹과 함께 작동하여 플릿 내의 디바이스를 필터링하고 타게팅하여 디바이스에 배포할 패키지 버전을 선택합니다. 디바이스의 현재 패키지 정보를 기반으로 플릿 인덱싱 쿼리를 실행하고 AWS IoT 작업에 대해 이러한 항목을 대상으로 지정할 수 있습니다. 소프트웨어 업데이트를 릴리스할 수도 있지만 적합한 대상 디바이스에만 릴리스할 수 있습니다. 예를 들어, 현재 iot-device-client 1.5.09를 실행하는 디바이스에만 구성을 배포하도록 지정할 수 있습니다. 자세한 내용은 동적 사물 그룹 생성을 참조하세요.

명명된 예약 섀도우 및 패키지 버전

구성된 경우 AWS IoT 작업이 성공적으로 완료되면 작업에서 예약된 섀도우($package)를 업데이트할 수 있습니다. 이렇게 하면 패키지 버전을 사물의 명명된 예약 섀도우에 수동으로 연결할 필요가 없습니다.

다음과 같은 상황에서는 패키지 버전을 사물의 명명된 예약 섀도우에 수동으로 연결하거나 업데이트하도록 선택할 수 있습니다.

  • 설치된 패키지 버전을 연결 AWS IoT Core 하지 않고 에 사물을 등록합니다.

  • AWS IoT 예약된 명명된 섀도우를 업데이트하도록 작업이 구성되지 않았습니다.

  • 인하우스 프로세스를 사용하여 패키지 버전을 플릿에 디스패치하면 해당 프로세스가 완료될 AWS IoT Core 때 업데이트되지 않습니다.

참고

AWS IoT 작업을 사용하여 예약된 섀도우()의 패키지 버전을 업데이트하는 것이 좋습니다$package. AWS IoT 작업이 $package 섀도우를 업데이트하도록 구성된 경우 다른 프로세스(예: 수동 또는 프로그래밍 방식 API 호출)를 통해 섀도우의 버전 파라미터를 업데이트하면 실제 디바이스 버전과 예약된 명명된 섀도우에 보고된 버전 간에 불일치가 발생할 수 있습니다.

콘솔 또는 UpdateThingShadow API 작업을 통해 패키지 버전을 예약된 섀도우($package)에 추가하거나 업데이트할 수 있습니다. 자세한 내용은 패키지 버전을 AWS IoT 사물에 연결을 참조하세요.

참고

패키지 버전을 AWS IoT 사물에 연결해도 디바이스 소프트웨어가 직접 업데이트되지는 않습니다. 디바이스 소프트웨어를 업데이트하려면 패키지 버전을 디바이스에 배포해야 합니다.

소프트웨어 패키지 및 패키지 버전 제거

$null 는 AWS IoT Jobs 서비스에 디바이스의 예약 이름 섀도우 에서 기존 소프트웨어 패키지 및 패키지 버전을 제거하라는 메시지를 표시하는 예약 자리 표시자입니다$package. 자세한 내용은 명명된 예약 섀도우를 참조하세요.

이 기능을 사용하려면 destinationPackageVersion Amazon 리소스 이름(ARN) 끝에 있는 버전 이름을 로 바꿉니다$null. 그런 다음 디바이스에서 소프트웨어를 제거하도록 서비스에 지시합니다.

권한 있는 는 다음 형식을 ARN 사용합니다.

arn:aws:iot:<regionCode>:111122223333:package/<packageName>/version/$null

예:

$ aws iot create-job \ ... \ --destinationPackageVersions ["arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/$null"]