質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

491閲覧

AWS EC2インスタンス内でRDSへの接続を成功させたい

shota_-.091321

総合スコア9

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2023/05/10 14:12

編集2023/05/10 14:15

実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2023/05/10 14:41

> RDSのセキュリティグループのインバウンドルールとアウトバウンドルールにEC2インスタンスのセキュリティグループを追加 あまり関係ないかもしれませんが、アウトバウンドの方は基本的には全開でほぼ問題ありません。 すでに言及されているように、djangoで接続する前にまずmysqlコマンドで接続できるかを確認してみてください。
shota_-.091321

2023/05/11 00:32

回答を頂きありがとうございます。 業務の為、夜までは作業できませんが、コマンドでの接続確認及びアウトバウンドルールを全開放に変更してみます。お忙しい中、ご回答いただきありがとうございます。また経過を報告させていただきます。
guest

回答1

0

自己解決

kzy53様より連携を頂いた通り、下記のコマンドでEC2→RDSへの接続を試したところ、接続が出来ず
エラーが発生したため、Djangoのconfig関連ではなく、AWSのEC2及びRDSの接続関係の設定ミスのようです。
質問の回答範囲で考えられる内容が広すぎるため、この質問はcloseさせて頂きます。
コメント頂いた皆様、ありがとうございました。

mysql -u admin -p -h データベースのエンドポイント

出力されたエラー内容

ERROR 2003 (HY000): Can't connect to MySQL server on '※RDSのエンドポイント' (110)

投稿2023/05/11 10:10

shota_-.091321

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問