フロントエンドとバックエンドの通信がうまくいかない
フロントエンドとバックエンドの通信がうまくいきません。
例えば新規ユーザーを作成する場合
開発者ツールのコンソールに
POST http://ec2 private ip:8000/api/signup net::ERR_CONNECTION_TIMED_OUT
というようにタイムアウトが表示されます。
直接バックエンド側に入って
curl -X POST http://ec2 private ip:8000/api/admin_login -H "Content-Type: application/json" -d "selected_user:selected_user,email:email,password:password"
このようにカールコマンドで直接apiに命令をしたらapiはうまく機能してくれます。
となるとやはり原因はフロント側にあると思います。
構成はalb→フロントエンド→バックエンド→dbです
セキュリティグループは
alb in:80 out すべて
web in:22,80 out:すべて
app in:22,8000 out すべて
db: in3306 out:すべて
こちらは問題ないと思います。
igwとngwはちゃんと設定しています。
webとappの間は8000番で通信しているので
appの方には8000番を開放しています。
もしセキュリティグループに問題があればご指摘いただけますでしょうか。
フロント側のコード:
const response = await this.$axios.post('http://ec2 privateip:8000/api/signup',{selected_user: this.selected_user,
email:this.user.email,
password:this.user.password
});
if (response.status === 200){
console.log(response.data.message);
this.user.email = '';
this.user.password = '';
}
else{
console.error("Unexpected status code", response.status);
}
バック側のコード:
@app.route('/api/signup', methods=['POST'])
@jwt_required()
@cross_origin()
def signup():
data = request.json
selected_user=data.get('selected_user')
if selected_user:
selected_user = str(selected_user)
hashed_password = generate_password_hash(data['password'], method='sha256')
if selected_user == "User":
user = User(email=data['email'], password=hashed_password)
if selected_user == "AdminUser":
user = AdminUser(email=data['email'], password=hashed_password)
db.session.add(user)
db.session.commit()
return jsonify({'message':'New user created'})
設定は以上になります。
インフラはec2です。
ec2にdockerを入れてアプリを稼働しています。
どこに問題があるでしょうか。
タイムアウトになる理由を知りたいです。