first commit

This commit is contained in:
sujune 2024-03-05 17:43:47 +09:00
parent 3a29c0ac7e
commit 6eee1e6952
4 changed files with 17 additions and 50 deletions

View File

@ -1,9 +1,9 @@
# 이 코드 템플릿은 SDT Cloud 환경에서 s3에 파일을 업로드하고 MQTT 메세지를 발행하는 코드입니다. # 이 코드 템플릿은 SDT Cloud 환경에서 s3에 파일을 업로드하는 코드입니다.
# 패키지 설치 # 패키지 설치
- 코드는 sdtclouds3, sdtcloudpubsub 패키지를 사용합니다. 아래 명령어로 패키지를 다운로드 해야합니다. - 코드는 sdtclouds3 패키지를 사용합니다. 아래 명령어로 패키지를 다운로드 해야합니다.
```bash ```bash
$ pip install sdtclouds3 sdtcloudpubsub $ pip install sdtclouds3
``` ```
# 환경 셋팅 # 환경 셋팅
@ -13,19 +13,11 @@ sudo bwc-cli login
``` ```
# 코드 작성 # 코드 작성
## s3 코드 작성
- 코드는 runAction 함수에서 동작하고자 하는 기능을 작성합니다. - 코드는 runAction 함수에서 동작하고자 하는 기능을 작성합니다.
- uploadFile 변수는 s3에 업로드할 파일의 위치입니다. 반드시 파일의 위치와 파일명을 함께 작성해야 합니다. - uploadFile 변수는 s3에 업로드할 파일의 위치입니다. 반드시 파일의 위치와 파일명을 함께 작성해야 합니다.
```bash ```bash
uploadFile = "filepath/text.txt" uploadFile = "filepath/text.txt"
``` ```
- 업로드가 완료되면 파일의 URL 값이 반환됩니다.
```bash
result = sdtcloudClient.uploadData(uploadFile, "")
print(result)
----------
https://<s3_bucket>/path/text.txt
```
- 만약 업로드하는 파일이 PNG 파일이며, URL를 클릭했을 때 이미지가 바로 보이도록 설정하고 싶다면 다음과 같이 수정합니다. - 만약 업로드하는 파일이 PNG 파일이며, URL를 클릭했을 때 이미지가 바로 보이도록 설정하고 싶다면 다음과 같이 수정합니다.
```bash ```bash
result = sdtcloudClient.uploadData(uploadFile, {“ContentType”: “image/png”}) result = sdtcloudClient.uploadData(uploadFile, {“ContentType”: “image/png”})
@ -33,22 +25,12 @@ result = sdtcloudClient.uploadData(uploadFile, {“ContentType”: “image/png
- 이외에 여러 옵션이 있으므로 [참고 페이지](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-uploading-files.html)를 클릭하세요. - 이외에 여러 옵션이 있으므로 [참고 페이지](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-uploading-files.html)를 클릭하세요.
## mqtt 코드 작성
- 다음 변수로 메세지를 발행하는 코드를 작성하면...
```bash
msg = {
"message": "Hello World",
"uploadFile": result
}
```
- 실제로 발행되는 메세지은 다음과 같습니다.
```bash
msg = {
"data": {
"message": "Hello World",
"uploadFile": "https://<s3_bucket>/path/text.txt"
},
"timestamp": 12312311...
}
# 업로드 결과
- 업로드가 완료되면 파일의 URL 값이 반환됩니다.
```bash
result = sdtcloudClient.uploadData(uploadFile)
print(result)
----------
https://<s3_bucket>/path/text.txt
``` ```

View File

@ -1,12 +1,12 @@
version: bwc/v2 # bwc 버전 정보입니다. version: bwc/v2 # bwc 버전 정보입니다.
spec: spec:
appName: mqtt-s3-sdt-sdk-template # 앱의 이름입니다. appName: s3-upload-sdt-sdk-template # 앱의 이름입니다.
runFile: main.py # 앱의 실행 파일입니다. runFile: main.py # 앱의 실행 파일입니다.
env: env:
bin: python3 # 앱을 실행할 바이너라 파일 종류입니다.(장비에 따라 다르므로 확인 후 정의해야 합니다.) bin: python3 # 앱을 실행할 바이너라 파일 종류입니다.(장비에 따라 다르므로 확인 후 정의해야 합니다.)
virtualEnv: mqtt-s3-env # 사용할 가상환경 이름입니다. virtualEnv: s3-env # 사용할 가상환경 이름입니다.
package: requirement.txt # 설치할 Python 패키지 정보 파일입니다.(기본 값은 requirement.txt 입니다.) package: requirement.txt # 설치할 Python 패키지 정보 파일입니다.(기본 값은 requirement.txt 입니다.)
stackbase: stackbase:
userName: sujune@sdt.inc # Stackbase(gitea) ID 입니다. userName: sujune@sdt.inc # Stackbase(gitea) ID 입니다.
tagName: v1.0.0 # Stackbase(gitea)에 릴리즈 태그명 입니다. tagName: v1.0.0 # Stackbase(gitea)에 릴리즈 태그명 입니다.
repoName: mqtt-s3-sdt-sdk-template # Stackbase(gitea)에 저장될 저장소 이릅니다. repoName: s3-upload-sdt-sdk-template # Stackbase(gitea)에 저장될 저장소 이릅니다.

19
main.py
View File

@ -1,26 +1,13 @@
import sdtcloudpubsub
import sdtclouds3 import sdtclouds3
import time import time
import uuid
# call sdtcloudpubsub
sdtcloudMqttClient = sdtcloudpubsub.sdtcloudpubsub()
mqttClient = sdtcloudMqttClient.setClient(f"device-app-{uuid.uuid1()}") # parameter is client ID(string)
# call sdtclouds3
sdtcloudS3Client = sdtclouds3.sdtclouds3()
sdtcloudClient = sdtclouds3.sdtclouds3()
def runAction(): def runAction():
while True: while True:
uploadFile = "./text.txt" uploadFile = "./text.txt"
result = sdtcloudS3Client.uploadData(uploadFile, "") result = sdtcloudClient.uploadData(uploadFile, "")
msg = { print(f"Upload URL: {result}")
"message": "Hello World",
"uploadFile": result
}
sdtcloudMqttClient.pubMessage(mqttClient, msg)
time.sleep(10) time.sleep(10)
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -1,6 +1,4 @@
# Write package's name that need your app. # Write package's name that need your app.
boto3 boto3
pyyaml pyyaml
awsiotsdk #sdtclouds3
#sdtcloudpubsub
#sdtcloudps3