묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공자도 이해할 수 있는 AWS 입문/실전
엑세스 키 사용 사례
안녕하세요!엑세스 키 관련 질문이 있습니다!IAM에서 엑세스 키를 발급 받을 때"AWS 외부에서 실행되는 애플리케이션"을 선택한 이유는, 로컬에서 테스트하기 위함인가요..?EC2에 백엔드 서버가 띄워져 있을 때는"AWS 컴퓨팅 서비스에서 실행되는 애플리케이션"을 선택해도 되지 않나? 라는 생각이 들었습니다...아니면 아래와 같이 정리해도 되는지도 궁금합니다!"AWS 컴퓨팅에서 실행되는 애플리케이션" 선택: EC2에서 직접 엑세스 키 설정"AWS 외부에서 실행되는 애플리케이션" 선택: EC2 내부의 실행되는 백엔드 서버에서 엑세스 키 설정
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
32강 강의중 인텔리제이 문제
다름 아니라 강사님께서 강의 하실땐 32강 도중에 User class에 User 부분이 빨간 글씨가 나오는데왜 제가 사용하는 인텔리제이에서는 빨간 글씨가 안나오나요?그리고 좌측에 빈 객체들에 콩모양도 안나타나요혹시 제껀 무료인 Community버전인데 강사님인 유료버전이라서 그런가요?아니면 설정을 따로 해야하나요?구글에 찾아봐도 잘 안나와서 물어봅니다.학습관련 질문이 아니라 죄송합니다.
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
15강 수정 요청: DOWNLOAD_DIR 확인 구문 부분
아래의 엔드포인트 두개의 함수 부분에서async def download_basic(file_name: str):async def download_custom(file_name: str):if not file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): 이 부부의 file_path를 full_file_path를 아래처럼 할당한 후에if not full_file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): 으로 수정해야 할 듯 합니다.@app.get("/download/basic/{file_name}") async def download_basic(file_name: str): safe_base_filename = os.path.basename(file_name) file_path = os.path.join(DOWNLOAD_DIR, safe_base_filename) full_file_path = os.path.abspath(file_path) . ' ' if not full_file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): # if not file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): @app.get("/download/custom/{file_name}") async def download_custom(file_name: str): safe_base_filename = os.path.basename(file_name) file_path = os.path.join(DOWNLOAD_DIR, safe_base_filename) full_file_path = os.path.abspath(file_path) . ' ' if not full_file_path.startswith(os.path.abspath(DOWNLOAD_DIR)): # if not file_path.startswith(os.path.abspath(DOWNLOAD_DIR)):그렇지 않으면 검증이 되지 않습니다. 아래 참고file_path: ./downloadables/스크린샷_3.pngfull_file_path: D:\Python_FastAPI\Inflearn_Master\File_API\downloadables\스크린샷_3.pngos.path.abspath(DOWNLOAD_DIR): D:\Python_FastAPI\Inflearn_Master\File_API\downloadables
-
해결됨AWS SAA-C03 자격증 대비-핵심 정리
50강 질문이 있습니다
EKS 공부하면서 Kubernates의 Control Plane은 관리형이고, Data Plane은 Fargate를 쓰지않으면 비관리형이라 하셨는데, B 선택지는 Kubernates Control Plane을 배포한다고 되어있고 이건 관리형이 아닌가요?? 갑자기 비관리형이니까 답이 아니라고 하셔서 여쭤봅니다
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
21강 생성자에서 의존성 주입과 관련하여 질문 있습니다.
생성자에서 필드에 의존성 주입하면예를 들어 컨트롤러 생성자를 만들때 서비스 필드에 의존성 주입해주면 그때는 @Autowired가 자동으로 존재한다고 했는데 이 @Autowired 는 생성자의 파라미터를 전부 빈으로 등록시켜주는건가요?만약 그렇다고 한다면 생성자의 파라미터가 객체가 아닌 경우는 어떻게 되는건가요?혹시 객체 타입 파라미터만 빈으로 등록시켜주고 객체가 아닌 파라미터는 빈으로 등록시켜주지 않나요?
-
미해결비전공자도 이해할 수 있는 AWS 입문/실전
EC2 보안그룹
안녕하세요!EC2 보안그룹 관련 궁금한 것이 생겨 질문 남깁니다.사용자의 모든 요청을 ELB가 받고 그것을 백엔드 EC2로 전달하는 것까지 이해하였습니다.현재 백엔드 EC2의 보안그룹 인바운드 설정에서 80포트로 모든 요청을 받을 수 있도록 열어둔 것 같은데,ELB가 전달하는 요청만 받고 직접적으로 백엔드 EC2로 요청을 하지 못하도록0.0.0.0이 아니라 ELB의 IP만 허용하도록 설정해야 할까요?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
20강 강의 내용중 Interface 만드는 부분에서 질문이 있어요
Interface 만드는 중에 메서드 정의할때 public은 추상 메서드라면 지우셨는데 추상 메서드는 public을 왜 지워야 하나요? 아니면 안 지워도 되는데 어떤 이유로 인해 지운건가요?
-
미해결실전! GitHub Actions으로 CI/CD 시작하기
섹션4-7. high 이슈 추가 시 slack의 high-test 채널로 상세 알림 미전송
안녕하세요.아래 상황에서 원인을 아직 찾지못해 질문드립니다.강의: 섹션 4-7 키워드 기반 이슈 자동화 2 강의[발생상황]keyword-list.txt 파일에 high 텍스트를 추가 후 이슈에서 high-test 로 이슈 생성github action 이 실행되고 알림이 슬랙에 전송되나, critical-issue, normal-issue 채널과는 다르게 알림이 추가되었다는 문구만 표시 초기에 생성한 actions 채널에 상세 알림이 전송되어 표시 [시도해본 작업]레포 high 환경변수 secret에 웹훅 url 을 새로 추가
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기한 연장 부탁 드립니다.
안녕하십니까.회사 프로젝트가 너무 바빠 상반기에 강의를 수강하지 못했습니다.프로젝트가 마무리되어 하반기에 강의를 듣고 시험 준비를 할 수 있도록 수강 기한 연장을 부탁 드리겠습니다.감사합니다.
-
미해결쉽게 설명하는 AWS 기초 강의
AWS Cloud Practitioner 자격증
안녕하세요, 강의 잘 듣고 있습니다.현재 AWS Cloud Practitioner 자격증을 취득할라고 준비중인데, 강의를 어디까지 들어야 할까요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강기간 연장 부탁드립니다...
보안기사 자격증 준비로 AWS 자격증 준비에 충분한 시간을 할애하지 못했습니다.하반기 중 AWS 자격증 취득을 위해 수강기간의 연장을 요청드립니다.부탁드립니다. 감사합니다.
-
미해결쉽게 설명하는 AWS 기초 강의
bastion host 실제 프로젝트 적용 관련 질문
안녕하세요 강의를 듣고 실제 소규모 앱 프로젝트에 AWS 서비스를 활용해 봤습니다. 현재 상황은앱 프로젝트용 VPC 생성 public subnet 1개, private subnet 2개 백엔드 서버(개발, 배포)용 EC2 instancepublic subnet에 위치탄력적 IP 할당 bastion host용 EC2 instancepublic subnet에 위치탄력적 IP 할당RDS(mysql) private subnet 2개에 위치보안을 위해 RDS를 private subnet에 위치했고, 허용된 IP만 bastion host를 통해 DB에 접근할 수 있도록 이렇게 구성했습니다.질문 1. 소규모 앱 프로젝트용으로 이러한 구성은 괜찮은가요? 굳이 Bastion host를 생성하지 않고 백엔드 서버용 인스턴스를 통해서 RDS에 접근해도 되지 않나 싶어서요질문 2. 보안그룹과 관련해서 고민이 있는데 팀원들이 백엔드 서버에 SSH로 접속을 할 때팀원 -> 백엔드 서버팀원 -> bastion host -> 백엔드 서버 두 방식중 어느 것이 더 권장되는 지 궁금합니다. 답변 주시면 감사하겠습니다
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
31강 질문: /docs에 read_all_users 관련
31강에서 구현된 users.py의 read_all_users는 화면에 구현이 안되는 것이 맞는 것인가요? Users의 POST /users 밑에 GET /users/all로 있어야 할 것 같은데...===> PC를 재시작 후 다시 서버를 실행해 보니 나타납니다.DB Browser에서 특정 User의 is_admin을 true로 수정하고 저장까지 완료하고 난 후, 각각의 User들로 로그인해보았습니다. 그런데, is_admin이 false인 모든 User들도 read_all_users의 endpoint인 /users/all에서 모든 회원들의 리스트가 조회가 됩니다./docs 페이지라서 그런 것인지 아니면 잘못 구현된 것인지 궁금합니다. 강의에서는 docs에서의 이런 상황에 대한 언급이 없어 질문을 드립니다.
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
30강 질문: 토큰생성 관련
30강을 완강후에Postman을 통해 post로 http://127.0.0.1:8000/token으로 요청을 보냈는데 아래 처럼 응답으로 토큰이 날아오지 않습니다. 422 Unprocessable Content 에러가 나오구요~~oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") # http://<your_domain>/token 뭐가 문제일런지요? postman사용법에 맞게 된것 같지가 않은데요..... @@@ 추가 질문그리고, 더불어서 발급받은 토큰을 /docs에서 Authentication의 어디에 입력을 해서 테스트를 해야 하는지도 같이 안내바랍니다.여기 client secret에 입력해서 테스트 하는것 같은데.... username, password를 입력해서 로그인하면 token은 잘 생성됩니다.그리고 이렇게 username과 password로 로그인할 때 생성된 토큰으로 client secret에 입력해서 로그인하면 auth errorError: Unprocessable Content 라는 메시지가 뜹니다. postman사용법이 미숙해서인지 postman에서 post /token으로 날려도 토큰이 반환되어 오질 않습니다. 당연히 docs에서 username, password로 로그인한 후에... 수정, 삭제 권한적용은 잘 적용됩니다.
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
26강 에러발생: 해결방법 알려주세요.
26강에서 User model를 만들고, Task model의 관계 설정까지 하고 env.py에서 User를 임포트하고 난후 alembic revision --autogenerate를 실행하고, alembic upgrade head 를 실행하면 User 테이블과 Task 모델의 관계설정은 잘 만들어 졌지만, 아래에 보이는 것처럼, 제약조건에 name을 지정하라고 나옴니다. 그래서 name을 지정하고 db를 삭제하고, alembic을 초기화된 상태로 만든 후에 다시 똑같은 과정을 거쳐 실행햇는데, 두번째 alembic revision --autogenerate 을 실행하면, sqlalchemy.exc.NoReferencedColumnError: Could not initialize target column for ForeignKey 'users.id' on table 'tasks': table 'users' has no column named 'id' 이런 오류가 나타납니다. 자꾸 자꾸 계속해서 다시 해봐도 제약조건에 이름을 넣으라고 나오고, 그것을 수정하면 users에 id가 없다는 둥 계속 똑같이 오류가 나옵니다. 해결 방법은 무엇일까요? 완전히 새로 해봐도 똑같은 오류만 계속 반복됩니다.
-
미해결누구나 이해할 수 있는 AWS를 이용한 클라우드 기초
최신 AMI 변경으로 인한 작동확인 시 세팅 변경
위와 같이 최신 Amazon Machine Image 가 변경되어 작동 확인 시 아래와 같이몇 가지 내용을 변경해서 적용해야 했습니다. 확인되시면 피드백 부탁드립니다~(^_^)⭐ 작동확인1)파이썬 버전확인 시 미설치 확인...python --version=> -bash: python: command not found2)패키지 업데이트sudo yum update -y3)파이썬3 설치 & 버전확인sudo yum install python-pip -y... 설치 완료 후 버전확인python3 --version=> Python 3.9.234)index.html 파일 생성 & 생성한 파일 확인하기=> 강의와 동일5)서버 작동python3 -m http.server 3000 참고로 저는 AWS 유료계정을 사용 중이에요. 강의 보시는 분들에게 도움되면 좋겠습니다~
-
해결됨FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
25강에서 에러발생: 해결방법 알려주세요
💡 질문하기 전에 먼저 확인해보세요!UnicodeDecodeError: 'cp949' codec can't decode byte 0xed in position 3465: illegal multibyte sequence 유니코드 관련에러가 발생합니다. utf-8 관련 설정에 문제가 있어보이는데, 해결방법을 구합니다. 별것을 다해본것 같은데 해결이 되질 않습니다. 코드는 알려주신데로 아래와 같이 수정했습니다.# /alembic.ini 파일 sqlalchemy.url = sqlite+aiosqlite:///./sql_app.db # /alembic/env.py 파일 import asyncio # 추가 from logging.config import fileConfig import os # 경로 작업 위해 추가 import sys # 경로 작업 위해 추가 from sqlalchemy import engine_from_config from sqlalchemy import pool # ✨ 추가: 비동기 엔진 설정을 위해 async_engine_from_config 사용 ✨ from sqlalchemy.ext.asyncio import async_engine_from_config from alembic import context # --- ✨ 추가: 프로젝트 루트 경로 추가 (env.py가 app 모듈을 찾도록) ✨ --- # env.py 파일의 부모 디렉토리의 부모 디렉토리 (즉, 프로젝트 루트)를 sys.path에 추가 sys.path.insert(0, os.path.realpath(os.path.join(os.path.dirname(__file__), ".."))) # -------------------------------------------------------------- # --- ✨ 추가: Base 및 모델 임포트 ✨ --- from app.database import Base # database.py의 Base 임포트 import app.sql_models.task # task 모델 모듈 임포트 (Base.metadata가 인식하도록) # 만약 다른 모델 파일들이 있다면 모두 임포트해주는 것이 안전합니다. # ----------------------------------------------------------------------------- # this is the Alembic Config object, which provides # access to the values within the .ini file in use. config = context.config # Interpret the config file for Python logging. # This line sets up loggers basically. if config.config_file_name is not None: fileConfig(config.config_file_name) # add your model's MetaData object here # for 'autogenerate' support # from myapp import mymodel # target_metadata = mymodel.Base.metadata # target_metadata = None # --- ✨변경: target_metadata 설정 ✨ --- target_metadata = Base.metadata # 우리의 모델 메타데이터 지정! # -------------------------------- # other values from the config, defined by the needs of env.py, # can be acquired: # my_important_option = config.get_main_option("my_important_option") # ... etc. # ✨ 추가 ✨----------------------------------------------------------------- def do_run_migrations(connection): # context 설정 및 마이그레이션 실행 (run_sync 내부에서 호출될 함수) context.configure(connection=connection, target_metadata=target_metadata) with context.begin_transaction(): context.run_migrations() # --------------------------------------------------------------------------- # ... (run_migrations_offline 함수는 보통 그대로 둠) ... def run_migrations_offline() -> None: """Run migrations in 'offline' mode. This configures the context with just a URL and not an Engine, though an Engine is acceptable here as well. By skipping the Engine creation we don't even need a DBAPI to be available. Calls to context.execute() here emit the given string to the script output. """ url = config.get_main_option("sqlalchemy.url") context.configure( url=url, target_metadata=target_metadata, literal_binds=True, dialect_opts={"paramstyle": "named"}, ) with context.begin_transaction(): context.run_migrations() # --- ✨ 변경: run_migrations_online 함수 비동기 방식으로 수정 ✨ --- async def run_migrations_online() -> None: """Run migrations in 'online' mode for an async application.""" # config 섹션에서 비동기 엔진 생성 connectable = async_engine_from_config( config.get_section(config.config_ini_section), prefix="sqlalchemy.", poolclass=pool.NullPool, future=True, # SQLAlchemy 2.0 스타일 사용 ) # 비동기적으로 DB 연결 async with connectable.connect() as connection: # 동기적인 마이그레이션 함수(do_run_migrations)를 # 비동기 연결의 run_sync 메서드 내에서 실행 await connection.run_sync(do_run_migrations) # 엔진 연결 종료 await connectable.dispose() # ----------------------------------------------------------------- ''' # ✨ 위의 것으로 수정 def run_migrations_online() -> None: """Run migrations in 'online' mode. In this scenario we need to create an Engine and associate a connection with the context. """ connectable = engine_from_config( config.get_section(config.config_ini_section, {}), prefix="sqlalchemy.", poolclass=pool.NullPool, ) with connectable.connect() as connection: context.configure( connection=connection, target_metadata=target_metadata ) with context.begin_transaction(): context.run_migrations() ''' if context.is_offline_mode(): run_migrations_offline() else: # ✨ run_migrations_online() # 아래로 변경 # 온라인 모드일 경우 비동기 함수 실행 asyncio.run(run_migrations_online())
-
미해결쉽게 설명하는 AWS 기초 강의
21강에서 쓰이는 profile 에 대해 질문합니다
cloudshell 에 입력한 profile 정보는 어떻게 저장되나요? 처음에 aws configure 을 이용해 iam read 권한을 가진 유저의 키로 user 라는 profile 을 만들었고 권한 사용이 잘 되었습니다. 이후 같은 쉘에서 앞서 user 를 만들 때 사용한 키와 같은 키로 iamuser 라는 profile 을 aws configure 로 만들었는데, 처음 생성한 user 와 iamuser 둘 다 사용이 잘 됩니다. 그러면 한 사용자의 키값만 있다면 profile 은 계속 찍어낼 수 있나요? 이 profile 은 언제까지 유지되고 어떻게 저장되나요? 생성된 profile이 계속 남아있다면 보안 문제가 있을 것 같은데 이 부분이 어떻게 작동되는지 궁금합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
sql 연결 오류
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]이러한 오류가 뜨는데 어떻게 해결해야 할지 잘 모르겠습니다 ㅠㅠ application.yml 코드는 다음과 같습니다 spring: datasource: url: "jdbc:mysql://localhost/library" username: "root" password: "" driver-class-name: com.mysql.cj.jdbc.Driver
-
미해결FastAPI: Python으로 3배 빠르게, 2배 정확한, 10배 빠른 API 만들기
13강 DeleteUserCookie 함수
13강 15분 즈음에 나오는 DeleteUserCookie함수는 도대체 어디에 있는건가요? 강의 듣는도중 노션에 없는 예시가 음성으로만 나오는데 관련된 코드가 따로 있는건가요? 한 두 강의에서만 그런게 아니라 이전 강의에서도 노션에 없는 코드를 음성으로만 설명하는 경우가 있던데 원래 그런건가요...?