2020年5月19日火曜日

Beanstalkのデプロイ方法(for Docker編)

①該当するソースコードのフォルダ内で、初期化のコマンドを行う
②tokyoリージョンの9番を選択
③該当する環境を選択する(新規作成の場合、Create new Application選択)
④Dockerfileがソースコードが入ったフォルダ内にで作成済だと、eb側で認識してくれるので" Y "を選択。
(It appears ..... using Docker. Is this correct?という表示が出る。)
3番のDocker running on 64bit 64bit Amazon Linuxを選択する。

備考:
1) Docker running on 64bit Amazon Linux 2
->最近、加わったAmazon Linux2ベースだが、試しに適応したら動作に問題があったので
現状、利用してないが、今後、Amazon Linux2ベースに推移するはずなので
内部コード的に最適化して、動かすことをお勧めする。

2) Multi-container Docker running on 64bit Amazon Linux
->ECSベースで稼働する、Dockerサービスで、php-fpm/nginxなどを個々のコンテナとして
分散分けをしたい場合は、こちらを選択する必要があるが、Dockerrun.json形式のファイルを作成する必要性がある。

3) Docker running on 64bit Amazon Linux
->現状、シングルコンテナベースを選択する場合は、こちらを選択。

4) (BETA) Docker running on 64bit Amazon Linux 2 (Beta)
->BETAベースのAmazon Linux2なので研究要素として、利用しない場合は、利用価値なし
⑤SSH経由でログインする場合は、" Y " にする
->基本的に、リポジトリ内にで解決できる物なので、SSHでログインするメリットは無いと考える。
上記、利用する場合は、該当するKey pairを選択する


⑦eb createを入力して、引き続き作成を行う。
⑧該当するホスト名とCNAMEの入力を行う。
⑨ELBのタイプを選択(NLB or ALB)
->Classic ELBは、消えていくと思うので、選択する必要はない
Nを選択

API-gateway(設定メモ)

前提条件:VPCリンクの作成ができていること。
その他:アクションボタンからメソッド、リソースの生成方法については割愛。



1)以下の管理画面、APIwebsocketの3つの構成にしています。
①API
②smart(管理画面)
③websocket               

■API
①総合タイプ:VPCリンクを選択
②メソッド:ANY
③VPCリンク:VPCリンクで作成したAPI用のVPCリンクを選択する
④エンドポイント:エンドポイント記載する。(実施のAPIのエンドポイントを指定してます。)
管理画面
①総合タイプ:VPCリンクを選択
②プロキシ統合の使用:チェック(問い合わせを行った時に、文字コードだけの表示になるので、チェックを入れてます。)
③メソッド:ANY
④VPCリンク:VPCリンクで作成した管理画面用のVPCリンクを選択する
⑤エンドポイント:エンドポイント記載する。(実施の管理画面のエンドポイントを指定してます。)



■Socket
①総合タイプ:VPCリンクを選択
②メソッド:ANY
③VPCリンク:VPCリンクで作成したsocket用のVPCリンクを選択する
④エンドポイント:エンドポイント記載する。(実施のエンドポイントを指定してます。)

注意点:
ステージにデプロイ後に、即時反映しないので、数分ほど様子をみること!!


スナップショットからの復元方法

1)スナップショット > システム > 検索窓に対象のキーワードを入力して、最新のスナップショットを見つける
2)対象のDB名を入力する。

3)アクションメニュー > スナップショットの復元選択する。

4)インスタンスの仕様:
①DBインスタンスのクラス:
検証用、テスト用 -> 安いスペック(t2.micro)
本番用 -> はい(復元する対象のDBと同様にすることが望ましい)

②マルチAZ:
検証用、テスト用 -> いいえ
本番用 -> はい

5)DBインスタンス識別子を入力する。

6)DBインスタンスび復元を押す



ECRコマンドで失敗した場合

参照先:

以下のように、ECRpushコマンドで失敗した場合


以下のコマンドを導入する


DBの複製・DBのCreateを行うShell

参照先:


DB(soe_admin)というDBを複数して、複数のDBにインポートするshellです。


イメージ:
[RDS:1] 
①DBをdumpする
②soe_admin > clients に必要な情報を書き込む

[RDS:2] 
①DBのインポートを行う。


1以下のshellを作成する
=============================
#!/bin/bash


#Dump only
HOSTNAME="127.0.0.1"
PORT="3306"
USERNAME="root"
PASSWORD="pass"
dump_db="soe_testcase001"

#Import only
HOSTNAME2="127.0.0.1"
PORT2="3306"
USERNAME2="root"
PASSWORD2="pass"

#Table Write only
MYSQL_SCHEMA="soe_admin"
VALUE=`echo ${QUERY} | ${CMD_MYSQL}`
CMD_MYSQL="mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} --show-warnings $MYSQL_SCHEMA"

mysqldump -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} soe_testcase001 > soe_dump.sql


for i in `cat ./test.txt`
do
  cp soe_dump.sql $i
  create="create database if not exists $i;"  
  mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e "${create}"
  mysql -h${HOSTNAME2} -P${PORT2} -u${USERNAME2} -p${PASSWORD2} $i < $i
  ${CMD_MYSQL} <<EOF
  INSERT INTO clients (client_cd, resq_client_cd, client_dbname, db_type, description, dropped_flag, created_datetime, modified_datetime, deleted_flag, dbhost) VALUES ("$i", " ", "$i", " ", " ", " ", " ", " ", " ", "$HOSTNAME")
EOF
done

================================


2)for文には、test.txtというファイルを見て、実行してくれる

2)test.txtというファイルを作成して、新規DBリストを記載するので
必要な分だけDB名を書き込んでおくこと!

例:

MySQL テーブル追記(for Shell)

参照先:
https://qiita.com/CyberMergina/items/f889519e6be19c46f5f4


#!/bin/bash

HOSTNAME="127.0.0.1"
PORT="3306"
USERNAME="root"
PASSWORD="pass"

MYSQL_SCHEMA="soe_admin"
CMD_MYSQL="mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} --show-warnings $MYSQL_SCHEMA"

#QUERY="SELECT client_cd FROM clients"
VALUE=`echo ${QUERY} | ${CMD_MYSQL}`


${CMD_MYSQL} <<EOF
INSERT INTO clients (client_cd, resq_client_cd, client_dbname, db_type, description, dropped_flag, created_datetime, modified_datetime, deleted_flag, dbhost) VALUES ("test1", " ", "soe_test", " ", " ", " ", " ", " ", " ", "192.168.1.1")
EOF

CloudTrail(設定メモ)

Cloudtrail ログイン通知について
(lambda ->slack)

参照先:


①以下、設定方法です。(省略)

②保存先をS3にする。(新規作成にする)
③作成を押す

追跡情報

RDSインスタンスタイプ変更

1)ストレージ割り当て:割り当て変更する
(拡張したい容量を入力する。)

2)パスワードは変更しない

3)現行の設定のままにします(触らないこと!!)

4)設定値を確認して、問題ないようなら、DBインスタンスの変更を押す


指定した、14:00ぴったりにスタートした。(22分程度で終了。)

ストレージ変更手順

1)変更を選択する


2)以下のパラメータの変更を行う
①ストレージタイプ:該当のサイズに変更する
例:20 ->25

②ストレージの自動スケーリングを有効にする。
適応する


検証:ストレージ最適化中に、該当のDBが接続できるか、DBおよびテーブルの中身を確認する。
完了まで:30分 ->22GB
再接続の確認もできることを確認


参考までに:
再度、DBの容量の適応をする場合は、6時間後になる。

AWS Transfer Family

以下の条件が整っていること
Amazon S3 バケット

参照先:



1)ポリシーを作成を行う。
参照先:

①ロール作成を選択する。
②AWSサービス > Transfer > 次のステップ > アクセス権限を選択する。

2)ポリシーの作成選択する。

3)JSONタブ選択 > 枠内に対象の内容をペースト > ポリシー確認押す

対象1

対象2

AWS Transfer for SFTP AWS の間に信頼関係を確立します。

4)ロール名を入力
5)ロール名の作成を押す


6)ロール > 先ほど作成した”S3-SFTP”を選択
7)信頼関係から 信頼関係の編集を選択

8)以下の内容を参考にペースト > 信頼ポリシーの更新を押す

参照先:
https://docs.aws.amazon.com/ja_jp/transfer/latest/userguide/requirements-roles.html


9)SFTPを選択する

10)Customを選択
11)Custom Providerに、作成済のApi-gatewayを入力する


12)VPC hostedを選択
①VPC
②Availability Zonesの選択

NEXTを押す

13)ロールの選択を行う
NEXTを押す

14)Create Serverを選択する



Cloudfront(カスタムドメインを利用したい場合)

1)Create Distributionを選択


2)Web > Get Startedを選択


備考:Api-gatewayでステージングでデプロイしたAPIを利用する
https://xxxxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod/api
(Api-gatewayの画面です。)


3)Create Distribution:
①Origin Domain Name:xxxxxxxx.execute-api.ap-northeast-1.amazonaws.com
②Origin Path:/prod/api
③Minimum Origin SSL Protocol:TLSv1.2
④Origin Protocol PolicyMatch Viewer


4)Default Cache Behavior Settings :
①View Protocol Policy:HTTP and HTTPS
②Allowed HTTP Methods:GET,HEAD
③Object Caching:Use Origin Cache Headers
④Minimum TTL : 0
⑤Maximum TTL : 31536000
⑥Default TTL : 86400
⑦Forward Cookies : Node
⑧Query String Forwarding and Caching : Node
⑨Smooth Streaming : No
⑩Restrict Viewer Access(Use Signed URLs or Signed Cookies) : No
⑪Compress Objects Automatically : No


5)Distribution Settings:
①Alternate Domain Names(CNAMEs): api.xxxxx-test.com(route53で割り当てたドメインを利用)
②SSL Certificate:Custom SSL Certificate (example.com):    *.xxxxxxx-test.com (5f3c6e6f-dc35-42ff-a274-baf735e82ff0)
③*.xxxxxx-test.com (5f3c6e6f-dc35-42ff-a274-baf735e82ff0)  ->ACMで以前に生成した物を利用
④Create Distributionbutionを押す。


作成後、https://api-xxxxx-test.com でアクセス可能になるのと
証明書についてもACMで生成した物を利用していることが把握できる。

ローカルLLMでコーディングさせるポイント

 簡単な指示で、依頼するとコンテキストオーバーで記憶喪失になって コードの内容が一致しないことが起こるので、work.mdみたいな作業メモを取らせたるのがよい 途中から、別スレッドに再実施する場合でも、work.mdが引き継ぎとして 参照して実施してくれるのがポイント