기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Greengrass 코어 디바이스에 대한 AWS IoT 플릿 프로비저닝 설정
플릿 프로비저닝을 사용하여 AWS IoT Greengrass 코어 소프트웨어를 설치하려면 먼저 AWS 계정에서 다음 리소스를 설정해야 합니다. 이러한 리소스를 사용하면 디바이스가 AWS IoT에 등록하고 Greengrass 코어 디바이스로 작동할 수 있습니다. 이 섹션의 단계를 한 번 수행하여 AWS 계정에서 이러한 리소스를 생성 및 구성합니다.
-
코어 디바이스가 AWS 서비스에 대한 직접 호출의 승인에 사용하는 토큰 교환 IAM 역할입니다.
-
토큰 교환 역할을 가리키는 AWS IoT 역할 별칭입니다.
-
(선택 사항) 코어 디바이스가 AWS IoT 및 AWS IoT Greengrass 서비스에 대한 직접 호출의 승인에 사용하는 AWS IoT 정책입니다. 이 AWS IoT 정책은 토큰 교환 역할을 가리키는 AWS IoT 역할 별칭에 대해
iot:AssumeRoleWithCertificate
권한을 허용해야 합니다.플릿의 모든 코어 디바이스에 단일 AWS IoT 정책을 사용하거나 플릿 프로비저닝 템플릿을 구성하여 각 코어 디바이스에 대해 AWS IoT 정책을 생성할 수 있습니다.
-
AWS IoT 플릿 프로비저닝 템플릿입니다. 이 템플릿은 다음을 지정해야 합니다.
-
AWS IoT 사물 리소스. 기존 사물 그룹 목록을 지정하여 온라인 상태일 때 각 디바이스에 구성 요소를 배포할 수 있습니다.
-
AWS IoT 정책 리소스. 이 리소스는 다음 속성 중 하나를 정의할 수 있습니다.
-
기존 AWS IoT 정책의 이름. 이 옵션을 선택하면 이 템플릿에서 생성한 코어 디바이스가 동일한 AWS IoT 정책을 사용하고, 플릿으로 권한을 관리할 수 있습니다.
-
AWS IoT 정책 문서. 이 옵션을 선택하면 이 템플릿에서 생성한 각 코어 디바이스가 고유한 AWS IoT 정책을 사용하고, 각 개별 코어 디바이스에 대한 권한을 관리할 수 있습니다.
-
-
AWS IoT 인증서 리소스. 이 인증서 리소스는
AWS::IoT::Certificate::Id
파라미터를 사용하여 코어 디바이스에 인증서를 연결해야 합니다. 자세한 내용은 AWS IoT 개발자 안내서의 JIT(Just-in-Time) 프로비저닝을 참조하세요.
-
-
플릿 프로비저닝 템플릿에 대한 AWS IoT 프로비저닝 클레임 인증서 및 프라이빗 키입니다. 제조 중에 디바이스에 이 인증서와 프라이빗 키를 내장할 수 있으므로 디바이스가 온라인 상태가 되면 등록하고 프로비저닝할 수 있습니다.
중요
프로비저닝 클레임 프라이빗 키는 Greengrass 코어 디바이스 등 어디에서든 항상 보안 유지되어야 합니다. Amazon CloudWatch 지표 및 로그를 사용하여 디바이스 프로비저닝을 위한 클레임 인증서의 무단 사용과 같은 오용 징후를 모니터링하는 것이 좋습니다. 오용이 감지되면 프로비저닝 클레임 인증서를 디바이스 프로비저닝에 사용할 수 없도록 비활성화합니다. 자세한 내용을 알아보려면 AWS IoT Core 개발자 안내서의 AWS IoT 모니터링를 참조하세요.
디바이스 수와 AWS 계정에 등록하는 디바이스를 더 효과적으로 관리하도록 플릿 프로비저닝 템플릿을 생성할 때 사전 프로비저닝 후크를 지정할 수 있습니다. 사전 프로비저닝 후크는 디바이스가 등록 중에 제공하는 템플릿 파라미터를 검증하는 AWS Lambda 함수입니다. 예를 들어 디바이스 ID를 데이터베이스와 비교하여 디바이스에 프로비저닝 권한이 있는지 확인하는 사전 프로비저닝 후크를 생성할 수 있습니다. 자세한 내용은 AWS IoT Core 개발자 안내서의 사전 프로비저닝 후크를 참조하세요.
-
디바이스 등록과 플릿 프로비저닝 템플릿 사용을 허용하도록 프로비저닝 클레임 인증서에 연결하는 AWS IoT 정책입니다.
토큰 교환 역할 생성
Greengrass 코어 디바이스는 토큰 교환 역할이라는 IAM 서비스 역할을 사용하여 AWS 서비스에 대한 직접 호출 권한을 부여합니다. 디바이스는 AWS IoT 자격 증명 공급자를 사용하여 이 역할에 대한 임시 AWS 자격 증명을 가져오고, 이를 통해 디바이스가 AWS IoT와 연동하고, Amazon CloudWatch Logs로 로그를 보내고, Amazon S3에서 사용자 지정 구성 요소 아티팩트를 다운로드할 수 있습니다. 자세한 내용은 코어 디바이스에 AWS 서비스와 상호 작용 권한 부여 단원을 참조하십시오.
AWS IoT 역할 별칭을 사용하여 Greengrass 코어 디바이스에 대한 토큰 교환 역할을 구성합니다. 역할 별칭을 사용하면 디바이스의 토큰 교환 역할을 변경할 수 있지만 디바이스 구성은 동일하게 유지할 수 있습니다. 자세한 내용은 AWS IoT Core 개발자 안내서의 AWS 서비스 직접 호출에 대한 권한 부여를 참조하세요.
이 섹션에서는 토큰 교환 IAM 역할과 이 역할을 가리키는 AWS IoT 역할 별칭을 생성합니다. 이미 Greengrass 코어 디바이스를 설정한 경우 새 디바이스를 생성하는 대신 토큰 교환 역할 및 역할 별칭을 사용할 수 있습니다.
토큰 교환 IAM 역할을 생성하려면
-
디바이스가 토큰 교환 역할로 사용할 수 있는 IAM 역할을 생성합니다. 다음을 따릅니다.
-
토큰 교환 역할에 필요한 신뢰 정책 문서가 포함된 파일을 생성합니다.
예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 파일을 생성할 수 있습니다.
nano device-role-trust-policy.json
다음 JSON을 파일로 복사합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
신뢰 정책 문서를 사용하여 토큰 교환 역할을 생성합니다.
-
GreengrassV2TokenExchangeRole
을 생성할 IAM 역할의 이름으로 바꿉니다.
aws iam create-role --role-name
GreengrassV2TokenExchangeRole
--assume-role-policy-document file://device-role-trust-policy.json요청에 성공하는 경우 응답은 다음 예제와 유사합니다.
{ "Role": { "Path": "/", "RoleName": "GreengrassV2TokenExchangeRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole", "CreateDate": "2021-02-06T00:13:29+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } }
-
-
토큰 교환 역할에 필요한 액세스 정책 문서가 포함된 파일을 생성합니다.
예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 파일을 생성할 수 있습니다.
nano device-role-access-policy.json
다음 JSON을 파일로 복사합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
참고
이 액세스 정책은 S3 버킷의 구성 요소 아티팩트에 대한 액세스를 허용하지 않습니다. Amazon S3에서 아티팩트를 정의하는 사용자 지정 구성 요소를 배포하려면 코어 디바이스가 구성 요소 아티팩트를 검색할 수 있도록 역할에 권한을 추가해야 합니다. 자세한 내용은 구성 요소 아티팩트에 대한 S3 버킷 액세스 허용 단원을 참조하십시오.
구성 요소 아티팩트에 대한 S3 버킷이 아직 없는 경우 버킷을 생성한 후 권한을 추가할 수 있습니다.
-
정책 문서에서 IAM 정책을 생성합니다.
-
GreengrassV2TokenExchangeRoleAccess
를 생성할 IAM 정책의 이름으로 바꿉니다.
aws iam create-policy --policy-name
GreengrassV2TokenExchangeRoleAccess
--policy-document file://device-role-access-policy.json요청에 성공하는 경우 응답은 다음 예제와 유사합니다.
{ "Policy": { "PolicyName": "GreengrassV2TokenExchangeRoleAccess", "PolicyId": "ANPAZ2YMUHYHACI7C5Z66", "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2021-02-06T00:37:17+00:00", "UpdateDate": "2021-02-06T00:37:17+00:00" } }
-
-
IAM 정책을 토큰 교환 역할에 연결합니다.
-
GreengrassV2TokenExchangeRole
을 IAM 역할의 이름으로 바꿉니다. -
정책 ARN을 이전 단계에서 생성한 IAM 정책의 ARN으로 변경합니다.
aws iam attach-role-policy --role-name
GreengrassV2TokenExchangeRole
--policy-arnarn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess
요청에 성공하는 경우 명령에 출력이 없습니다.
-
-
-
토큰 교환 역할을 가리키는 AWS IoT 역할 별칭을 생성합니다.
-
GreengrassCoreTokenExchangeRoleAlias
를 생성할 역할 별칭의 이름으로 바꿉니다. -
역할 ARN을 이전 단계에서 생성한 IAM 역할의 ARN으로 변경합니다.
aws iot create-role-alias --role-alias
GreengrassCoreTokenExchangeRoleAlias
--role-arnarn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole
요청에 성공하는 경우 응답은 다음 예제와 유사합니다.
{ "roleAlias": "GreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" }
참고
역할 별칭을 생성하려면 토큰 교환 IAM 역할을 AWS IoT에 전달할 권한이 있어야 합니다. 역할 별칭을 생성하려고 할 때 오류 메시지가 표시되면 AWS 사용자에게 이 권한이 있는지 확인합니다. 자세한 내용은 AWS Identity and Access Management 사용 설명서에서 사용자에게 AWS 서비스 역할을 전달할 수 있는 권한 부여를 참조하세요.
-
AWS IoT 정책 생성
디바이스를 AWS IoT 사물로 등록한 후에는 해당 디바이스는 디지털 인증서를 사용하여 AWS에 인증할 수 있습니다. 이 인증서에는 디바이스가 인증서에 사용할 수 있는 권한을 정의하는 AWS IoT 정책이 하나 이상 포함되어 있습니다. 이러한 정책을 통해 디바이스는 AWS IoT 및 AWS IoT Greengrass와 통신할 수 있습니다.
AWS IoT 플릿 프로비저닝을 사용하면 디바이스는 AWS IoT에 연결하여 디바이스 인증서를 생성 및 다운로드합니다. 다음 섹션에서 생성하는 플릿 프로비저닝 템플릿에서 AWS IoT가 모든 디바이스의 인증서에 동일한 AWS IoT 정책을 연결할지 또는 각 디바이스에 대해 새 정책을 생성할지 여부를 지정할 수 있습니다.
이 섹션에서는 모든 디바이스의 인증서에 AWS IoT를 연결하는 AWS IoT 정책을 생성합니다. 이 접근 방식을 사용하면 모든 디바이스의 권한을 플릿으로 관리할 수 있습니다. 각 디바이스에 대해 새 AWS IoT 정책을 생성하려는 경우 이 섹션을 건너뛰고 플릿 템플릿을 정의할 때 해당 정책의 정책을 참조할 수 있습니다.
AWS IoT 정책 생성
-
Greengrass 코어 디바이스 플릿에 대한 AWS IoT 권한을 정의하는 AWS IoT 정책을 생성합니다. 다음 정책은 모든 MQTT 주제 및 Greengrass 작업에 대한 액세스를 허용하므로 디바이스에서 사용자 지정 애플리케이션 및 새로운 Greengrass 작업이 필요한 향후 변경 사항과 호환됩니다. 또한 이 정책은 디바이스가 이전 섹션에서 생성한 토큰 교환 역할을 사용하도록 허용하는
iot:AssumeRoleWithCertificate
권한을 허용합니다. 사용 사례를 기반으로 이 정책을 제한할 수 있습니다. 자세한 내용은 AWS IoT Greengrass V2 코어 디바이스에 대한 최소 AWS IoT 정책 단원을 참조하십시오.다음을 따릅니다.
-
Greengrass 코어 디바이스에 필요한 AWS IoT 정책 문서가 포함된 파일을 생성합니다.
예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 파일을 생성할 수 있습니다.
nano greengrass-v2-iot-policy.json
다음 JSON을 파일로 복사합니다.
-
iot:AssumeRoleWithCertificate
을 이전 섹션에서 생성한 AWS IoT 역할의 ARN으로 바꿉니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect", "greengrass:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "
arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias
" } ] } -
-
정책 문서에서 AWS IoT 정책을 생성합니다.
-
GreengrassV2IoTThingPolicy
를 생성할 정책의 이름으로 바꿉니다.
aws iot create-policy --policy-name
GreengrassV2IoTThingPolicy
--policy-document file://greengrass-v2-iot-policy.json요청에 성공하는 경우 응답은 다음 예제와 유사합니다.
{ "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Subscribe\", \"iot:Receive\", \"iot:Connect\", \"greengrass:*\" ], \"Resource\": [ \"*\" ] }, { \"Effect\": \"Allow\", \"Action\": \"iot:AssumeRoleWithCertificate\", \"Resource\": \"
arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias
\" } ] }", "policyVersionId": "1" } -
-
플릿 프로비저닝 템플릿 생성
AWS IoT 플릿 프로비저닝 템플릿은 AWS IoT 사물, 정책 및 인증서를 프로비저닝하는 방법을 정의합니다. 플릿 프로비저닝 플러그인으로 Greengrass 코어 디바이스를 프로비저닝하려면 다음을 지정하는 템플릿을 생성해야 합니다.
-
AWS IoT 사물 리소스. 기존 사물 그룹 목록을 지정하여 온라인 상태일 때 각 디바이스에 구성 요소를 배포할 수 있습니다.
-
AWS IoT 정책 리소스. 이 리소스는 다음 속성 중 하나를 정의할 수 있습니다.
-
기존 AWS IoT 정책의 이름. 이 옵션을 선택하면 이 템플릿에서 생성한 코어 디바이스가 동일한 AWS IoT 정책을 사용하고, 플릿으로 권한을 관리할 수 있습니다.
-
AWS IoT 정책 문서. 이 옵션을 선택하면 이 템플릿에서 생성한 각 코어 디바이스가 고유한 AWS IoT 정책을 사용하고, 각 개별 코어 디바이스에 대한 권한을 관리할 수 있습니다.
-
-
AWS IoT 인증서 리소스. 이 인증서 리소스는
AWS::IoT::Certificate::Id
파라미터를 사용하여 코어 디바이스에 인증서를 연결해야 합니다. 자세한 내용은 AWS IoT 개발자 안내서의 JIT(Just-in-Time) 프로비저닝을 참조하세요.
템플릿에서 기존 사물 그룹 목록에 AWS IoT 사물을 추가하도록 지정할 수 있습니다. 코어 디바이스가 AWS IoT Greengrass에 처음 연결되면 디바이스가 속한 각 사물 그룹에 대해 Greengrass 배포를 수신합니다. 사물 그룹을 사용하여 온라인 상태가 되는 즉시 각 디바이스에 최신 소프트웨어를 배포할 수 있습니다. 자세한 내용은 디바이스에 AWS IoT Greengrass 구성 요소 배포 단원을 참조하십시오.
AWS IoT 서비스를 사용하려면 디바이스를 프로비저닝할 때 AWS 계정에서 AWS IoT 리소스를 생성하고 업데이트할 수 있는 권한이 필요합니다. AWS IoT 서비스 액세스 권한을 부여하기 위해 IAM 역할을 생성하고 템플릿을 생성할 때 역할을 제공합니다. AWS IoT는 디바이스 프로비저닝 시 AWS IoT에서 사용할 수 있는 모든 권한에 대한 액세스를 허용하는 관리형 정책인 AWSIoTThingsRegistration
이 섹션에서는 AWS IoT가 디바이스에 대한 리소스를 프로비저닝할 수 있도록 허용하는 IAM 역할을 생성하고, 해당 IAM 역할을 사용하는 플릿 프로비저닝 템플릿을 생성합니다.
플릿 프로비저닝 템플릿 생성
-
AWS IoT가 AWS 계정에서 리소스를 프로비저닝할 수 있도록 IAM 역할을 생성합니다. 다음을 따릅니다.
-
AWS IoT가 역할을 수임하도록 허용하는 신뢰 정책 문서가 포함된 파일을 생성합니다.
예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 파일을 생성할 수 있습니다.
nano aws-iot-trust-policy.json
다음 JSON을 파일로 복사합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
신뢰 정책 문서를 사용하여 IAM 역할을 생성합니다.
-
GreengrassFleetProvisioningRole
을 생성할 IAM 역할의 이름으로 바꿉니다.
aws iam create-role --role-name
GreengrassFleetProvisioningRole
--assume-role-policy-document file://aws-iot-trust-policy.json요청에 성공하는 경우 응답은 다음 예제와 유사합니다.
{ "Role": { "Path": "/", "RoleName": "GreengrassFleetProvisioningRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole", "CreateDate": "2021-07-26T00:15:12+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }
-
-
디바이스를 프로비저닝할 때 AWS IoT에서 사용할 수 있는 모든 권한에 대한 액세스를 허용하는 AWSIoTThingsRegistration
정책을 검토합니다. 이 관리형 정책을 사용하거나 사용 사례에 대해 범위가 축소된 권한을 정의하는 사용자 지정 정책을 생성할 수 있습니다. 사용자 지정 정책을 생성하려는 경우 지금 생성합니다. -
플릿 프로비저닝 역할에 IAM 정책을 연결합니다.
-
GreengrassFleetProvisioningRole
을 IAM 역할의 이름으로 바꿉니다. -
이전 단계에서 사용자 지정 정책을 생성한 경우 정책 ARN을 사용할 IAM 정책의 ARN으로 바꿉니다.
aws iam attach-role-policy --role-name
GreengrassFleetProvisioningRole
--policy-arnarn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration
요청에 성공하는 경우 명령에 출력이 없습니다.
-
-
-
(선택 사항) 디바이스가 등록 중에 제공하는 템플릿 파라미터를 검증하는 AWS Lambda 함수인 사전 프로비저닝 후크를 생성합니다. 사전 프로비저닝 후크를 사용하여 AWS 계정에 온보딩된 디바이스와 그 수를 더 효과적으로 제어할 수 있습니다. 자세한 내용은 AWS IoT Core 개발자 안내서의 사전 프로비저닝 후크를 참조하세요.
-
플릿 프로비저닝 템플릿을 생성합니다. 다음을 따릅니다.
-
프로비저닝 템플릿 문서를 포함하는 파일을 생성합니다.
예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 파일을 생성할 수 있습니다.
nano greengrass-fleet-provisioning-template.json
프로비저닝 템플릿 문서를 작성합니다. 다음 속성으로 AWS IoT 사물을 생성하도록 지정하는 다음 예제 프로비저닝 템플릿부터 시작할 수 있습니다.
-
사물의 이름은
ThingName
템플릿 파라미터에서 지정한 값입니다. -
사물은
ThingGroupName
템플릿 파라미터에서 지정한 사물 그룹의 멤버입니다. 사물 그룹은 AWS 계정에 있어야 합니다. -
사물의 인증서에는
GreengrassV2IoTThingPolicy
라는 AWS IoT 정책이 연결되어 있습니다.
자세한 내용은 AWS IoT Core 개발자 안내서의 프로비저닝 템플릿을 참조하세요.
{ "Parameters": { "ThingName": { "Type": "String" }, "ThingGroupName": { "Type": "String" }, "AWS::IoT::Certificate::Id": { "Type": "String" } }, "Resources": { "
MyThing
": { "OverrideSettings": { "AttributePayload": "REPLACE", "ThingGroups": "REPLACE", "ThingTypeName": "REPLACE" }, "Properties": { "AttributePayload": {}, "ThingGroups": [ { "Ref": "ThingGroupName" } ], "ThingName": { "Ref": "ThingName" } }, "Type": "AWS::IoT::Thing" }, "MyPolicy
": { "Properties": { "PolicyName": "GreengrassV2IoTThingPolicy
" }, "Type": "AWS::IoT::Policy" }, "MyCertificate
": { "Properties": { "CertificateId": { "Ref": "AWS::IoT::Certificate::Id" }, "Status": "Active" }, "Type": "AWS::IoT::Certificate" } } }참고
MyThing
,MyPolicy
,MyCertificate
은 플릿 프로비저닝 템플릿의 각 리소스 사양을 식별하는 임시 이름입니다. AWS IoT는 템플릿에서 생성하는 리소스에 이러한 이름을 사용하지 않습니다. 이러한 이름을 그대로 사용하거나 템플릿의 각 리소스를 식별하는 데 도움이 되는 값으로 바꿀 수 있습니다. -
-
프로비저닝 템플릿 문서에서 플릿 프로비저닝 템플릿을 생성합니다.
-
GreengrassFleetProvisioningTemplate
을 생성할 템플릿의 이름으로 바꿉니다. -
템플릿 설명을 템플릿에 대한 설명으로 바꿉니다.
-
프로비저닝 역할 ARN을 이전에 생성한 역할의 ARN으로 바꿉니다.
참고
사전 프로비저닝 후크를 생성한 경우
--pre-provisioning-hook
인수로 사전 프로비저닝 후크의 Lambda 함수의 ARN을 지정합니다.--pre-provisioning-hook targetArn=
arn:aws:lambda:us-west-2:123456789012:function:GreengrassPreProvisioningHook
요청에 성공하는 경우 응답은 다음 예제와 유사합니다.
{ "templateArn": "arn:aws:iot:us-west-2:123456789012:provisioningtemplate/GreengrassFleetProvisioningTemplate", "templateName": "GreengrassFleetProvisioningTemplate", "defaultVersionId": 1 }
-
-
프로비저닝 클레임 인증서 및 프라이빗 키 생성
클레임 인증서는 디바이스가 AWS IoT 사물로 등록하고 일반 작업에 사용할 고유한 X.509 디바이스 인증서를 검색할 수 있도록 허용하는 X.509 인증서입니다. 클레임 인증서를 생성한 후 디바이스가 이를 사용하여 고유한 디바이스 인증서를 생성하고 플릿 프로비저닝 템플릿을 사용하여 프로비저닝할 수 있도록 허용하는 AWS IoT 정책을 연결합니다. 클레임 인증서가 있는 디바이스는 AWS IoT 정책에서 허용하는 프로비저닝 템플릿만 사용하여 프로비저닝할 수 있습니다.
이 섹션에서는 클레임 인증서를 생성하고 디바이스가 이전 섹션에서 생성한 플릿 프로비저닝 템플릿을 사용하도록 구성합니다.
중요
프로비저닝 클레임 프라이빗 키는 Greengrass 코어 디바이스 등 어디에서든 항상 보안 유지되어야 합니다. Amazon CloudWatch 지표 및 로그를 사용하여 디바이스 프로비저닝을 위한 클레임 인증서의 무단 사용과 같은 오용 징후를 모니터링하는 것이 좋습니다. 오용이 감지되면 프로비저닝 클레임 인증서를 디바이스 프로비저닝에 사용할 수 없도록 비활성화합니다. 자세한 내용을 알아보려면 AWS IoT Core 개발자 안내서의 AWS IoT 모니터링를 참조하세요.
디바이스 수와 AWS 계정에 등록하는 디바이스를 더 효과적으로 관리하도록 플릿 프로비저닝 템플릿을 생성할 때 사전 프로비저닝 후크를 지정할 수 있습니다. 사전 프로비저닝 후크는 디바이스가 등록 중에 제공하는 템플릿 파라미터를 검증하는 AWS Lambda 함수입니다. 예를 들어 디바이스 ID를 데이터베이스와 비교하여 디바이스에 프로비저닝 권한이 있는지 확인하는 사전 프로비저닝 후크를 생성할 수 있습니다. 자세한 내용은 AWS IoT Core 개발자 안내서의 사전 프로비저닝 후크를 참조하세요.
프로비저닝 클레임 인증서 및 프라이빗 키 생성
-
클레임 인증서와 프라이빗 키를 다운로드할 폴더를 생성합니다.
mkdir claim-certs
-
프로비저닝에 사용할 인증서와 프라이빗 키를 생성하고 저장합니다. AWS IoT는 Amazon 루트 CA(인증 기관)에서 서명한 클라이언트 인증서를 제공합니다.
요청에 성공하는 경우 응답에 인증서에 대한 정보가 포함됩니다. 나중에 사용하도록 인증서의 ARN을 저장합니다.
-
디바이스가 인증서를 사용하여 고유한 디바이스 인증서를 생성하고 플릿 프로비저닝 템플릿을 사용하여 프로비저닝할 수 있도록 허용하는 AWS IoT 정책을 연결합니다. 다음 정책은 디바이스 프로비저닝 MQTT API에 대한 액세스를 허용합니다. 자세한 내용은 AWS IoT Core 개발자 안내서의 디바이스 프로비저닝 MQTT API를 참조하세요.
다음을 따릅니다.
-
Greengrass 코어 디바이스에 필요한 AWS IoT 정책 문서가 포함된 파일을 생성합니다.
예를 들어 Linux 기반 시스템에서 다음 명령을 실행하면 GNU nano를 사용하여 파일을 생성할 수 있습니다.
nano greengrass-provisioning-claim-iot-policy.json
다음 JSON을 파일로 복사합니다.
-
region
의 각 인스턴스를 플릿 프로비저닝을 설정한 AWS 리전으로 바꿉니다. -
account-id
를 각각 AWS 계정 ID로 바꿉니다. -
GreengrassFleetProvisioningTemplate
를 각각 이전 섹션에서 생성한 플릿 프로비저닝 템플릿의 이름으로 바꿉니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:
region
:account-id
:topic/$aws/certificates/create/*", "arn:aws:iot:region
:account-id
:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate
/provision/*" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:region
:account-id
:topicfilter/$aws/certificates/create/*", "arn:aws:iot:region
:account-id
:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate
/provision/*" ] } ] } -
-
정책 문서에서 AWS IoT 정책을 생성합니다.
-
GreengrassProvisioningClaimPolicy
를 생성할 정책의 이름으로 바꿉니다.
aws iot create-policy --policy-name
GreengrassProvisioningClaimPolicy
--policy-document file://greengrass-provisioning-claim-iot-policy.json요청에 성공하는 경우 응답은 다음 예제와 유사합니다.
{ "policyName": "GreengrassProvisioningClaimPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassProvisioningClaimPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": \"iot:Connect\", \"Resource\": \"*\" }, { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Receive\" ], \"Resource\": [ \"arn:aws:iot:
region
:account-id
:topic/$aws/certificates/create/*\", \"arn:aws:iot:region
:account-id
:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate
/provision/*\" ] }, { \"Effect\": \"Allow\", \"Action\": \"iot:Subscribe\", \"Resource\": [ \"arn:aws:iot:region
:account-id
:topicfilter/$aws/certificates/create/*\", \"arn:aws:iot:region
:account-id
:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate
/provision/*\" ] } ] }", "policyVersionId": "1" } -
-
-
AWS IoT 정책을 프로비저닝 클레임 인증서에 연결합니다.
-
GreengrassProvisioningClaimPolicy
를 연결할 정책의 이름으로 바꿉니다. -
대상 ARN을 프로비저닝 클레임 인증서의 ARN으로 바꿉니다.
aws iot attach-policy --policy-name
GreengrassProvisioningClaimPolicy
--targetarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
요청에 성공하는 경우 명령에 출력이 없습니다.
-
이제 디바이스가 AWS IoT에 등록하고 Greengrass 코어 디바이스로 프로비저닝하는 데 사용할 수 있는 프로비저닝 클레임 인증서와 프라이빗 키가 있습니다. 제조 중에 디바이스에 클레임 인증서와 프라이빗 키를 내장하거나 AWS IoT Greengrass 코어 소프트웨어를 설치하기 전에 인증서와 키를 디바이스에 복사할 수 있습니다. 자세한 내용은 AWS IoT 플릿 프로비저닝을 사용하여 AWS IoT Greengrass Core 소프트웨어 설치 단원을 참조하십시오.