クラウドサービス
初心者でも比較的利用しやすいクラウドサービスについてまとめてみました。
クラウドサービス利用の準備
多くのクラウドサービスでは、決済用のクレジット カードまたはデビット カードが必要になります。
プリペイド カードおよびバーチャル クレジット カードは支払い方法として使用できないことに注意が必要です。
これからカードを申請するような場合では、銀行が発行するデビッドカードの方が簡単に取得することができます。
デビットカードは銀行口座からの即時引き落としになる分、審査がほとんどない。
15歳以上であればデビットカードを取得できる
次に年会費が無料のデビットカードのうちで主なものをあげておきます。
PaizaCloud
PaizaCloud は転職支援サービスを行っている Paiza が提供しているクラウドサービスで、 ブラウザを開くだけでエディタ、Webサーバ、DB等の開発環境が整う クラウド開発環境です。
このPaizaCloud でも Jupyter notebook / JupyterLab を無料で使用することができます。
同じWebセッションで最大24時間以内であれば無料で使うことができます。
月額980円で、同じWebセッションで24時間を超えて使用することができ、最大3サーバを起動することができます。
月額1980円では、3サーバの常時起動が可能で、公開サービスでの利用が可能になります。
Heroku
Heroku を利用すると、Webフレームワークのためのプラットフォームを簡単に利用でき、 自分のWebアプリケーションを公開できるようになります。
無料プランでは、30分間何も操作が行われないとスリープ状態になるため、
実質的に公開サービスとしての利用はできませんが、
ほとんどコストをかけずに開発できることは注目すべきでしょう。
スリープをさせたくないときは月額7USD(Hobbyプラン)からの有料プランを利用することになります。
有料プランは秒単位の課金で、月額7USD(Hobbyプラン)の場合では、30日ある月の24時間使用したときは、
7USD の 30分の1の請求となります。
ただし、Herokuの課金方法はアドオンを追加したり、データ量に応じてコストが高くなるので注意が必要です。
VPSプロバイダー
次のVPSプロバイダーでは時間単位課金でサーバーマシンを利用することができます。
また、大手クラウドベンダーより安価に利用することができるので個人プロジェクトにはおすすめです。
心強い日本語サポート
国内サービスなので日本語でのサポートが受けられる :-)
学生・教職員向けにプリペイドカードの割引がある
適用サーバを付替可能な長期割引「VPS割引きっぷ」がある
誕生月に500円分のクーポンがもらえる
外部ストレージとしてオブジェクトストレージも提供されている
データーベース、メールはアプリケーションサーバとしてディプロイメントが可能
DNSの設定が管理ポータルから可能
GeoDNSに対応している
WindowsServerが選択できる
すでに業界標準とも言える。ビジネス利用なら選択して間違いない。
日本語でのサポートが受けられる
アプリケーションサーバとしてのディプロイメントが可能
これはBitnamiのアプリケーションスタックを使っている
金融センターのある場所にデータセンターがある。
Windowsサーバが選択可能
アップロードしたカスタムISOでのインストールが可能
購入したWindowsを使うことでコスト削減ができる
PXEブートができる
DNSの設定が管理ポータルから可能
外部ストレージはブロックストレージのみだが50GBまでは無料
複数のプライベートネットワークの定義ができる
DDOS対策のためのFirewallを設定できる
1円クラウドとして人気
外部ストレージはブロックストレージのみだが1GB単位の課金で安い!
アプリケーションサーバとしてのディプロイメントが可能で、 選択したアプリケーションが起動後すぐに利用可能になる
Kubernetes(verson 1.15.12/1.16.13/1.17.9/1.18.6)が使える
データベースクラスタが簡単につくれる
フローティングIPアドレス
DDOS対策のためのFirewallを設定できる
チームメンバーでの運営ができるようになっている
バランスがとれた構成のサーバを安価に使用することができる
Windowsサーバーをディプロイメンとできる
3CPU, 4 GBメモリ構成までであれば1日無料で試用することができる
試用コスト 0.01USDを支払うと7日間使うことができる
個人的にはニューヨーク近郊ではなくて、ニューヨークシティーデータセンターがあることを評価している
DigitalOcean に比べても遜色がない安価でシンプルな価格体系
チームメンバーでの運営ができるようになっている
Windowsがディプロイメントできる
他社ベンダーよりパフォーマンスが良い
プロモーション で登録時に25USD分の無料枠がもらえ、一度料金を支払うとさらに50USDの無料枠が追加される 東京リージョンがある
マーケットプレースからアプリケーションを選択してディプロイメントが可能
Kubernetes クラスタが使える
DigitalOcean よりもハイスペックなノードでクラスタを構成できる
StackScript でサーバー設定を自動化できる(無料)
1サーバーで最大4GPUなどハイスペックなサーバーを利用できる
24GB RAM のサーバでは最安価。
個人的には次のように使い分けています。
手元のマシンを紛失してもクラウド上にデータがあるので情報漏えいがなく安心安全。
手元のマシンに不具合があっても、別のマシンから接続することで継続的に利用できる。
ちょっと便利なスクリプト
クラウドにサーバーをデプロイメントしたときに個人ユーザの設定と、miniconda をインストールするスクリプトです。地味ですが便利に使っています。
Anaconda Python の良いところのひとつにディストリビューションの差異を吸収できるところがあります。つまり、RedHat や Ubuntu といったディストリビューションが異なっていても、conda install パッケージ名 で環境設定ができます。また、依存パッケージが多数インストールされても、Anaconda Python をインストールしたディレクトリ以下に閉じられ「OSが汚れる」ことがないのも気にいっている利点です。
code: Bootstrap.shh
NEWUSER=${NEWUSER:-"iisaka"
CONDA_INSTALLDIR=/opt/anaconda3
# YOU MAY NOT NEED TO EDIT BELLOWS
__SUMMARY__="Auto setup for VPS."
__AUTHOR__="Goichi (Iisaka) Yukawa"
__VERSION__="1.0"
__DATE__="Jun 23 2021"
# if you want to download from on-premise server, you should edit bellows.
CONDA_PKGNAME="Miniconda3-latest-Linux-x86_64.sh"
PROG=$( basename $0 )
VERSION() {
cat <<_EOF_ 1>&2
${PROG} - ${__SUMMARY__}
Version: ${__VERSION__}
Copyright 2021-2022, ${__AUTHOR__}
_EOF_
}
USAGE() {
VERSION
cat <<_EOF_ 1>&2
Usage: ${PROG} action
ACTION:
setup - Setup VPS. default.
cleanup - Restore the previos state.
version - print version.
help - print this message.
_EOF_
}
SETUP() {
cd $HOME
curl -sLO ${CONDA_BASEURL}/${CONDA_PKGNAME}
sudo bash ${CONDA_PKGNAME} -b -p ${CONDA_INSTALLDIR}
curl -sLO ${JQ_BASEURL}/jq-1.6/jq-linux64"
sudo mv jq-linux64 ${CONDA_INSTALLDIR}/bin/jq
sudo chmod 0755 ${CONDA_INSTALLDIR}/bin/jq
cat <<_EOF_ > dot.condarc
custom_multichannels:
channels:
- conda-forge
- defaults
- openmyroad
debug: false
ssl_verify: true
auto_activate_base: false
_EOF_
sudo mv dot.condarc ${CONDA_INSTALLDIR}/.condarc
sudo chmod 0644 ${CONDA_INSTALLDIR}/.condarc
}
grep -qs sudo /etc/group || sudo groupadd sudo
grep -qs wheel /etc/sudoers && {
# RHEL family
echo "%sudo ALL=(ALL) ALL" > sudoers.sudo
sudo mv sudoers.sudo /etc/sudoers.d/sudo
}
SRC_AUTHKEY_DIR=/home/ubuntu/.ssh
SRC_AUTHKEY_DIR=/home/azureuser/.ssh
else
SRC_AUTHKEY_DIR=/root/.ssh
fi
export PATH=${CONDA_INSTALLDIR}/bin:${PATH}
# PW=$( python3 -c "import crypt; print(crypt.crypt('PASSWORD', 'SALT'))")
PW=$( python3 -c "import crypt;import getpass as gw; pw1=gw.getpass(); pw2=gw.getpass('Password Again:'); pw1 == pw2 and print(crypt.crypt(pw1, 'Bootstrap'))")
-z "${PW}" && { echo "Password mismatch. use default password." PW="inTpbzPWbfBGM" # encrypted default password
}
sudo useradd -m -d /home/${NEWUSER} -p ${PW} -s /bin/bash ${NEWUSER}
sudo usermod -a -G sudo ${NEWUSER}
sudo mkdir -p /home/${NEWUSER}/.ssh
sudo ssh-keygen -t rsa -f /home/${NEWUSER}/.ssh/id_rsa -P ''
sudo cp ${SRC_AUTHKEY_DIR}/authorized_keys \
/home/${NEWUSER}/.ssh/authorized_keys
chmod 0600 /home/${NEWUSER}/.ssh/authorized_keys
chown -R ${NEWUSER}.${NEWUSER} /home/${NEWUSER}/.ssh
}
}
sudo -u ${NEWUSER} ${CONDA_INSTALLDIR}/condabin/conda init bash > /dev/null
sudo ${CONDA_INSTALLDIR}/condabin/conda init bash > /dev/null
echo "You should try: exec \$SHELL -l"
echo "+:${NEWUSER}:ALL" >> /etc/security/access.conf
}
CLEANUP() {
rm -f $HOME/${CONDA_PKGNAME}
rm -rf ${CONDA_INSTALLDIR:-/opt/anaconda}
sudo sed -i -e '/# >>> conda initialize >>>/,/# <<< conda initialize <<</d' \
/root/.bashrc
sudo groupdel sudo
sudo rm -f /etc/sudoers.d/sudo
echo "Deleting user: ${NEWUSER} and /home/${NEWUSER}"
read -p "Are you sure? yes|NO: " ANS case "${ANS,,}" in
yes)
sudo userdel ${NEWUSER} && \
sudo rm -rf /home/${NEWUSER} /var/spool/mail/${NEWUSER}
;;
*) echo "Nothing to do for user:${NEWUSER}"
;;
esac
}
case "${1,,}" in
version) VERSION ;;
help) USAGE ;;
cleanup) CLEANUP ;;
*) SETUP ;;
esac
使い方は次の通りです。
code: bash
# env NEWUSER=admin bash Bootstrap.sh
NEWUSER で指定したユーザがローカルに作成されます。