반응형

1. 시험환경

    · AWS

    · API Gateway

    · Lambda

 

2. 목적

    · Lambda 함수를 구현 방법을 알아보자.

    · API Gateway와 Lambda함수를 연결하는 방법을 알아보자.

    · 사용자가 URL 호출시, API Gateway를 통하여 Lambda함수를 호출하는 방법을 테스트한다.

 

3. 적용

    ① Lambda 함수를 생성한다.

 

    ② Lambda 함수 생성을 위해 함수이름 및 런타임 정보 등을 설정한다.

 

    ③ Lambda 함수의 코드를 작성한다.

        - 여기서는 별다른 동작없이 "Hello World"라는 문자열을 반환한다.

 

    ④ 작성한 Lambda 함수의 테스트를 위해 "새 이벤트"를 생성한다.

 

    ⑤ Test 버튼 클릭시, Lambda함수가 실행되고 반환값 "Hello World"가 응답(Response)하는 것을 화인한다.


    ⑥ API Gtewy를 신규 생성한다.

 

 

    ⑦ API Gateway의 경로 및 수신시 연결할 서비스를 설정한다.

        - 여기서는 GET 방식으로 루트 경로(/) 접속 시, 작성한 Lambda함수 helloWorld를 호출하도록 설정한다.

 

4. 결과

    · URL에서 API Gateway의 루트 경로 접속시, Lambda함수의 반환값 "Hello World"를 응답 받는 것을 확인한다.

 

 

반응형
반응형

1. 시험환경

    · AWS EKS : v1.30

    · kubectl : v1.33.2

    · aws-load-balancer-controller : v2.7.2

    · cert-manager : v1.13.5

 

2. 목적

    · AWS EKS 환경에서 aws-load-balancer-controller 설치시 활성화가 되지 않았던 문제를 해결한다.

 

3. 적용

    ① aws-load-balancer-controller 설치 후 kubectl 명령어로 deployment 상태 정보를 확인한다.

        - $ kubectl  get  deployment  -n  kube-system  aws-load-balancer-controller

NAME                                       READY   UP-TO-DATE   AVAILABLE      AGE
aws-load-balancer-controller       0/1                1                     0              5m56s

 

    ② pod의 status 정보를 확인한다.

        - $ kubectl  get  pods  -n  kube-system  -l  app.kubernetes.io/name=aws-load-balancer-controller

        - 6번 재시작 후 CrashLoopBackOff 상태로 비활성화 상태임을 확인할 수 있다.

NAME                                                                     READY            STATUS             RESTARTS         AGE
aws-load-balancer-controller-5f467cb488-xsmf7       0/1     CrashLoopBackOff       6 (4m10s ago)    10m

 

    ③ pod 로그 정보를 확인한다.

        - $ kubectl  logs  -n  kube-system  [pod-name]

        - "--aws-vpc-id" 파라미터를 명시하라는 로그를 확인 하였다.

level":"error","ts":"2025-06-24T01:45:11Z","logger":"setup","msg":"unable to initialize AWS cloud","error":"failed to introspect vpcID from EC2Metadata or Node name, specify --aws-vpc-id instead if EC2Metadata is unavailable: failed to fetch VPC ID from instance metadata: EC2MetadataError: failed to make EC2Metadata request\n\n\tstatus code: 401, request id: "}

 

    ④ 배포된 pod의 편집모드로 진입하여 "--aws-vpc-id" 파라미터를 추가 및 적용한다.

        - $ kubectl edit deployment -n kube-system aws-load-balancer-controller

containers:
- args:
  - --cluster-name=<YOUR_CLUSTER_NAME>
  - --aws-vpc-id=<YOUR_VPC_ID>     # Add this line with your actual VPC ID
  image: 602401143452.dkr.ecr.ap-northeast-2.amazonaws.com/amazon/aws-alb-ingress-controller:v2.7.2
  name: aws-load-balancer-controller

 

4. 결과

    · 서비스 배포 상태를 다시 확인한다.

        - $ kubectl  get  deployment  -n  kube-system  aws-load-balancer-controller

NAME                                       READY   UP-TO-DATE   AVAILABLE      AGE
aws-load-balancer-controller      1/1                1                     1               5m56s

 

반응형
반응형

1. 시험환경

    · AWS EKS

    · kubectl

 

2. 목적

    · AWS EKS 환경에서 Application 배포시 발생한 에러를 확인하는 명령어를 알아보자.

 

3. 적용

    ① pod 로그 확인을 위한 kubectl 명령어

        - kubectl  logs  -n  [namespace]  [pod]

        예시) kubectl  logs  -n  kube-system  deploy/aws-load-balancer-controller

 

    ② deployment 상태 확인을 위한 kubectl 명령어

        - kubectl  describe  deployment  -n  [namespace]  [pod]

        예시) kubectl  describe  deployment  -n  kube-system  aws-load-balancer-controller

 

    ③ ReplicaSet 및 Pods 상태 확인을 위한 kubectl 명령어

        - kubectl  get  replicaset  -n  [namespace]  -l  app.kubernetes.io/name=aws-load-balancer-controller
        - kubectl  describe  pod  -n  kube-system  [pod-name]

 

    ④ 특정 namespace(deployment, ReplicaSet 및 Pods)에서 발생하는 이벤트 로그 확인을 위한 kubectl 명령어

        - kubectl  get  events  -n  [namespace]

        예시) kubectl  get  events  -n  kube-system  

 

반응형
반응형

1. 시험환경

    · 윈도우

    · Visual Studio Code

 

2. 목적

    · React와 SpringBoot를 이용한 개발을 위해 Visual Studio Code를 사용한다.

    · React와 SpringBoot 개발을 위해 Visual Studio Code에서 유용한 Plug-In을 설치한다.

 

3. 적용

    ① Visual Studio Code의 Extentions 탭에서 플러그인 설치를 진행한다.

 

    ② 개발 공통 필수 플러그인

    · Better Comments : 코드에 작성된 주석을 색상별로 구분해 가독성을 높임

 

    · Color Highlight : CSS나 코드 내 색상 코드(예: #FF5733, rgba(...))를 시각적으로 미리 보기 제공.

 

    · GitHub Theme : GitHub와 유사한 다크 및 라이트 테마를 제공하여 VS Code UI에 적용.

 

    · Material Icon Theme : 파일 확장자나 폴더 이름에 따라 머터리얼 스타일 아이콘을 적용하여 직관적인 표시.

 

    ③ Git 관련 플러그인

    · GitLens : Git 히스토리와 블레임(누가 언제 수정했는지)을 코드 상에서 상세히 보여줌.

 

    · GitHub Pull Requests : PR 생성, 리뷰, 코멘트 작성 등을 직접 편집기에서 수행하여 VS Code 내에서 GitHub Pull Request를 열람, 리뷰, 병합 가능.

 

    · GitHub Repositories : 로컬에 클론하지 않고 GitHub 저장소의 파일을 VS Code에서 직접 탐색/수정.

 

    · Markdown Preview Github Styling : .md 파일의 스타일을 GitHub에서 보는 것처럼 똑같이 렌더링.

 

    ④ SpringBoot 관련 플러그인

    · Gradle for JAVA : 빌드, 의존성 관리, 태스크 실행 등을 VS Code 내에서 수행 가능.

 

    · Spring Boot Extension Pack : Spring Boot 개발을 지원하는 확장팩 (다수의 확장 포함).

 

    · Spring Boot Snippets : @RestController, @Service 등 자주 쓰이는 코드 패턴을 빠르게 삽입 가능.

 

    ⑤ React 관련 플러그인

    · ES7+ React/Redux/React-Navite snippets : rfc, useEffect, useState 등 자주 쓰는 구문을 빠르게 타이핑 가능.

 

    · TypeScript Extension Pack : TypeScript 개발 환경 향상을 위한 확장팩.

 

반응형
반응형

1. 시험환경

    ˙ Amazon Linux

    ˙ terraform(테라폼)

 

2. 목적

    ˙ Amazon 리눅스 환경에서 terraform을 설치한다.

 

3. 적용

    ① 테라폼(terraform) 공식 사이트에서 운영체제별 설치 가이드를 확인할 수 있다.

        - URL : https://developer.hashicorp.com/terraform/install

 

Install | Terraform | HashiCorp Developer

Explore Terraform product documentation, tutorials, and examples.

developer.hashicorp.com

 

    ② 운영체제별 설치 가이드를 확인한다.

 

    ③ 설치 명령어 실행한다.

        - 여기에서 Amazon Linux 환경에 설치한다.

        $ sudo yum install -y yum-utils shadow-utils

        $ sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo

        $ sudo yum -y install terraform

 

4. 결과

    ˙ 설치가 완료되면 설치경로 및 버전을 확인한다.

        - $ which terraform

        - $ terraform version

반응형
반응형

1. 시험환경

    · Android Studio

    · Oracle OpenJDK 17

 

2. 목적

    · Android Studio 프로젝트에서 JDK 버전 설정하는 방법을 알아보자.

 

3. 적용

    ① Android Studio에 설치할 JDK를 다운로드 받아서 설치한다.

        - 참고: https://languagestory.tistory.com/174

 

Android Studio 최신버전(Meerkat) 설치

1. 시험환경 ˙ 윈도우 ˙ 안드로이드 스튜디오 2. 목적 ˙ 윈도우 운영체제에서 안드로이드 스튜디오를 설치한다. 3. 적용 ① Android Studio 설치프로그램 다운로드를 위해 안드로이드 개발자 사이트

languagestory.tistory.com

 

    ② AVD(Android Vertual Device)를 생성한다.

        - 참고: https://languagestory.tistory.com/175

 

AVD(Android Virtual Device) 사용

1. 시험환경    ˙ Android Studio    ˙ AVD(Android Virtual Device, 안드로이드 가상 디바이스) 2. 목적    ˙ Android Studio에서 제공하는 AVD를 최초 실행 및 동작하는 방법을 학습한다. 3. 적용    ① Android S

languagestory.tistory.com

 

    Android Studio를 설치하고 신규 프로젝트를 생성한다.

        - 참고: https://languagestory.tistory.com/176

 

Helloworld 프로젝트 생성 및 디바이스 테스트

1. 시험환경    ˙ Android Studio    ˙ AVD(Android Virtual Device)    ˙ Physical Device(삼성 갤럭시 S) 2. 목적    ˙ 안드로이드 스튜디오에서 신규 프로젝트를 생성한다.    ˙ 프로젝트를 AVD에 Import하고

languagestory.tistory.com

 

    build.gradle 설정파일에서 JDK 버전을 설정한다.

 

      팝업창에서 Gradle JDK 버전을 설정한다.

        - 팝업메뉴 : [File] → [Settings...]

        - "Build, Execution, Deployment" → "Build Tools" → "Gradle"

 

      프로젝트 Build 및 실행을 하여 정상 동작 여부를 확인한다.

 

4. 결과

    · Android Studio 프로젝트에서 JDK 버전 설정[변경] 후 재기동을 확인한다.

 

반응형
반응형

1. 시험환경

    ˙ 윈도우

    ˙ 안드로이드 스튜디오

 

2. 목적

    ˙ 윈도우 운영체제에서 안드로이드 스튜디오를 설치한다.

 

3. 적용

    ① Android Studio 설치프로그램 다운로드를 위해 안드로이드 개발자 사이트에 접속한다.

        - URL : https://developer.android.com/?hl=ko

 

Android 모바일 앱 개발자 도구 - Android 개발자  |  Android Developers

Discover the latest app development tools, platform updates, training, and documentation for developers across every Android device.

developer.android.com

 

 

    ② "Android 스튜디오 다운로드" 버튼을 클릭한다.

 

    ③ 팝업창에서 "동의" 버튼을 클릭하고 최신 제공 버전을 다운 받는다.

 

 


 

    ④ 다운 받은 설치파일을 실행하고, 단계별 설치 과정에서 "Next" 버튼을 클릭한다.

        - Android Virtual Device (체크) : 실제 핸드폰이 아닌 PC에서 가상의 안드로이드 폰을 이용하여 테스트한다.

 


 

    ⑤ Android Studio IDE 설치 과정이 완료되면 SDK 설치를 해야 한다.

        - Import Andriod Studio Settings : 기존 설정 파일이 있는 경우 Import 할 수 있다.

 

    ⑥ 설치한 Android Studio를 실행한다.

 

4. 결과

    ˙ More Actions → SDK Manager

    ˙ 설치된 SDK 버전을 확인한다. 체크박스 설정을 통해 SDK 하위 버전도 사용할 수 있다.

 

반응형
반응형

1. 시험환경

    · python

    · PyQt5

 

2. 목적

    · PyQt를 이용한 파이썬 GUI 프로그램을 만들어보자.

    · PyQt를 이용한 로그인 화면을 구성하고, 로그인 성공 시 메인화면으로 전환하는 방법을 알아보자.

 

3. 적용

    ① 로그인 화면 윈도우

        - login_window.py

        - ID: test, PW: password 입력시, 임포트한 MainWindow가 호출되면서 화면 전환되는 부분을 확인한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# login_window.py
import sys
from PyQt5.QtWidgets import QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QMessageBox, QApplication
 
class LoginWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("로그인")
        self.setGeometry(100100300150)
        self.main_window = None  # MainWindow 객체를 저장할 변수
 
        self.initUI()
 
    def initUI(self):
        self.id_label = QLabel("아이디:")
        self.id_input = QLineEdit()
 
        self.pw_label = QLabel("비밀번호:")
        self.pw_input = QLineEdit()
        self.pw_input.setEchoMode(QLineEdit.Password)
 
        self.login_button = QPushButton("로그인")
        self.login_button.clicked.connect(self.login_clicked)
 
        layout = QVBoxLayout()
        layout.addWidget(self.id_label)
        layout.addWidget(self.id_input)
        layout.addWidget(self.pw_label)
        layout.addWidget(self.pw_input)
        layout.addWidget(self.login_button)
        layout.addStretch(1)
 
        self.setLayout(layout)
 
    def login_clicked(self):
        user_id = self.id_input.text()
        password = self.pw_input.text()
 
        # 간단한 로그인 검증 (실제 환경에서는 DB 연동 필요)
        if user_id == "test" and password == "password":
            QMessageBox.information(self"로그인 성공""로그인에 성공했습니다.")
            self.open_main_window()
        else:
            QMessageBox.warning(self"로그인 실패""아이디 또는 비밀번호가 잘못되었습니다.")
 
    def open_main_window(self):
        from main_window import MainWindow  # import here to avoid circular import
        self.main_window = MainWindow(self)  # Pass LoginWindow instance to MainWindow
        self.main_window.show()
        self.close()
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    login_window = LoginWindow()
    login_window.show()
    sys.exit(app.exec_())
cs

 

    ② 메인 화면 윈도우

        - main_window.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# main_window.py
from PyQt5.QtWidgets import QWidget, QLabel, QPushButton, QVBoxLayout, QMessageBox
 
class MainWindow(QWidget):
    def __init__(self, login_window):
        super().__init__()
        self.setWindowTitle("메인 화면")
        self.setGeometry(100100400300)
        self.login_window = login_window  # Store the LoginWindow instance
 
        self.initUI()
 
    def initUI(self):
        self.welcome_label = QLabel("메인 화면에 오신 것을 환영합니다!")
        self.logout_button = QPushButton("로그아웃")
        self.logout_button.clicked.connect(self.logout_clicked)
 
        layout = QVBoxLayout()
        layout.addWidget(self.welcome_label)
        layout.addWidget(self.logout_button)
        layout.addStretch(1)
 
        self.setLayout(layout)
 
    def logout_clicked(self):
        reply = QMessageBox.question(self'로그아웃''로그아웃 하시겠습니까?',
                                     QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
 
        if reply == QMessageBox.Yes:
            self.login_window.show()  # Show the LoginWindow again
            self.close()
 
if __name__ == '__main__':
    # This part will not be executed when main_window.py is imported
    pass
cs

 

4. 결과

    · 프로그램 실행

        - python ./login_window.py

 

    · 로그인 정보 입력

        - ID: test, PW: password

 

    · 프로그램 다운로드

login_window.py
0.00MB
main_window.py
0.00MB

 

반응형

+ Recent posts