๋๋ฐ์ด์ค(์์ด์ปจ, ๊ณต๊ธฐ์ฒญ์ ๊ธฐ ๋ฑ๊ณผ ๊ฐ์ ๊ฐ์ ๊ธฐ๊ธฐ)์ ์ธ์ฆ์์ ์ ์ฑ ๋ฑ์ ์ฐ๊ฒฐํ๊ณ ํด์ ํ๋ ๊ณผ์ ์ AWS IoT ์ฝ์์์ ์ง์ ํ๋ ๊ฒ์ด ์๋ AWS sdk๋ฅผ ํ์ฉํด java ์ฝ๋๋ก ๊ฐ๋ฐํ๋ ์์ ์ ๋งก๊ฒ ๋์๋ค.
AWS IoT API reference๋ฅผ ์ฐธ๊ณ ํ๋ฉฐ ์งํํ ์์ ์ด์ง๋ง, ๊ทธ ์ ์ AWS IoT Core์์ ์ฌ์ฉํ๊ณ ์๋ ์ฉ์ด์ ์๋ ๋ฐฉ์์ ์ด๋ ์ ๋ ํ์ ํ๊ณ ๊ฐ๋ฐํ๋ ๊ฒ์ด ์๋ฏธ์์ ๊ฒ์ผ๋ก ๋ณด์ ๋ชจ๋ฅด๋ ํน์ ํท๊ฐ๋ฆฌ๋ ๊ฐ๋ ๋ค์ ์ ๋ฆฌํ๊ฒ ๋ค ! ๐
AWS IoT Core์ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ๊ทธ ์ ์ ๊ธฐ๋กํ ๊ฒ์ด ์์ผ๋ฏ๋ก ๊ฐ๋ฐํ๊ฒ ๋๋ฉด์ ์ฌ์ฉํ๊ฒ ๋ ๊ฐ๋ ์์ฃผ๋ก ์ ๋ฆฌํ ๊ฒ์ด๋ค.
๋๋ฐ์ด์ค ๊ด๋ฆฌ
AWS IoT๋ ์ฌ๋ฌผ(Thing)์ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋๋ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค.
AWS IoT์ ๋ค์ด๊ฐ๋ฉด ์ข์ธก ๋ฉ๋ด์ ๊ด๋ฆฌ > ์ฌ๋ฌผ์ ๋ณผ ์ ์๋ค.
์ฌ๋ฌผ์ ๋ค์ด๊ฐ๋ฉด ์์ฑํ ์ฌ๋ฌผ๋ค์ด ๋์ค๊ณ , ํน์ ์ฌ๋ฌผ์ ํด๋ฆญํ๋ฉด ์ธ๋ถ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์๋ค.
์ฌ๋ฌผ์ ๋ํ ์ ๋ณด๋ ๋ ์ง์คํธ๋ฆฌ์ JSON ํํ์ ๋ฐ์ดํฐ๋ก ์ ์ฅํ๋ค.
{
"version": 3,
"thingName": "MyLightBulb",
"defaultClientId": "MyLightBulb",
"thingTypeName": "LightBulb",
"attributes": {
"model": "123",
"wattage": "75"
}
}
์ธ๋ถ ์ ๋ณด์์ ์ธ์ฆ์๋ฅผ ๋๋ฅด๋ฉด ํด๋น ์ฌ๋ฌผ์ ์ฐ๊ฒฐ๋ ๋๋ฐ์ด์ค ์ธ์ฆ์๋ฅผ ํ์ธํ ์ ์๋ค.
ํน์ ์ธ์ฆ์์ ๋ค์ด๊ฐ๋ฉด ์ ์ฑ ์ ํ์ธํ ์ ์๋ค.
์ ์ฑ ์ ํตํด AWS IoT Core ๋ฐ์ดํฐ ์์ญ ์์ ์ ์ ๊ทผํ ์ ์๋ค.
โณ๏ธ ์ฌ๋ฌผ ์์ฑ
{
"thingArn": "arn:aws:iot:us-east-1:123456789012:thing/MyLightBulb",
"thingName": "MyLightBulb",
"thingId": "12345678abcdefgh12345678ijklmnop12345678"
}
CreateThing ๋ช ๋ น์ ์ฌ์ฉํด ์ฌ๋ฌผ์ ์์ฑํ๋ค.
CreateThing ๋ช ๋ น์๋ ์ ํญ๋ชฉ์ ์ด๋ฆ๊ณผ Amazon ๋ฆฌ์์ค ์ด๋ฆ(ARN)์ด ํ์๋๋ค.
๋ณด์
โณ๏ธ ์๋ ๋ฐฉ์
๐ท ๋๋ฐ์ด์ค ๋ณด์
- ๋๋ฐ์ด์ค ์ธ์ฆ : AWS IoT์์ X.509 ์ธ์ฆ์๋ฅผ ์์ฑํ๊ณ ๋ฑ๋กํ์ฌ IoT ๋๋ฐ์ด์ค๋ฅผ ์์ ํ๊ฒ ์ธ์ฆ
- ๋๋ฐ์ด์ค ์น์ธ : AWS IoT ๋ฆฌ์์ค๊ฐ ์ก์ธ์คํ ์ ์๋ ๋ฆฌ์์ค๋ฅผ ์ ์ํ๋ ์ ์ฑ ์ ์์ฑํ๊ณ ๊ด๋ฆฌ
- ์์ฒด ์ธ์ฆ์ ๊ฐ์ ธ์ค๊ธฐ : ์์ฒด ๋๋ฐ์ด์ค ์ธ์ฆ์์ ์๋ช ํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ธ์ฆ๊ธฐ๊ด(CA) ๋ฑ๋ก
๐ X.509 ์ธ์ฆ์๋ ?
๐ ๋๋ฐ์ด์ค ๋ฐ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ์ธ์ฆํจ์ผ๋ก์จ AWS IoT์ ๋ฑ๋กํ๊ณ ํ์ฑํ์์ผ ๋๋ฐ์ด์ค ๋๋ ํด๋ผ์ด์ธํธ๊ฐ AWS IoT์ ํต์ ๊ฐ๋ฅํ๋๋ก ํ๋ค.
๐ท ๋๋ฐ์ด์ค์์๋ ์ด๋ป๊ฒ ๋ณด์ ์ฐ๊ฒฐ์ ์ค์ ํ๋๊ฐ ?
- ๋๋ฐ์ด์ค ์ธ์ฆ์๋ฅผ ์์ฑํ์ฌ ๋๋ฐ์ด์ค์ ์ฐ๊ฒฐ : ๋๋ฐ์ด์ค ์ธ์ฆ์์๋ ๋๋ฐ์ด์ค์ ์๊ฒฉ ์ฆ๋ช ์ ์ธ์ฆํ์ฌ AWS IoT์ ๋ํ ๋ณด์ ์ฐ๊ฒฐ์ ๊ตฌ์ถํ๋ค.
- ์ ์ฑ ์ ์์ฑํ์ฌ ๋๋ฐ์ด์ค ์ธ์ฆ์์ ์ฐ๊ฒฐ : ๋๋ฐ์ด์ค๋ ์ ์ฑ ์ ํตํด IoT ๋ฉ์์ง ๋ธ๋ก์ปค, MQTT ๋ฉ์์ง ๋ฐ device shadow์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
๐ถ ์ธ์ฆ์
๐ Amazon Root CA ๋๋ AWS IoT์ ๋ฑ๋ก๋ ์์ฒด CA์์ ์๋ช ํ ์ ์ธ์ฆ์๋ฅผ ์์ฑํ๊ณ ๋ฑ๋ก
๐ถ ์ ์ฑ
๐ AWS IoT ์ ์ฑ ์ฌ์ฉ ์ AWS IoT Core ๋ฐ์ดํฐ ์์ญ ์์ ์ ๋ํ ์ก์ธ์ค ์ ์ด ๊ฐ๋ฅ (IAM ์ ์ฑ ๊ณผ ๋ณ๊ฐ)
- ๋ฉ์์ง ๋ธ๋ก์ปค์ ์ฐ๊ฒฐ
- AWS IoT Core, MQTT ๋ฏธ์์ง๋ฅผ ๋ณด๋ด๊ณ ์์
- device shadow ๊ฐ์ ธ์ค๊ฑฐ๋ ์ ๋ฐ์ดํธ
๐ธ ์ ์ฑ ์์
- MQTT ์ ์ฑ
์์
- iot:Connect
- iot:GetRetainedMessage
- iot:ListRetainedMessages
- iot:Publish
- iot:Receive
- iot:RetainPublish
- iot:Subscribe
- device shadow ์ ์ฑ
์์
- iot:DeleteThingShadow
- iot:GetThingShadow
- iot:ListNamedShadowsForThing
- iot:UpdateThingShadow
- ์์
์คํ AWS IoT Core ์ ์ฑ
์์
- iotjobsdata:DescribeJobExecution
- iotjobsdata:GetPendingJobExecutions
- iotjobsdata:UpdateJobExecution
- iotjobsdata:StartNextPendingJobExecution
- AWS IoT Core ์๊ฒฉ ์ฆ๋ช
๊ณต๊ธ์ ์ ์ฑ
์์
- iot:AssumeRoleWithCertificate
๐ธ ์ ์ฑ ์์ ์์ (JSON)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Subscribe",
"iot:Connect",
"iot:Receive"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"iot:GetThingShadow",
"iot:UpdateThingShadow",
"iot:DeleteThingShadow"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"greengrass:*"
],
"Resource": [
"*"
]
}
]
}
๋ค์ ๊ธ์์๋ ...?
AWS SDK์์ ์ ๊ณตํ๊ณ ์๋ API์ ๋ํด ์์๋ณด๊ณ ์๋ฐ์ฝ๋๋ก ์ด๋ป๊ฒ ์ ์ฉํ๋์ง ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
์ฐธ๊ณ ์๋ฃ
https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/iot-thing-management.html
https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/iot-policies.html
https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/authentication.html
'AWS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AWS] AWS IoT ๋๋ฐ์ด์ค ๋ฑ๋ก ์ ์ฐจ ์ฝ๋๋ก ์์๋ณด๊ธฐ (0) | 2024.11.29 |
---|---|
[AWS] AWS SDK๋ฅผ ํ์ฉํด AWS IoT ๋๋ฐ์ด์ค ๋ฑ๋กํ๊ธฐ (0) | 2024.11.26 |
[AWS] AWS Cognito์ OAuth (3) | 2024.10.28 |
[AWS] AWS CloudFormation (0) | 2024.10.15 |
[AWS] AWS IoT Core๋ ? (0) | 2024.09.27 |