実現したいこと
Djangoで作成したアプリのデプロイを行っています。
AWS EC2インスタンス内でRDSへの接続を成功させ、
マイグレーションファイルの作成を実現したいです。
前提
現在EC2とRDSは接続し、git hubに上げたアプリケーションをcloneした中で、
マイグレーションファイルを作成しようとしています。
発生している問題・エラーメッセージ
マイグレーションファイルを作成時、DBに接続できず、エラー解消に時間がかかり詰まっています。
セキュリティグループやsetting.pyの設定関係は、可能な限り調べて修正しましたが、解決できず。。
様々な可能性が考えられるとは思いますが、なにとぞ皆様の知見をお借り出来れば幸いです。
python manage.py makemigrations /home/ec2-user/.local/lib/python3.9/site-packages/django/core/management/commands/makemigrations.py:143:RuntimeWarning: Got an error checking a consistent migration history performed for database connection 'default': (2003, "Can't connect to MySQL server on 'test.chofyx4x7zx6.ap-northeast-1.rds.amazonaws.com' (110)") warnings.warn(
該当のソースコード
python
1DATABASES = { 2 'default': { 3 'ENGINE': os.getenv('ENGINE'), 4 'NAME': os.getenv('NAME'), 5 'USER': os.getenv('USER'), 6 'PASSWORD': os.getenv('PASSWORD'), 7 'HOST': os.getenv('HOST'), 8 'PORT': os.getenv('PORT'), 9 'OPTIONS': { 10 'charset': 'utf8mb4', 11 }, 12 } 13} 14 15#.envファイルの中身↓ 16 17ENGINE=django.db.backends.mysql 18NAME= RDS内で作成したDB名 19USER=RDSのマスターユーザー名 20HOST=RDSのエンドポイント 21PORT=3306 22PASSWORD=RDSのマスターパスワード 23
試したこと
・RDSのセキュリティグループのインバウンドルールとアウトバウンドルールにEC2インスタンスのセキュリティグループを追加
補足情報(Djangoのsetting.pyの情報を記述します)
※既に公開しているReactアプリとDRFで接続予定ですが、そのURLは便宜上3000で記述しています。
python
1from pathlib import Path 2from dotenv import load_dotenv 3import os 4load_dotenv() 5 6# Build paths inside the project like this: BASE_DIR / 'subdir'. 7BASE_DIR = Path(__file__).resolve().parent.parent 8 9 10# Quick-start development settings - unsuitable for production 11# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/ 12 13# SECURITY WARNING: keep the secret key used in production secret! 14SECRET_KEY = os.getenv('SECRET_KEY') 15 16# SECURITY WARNING: don't run with debug turned on in production! 17DEBUG = False 18 19ALLOWED_HOSTS = [os.getenv('IP'),os.getenv('DOMAIN')] 20 21# Application definition 22 23INSTALLED_APPS = [ 24 'nippo', 25 'django.contrib.admin', 26 'django.contrib.auth', 27 'django.contrib.contenttypes', 28 'django.contrib.sessions', 29 'django.contrib.messages', 30 'django.contrib.staticfiles', 31 'rest_framework', 32 'django_filters', 33 'corsheaders', 34 'rest_framework.authtoken' 35] 36 37MIDDLEWARE = [ 38 'django.middleware.security.SecurityMiddleware', 39 'django.contrib.sessions.middleware.SessionMiddleware', 40 'django.middleware.common.CommonMiddleware', 41 'django.middleware.csrf.CsrfViewMiddleware', 42 'django.contrib.auth.middleware.AuthenticationMiddleware', 43 'django.contrib.messages.middleware.MessageMiddleware', 44 'django.middleware.clickjacking.XFrameOptionsMiddleware', 45 'corsheaders.middleware.CorsMiddleware', 46 'django.middleware.common.CommonMiddleware', 47 'django.middleware.csrf.CsrfViewMiddleware', 48] 49 50ROOT_URLCONF = 'config.urls' 51 52TEMPLATES = [ 53 { 54 'BACKEND': 'django.template.backends.django.DjangoTemplates', 55 'DIRS': [], 56 'APP_DIRS': True, 57 'OPTIONS': { 58 'context_processors': [ 59 'django.template.context_processors.debug', 60 'django.template.context_processors.request', 61 'django.contrib.auth.context_processors.auth', 62 'django.contrib.messages.context_processors.messages', 63 ], 64 }, 65 }, 66] 67 68WSGI_APPLICATION = 'config.wsgi.application' 69 70# Database 71# https://docs.djangoproject.com/en/4.1/ref/settings/#databases 72 73DATABASES = { 74 'default': { 75 'ENGINE': os.getenv('ENGINE'), 76 'NAME': os.getenv('NAME'), 77 'USER': os.getenv('USER'), 78 'PASSWORD': os.getenv('PASSWORD'), 79 'HOST': os.getenv('HOST'), 80 'PORT': os.getenv('PORT'), 81 'OPTIONS': { 82 'charset': 'utf8mb4', 83 }, 84 } 85} 86 87 88# Password validation 89# https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators 90 91AUTH_PASSWORD_VALIDATORS = [ 92 { 93 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 94 }, 95 { 96 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 97 }, 98 { 99 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 100 }, 101 { 102 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 103 }, 104] 105 106# Internationalization 107# https://docs.djangoproject.com/en/4.1/topics/i18n/ 108 109LANGUAGE_CODE = 'ja' 110 111TIME_ZONE = 'Asia/Tokyo' 112 113USE_I18N = True 114 115USE_TZ = True 116 117 118# Static files (CSS, JavaScript, Images) 119# https://docs.djangoproject.com/en/4.1/howto/static-files/ 120 121STATIC_URL = '/static/' 122STATICFILE_DIRS = ( 123 os.path.join(BASE_DIR, 'static'), 124) 125 126# Default primary key field type 127# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field 128 129DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' 130# ACCOUNT_AUTHENTICATION_METHOD = 'email' 131# ACCOUNT_USERNAME_REQUIRED = False 132# ACCOUNT_EMAIL_VERIFICATION ='mandatory' 133# ACCOUNT_EMAIL_REQUIRED = True 134# ACCOUNT_LOGOUT_REDIRECT_URL = 'account_login' 135# ACCOUNT_LOGOUT_ON_GET = Truek 136# ACCOUNT_EMAIL_SUBJECT_PREFIX ='' 137# DEFAULT_FROM_EMAIL = 'admin@example.com' 138CORS_ALLOWED_ORIGINS = [ 139 'http://127.0.0.1:3000', 140 'http://localhost:3000', 141] 142CORS_ALLOW_METHODS = [ 143 "DELETE", 144 "GET", 145 "OPTIONS", 146 "PATCH", 147 "POST", 148 "PUT" 149] 150CSRF_COOKIE_NAME = "csrftoken" 151 152LOGIN_URL = 'login' 153LOGIN_REDIRECT_URL = 'http://localhost:3000' 154
回答1件
あなたの回答
tips
プレビュー