묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결쉽게 설명하는 AWS 기초 강의
(실습)Amazon RDS 접속과 인증 실습 질문드립니다.
영상을 보면서 실습을 따라하던 도중 Cloudshell을 이용해서 토큰을 받은 후 Workbench를 이용하여 접속을 할 때 username : testuser, password에 부여받은 토큰을 붙여넣기 했습니다. 이후 Test connection을 하면 영상에서는 Connect가 되었지만, Access denied가 출력되면서 Connect가 실패하는 것을 확인할 수 있습니다. 이런 경우 어떤 부분을 봐야할까요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
키페어 생성 시기
EC2를 생성 완료 한 후에 해당 EC2에 키페어를 만들어서 적용하는게 가능한가요? 아니면 EC2 생성할때 키페어를 추가하는것만 가능한건가요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
ECS는 사용 안 하나요?
ECS는 사용 안 하나요? ECS도 많이 쓰이는 거 같던데..
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
백엔드 프론트엔드 배포 흐름이 이해가 안갑니다.
글을 작성하고 조금 더 공부해봤는데 저는 프론트(3000번 포트)와 백엔드(8080번 포트)간의 통신으로 웹이 배포되고 운영되는걸로 알았는데, 3000번 포트와 8080번 포트간의 통신을 하는 게 아니라고 하는 것 같아서 댓글에 다시 정리해보았습니다. 글의 내용처럼 서버가 배포되는것이 아닌, 댓글에 남긴 흐름으로 배포가 되는 게 맞는건지 궁금합니다.🥹안녕하세요.최근 재성 강사님의 AWS, Docker, CI/CD 강의를 수강하며, Spring Boot 프로젝트를 Docker 이미지로 패키징하고 무중단 배포하는 과정까지 직접 구축해보았습니다.Spring 서버를 EC2에 자동으로 배포하고 무중단으로 교체하는 구조는 충분히 이해하고 구현도 해보았지만, 이번 프로젝트에서 프론트엔드까지 함께 연동하려다 보니 새로운 고민이 생겼습니다.프론트 지식이 전무한 상태에서, 프론트엔드 팀원이 React로 만든 프론트 화면까지 백엔드와 함께 배포해달라는 요청을 주셨는데, 여기서부터 개념적으로 막히기 시작했습니다. React에서 api/login 같은 요청을 보내면 Spring 서버가 응답하고, 이 데이터를 바탕으로 React가 화면을 렌더링한다는 구조를 이해하고, AWS강의를 들으며 S3, CloudFront로 프론트를 배포하는 과정도 실습하였는데 Spring과 React를 동시에 배포하려니까 흐름이 잘 이해가 가지않습니다..ㅠㅠ https://velog.io/@jwo0o0/AWS-S3%EB%A1%9C-React-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0https://velog.io/@jwo0o0/AWS-S3-%EB%B2%84%ED%82%B7-Github-Action%EC%9C%BC%EB%A1%9C-CICD강사님이 AWS 강의에 react 배포하는 방법으로 올려주신 블로그 포스팅을 참고해서 이해하려고 하는데 제가 이해한 흐름이 맞는 지 확인해주실 수 있나요? 현재 프로젝트에서 백엔드와 프론트를 분리해서 각각 repository에 올리고있는데요!Spring에서 workflow에 Github에 올라와있는 React 프로젝트를 S3에 업로드하고 CloudFront로 배포하도록 자동화이후 workflow에 백엔드 Spring 프로젝트를 Docker 이미지로 패키징하여 ECR에 이미지를 Push.workflow에 SSH로 EC2에 접속하는 코드를 작성. EC2에서 ECR에 올린 이미지를 Pull받은 뒤 해당 이미지로 docker run 하여 spring server를 띄움.이렇게 흐름을 이해하고 github Actions workflow를 작성해도 괜찮을까요?react는 3000포트를 사용하고, Spring은 8080포트를 사용하는걸로 아는데, 포트번호가 달라도 알아서 잘 통신이 되나요..??또 Spring workflow에서 프론트 Git 레포지토리까지 왔다갔다 하면서 S3 업로드 자동화를 해주는게 맞나요...?? 제가 프론트 지식이 아예없어서 S3에 프론트 프로젝트를 업로드하면 어떻게 백엔드와 어떻게 통신을 하는건지 잘 이해가 가지않습니다. 홈화면의 페이지가 있다면, 로그인이라는 버튼을 눌렀을 때 백엔드에 api/login이라는 요청을 보낸다고 했을 때 아무런 작업을 안해줘도 알아서 서로 통신을 하는지... 인프라 개념이 아직 미숙하다 보니 글도 장황한 것 같습니다 죄송합니다.. 😢정리해보면서도 스스로 구조를 잡고자 하는 중인데, 혹시 제가 놓치고 있는 개념이 있다면 알려주시면 정말 감사하겠습니다!
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
깃액션은 성공하지만 계속 서버가 Killed 됩니다.
name: Deploy TO EC2 on: push: branches: - main jobs: Deploy: runs-on: ubuntu-latest # SSH로 접속하는 명령어를 쳐주자. # 일일이 다 쳐도 되지만 불편하기때문에 github actions의 라이브러리를 사용하면 편하다 # uses는 내가 어떤 라이브러리를 쓸 건지 기재하는 곳이다. steps: # SSH는 다른 원격 컴퓨터로 접속하는 프로토콜이다. # Github Actions도 하나의 컴퓨터고, EC2도 하나의 컴퓨터이므로 SSH를 통해서 원격 접속을 진행해주자. - name: SSH(원격 접속)로 EC2에 접속하기 uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.HOST }} # IP 주소를 말함 username: ${{ secrets.EC2_USERNAME }} # EC2를 연결할 때 사용자 이름 key: ${{ secrets.EC2_PRIVATE_KEY }} # EC2에 접근할 때 사용하는 키 페어 script_stop: true # run이 아닌 script로 실행하는 라이브러리도 있으니 예제파일을 참고하자 # EC2에 접속해서 실행한 명령어들을 차례대로 작성해주자 # 1. 프로젝트의 해당 경로로 이동 # 2. github에서 프로젝트 pull # 3. gradlew 재 빌드 # 4. 포트번호 8080서버를 끄거나 서버가 이미 꺼져있어도 true # 5. SNAPSHOT.jar로 끝나는 파일을 실행. 로그는 output이라는 파일에 남김 script: | cd /home/ubuntu/personal-cicd-server git pull origin main ./gradlew clean build sudo fuser -k -n tcp 8080 || true sudo java -jar /personal-cicd-server/build/libs/*SNAPSHOT.jar > ./output.log 2>&1 & 메모리 부족 문젠가 싶어서 https://velog.io/@kwontae1313/AWS-EC2-%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%9A%A9%EB%9F%89-%EC%A6%9D%EC%84%A4위 링크를 보며 메모리 용량 증설도 해주었으나, 이후에도 안되어서 t3.small로 인스턴스 유형을 변경하였습니다.근데 계속 Killed이 뜨네요..ㅠㅠ 다시 서버를 실행시키면 코드가 변경은 되어있구요.. 왜 계속 프로세스가 죽는걸까요..??
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
리액트 배포하기..
안녕하세요!! 혹시 리액트로 배포하는 방법도 알려주시면 안될까요 ? ㅜ
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
팀프로젝트시
안녕하세요! 취준생입니다!교육받는 곳에서 취업을 목표로 팀프로젝트(4명)를 진행하려고 하는데, 방법4까지만 해도 괜찮을지 5까지 하면 포트폴리오로써 더 좋을지 궁금합니다..
-
미해결쉽게 설명하는 AWS 기초 강의
ec2 부하
안녕하세요 궁금한 점이 있어 문의 드립니다. 강의 에서 ec2 에 cpu 사용률 100 부하를 주고 기준점에 도달해서 ec2가 하나더 생성 되는 걸 봤습니다. 그럼 기존에 있던 ec2는 cpu 사용률이 지정시간 까지는 여전히 100 이지만 새로 생긴 ec2 사용률은 0 이라 cpu 사용률이 50 이라고 한 것 맞을까여?
-
미해결실무에 바로 적용하는 AWS 배포
private-ec2에서 nginx 설치
bastion을 통해서 private-ec2 접속했고sudo apt update && sudo apt install nginx -y기존에 사용하던 해당 명령어로 nginx 설치 시도했는데 아래와 같은 오류로 설치가 되지 않습니다2.4강 이전 강의들에서는 모두 위 명령어로 nginx 설치했는데, private-ec2에서는 안되는 이유가 있을까요...? E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/n/nginx/nginx-common_1.24.0-2ubuntu7.1_all.deb Cannot initiate the connection to ap-northeast-2.ec2.archive.ubuntu.com:80 (2406:da12:944:ae01:72e0:79f6:151f:9770). - connect (101: Network is unreachable) Cannot initiate the connection to ap-northeast-2.ec2.archive.ubuntu.com:80 (2406:da12:944:ae00:62b8:7186:4640:999). - connect (101: Network is unreachable) Cannot initiate the connection to ap-northeast-2.ec2.archive.ubuntu.com:80 (2406:da12:944:ae00:c128:62c8:e380:bcd6). - connect (101: Network is unreachable) Cannot initiate the connection to ap-northeast-2.ec2.archive.ubuntu.com:80 (2406:da12:944:ae01:4edb:4945:bb5c:50ab). - connect (101: Network is unreachable) Could not connect to ap-northeast-2.ec2.archive.ubuntu.com:80 (13.124.255.209), connection timed out Could not connect to ap-northeast-2.ec2.archive.ubuntu.com:80 (13.124.245.230), connection timed out Could not connect to ap-northeast-2.ec2.archive.ubuntu.com:80 (52.79.128.16), connection timed out Could not connect to ap-northeast-2.ec2.archive.ubuntu.com:80 (52.78.32.75), connection timed outE: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/n/nginx/nginx_1.24.0-2ubuntu7.1_amd64.deb Cannot initiate the connection to ap-northeast-2.ec2.archive.ubuntu.com:80 (2406:da12:944:ae01:72e0:79f6:151f:9770). - connect (101: Network is unreachable) Cannot initiate the connection to ap-northeast-2.ec2.archive.ubuntu.com:80 (2406:da12:944:ae00:62b8:7186:4640:999). - connect (101: Network is unreachable) Cannot initiate the connection to ap-northeast-2.ec2.archive.ubuntu.com:80 (2406:da12:944:ae00:c128:62c8:e380:bcd6). - connect (101: Network is unreachable) Cannot initiate the connection to ap-northeast-2.ec2.archive.ubuntu.com:80 (2406:da12:944:ae01:4edb:4945:bb5c:50ab). - connect (101: Network is unreachable)E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
Dockerfile VS githubActions
안녕하세요, 강의 잘 듣고 있습니다 ! Dockerfile과 githubActions의 yml 파일의 경계를 잘 모르겠습니다.Dockerfile을 통해 jar를 만들어서 실행할 수도 있고,강의처럼 yml 파일에서 jar파일을 만들 수도 있는데,현업에서는 이 두 방식 중 어떤 걸 사용하는지 또, 어떤 이점 때문에 사용하는지 궁금합니다...! 추가로, mysql이나 redis 같은 경우는 따로 Dockerfile을 작성하지 않고compose.yml 에서 바로 이미지 생성을 하고 있는데이렇게 되는 경우, EC2에서 이미지가 만들어지니 각각의 Dockerfile을 만들어서 gitActions 단계에서 처리하는 게 좋을까요...?
-
미해결쉽게 설명하는 AWS 기초 강의
실전 아키텍처1
마지막까지 진행했는데 ec2 퍼블릭 DNS로 연결시 사이트에 연결할 수 없음이 나오는게 정상일까요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
push로 자동으로 ec2로 빌드되고 갈아끼워지는건 이해했는데
현업에서는 그러면 누가 PUSH를 해서 CI/CD로 적용을 시키나요? 아무나 다 깃 푸쉬로 cicd를 적용하면 깃헙에 merge나 충돌이 날거같은데 그러면 막상 깃헙에 올라온 코드랑 ec2 올라가있는 코드가 다를거같은데 이 부분이 잘 안그려지네요... 질문이 두서가 없어서 죄송합니다 ㅠㅠ 어떤식으로 현업에선 흘러가는지 궁금합니다,.
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
AWS 비용
19일 이후에 vpc Net 삭제 그리고 codedeploy 등 삭제 했는데 계속 비용이 발생하고 있습니다. 혹시 어디를 확인 해야 비용이 발생하는 곳 알 수 있을까요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
no basic auth credentials
ECR 생성도 되었고 권한 추가 했고 codeDeploy 성공 했는데 도커 로그인 안된 것 같습니다. 이럴때 어떤 것을 살펴보면 될ㄱ까요?
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
CodeDeploy Amazon Ec2 인스턴스
ec2 러닝 중이고 탄력적 IP 까지 할당 받았는데, 키 , 값 선택이 안 뜰수가 있나요? 만약 안뜨면 그냥 직접 입력 하면 될까요??
-
해결됨쉽게 설명하는 AWS 기초 강의
실습을 위한 template의 커스텀 리소스에 대해서
template의 리소스 중 s3삭제를 위한 커스텀 리소스인 LambdaUsedToCleanUpS3에 대한 질문입니다.S3삭제를 위해서 이 리소스가 사용되는데, cfn이 s3 삭제를 위해서 어떤 로직을 가지고 이 리소스를 사용하는 판단을 하는지 궁금합니다.
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
Error: Process completed with exit code 126.
Run ./gradlew clean build2./gradlew clean build3 shell: /usr/bin/bash -e {0}4 env:5 JAVA_HOME: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.7-6/x646 JAVA_HOME_21_X64: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/21.0.7-6/x647/home/runner/work/_temp/24e2a6f8-136d-471b-b2ea-6203042af791.sh: line 1: ./gradlew: Permission deniedError: Process completed with exit code 126.찾아보니깐 실행 권한이 없어서 ./gradlew 스크립트를 실행하지 못했다는 뜻이라고 하는데즉, Gradle Wrapper 파일에 실행 권한이 없어서 생긴 문제가 맞을까요? - name: gradlew 실행 권한 부여 run: chmod +x ./gradlew이렇게 붙여줬더니 되긴 하더라고요. 맞는 방법이 몰라서 여쭤봅니다.
-
해결됨비전공자도 이해할 수 있는 CI/CD 입문·실전
EC2 와 CodeDeploy 연결 에러
The overall deployment failed because too many individual instances failed deployment, too few healthy instances are available for deployment, or some instances in your deployment group are experiencing problems.CodeDeploy Agent는 EC2에서 active 상태이고, S3에 업로드도 잘 되었으며, IAM 역할도 다음과 같이 설정했습니다:- EC2 인스턴스 역할: code-deploy-ec2-role (정책: code-deploy-ec2-policy세부 S3)- CodeDeploy 서비스 역할: AWSCodeDeployRole 포함하지만 배포 시 아래와 같은 에러가 납니다:> The overall deployment failed because too many individual instances failed deployment, or too few healthy instances...추가로 EC2 내에서 /var/log/aws/codedeploy-agent/ 로그 폴더가 존재하지 않습니다. appspec.yml 및 start.sh도 정상 포함했고, S3에 .tar.gz도 업로드 확인했습니다.
-
미해결쉽게 설명하는 AWS 기초 강의
라우터Router에 대한 질문
안녕하세요.교재 p.30 에 대해 질문 드립니다. 해당 페이지를 보면 local router에서 전달된 frame에서 다시 packet을 복원 후,다음 router로 전달하기 위한 새로운 frame을 다시 만드는 과정이 나와 있는데요.질문>router에서는 전달 받은 frame으로부터 packet을 복원하는 과정과 복원된 packet을 보고 내가 전달해야할 router 도는 switch를 위한 frame을 새롭게 만드는 과정이 모두 일어나는 것이 맞나요?
-
미해결쉽게 설명하는 AWS 기초 강의
라우터까지 데이터 전달하는 과정 중 질문
안녕하세요. 해당 강의 p.26 과정에서 헷갈리는 점이 있어 질문드립니다.1. 대상 ip가 로컬이 아닌 것을 식별하는 과정을 network 계층(layer 3)에서 일어나는 것이 맞나요?2. 라우터의 ip는 알지만 mac 주소를 모르므로 ARP를 활용할 때는 switch를 통해 일어나므로 해당 과정은 data link 계층(layer 2)에서 일어나는 것이 맞나요?3. 2.의 과정을 통해 라우터의 mac 주소를 찾고나면 p.22에 나온 것처러 ip-mac pair를 저장하는 table에 등록해야 하는데, 이 때 ip-mac pair들을 기록하는 table은 어디에 존재하는 것인가요?