수동 리소스 프로비저닝으로 Docker AWS IoT Greengrass 컨테이너에서 실행 - AWS IoT Greengrass

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

수동 리소스 프로비저닝으로 Docker AWS IoT Greengrass 컨테이너에서 실행

이 자습서에서는 수동으로 프로비저닝된 리소스를 사용하여 Docker 컨테이너에 AWS IoT Greengrass Core 소프트웨어를 설치하고 실행하는 방법을 보여줍니다. AWS

사전 조건

이 튜토리얼을 완료하려면 다음이 필요합니다.

AWS IoT엔드포인트를 검색합니다.

AWS IoT엔드포인트를 가져와서 나중에 사용할 수 있도록 저장하세요AWS 계정. 장치는 이러한 엔드포인트를 사용하여 연결합니다. AWS IoT 다음을 따릅니다.

  1. 사용자의 AWS IoT 데이터 엔드포인트를 가져오세요. AWS 계정

    aws iot describe-endpoint --endpoint-type iot:Data-ATS

    요청이 성공하면 응답은 다음 예와 비슷합니다.

    { "endpointAddress": "device-data-prefix-ats.iot.us-west-2.amazonaws.com" }
  2. 사용자의 AWS IoT 자격 증명 엔드포인트를 가져오세요. AWS 계정

    aws iot describe-endpoint --endpoint-type iot:CredentialProvider

    요청이 성공하면 응답은 다음 예와 비슷합니다.

    { "endpointAddress": "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com" }

AWS IoT 사물 생성

AWS IoT사물은 연결된 장치 및 논리적 개체를 나타냅니다. AWS IoT Greengrass 코어 디바이스는 AWS IoT 사물입니다. 장치를 사물로 등록하면 해당 장치가 디지털 인증서를 사용하여 인증할 수 있습니다. AWS IoT AWS

이 섹션에서는 디바이스를 나타내는 AWS IoT 사물을 생성합니다.

AWS IoT 사물을 생성하려면
  1. AWS IoT디바이스용 사물을 만드세요. 개발 컴퓨터에서 다음 명령을 실행합니다.

    • 사용할 사물 MyGreengrassCore이름으로 바꿉니다. 이 이름은 Greengrass 코어 디바이스의 이름이기도 합니다.

      참고

      사물 이름에는 콜론 (:) 문자를 포함할 수 없습니다.

    aws iot create-thing --thing-name MyGreengrassCore

    요청이 성공하면 응답은 다음 예제와 비슷합니다.

    { "thingName": "MyGreengrassCore", "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "thingId": "8cb4b6cd-268e-495d-b5b9-1713d71dbf42" }
  2. (선택 사항) 새 AWS IoT 사물 그룹 또는 기존 사물 그룹에 사물을 추가합니다. 사물 그룹을 사용하여 수많은 Greengrass 코어 디바이스를 관리합니다. 소프트웨어 구성 요소를 장치에 배포할 때 개별 장치 또는 장치 그룹을 대상으로 지정할 수 있습니다. 활성 Greengrass 배포가 있는 사물 그룹에 장치를 추가하여 해당 사물 그룹의 소프트웨어 구성 요소를 장치에 배포할 수 있습니다. 다음을 따릅니다.

    1. (선택 사항) AWS IoT 사물 그룹을 생성합니다.

      • 생성할 사물 그룹의 MyGreengrassCoreGroup이름으로 바꿉니다.

        참고

        사물 그룹 이름에는 콜론 (:) 문자를 포함할 수 없습니다.

      aws iot create-thing-group --thing-group-name MyGreengrassCoreGroup

      요청이 성공하면 응답은 다음 예와 비슷합니다.

      { "thingGroupName": "MyGreengrassCoreGroup", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup", "thingGroupId": "4df721e1-ff9f-4f97-92dd-02db4e3f03aa" }
    2. AWS IoT사물 그룹에 사물을 추가합니다.

      • 사물 MyGreengrassCore이름으로 바꾸세요AWS IoT.

      • 사물 그룹의 MyGreengrassCoreGroup이름으로 바꾸십시오.

      aws iot add-thing-to-thing-group --thing-name MyGreengrassCore --thing-group-name MyGreengrassCoreGroup

      요청이 성공하면 명령이 출력되지 않습니다.

사물 인증서를 생성하세요.

장치를 사물로 등록하면 해당 장치가 디지털 인증서를 사용하여 인증할 수 있습니다. AWS IoT AWS 이 인증서를 사용하면 장치가 AWS IoT 및 AWS IoT Greengrass 와 통신할 수 있습니다.

이 섹션에서는 장치를 연결하는 데 사용할 수 있는 인증서를 만들고 AWS 다운로드합니다.

사물 인증서를 만들려면
  1. 사물에 대한 인증서를 다운로드할 폴더를 AWS IoT 생성합니다.

    mkdir greengrass-v2-certs
  2. 사물에 대한 인증서를 생성하고 AWS IoT 다운로드합니다.

    aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile greengrass-v2-certs/device.pem.crt --public-key-outfile greengrass-v2-certs/public.pem.key --private-key-outfile greengrass-v2-certs/private.pem.key

    요청이 성공하면 응답은 다음 예와 비슷합니다.

    { "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificatePem": "-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE= -----END CERTIFICATE-----", "keyPair": { "PublicKey": "-----BEGIN PUBLIC KEY-----\ MIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\ MMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\ 59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\ hJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\ FQIDAQAB\ -----END PUBLIC KEY-----\ ", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\ key omitted for security reasons\ -----END RSA PRIVATE KEY-----\ " } }

    나중에 인증서를 구성하는 데 사용할 인증서의 Amazon 리소스 이름 (ARN) 을 저장합니다.

사물 인증서를 구성합니다.

이전에 만든 사물에 AWS IoT 사물 인증서를 연결하고 핵심 장치에 대한 AWS IoT 권한을 정의하는 AWS IoT 정책을 인증서에 추가합니다.

사물 인증서를 구성하려면
  1. 인증서를 사물에 AWS IoT 첨부합니다.

    • AWS IoT물건 MyGreengrassCore이름으로 바꾸세요.

    • 인증서 Amazon 리소스 이름 (ARN) 을 이전 단계에서 생성한 인증서의 ARN으로 교체합니다.

    aws iot attach-thing-principal --thing-name MyGreengrassCore --principal arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

    요청이 성공하면 명령이 출력되지 않습니다.

  2. Greengrass 코어 AWS IoT 디바이스에 대한 권한을 정의하는 AWS IoT 정책을 생성하여 첨부하십시오. 다음 정책은 모든 MQTT 주제 및 Greengrass 작업에 대한 액세스를 허용하므로 장치가 사용자 지정 애플리케이션 및 새로운 Greengrass 작업이 필요한 향후 변경 사항과 함께 작동하도록 할 수 있습니다. 사용 사례에 따라 이 정책을 제한할 수 있습니다. 자세한 설명은 AWS IoT Greengrass V2코어 디바이스에 대한 최소 AWS IoT 정책 섹션을 참조하세요.

    이전에 Greengrass 코어 디바이스를 설정한 경우 새 디바이스를 생성하는 대신 해당 AWS IoT 정책을 연결할 수 있습니다.

    다음을 따릅니다.

    1. Greengrass 코어 디바이스에 필요한 AWS IoT 정책 문서가 포함된 파일을 생성합니다.

      예를 들어, Linux 기반 시스템에서는 다음 명령을 실행하여 GNU nano를 사용하여 파일을 생성할 수 있습니다.

      nano greengrass-v2-iot-policy.json

      다음 JSON을 파일에 복사합니다.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect", "greengrass:*" ], "Resource": [ "*" ] } ] }
    2. AWS IoT정책 문서에서 정책을 생성합니다.

      • GreenGrassV2IoT를 ThingPolicy 생성할 정책의 이름으로 바꾸십시오.

      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\\": [ \\"*\\" ] } ] }", "policyVersionId": "1" }
    3. AWS IoT정책을 사물의 인증서에 연결합니다. AWS IoT

      • GreenGrassV2IoT를 ThingPolicy 첨부할 정책 이름으로 바꾸십시오.

      • 대상 ARN을 사내 인증서의 ARN으로 바꾸십시오. AWS IoT

      aws iot attach-policy --policy-name GreengrassV2IoTThingPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

      요청이 성공하면 명령이 출력되지 않습니다.

토큰 교환 역할 생성

Greengrass 코어 디바이스는 토큰 교환 역할이라고 하는 IAM 서비스 역할을 사용하여 서비스 호출을 승인합니다. AWS 디바이스는 AWS IoT 자격 증명 공급자를 사용하여 이 역할에 대한 임시 AWS 자격 증명을 가져오고, 이를 통해 디바이스가 Amazon Logs와 상호 작용하고AWS IoT, Amazon Logs에 로그를 전송하고, Amazon CloudWatch S3에서 사용자 지정 구성 요소 아티팩트를 다운로드할 수 있습니다. 자세한 설명은 핵심 장치가 서비스와 상호 작용할 AWS 수 있도록 권한 부여 섹션을 참조하세요.

AWS IoT역할 별칭을 사용하여 Greengrass 코어 디바이스의 토큰 교환 역할을 구성합니다. 역할 별칭을 사용하면 장치의 토큰 교환 역할을 변경하면서도 장치 구성은 동일하게 유지할 수 있습니다. 자세한 내용은 AWS IoT Core개발자 안내서의 AWS서비스에 대한 직접 호출 승인을 참조하십시오.

이 섹션에서는 토큰 교환 IAM 역할과 해당 역할을 가리키는 AWS IoT 역할 별칭을 생성합니다. Greengrass 코어 디바이스를 이미 설정한 경우 새 디바이스를 생성하는 대신 토큰 교환 역할 및 역할 별칭을 사용할 수 있습니다. 그런 다음 해당 역할과 별칭을 사용하도록 디바이스의 AWS IoT 사물을 구성합니다.

토큰 교환 IAM 역할을 만들려면
  1. 디바이스에서 토큰 교환 역할로 사용할 수 있는 IAM 역할을 생성합니다. 다음을 따릅니다.

    1. 토큰 교환 역할에 필요한 신뢰 정책 문서가 들어 있는 파일을 생성하십시오.

      예를 들어 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" } ] }
    2. 신뢰 정책 문서를 사용하여 토큰 교환 역할을 생성합니다.

      • GreenGrassV2를 TokenExchangeRole 생성할 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" } ] } }
    3. 토큰 교환 역할에 필요한 액세스 정책 문서가 포함된 파일을 생성하십시오.

      예를 들어, 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 버킷이 아직 없는 경우, 버킷을 생성한 후 나중에 이러한 권한을 추가할 수 있습니다.

    4. 정책 문서에서 IAM 정책을 생성합니다.

      • GreenGrassV2를 TokenExchangeRoleAccess 생성할 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" } }
    5. IAM 정책을 토큰 교환 역할에 연결합니다.

      • GreenGrassV2를 TokenExchangeRole IAM 역할 이름으로 바꾸십시오.

      • 정책 ARN을 이전 단계에서 생성한 IAM 정책의 ARN으로 교체합니다.

      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess

      요청이 성공하면 명령이 출력되지 않습니다.

  2. 토큰 교환 AWS IoT 역할을 가리키는 역할 별칭을 생성합니다.

    • 생성할 역할 별칭의 GreengrassCoreTokenExchangeRoleAlias이름으로 바꾸십시오.

    • 역할 ARN을 이전 단계에서 생성한 IAM 역할의 ARN으로 교체합니다.

    aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole

    요청이 성공하면 응답은 다음 예와 비슷합니다.

    { "roleAlias": "GreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" }
    참고

    역할 별칭을 생성하려면 토큰 교환 IAM 역할을 전달할 권한이 있어야 합니다. AWS IoT 역할 별칭을 만들려고 할 때 오류 메시지가 표시되면 AWS 사용자에게 이 권한이 있는지 확인하세요. 자세한 내용은 사용 설명서의 AWS 서비스에 역할을 전달할 수 있는 권한 부여를 AWS Identity and Access Management 참조하십시오.

  3. Greengrass 코어 디바이스가 역할 별칭을 사용하여 토큰 교환 역할을 맡도록 허용하는 AWS IoT 정책을 만들고 첨부하십시오. 이전에 Greengrass 코어 디바이스를 설정한 경우 새 디바이스를 생성하는 대신 역할 별칭 AWS IoT 정책을 연결할 수 있습니다. 다음을 따릅니다.

    1. (선택 사항) 역할 별칭에 필요한 AWS IoT 정책 문서가 포함된 파일을 생성합니다.

      예를 들어, Linux 기반 시스템에서는 다음 명령을 실행하여 GNU nano를 사용하여 파일을 생성할 수 있습니다.

      nano greengrass-v2-iot-role-alias-policy.json

      다음 JSON을 파일에 복사합니다.

      • 리소스 ARN을 역할 별칭의 ARN으로 대체합니다.

      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" } ] }
    2. AWS IoT정책 문서에서 정책을 생성합니다.

      • 생성할 AWS IoT 정책의 GreengrassCoreTokenExchangeRoleAliasPolicy이름으로 바꿉니다.

      aws iot create-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --policy-document file://greengrass-v2-iot-role-alias-policy.json

      요청이 성공하면 응답은 다음 예와 비슷합니다.

      { "policyName": "GreengrassCoreTokenExchangeRoleAliasPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassCoreTokenExchangeRoleAliasPolicy", "policyDocument": "{ \\"Version\\":\\"2012-10-17\\", \\"Statement\\": [ { \\"Effect\\": \\"Allow\\", \\"Action\\": \\"iot:AssumeRoleWithCertificate\\", \\"Resource\\": \\"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\\" } ] }", "policyVersionId": "1" }
    3. AWS IoT정책을 사물의 인증서에 연결합니다. AWS IoT

      • 역할 별칭 AWS IoT 정책의 GreengrassCoreTokenExchangeRoleAliasPolicy이름으로 바꾸십시오.

      • 대상 ARN을 사내 인증서의 ARN으로 바꾸십시오. AWS IoT

      aws iot attach-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

      요청이 성공하면 명령이 출력되지 않습니다.

인증서를 디바이스에 다운로드합니다.

이전에 디바이스의 인증서를 개발 컴퓨터에 다운로드했습니다. 이 섹션에서는 Amazon 루트 인증 기관 (CA) 인증서를 다운로드합니다. 그런 다음 개발 컴퓨터가 아닌 다른 컴퓨터에서 Docker의 AWS IoT Greengrass Core 소프트웨어를 실행하려는 경우 인증서를 해당 호스트 컴퓨터에 복사합니다. AWS IoT GreengrassCore 소프트웨어는 이러한 인증서를 사용하여 AWS IoT 클라우드 서비스에 연결합니다.

인증서를 디바이스에 다운로드하려면
  1. 개발 컴퓨터에서 Amazon 루트 인증 기관 (CA) 인증서를 다운로드합니다. AWS IoT인증서는 기본적으로 Amazon의 루트 CA 인증서와 연결됩니다.

    Linux or Unix
    sudo curl -o ./greengrass-v2-certs/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    Windows Command Prompt (CMD)
    curl -o .\greengrass-v2-certs\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    PowerShell
    iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile .\greengrass-v2-certs\AmazonRootCA1.pem
  2. 개발 컴퓨터와 다른 디바이스에서 Docker의 AWS IoT Greengrass Core 소프트웨어를 실행하려는 경우 인증서를 호스트 컴퓨터에 복사하십시오. 개발 컴퓨터와 호스트 컴퓨터에서 SSH와 SCP를 사용하도록 설정한 경우 개발 컴퓨터의 scp 명령을 사용하여 인증서를 전송할 수 있습니다. 호스트 컴퓨터의 IP 주소로 device-ip-address바꾸십시오.

    scp -r greengrass-v2-certs/ device-ip-address:~

구성 파일 생성

  1. 호스트 컴퓨터에서 구성 파일을 저장할 폴더를 생성합니다.

    mkdir ./greengrass-v2-config
  2. 텍스트 편집기를 사용하여 config.yaml ./greengrass-v2-config 폴더에 이름이 지정된 구성 파일을 생성합니다.

    예를 들어, 다음 명령을 실행하여 GNU nano를 사용하여 생성할 수 있습니다. config.yaml

    nano ./greengrass-v2-config/config.yaml
  3. 다음 YAML 콘텐츠를 파일에 복사합니다. 이 부분 구성 파일은 시스템 매개변수와 Greengrass 핵 매개변수를 지정합니다.

    --- system: certificateFilePath: "/tmp/certs/device.pem.crt" privateKeyPath: "/tmp/certs/private.pem.key" rootCaPath: "/tmp/certs/AmazonRootCA1.pem" rootpath: "/greengrass/v2" thingName: "MyGreengrassCore" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "nucleus-version" configuration: awsRegion: "region" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" iotDataEndpoint: "device-data-prefix-ats.iot.region.amazonaws.com" iotCredEndpoint: "device-credentials-prefix.credentials.region.amazonaws.com"

    그런 다음 다음 값을 바꾸십시오.

    • /tmp/certs. 컨테이너를 시작할 때 다운로드한 인증서를 마운트하는 Docker 컨테이너의 디렉터리입니다.

    • /greengrass/v2. 설치에 사용하려는 Greengrass 루트 폴더입니다. GGC_ROOT환경 변수를 사용하여 이 값을 설정합니다.

    • MyGreengrassCore. AWS IoT 사물의 이름입니다.

    • 핵 버전. 설치할 AWS IoT Greengrass Core 소프트웨어 버전입니다. 이 값은 다운로드한 Docker 이미지 또는 Dockerfile의 버전과 일치해야 합니다. latest태그와 함께 Greengrass Docker 이미지를 다운로드한 경우 docker inspect image-id 를 사용하여 이미지 버전을 확인하세요.

    • 지역. AWS IoT리소스를 생성한 AWS 리전 곳. 또한 환경 파일의 AWS_REGION 환경 변수에도 동일한 값을 지정해야 합니다.

    • GreengrassCoreTokenExchangeRoleAlias. 토큰 교환 역할 별칭.

    • device-data-prefix. AWS IoT데이터 엔드포인트의 접두사.

    • device-credentials-prefix. AWS IoT자격 증명 엔드포인트의 접두사.

환경 파일 생성

이 자습서에서는 환경 파일을 사용하여 Docker 컨테이너 내의 AWS IoT Greengrass Core 소프트웨어 설치 프로그램으로 전달될 환경 변수를 설정합니다. 또한 docker run명령의 -e or --env 인수를 사용하여 Docker 컨테이너의 환경 변수를 설정하거나 파일의 environment블록에 변수를 설정할 수 있습니다. docker-compose.yml

  1. 텍스트 편집기를 사용하여 라는 .env 환경 파일을 생성합니다.

    예를 들어, Linux 기반 .env 시스템에서는 다음 명령을 실행하여 GNU nano를 사용하여 현재 디렉토리에 를 생성할 수 있습니다.

    nano .env
  2. 다음 내용을 파일에 복사합니다.

    GGC_ROOT_PATH=/greengrass/v2 AWS_REGION=region PROVISION=false COMPONENT_DEFAULT_USER=ggc_user:ggc_group INIT_CONFIG=/tmp/config/config.yaml

    그런 다음 다음 값을 바꿉니다.

    • /greengrass/v2. AWS IoT GreengrassCore 소프트웨어를 설치하는 데 사용할 루트 폴더의 경로입니다.

    • 지역. AWS IoT리소스를 생성한 AWS 리전 곳. 구성 파일의 awsRegion 구성 매개변수에도 동일한 값을 지정해야 합니다.

    • /tmp/config/. Docker 컨테이너를 시작할 때 구성 파일을 마운트하는 폴더입니다.

    참고

    DEPLOY_DEV_TOOLS환경 변수를 로 true 설정하여 Greengrass CLI 구성 요소를 배포할 수 있습니다. 이렇게 하면 Docker 컨테이너 내에서 사용자 지정 구성 요소를 개발할 수 있습니다. 이 구성 요소는 프로덕션 환경이 아닌 개발 환경에서만 사용하는 것이 좋습니다. 이 구성 요소를 사용하면 일반적으로 프로덕션 환경에서는 필요하지 않은 정보와 작업에 액세스할 수 있습니다. 이 구성 요소를 필요한 핵심 장치에만 배포하여 최소 권한 원칙을 따르세요.

컨테이너에서 AWS IoT Greengrass 코어 소프트웨어를 실행합니다.

이 자습서에서는 Docker 컨테이너에 구축한 Docker 이미지를 시작하는 방법을 보여줍니다. Docker CLI 또는 Docker Compose CLI를 사용하여 Docker 컨테이너에서 코어 소프트웨어 이미지를 AWS IoT Greengrass 실행할 수 있습니다.

Docker
  • 이 가이드에서는 Docker 컨테이너에 구축한 Docker 이미지를 시작하는 방법을 보여줍니다.

    docker run --rm --init -it --name docker-image \ -v path/to/greengrass-v2-config:/tmp/config/:ro \ -v path/to/greengrass-v2-certs:/tmp/certs:ro \ --env-file .env \ -p 8883 \ your-container-image:version

    이 예제 명령은 docker run에 다음 인수를 사용합니다.

    • --rm. 컨테이너가 나올 때 컨테이너를 청소합니다.

    • --init. 컨테이너에서 init 프로세스를 사용합니다.

      참고

      Docker 컨테이너를 중지할 때 AWS IoT Greengrass Core 소프트웨어를 종료하려면 --init 인수가 필요합니다.

    • -it. (선택 사항) 포그라운드에서 대화형 프로세스로 Docker 컨테이너를 실행합니다. 이 -d 인수를 인수로 대체하여 대신 Docker 컨테이너를 분리 모드에서 실행할 수 있습니다. 자세한 내용은 Docker 설명서의 분리형 vs. 포그라운드를 참조하십시오.

    • --name. 라는 이름의 컨테이너를 실행합니다. aws-iot-greengrass

    • -v. Docker 컨테이너에 볼륨을 마운트하여 컨테이너 내에서 구성 파일과 인증서 파일을 AWS IoT Greengrass 실행할 수 있도록 합니다.

    • --env-file. (선택 사항) Docker 컨테이너 내의 AWS IoT Greengrass Core 소프트웨어 설치 프로그램으로 전달될 환경 변수를 설정하는 환경 파일을 지정합니다. 이 인수는 환경 변수를 설정하기 위해 환경 파일을 만든 경우에만 필요합니다. 환경 파일을 만들지 않은 경우 Docker run 명령에서 --env 인수를 사용하여 환경 변수를 직접 설정할 수 있습니다.

    • -p. (선택 사항) 8883 컨테이너 포트를 호스트 시스템에 게시합니다. MQTT 트래픽에 포트 8883을 AWS IoT Greengrass 사용하기 때문에 MQTT를 통해 연결하고 통신하려는 경우 이 인수가 필요합니다. 다른 포트를 열려면 추가 인수를 사용하십시오. -p

    참고

    보안을 강화하여 Docker 컨테이너를 실행하려면 --cap-drop--cap-add 인수를 사용하여 컨테이너의 Linux 기능을 선택적으로 활성화할 수 있습니다. 자세한 내용은 Docker 설명서의 런타임 권한 및 Linux 기능을 참조하십시오.

Docker Compose
  1. 텍스트 편집기를 사용하여 라는 이름의 Docker Compose 파일을 만드십시오. docker-compose.yml

    예를 들어 Linux 기반 시스템에서는 다음 명령을 실행하여 GNU nano를 사용하여 현재 디렉터리에 파일을 생성할 수 있습니다. docker-compose.yml

    nano docker-compose.yml
    참고

    에서 제공하는 Compose 파일의 최신 버전을 다운로드하여 사용할 수도 있습니다AWS. GitHub

  2. Compose 파일에 다음 콘텐츠를 추가합니다. 파일은 다음 예제와 비슷할 것입니다. :version을 your-container-nameDocker 이미지 이름으로 바꾸세요.

    version: '3.7' services: greengrass: init: true build: context: . container_name: aws-iot-greengrass image: your-container-name:version volumes: - /path/to/greengrass-v2-config:/tmp/config/:ro - /path/to/greengrass-v2-certs:/tmp/certs:ro env_file: .env ports: - "8883:8883"

    이 예제 작성 파일의 다음 매개변수는 선택사항입니다.

    • ports—8883 컨테이너 포트를 호스트 컴퓨터에 게시합니다. MQTT 트래픽에 포트 8883을 AWS IoT Greengrass 사용하기 때문에 MQTT를 통해 연결하고 통신하려는 경우 이 매개 변수가 필요합니다.

    • env_file—Docker 컨테이너 내의 AWS IoT Greengrass Core 소프트웨어 설치 프로그램으로 전달될 환경 변수를 설정하는 환경 파일을 지정합니다. 이 매개 변수는 환경 변수를 설정하기 위해 환경 파일을 만든 경우에만 필요합니다. 환경 파일을 만들지 않은 경우 환경 매개변수를 사용하여 Compose 파일에서 직접 변수를 설정할 수 있습니다.

    참고

    보안을 강화하여 Docker 컨테이너를 실행하려면 Compose 파일에서 cap_dropcap_add 를 사용하여 컨테이너의 Linux 기능을 선택적으로 활성화할 수 있습니다. 자세한 내용은 Docker 설명서의 런타임 권한 및 Linux 기능을 참조하십시오.

  3. 다음 명령을 실행하여 컨테이너를 시작합니다.

    docker-compose -f docker-compose.yml up

다음 단계

AWS IoT Greengrass이제 Core 소프트웨어가 Docker 컨테이너에서 실행되고 있습니다. 다음 명령을 실행하여 현재 실행 중인 컨테이너의 컨테이너 ID를 검색합니다.

docker ps

그런 다음 다음 명령을 실행하여 컨테이너에 액세스하고 컨테이너 내에서 실행되는 AWS IoT Greengrass Core 소프트웨어를 탐색할 수 있습니다.

docker exec -it container-id /bin/bash

간단한 구성 요소를 만드는 방법에 대한 자세한 내용은 을 참조하십시오4단계: 기기의 구성 요소 개발 및 테스트. 자습서: AWS IoT Greengrass V2 시작하기

참고

docker exec 사용하여 Docker 컨테이너 내에서 명령을 실행하면 해당 명령이 Docker 로그에 기록되지 않습니다. Docker 로그에 명령을 기록하려면 대화형 셸을 Docker 컨테이너에 연결하세요. 자세한 설명은 대화형 셸을 Docker 컨테이너에 연결합니다. 섹션을 참조하세요.

AWS IoT GreengrassCore 로그 파일이 greengrass.log 호출되고 위치에 있습니다. /greengrass/v2/logs 구성 요소 로그 파일도 같은 디렉터리에 있습니다. Greengrass 로그를 호스트의 임시 디렉터리에 복사하려면 다음 명령을 실행합니다.

docker cp container-id:/greengrass/v2/logs /tmp/logs

컨테이너가 종료되거나 제거된 후에도 로그를 유지하려면 전체 Greengrass /greengrass/v2/logs 디렉터리를 마운트하는 대신 디렉터리만 호스트의 임시 로그 디렉터리에 바인드 마운트하는 것이 좋습니다. 자세한 설명은 Docker 컨테이너 외부에서 Greengrass 로그 유지 섹션을 참조하세요.

실행 중인 AWS IoT Greengrass Docker 컨테이너를 중지하려면 또는 를 실행하십시오. docker stop docker-compose -f docker-compose.yml stop 이 작업은 Greengrass SIGTERM 프로세스로 전송되고 컨테이너에서 시작된 모든 관련 프로세스를 종료합니다. Docker 컨테이너는 docker-init 실행 파일을 프로세스 PID 1로 초기화하므로 남아 있는 좀비 프로세스를 제거하는 데 도움이 됩니다. 자세한 내용은 Docker 설명서의 초기화 프로세스 지정을 참조하십시오.

Docker AWS IoT Greengrass 컨테이너에서 실행할 때 발생하는 문제 해결에 대한 자세한 내용은 을 참조하십시오. 도커 컨테이너에서 AWS IoT Greengrass 문제 해결