안녕하세요 강사님의 AWS 강의도 들었습니다. 만약 도메인을 적용하고 배포하는 경우 CNAME을 통한 배포방식이 맞는지 블로그도 열심히 찾아보고 했는데 안되가지고 질문 드립니다. cloudfront가 기존에 pdf랑 달라서 chatgpt한테 물어보면서 배포를 해 보아도 https + domain이 동시에 적용이 되지 않아 질문 드립니다. 단순 정적 웹사이트(S3 ) 만을 이용한 것은 정말 잘 되지만 cloudfront에 htpps+ domain 을이용한 배포가 되지 않아 질문 드립니다.
강의 25. [BE] 백엔드 Auth Guard 구현 시작. Auth Guard로 유저 아이디 가져오는 부분 작업 타임라인 19:55 여기까지는 정상적으로 진행됩니다. 쿠키에서 "authjs.session-token" 확인이 가능합니다. import NextAuth from "next-auth"; import { PrismaAdapter } from "@auth/prisma-adapter"; import { prisma } from "@/prisma"; import CredentialsProvider from "next-auth/providers/credentials"; import { comparePassword } from "@/lib/password-utils"; import * as jwt from "jsonwebtoken"; import { JWT } from "next-auth/jwt"; export const { handlers, auth, signIn, signOut } = NextAuth({ useSecureCookies: process.env.NODE_ENV === "production", trustHost: true, adapter: PrismaAdapter(prisma), secret: process.env.AUTH_SECRET, providers: [ CredentialsProvider({ name: "credentials", credentials: { email: { label: "이메일", type: "email", placeholder: "이메일 입력", }, password: { label: "비밀번호", type: "password", }, }, async authorize(credentials) { // 1. 모든 값들이 정상적으로 들어왔는가? if (!credentials || !credentials.email || !credentials.password) { throw new Error("이메일과 비밀번호를 입력해주세요."); } // 2. DB에서 유저를 찾기 const user = await prisma.user.findUnique({ where: { email: credentials.email as string, }, }); if (!user) { throw new Error("존재하지 않는 이메일입니다."); } // 3. 비밀번호 일치 여부 확인 const passwordMatch = comparePassword( credentials.password as string, user.hashedPassword as string ); if (!passwordMatch) { throw new Error("비밀번호가 일치하지 않습니다."); } return user; }, }), ], session: { strategy: "jwt", }, jwt: { encode: async ({ token, secret }) => { return jwt.sign(token as jwt.JwtPayload, secret as string); }, decode: async ({ token, secret }) => { return jwt.verify(token as string, secret as string) as JWT; }, }, pages: {}, callbacks: {}, }); FE 추가분 /frontend/auth.ts // ... 중략 import * as jwt from "jsonwebtoken"; import { JWT } from "next-auth/jwt"; export const { handlers, auth, signIn, signOut } = NextAuth({ // ...중략 jwt: { encode: async ({ token, secret }) => { return jwt.sign(token as jwt.JwtPayload, secret as string); }, decode: async ({ token, secret }) => { return jwt.verify(token as string, secret as string) as JWT; }, }, // ... 중략 }) pnpm add jsonwebtoken pnpm add -D @types/jsonwebtoken GET /api/auth/csrf 200 in 47ms POST /api/auth/callback/credentials? 200 in 114ms [auth][error] JWTSessionError: Read more at https://errors.authjs.dev#jwtsessionerror [auth][cause]: Error: The edge runtime does not support Node.js 'crypto' module. Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime at Object.get (C:\Users\svx32\OneDrive\바탕 화면\v5\frontend\.next\server\edge\chunks\_6e5868ec._.js:62:41) at C:\Users\svx32\OneDrive\바탕 화면\v5\frontend\.next\server\edge\chunks\node_modules__pnpm_d2b00409._.js:8647:62 at getSecret (C:\Users\svx32\OneDrive\바탕 화면\v5\frontend\.next\server\edge\chunks\node_modules__pnpm_d2b00409._.js:8630:20) at push.[project]/node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/verify.js [middleware-edge] (ecmascript).module.exports (C:\Users\svx32\OneDrive\바 탕 화면\v5\frontend\.next\server\edge\chunks\node_modules__pnpm_d2b00409._.js:8633:12) at Object.decode (C:\Users\svx32\OneDrive\바탕 화면\v5\frontend\.next\server\edge\chunks\[root-of-the-server]__273b5c62._.js:137:233) at session (C:\Users\svx32\OneDrive\바탕 화면\v5\frontend\.next\server\edge\chunks\fdcd2_@auth_core_ec592ae5._.js:4516:39) at AuthInternal (C:\Users\svx32\OneDrive\바탕 화면\v5\frontend\.next\server\edge\chunks\fdcd2_@auth_core_ec592ae5._.js:5123:269) at async Auth (C:\Users\svx32\OneDrive\바탕 화면\v5\frontend\.next\server\edge\chunks\fdcd2_@auth_core_ec592ae5._.js:5379:34) at async handleAuth (C:\Users\svx32\OneDrive\바탕 화면\v5\frontend\.next\server\edge\chunks\node_modules__pnpm_d2b00409._.js:3913:29) at async C:\Users\svx32\OneDrive\바탕 화면\v5\frontend\.next\server\edge\chunks\_6e5868ec._.js:12505:20 [auth][details]: {} GET / 200 in 62ms --- 이 오류 메시지는 애플리케이션이 Edge Runtime 환경 에서 Node.js의 crypto 모듈을 사용하려고 시도 할 때 발생하는 JWTSessionError 입니다. 오류 상세 설명 JWTSessionError : 이는 JWT(JSON Web Token) 세션 관리 중에 문제가 발생했음을 나타냅니다. JWT는 웹 애플리케이션에서 사용자 세션을 처리하는 일반적인 방법입니다. The edge runtime does not support Node.js 'crypto' module. : 이 부분이 핵심 문제입니다. Edge Runtime (예: Next.js Edge Functions 또는 Middleware)은 빠르고 가볍게 설계된 환경입니다. 따라서 모든 Node.js API를 지원하지 않으며, 특히 암호화, 해싱, 디지털 서명 등에 사용되는 crypto 모듈을 포함하지 않습니다. JWT 작업은 이 crypto 모듈에 크게 의존합니다. 스택 트레이스 분석 : 오류 스택 트레이스를 보면 jsonwebtoken 패키지(특히 verify 작업 중)에서 crypto 모듈에 접근하려고 시도하며, 이 과정이 @auth/core (일반적으로 Auth.js 라이브러리)에서 호출됩니다. 이는 JWT 유효성 검사 프로세스가 crypto 모듈의 부재로 인해 실패하고 있음을 명확히 보여줍니다. 간단히 말해, 애플리케이션이 Edge Runtime이라는 제한된 서버리스 환경에서 JWT 유효성 검사(보안 관련 작업)를 수행하려고 하지만, 이 환경에는 해당 작업을 위한 필수 도구( crypto 모듈)가 없기 때문에 오류가 발생하는 것입니다. 해결 방법 (일반적인 접근) 이 문제를 해결하기 위해서는 주로 다음 방법들을 고려할 수 있습니다: JWT 관련 작업을 Edge Runtime 외부로 이동 : JWT 유효성 검사와 같이 crypto 모듈이 필요한 작업은 Edge Runtime이 아닌 일반적인 Node.js 서버 환경 (예: Next.js의 표준 API 라우트)에서 수행하도록 변경해야 합니다. 인증 라이브러리 설정 변경 : 사용하고 있는 인증 라이브러리(Auth.js)의 세션 전략을 변경하여 Edge Runtime 컨텍스트에서 crypto 모듈에 의존하지 않도록 구성해야 합니다. 예를 들어, JWT 기반 세션 대신 데이터베이스 세션과 같은 다른 세션 관리 방식을 고려할 수 있습니다. AUTH_SECRET 확인 : 직접적인 원인은 아니지만, AUTH_SECRET 환경 변수가 올바르게 설정되어 있고, 사용 중인 환경에 맞게 JWT를 안전하게 처리하는지 확인하는 것도 중요합니다. 어떻게 해결해야하나요??
안녕하세요. docker-compose down시 계속 permission denined가 뜹니다. 우선 저는 가상머신 os:ubuntu에서 프로젝트를 진행중이며, sudo 붙여서 종료 시도, sudo docker kill 로도 강제 종료를 시도했지만 permission denined이라 다 실패하였습니다. 최후의 수단으로 docker설치 삭제 후, 재설치도 해보았지만 안타깝게도 실패하였습니다. 하여 container를 종료하려고 할 때마다 가상머신 종료하고 다시 들어가야하는 매우 불편하고도 불운한 상황에 처해있습니다. groups를 통해 docker가 있는 것도 확인하였습니다. 도저히 왜 안되는지 모르겠습니다. 도움이 절실합니다... 감사합니다.ㅠ
공유해주신 API Gateway 아키텍처를 보면 Order 서비스가 Product 서비스에게 해당 상품 수량 어느정도인지 요청시 Order 서비스는 유레카에게 Product 서비스 위치를 질의 한다. 유레카에 등록된 Product 서비스 위치 정보를 Order 서비스에게 응답한다. Order 서비스는 Product 서비스에게 실질적으로 상품 수량 GET 요청 한다. 제가 알고 있는 일반적으로 (MAS X) 모놀리식 구조에서 Feign Client 를 사용시 유레카를 사용 하지 않는 상황에서 특정 서버에게 요청시 곧바로 해당 서버에게 요청을 했었는데요. (3 Way Handshake 생략) 그런데 @FeignClient(name = "product-service", url="http://product-service") public interface ProductFeign { } 이렇게 FeignClient 어노테이션에서 name 을 특정 서버 어플리케이션 이름으로 지정하게 된다면 알아서 유레카에게 질의하고 응답 받아서 Product 서비스에게 요청해서 총 HTTP 요청이 2번 일어 난다고 보면 되는건가요? 일단 비지니스 로직단에서는 HTTP 요청이 2번 일어난다(유레카 서버에게 호출 하고 그 다음 실질적은 요청하고자 하는 서버에게 다시 요청) 라고 로직상에서는 안보여서요. 이부분은 내부 로직(Feign client 라이브러리 내부 로직?? 이라고 해야 할까요?..)에서 처리된거라서 눈에 안보이는 부분인지 알고 싶습니다.
C:\Users>aws eks --region ap-northeast-2 update-kubeconfig --name kube-practice An error occurred (AccessDeniedException) when calling the DescribeCluster operation: User: arn:aws:iam::149536462938:user/my-computer is not authorized to perform: eks:DescribeCluster on resource: arn:aws:eks:ap-northeast-2:149536462938:cluster/kube-practice 클러스터 전환이 안되는데 왜 이럴까요? 우선 루트 사용자로 전환하니까 되긴 했습니다 AllowEKSDescribeCluster 고객 인라인 인라인 AmazonEC2ContainerRegistryFullAccess AWS 관리형 직접 AmazonEKSClusterPolicy AWS 관리형 기존 iam유저 권한은 이렇게 지정되어 있습니다.
안녕하세요 강사님 제가 강사님 강의를 즐겨듣는 수강생입니다. 질문1)제가 채팅과 로그인 에 관해서 서버 배포를 하고 싶은데 채팅내용이나 이런거는 Redis를 이용해 배포하고 로그인 회원가입등은 Mysql 을 이용한다고 가정했을 때 Redis는 RDS를 이용하는 게 나을까요? -- 이 부분이 아예 감이 안 잡혀서 구조 한번만 설명좀 해 주시면 감사하겠습니다. 질문2) 만약 협업 프로젝트를 한다고 가정하면 EC2에 직접 들어가서 compose.yml을 작성하는 거 외에는 답이 없을까요? (제가 만약 채팅을 담당한다고 가정했을때 질문1)과 연관지어서 설명좀 해 주시면 감사하겠습니다. 현업에서는 어떻게 하는 건가요? 일단 CI/CD를 들어볼 예정입니다.)
안녕하세요 강사님 그 html css 를 로컬에서 돌리는데 자꾸 nginx 이 화면만 나와가지고 문제가 발생합니다.(시크릿 창 새로고침 해봤습니다.) 코드는 FROM nginx COPY ./ /usr/share/nginx/html <!DOCTYPE html> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> </head> <body> <h1>My Web Page</h1> </body> </html> index.html *{ color:blue; } style.css pdf 에 있는 대로 해도 오류가 그대로 뜹니다... ㅠㅠ 도와주세요
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
- 강의 영상에 대한 질문이 있으시면, 상세히 문의를 작성해주시면, 주말/휴일 제외, 2~3일 내에 답변드립니다 (이외의 문의는 평생 강의이므로 양해를 부탁드립니다.) - 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다. - 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~ - 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요.
리소스 로드 중 오류 발생 Amazon EKS is unable to communicate with your Kubernetes cluster API server. The cluster must be in an ACTIVE state for successful connection. Please try again in few minutes. 안녕하세요 선생님 고생 많으십니다 ^^ 질문 하나 하도록 하겠습니다! 이렇게 에러가 나오는데요! 분명 활성 상태인데 왜 이런 에러가 발생되는걸까요? IAM 도 분명 잘 설정 했는데도요 ㅠㅠ
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다! [질문 전 답변] 1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요] 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요] 3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요] ( https://inf.run/DvsRD ) 4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up 으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. ( https://inf.run/Ljaer ) Vagrant up을 하면, kubeadm init 단계에서 이미지를 가져오지 못하고 아래아 같이 멈추어 있습니다. ping google.com을 통해 외부 연결은 정상적으로 되는건 확인했습니다. 어떤 부분을 더 체크해야 할까요? ==> cp-k8s-1.30.1: Running provisioner: shell... cp-k8s-1.30.1: Running: /var/folders/p7/4nthz5pn0g983598nhw8gqd00000gn/T/ vagrant-shell20250627-87887-ucssq0.sh cp-k8s-1.30.1: I0627 19:51:36.035198 3710 version.go:256] remote version is much newer: v1.33.2; falling back to: stable-1.30 cp-k8s-1.30.1: [init] Using Kubernetes version: v1.30.14 cp-k8s-1.30.1: [preflight] Running pre-flight checks cp-k8s-1.30.1: [preflight] Pulling images required for setting up a Kubernetes cluster cp-k8s-1.30.1: [preflight] This might take a minute or two, depending on the speed of your internet connection cp-k8s-1.30.1: [preflight] You can also perform this action in beforehand using 'kubeadm config images pull' cp-k8s-1.30.1: W0627 19:51:36.766582 3710 checks.go:844] detected that the sandbox image "registry.k8s.io/pause:3.6" of the container runtime is inconsistent with that used by kubeadm.It is recommended to use "registry.k8s.io/pause:3.9" as the CRI sandbox image. Log: sudo journalctl -u containerd -f --since "10 minutes ago" Jun 27 19:51:35 cp-k8s systemd[1]: Started containerd container runtime. Jun 27 19:51:36 cp-k8s containerd[3591]: time="2025-06-27T19:51:36.782079946+09:00" level=info msg="PullImage \"registry.k8s.io/kube-apiserver:v1.30.14\"" Jun 27 19:54:57 cp-k8s containerd[3591]: time="2025-06-27T19:54:57.270115838+09:00" level=info msg="PullImage \"registry.k8s.io/kube-apiserver:v1.30.14\"" Jun 27 19:56:35 cp-k8s containerd[3591]: time="2025-06-27T19:56:35.785071330+09:00" level=error msg="PullImage \"registry.k8s.io/kube-apiserver:v1.30.14\" failed" error="rpc error: code = Canceled desc = failed to pull and unpack image \"registry.k8s.io/kube-apiserver:v1.30.14\": context canceled" Jun 27 19:57:26 cp-k8s containerd[3591]: time="2025-06-27T19:57:26.762161620+09:00" level=error msg="PullImage \"registry.k8s.io/kube-apiserver:v1.30.14\" failed" error="failed to pull and unpack image \"registr y.k8s.io/kube-apiserver:v1.30.14\": failed to copy: read tcp 10.0.2.15:48760->52.219.124.238:443: read: connection reset by peer" Jun 27 19:57:26 cp-k8s containerd[3591]: time="2025-06-27T19:57:26.770337247+09:00" level=info msg="PullImage \"registry.k8s.io/kube-apiserver:v1.30.14\"" [질문 하기]
안녕하세요 강사님! Redis로 시작해 채팅 서비스를 거쳐 지금의 강의까지 도달한 학생입니다 :) 항상 유익한 강의를 제공해주셔서 정말 감사합니다. 이번 강의를 진행하기에 앞서 이전에 진행한 채팅 프로젝트를 적용해 배포해보려고 하는데요 혹시 강의를 진행하는데 있어 문제되는 부분이 생기지 않을까 싶어 미리 질문을 드렸습니다! 강의를 진행하는데 있어 프로젝트가 다르더라도 큰 문제가 없을까요?
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다! [질문 전 답변] 1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요] 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요] 3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요] ( https://inf.run/DvsRD ) 4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up 으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. ( https://inf.run/Ljaer ) [질문 하기] 안녕하세요. 항상 좋은 강의 감사합니다. 이번에 VB로 변경을 하고 있는데, 조훈님이 설정한 Vagrantfile과 다를게 아래와 같이 port를 2200으로 설정하고 있습니다. 혹시 원인 및 해결 방법을 알 수 있을까요? vagrant up Bringing machine 'cp-k8s-1.30.1' up with 'virtualbox' provider... Bringing machine 'w1-k8s-1.30.1' up with 'virtualbox' provider... Bringing machine 'w2-k8s-1.30.1' up with 'virtualbox' provider... Bringing machine 'w3-k8s-1.30.1' up with 'virtualbox' provider... ==> cp-k8s-1.30.1: Importing base box 'sysnet4admin/Ubuntu-k8s'... ==> cp-k8s-1.30.1: Matching MAC address for NAT networking... ==> cp-k8s-1.30.1: Checking if box 'sysnet4admin/Ubuntu-k8s' version '0.8.6' is up to date... ==> cp-k8s-1.30.1: Setting the name of the VM: cp-k8s-1.30.1(github_SysNet4Admin) ==> cp-k8s-1.30.1: Fixed port collision for 22 => 60010. Now on port 2200. ==> cp-k8s-1.30.1: Clearing any previously set network interfaces... ==> cp-k8s-1.30.1: Preparing network interfaces based on configuration... cp-k8s-1.30.1: Adapter 1: nat cp-k8s-1.30.1: Adapter 2: hostonly ==> cp-k8s-1.30.1: Forwarding ports... cp-k8s-1.30.1: 22 (guest) => 2200 (host) (adapter 1) ==> cp-k8s-1.30.1: Running 'pre-boot' VM customizations... ==> cp-k8s-1.30.1: Booting VM... ==> cp-k8s-1.30.1: Waiting for machine to boot. This may take a few minutes... cp-k8s-1.30.1: SSH address: 127.0.0.1:2200 cp-k8s-1.30.1: SSH username: vagrant cp-k8s-1.30.1: SSH auth method: private key
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다! [질문 전 답변] 1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요] 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요] 3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요] (https://www.inflearn.com/blogs/1719) 4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up 으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. ( https://inf.run/Ljaer ) [질문 하기] 안녕하세요. 항상 최신 정보를 제공해 주셔서 감사합니다. M4를 사용하고 있는 유저입니다. 이번에 새로 배포하신 VirtualBox 설치 script를 이용해서 다 설치후 node에 접근을 하려고 하면 연결 중이라는 메세지만 나오고 연결이 되지 않습니다. Virtualbox 설정을 보면 다음과 같습니다. PortForwad port가 2200으로 나오고 있습니다. 이게 문제 일까요?