diff --git a/src/main/java/com/backend/glowhouse/AWS/sns/SnsNotificationSender.java b/src/main/java/com/backend/glowhouse/AWS/sns/SnsNotificationSender.java
new file mode 100644
index 0000000000000000000000000000000000000000..ac5a90215a0aa453ad4930ccb6ebb442c009052e
--- /dev/null
+++ b/src/main/java/com/backend/glowhouse/AWS/sns/SnsNotificationSender.java
@@ -0,0 +1,18 @@
+package com.backend.glowhouse.aws.sns;
+
+import com.amazonaws.services.sns.AmazonSNS;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.aws.messaging.core.NotificationMessagingTemplate;
+
+public class SnsNotificationSender {
+    private final NotificationMessagingTemplate notificationMessagingTemplate;
+
+    @Autowired
+    public SnsNotificationSender(AmazonSNS amazonSns) {
+        this.notificationMessagingTemplate = new NotificationMessagingTemplate(amazonSns);
+    }
+
+    public void sendIOCommandForLight(String subject, String message) {
+        this.notificationMessagingTemplate.sendNotification("awsiot_to_localgateway", message, subject);
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/backend/glowhouse/controller/DeviceDataController.java b/src/main/java/com/backend/glowhouse/controller/DeviceDataController.java
new file mode 100644
index 0000000000000000000000000000000000000000..e823daeb4e98a09629efc96f331ee21adbac5007
--- /dev/null
+++ b/src/main/java/com/backend/glowhouse/controller/DeviceDataController.java
@@ -0,0 +1,56 @@
+package com.backend.glowhouse.controller;
+
+import com.backend.glowhouse.model.Device;
+import com.backend.glowhouse.model.DeviceRegistrationRequest;
+import com.backend.glowhouse.model.response.DeviceIdResponse;
+import com.backend.glowhouse.model.response.DeviceRegistrationResponse;
+import com.backend.glowhouse.repository.device.DeviceRepository;
+import com.backend.glowhouse.repository.UserRepository;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Optional;
+
+@RestController
+@RequestMapping("/api/device")
+public class DeviceDataController {
+    private DeviceRepository deviceRepository;
+    private UserRepository userRepository;
+
+    ObjectMapper mapper = new ObjectMapper();
+
+    @Autowired
+    public DeviceDataController(DeviceRepository deviceRepository, UserRepository userRepository) {
+        this.deviceRepository = deviceRepository;
+        this.userRepository = userRepository;
+    }
+
+    @PostMapping("/registerDevice")
+    @PreAuthorize("hasRole('USER')")
+    public String registerDevice(@RequestBody DeviceRegistrationRequest deviceRegistrationRequest) throws JsonProcessingException {
+        String deviceId = deviceRegistrationRequest.getDeviceId();
+        String username = deviceRegistrationRequest.getUsername();
+
+        Device deviceToRegister = deviceRepository.updateDeviceAssignUserAndSetRegisteredTrue(deviceId, username);
+
+        userRepository.updateUserAssignDevice(username, deviceToRegister);
+
+        DeviceRegistrationResponse deviceRegistrationResponse = new DeviceRegistrationResponse(deviceToRegister.getDeviceId());
+
+        return mapper.writeValueAsString(deviceRegistrationResponse);
+    }
+
+    @GetMapping("/getDeviceIdForUser")
+    @PreAuthorize("hasRole('USER')")
+    public String getDeviceIdForUser(@RequestParam(value = "username") String username) throws JsonProcessingException {
+        Device device = deviceRepository.findByRegisteredUser(username);
+
+        DeviceIdResponse deviceIdResponse = new DeviceIdResponse(device.getDeviceId());
+
+        return mapper.writeValueAsString(deviceIdResponse);
+    }
+}
diff --git a/src/main/java/com/backend/glowhouse/model/response/DeviceIdResponse.java b/src/main/java/com/backend/glowhouse/model/response/DeviceIdResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..6cfd493cad5b76b84027dd472b6f8f520beb388e
--- /dev/null
+++ b/src/main/java/com/backend/glowhouse/model/response/DeviceIdResponse.java
@@ -0,0 +1,17 @@
+package com.backend.glowhouse.model.response;
+
+public class DeviceIdResponse {
+    String deviceId;
+
+    public DeviceIdResponse(String deviceId) {
+        this.deviceId = deviceId;
+    }
+
+    public String getDeviceId() {
+        return deviceId;
+    }
+
+    public void setDeviceId(String deviceId) {
+        this.deviceId = deviceId;
+    }
+}
diff --git a/src/main/java/com/backend/glowhouse/model/response/DeviceRegistrationResponse.java b/src/main/java/com/backend/glowhouse/model/response/DeviceRegistrationResponse.java
new file mode 100644
index 0000000000000000000000000000000000000000..b5d4a9ba2961405696c49db24b42f8615f932cb8
--- /dev/null
+++ b/src/main/java/com/backend/glowhouse/model/response/DeviceRegistrationResponse.java
@@ -0,0 +1,17 @@
+package com.backend.glowhouse.model.response;
+
+public class DeviceRegistrationResponse {
+    private String deviceId;
+
+    public DeviceRegistrationResponse(String deviceId) {
+        this.deviceId = deviceId;
+    }
+
+    public String getDeviceId() {
+        return deviceId;
+    }
+
+    public void setDeviceId(String deviceId) {
+        this.deviceId = deviceId;
+    }
+}