View a markdown version of this page

Greengrass 코어 디바이스를 다른 AWS 계정 또는 리전으로 전환 - AWS IoT Greengrass

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

Greengrass 코어 디바이스를 다른 AWS 계정 또는 리전으로 전환

nucleus 구성 업데이트를 배포하여 코어 디바이스의 IoT 연결을 한 AWS 계정 또는 리전에서 다른 리전으로 전환할 수 있습니다. 이는 다음 시나리오에서 유용합니다.

  • 제조에서 프로덕션으로 전환 - 제조 중에 스테이징 계정에 디바이스를 프로비저닝하고 필드 설치 중에 대상 계정으로 디바이스를 이동합니다.

  • 지리적 재배치 - 한 리전에서 다른 리전으로 이동하는 디바이스는 지연 시간을 줄이려면 로컬 리전의 AWS IoT 엔드포인트에 연결해야 합니다.

  • 장애 영향 감소 - 처음에 디바이스를 여러 계정에 걸쳐 단일 계정에 다시 배포하여 서비스 할당량 제한 또는 보안 인시던트와 같은 계정 수준 문제의 영향을 제한합니다.

IoT 연결 스위치를 배포하면 nucleus는 변경 사항을 적용하기 전에 새 엔드포인트에 대한 연결을 검증하고 연결에 실패하면 자동으로 롤백합니다.

이 기능을 사용하려면 Greengrass nucleus v2.18.0 이상 또는 Greengrass nucleus lite v2.6.0 이상이 필요합니다.

사전 조건

연결 스위치를 배포하기 전에 대상 AWS 계정 및 리전에서 다음을 설정합니다.

  • AWS IoT 사물 - 소스 계정과 이름이 동일한 사물을 생성합니다.

  • 인증서 - 대상 계정에 동일한 디바이스 인증서를 등록합니다. 인증서는 디바이스가 소스 계정에서 사용하는 것과 동일한 인증서여야 합니다.

  • AWS IoT 정책 - 정책을 인증서에 연결합니다. 정책은 클라이언트 IDiot:Connect에 와일드카드 접미사를 사용하는 리소스 ARN으로를 허용해야 합니다.

    "Resource": "arn:aws:iot:*:*:client/${iot:Connection.Thing.ThingName}*"

    nucleus 사전 연결 검사에는 클라이언트 ID가 사용되므로 와일드카드 접미사를 포함해야 합니다thing-name#endpoint-switch.

  • AWS IoT 역할 별칭 - Greengrass 작업에 대한 적절한 IAM 역할 권한을 사용하여 대상 리전에 역할 별칭을 생성합니다.

참고

정책${iot:Connection.Thing.ThingName}에서와 같은 AWS IoT 사물 정책 변수를 사용하려면 대상 계정의 AWS IoT 사물에만 인증서를 연결 AWS IoT 해야 합니다.

Greengrass nucleus 코어 디바이스의 경우 nucleus 구성iotdata에서를 greengrassDataPlaneEndpoint로 설정해야 합니다. 연결 스위치 배포 또는 초기 프로비저닝 중에이 설정을 포함합니다.

이 설정이 없으면 데이터 영역은 전환 후에도 원래 계정에 바인딩된 상태로 유지됩니다. 이렇게 하면 구성 요소 아티팩트 다운로드 및 컨트롤 플레인 작업이 중단됩니다. 자세한 내용은의 greengrassDataPlaneEndpoint 구성 파라미터를 참조하세요Greengrass nucleus.

Greengrass nucleus lite 코어 디바이스의 경우 nucleus에 구성 업데이트를 배포하기 전에 계정에 프라이빗 aws.greengrass.NucleusLite 구성 요소를 생성해야 합니다. AWS IoT Greengrass 배포는 계정의 구성 요소 레지스트리에 있는 구성 요소만 대상으로 지정할 수 있으며 nucleus lite에 대한 퍼블릭 구성 요소는 없습니다.

aws_nucleus_lite 런타임과 빈 수명 주기(작업 없음)를 사용하여 구성 요소를 생성합니다. 구성 요소 버전은 디바이스에서 실행되는 nucleus lite 버전과 일치해야 합니다.

배포 생성

소스 계정에서 코어 디바이스 또는 해당 사물 그룹을 대상으로 하는 배포를 생성합니다. 배포는 새 AWS IoT 엔드포인트 값을 사용하여 nucleus 구성 요소에 병합 구성 업데이트를 보냅니다.

연결 스위치를 배포하려면(AWS CLI)
  1. 다음 콘텐츠를 통해 switch-deployment.json이라는 파일을 생성합니다. 자리 표시자 값을 대상 계정의 값으로 바꿉니다.

    • targetArn을 소스 계정의 AWS IoT 사물 그룹 또는 코어 디바이스의 ARN으로 바꿉니다.

    • componentName을 nucleusaws.greengrass.Nucleus의 경우 로 바꾸고 nucleus liteaws.greengrass.NucleusLite의 경우 로 바꿉니다.

    • componentVersion을 디바이스에서 실행 중인 nucleus의 버전으로 바꿉니다.

    { "targetArn": "targetArn", "deploymentName": "SwitchConnectivity", "components": { "componentName": { "componentVersion": "componentVersion", "configurationUpdate": { "merge": "{\"iotDataEndpoint\":\"account-prefix-ats.iot.region.amazonaws.com\",\"iotCredEndpoint\":\"account-prefix.credentials.iot.region.amazonaws.com\",\"awsRegion\":\"region\",\"iotRoleAlias\":\"role-alias-name\"}" } } }, "deploymentPolicies": { "failureHandlingPolicy": "ROLLBACK" } }

    아직를 로 greengrassDataPlaneEndpoint 설정하지 않은 Greengrass nucleus 코어 디바이스의 경우 병합 구성에 iotdata추가합니다.

    "merge": "{\"iotDataEndpoint\":\"...\",\"iotCredEndpoint\":\"...\",\"awsRegion\":\"...\",\"iotRoleAlias\":\"...\",\"greengrassDataPlaneEndpoint\":\"iotdata\"}"

    merge 값을 JSON 문자열로 인코딩합니다. 백슬래시()를 사용하여 모든 내부 따옴표를 이스케이프합니다\". 배포를 생성하기 전에 JSON 검증 도구를 사용하여 구문을 확인합니다.

  2. 다음 명령을 실행하여 배포를 생성합니다.

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

예상되는 사항

nucleus는 변경 사항을 적용하기 전에 새 엔드포인트에 대한 연결을 검증합니다. 디바이스가 새 엔드포인트에 연결할 수 없는 경우 배포가 실패하고 디바이스는 소스 계정에 연결된 상태로 유지됩니다.

nucleus는 비행 전 연결 검사에 클라이언트 IDthing-name#endpoint-switch를 사용합니다.

구성을 적용한 후 nucleus는 새 엔드포인트에 대한 연결을 테스트합니다. 연결에 실패하면 nucleus가 자동으로 원래 구성으로 롤백됩니다. 배포는 소스 계정FAILED의를 보고합니다.

연결 전환에 성공하면 배포는 소스 계정SUCCEEDED에서를 보고합니다.는 새 엔드포인트와 연결된 계정 및 리전에서 코어 디바이스를 AWS IoT Greengrass 생성합니다.

참고

연결 전환 중에 nucleus는 토큰 교환 서비스에 대한 엄격한 종속성이 있는 구성 요소를 다시 시작합니다. 이렇게 다시 시작하면 새 자격 증명 엔드포인트에서 AWS IoT 자격 증명이 새로 고쳐집니다. nucleus는 다른 구성 요소를 다시 시작하지 않으며 기존 상태로 계속 실행됩니다.

스위치 확인

배포가 완료되면 연결 전환이 성공했는지 확인합니다.

연결 스위치를 확인하려면
  1. 소스 계정의 배포 상태를 확인합니다. 디바이스가 새 엔드포인트에 연결SUCCEEDED되면 배포가 보고합니다.

    aws greengrassv2 list-effective-deployments \ --core-device-thing-name thing-name
  2. 코어 디바이스가 대상 계정에 나타나는지 확인합니다. AWS IoT Greengrass 콘솔을 열거나 다음 명령을 실행합니다.

    aws greengrassv2 get-core-device \ --core-device-thing-name thing-name

AWS IoT 사물 및 코어 디바이스 레코드는 전환 후에도 소스 계정에 남아 있습니다. 향후 배포가 디바이스를 대상으로 하지 않도록 하려면 소스 계정의 사물 그룹에서 제거합니다.

배포 상태가가 아닌 경우 디바이스의 /greengrass/v2/logs/greengrass.log에서 Greengrass 로그에서 오류 세부 정보를 SUCCEEDED확인합니다. 연결 전환 작업과 관련된 일반적인 오류 코드는 섹션을 참조하세요세부 배포 오류 코드.