Cloud9が動かない問題への対処
Cloud9がいつの間にか新規での利用受付を停止したようなので、EC2インスタンスからで問題なし。
EC2の用途
基本的にdockerのイメージをビルドしてECRに登録するだったり、ECRに疎通確認をするくらいの用途なので、IDEとしての機能は使わない。
設定方法
- cloud formation のtemplate「network_step1/2」に以下を追記し、セキュリティグループを作成
### Local PC -> VPC endpoint sbcntrSgManagementIngressSSH: Type: AWS::EC2::SecurityGroupIngress Properties: IpProtocol: tcp Description: SSH access from your IP (replace CidrIp accordingly) FromPort: 22 GroupId: Fn::GetAtt: - sbcntrSgManagement - GroupId ToPort: 22 CidrIp: xxx.xxx.xxx.xx/32 ここにローカルPCのIPをいr
- EC2インスタンスを作成。イメージを作るときに容量が足りないと面倒なので、無料利用枠の30GB。t2.microでOK。
- EC2インスタンス作成時に払いだしたキーペアでSSHクライアントを使ってSSHで接続。
- ※311ぺーjあたりのDBにテーブルとデータ投入をするところでprismaのmigrateコマンドがうまくうごかなかったので(方法はあるかもですが面倒なのでいかSQLを実行して作成します。
use sbcntrapp; CREATE TABLE User ( id INT AUTO_INCREMENT PRIMARY KEY, createdAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, name VARCHAR(191), email VARCHAR(191) NOT NULL UNIQUE, hashedPassword VARCHAR(191), role VARCHAR(191) NOT NULL DEFAULT 'user' ); CREATE TABLE Session ( id INT AUTO_INCREMENT PRIMARY KEY, createdAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, expiresAt DATETIME, handle VARCHAR(191) NOT NULL UNIQUE, userId INT, hashedSessionToken VARCHAR(191), antiCSRFToken VARCHAR(191), publicData TEXT, privateData TEXT, CONSTRAINT fk_user FOREIGN KEY (userId) REFERENCES User(id) ON DELETE SET NULL ); CREATE TABLE Item ( id INT AUTO_INCREMENT PRIMARY KEY, createdAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, name VARCHAR(191) NOT NULL, title VARCHAR(191) NOT NULL, img VARCHAR(191) NOT NULL, favorite BOOLEAN ); CREATE TABLE Notification ( id INT AUTO_INCREMENT PRIMARY KEY, createdAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updatedAt DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, title VARCHAR(191) NOT NULL, description TEXT NOT NULL, category VARCHAR(191) NOT NULL, unread BOOLEAN NOT NULL DEFAULT TRUE ); use sbcntrapp; INSERT INTO Item (name, title, favorite, img, createdAt, updatedAt) VALUES ('Flower', 'Flower', true, '/flower-park.jpeg', NOW(), NOW()), ('Apple', 'My apple', false, '/apple.jpeg', NOW(), NOW()), ('Goods', 'My goods', false, '/goods.jpeg', NOW(), NOW()), ('Dice', 'Cool dices', true, '/dice.jpeg', NOW(), NOW()), ('Darts', 'Antique darts board', false, '/darts.jpeg', NOW(), NOW()) ; INSERT INTO Notification (title, description, category, unread, createdAt, updatedAt) VALUES ('通知1', 'コンテナアプリケーションの作成の時間です。', 'information', true, NOW(), NOW()), ('通知2', 'コンテナアプリケーションの作成の時間です。', 'information', true, NOW(), NOW()) ;
時間かけるとコストがかかる問題に対処する
そこそこコストがかかる
- ec2インスタンス
- VPCエンドポイント(interface)
- ロードバランサー
- ECSクラスタ
対処方法
- ec2インスタンス
-> 普通に止めておくだけ - VPCエンドポイント(interface)
-> 停止の概念がないので、formar2を使ってcloudformation templateにしておく - ロードバランサー
-> 停止の概念がないので、formar2を使ってcloudformation templateにしておく - ECS
-> ECSサービスの起動するタスクをゼロにする(backend)。frontendはタスクを直接作成しているはずなので、タスクを落とす。
formar2とは
以下記事を参考にローカル環境でdockerを立ち上げWEB画面から操作するのみ。途中IAMロール・ユーザを作成する必要があるが、この記事の通りに進めれば大丈夫。formar2の画面でリージョンを選択する必要があるのではまらないように気を付けて。
https://qiita.com/y_inoue15/items/26c245c9e9fdf42c75a4
アプリが0.0.0.0で全開放が怖い問題
普通にセキュリティグループのIngressから既存のレコードを削除し、MyIPで登録しなおすのみ。画面からでOK。