EC2 インスタンスタイプ比較

インスタンスタイプはさまざまな CPU、メモリ、ストレージ、ネットワークキャパシティーの組み合わせによって構成されているため、アプリケーションのリソースとして適切な組み合わせを柔軟に選択できる。

要件に応じてリソースをスケールできる。

T3…T3 インスタンスは、ベースラインレベルの CPU パフォーマンスを実現する次世代の汎用バーストインスタンスタイプで、いつでも必要に応じて CPU 使用率をバーストさせる機能を備えている。
T3 インスタンスは、コンピューティング、メモリ、ネットワークの各リソースのバランスが良く、幅広い汎用ワークロードに適している。
ベースラインのしきい値下でワークロードが動作しているときに CPU クレジットを蓄積
– CPU クレジットと、一貫したベースラインパフォーマンスによって制御されるバースト可能な CPU
– ピーク時のパフォーマンスを確保するUnlimited モード (デフォルト) と、毎月のコストを予測できる標準モードオプション
– AWS Nitro System と高周波のインテル Xeon スケーラブルプロセッサにより、T2 インスタンスに対して最大 30% の価格パフォーマンスの向上を実現

T2 インスタンスは、ベースラインレベルの CPU パフォーマンスを提供し、ベースラインを超えてバーストする機能を備えているバーストパフォーマンスインスタンス
ワークロードに必要とされる限り、高い CPU パフォーマンスを維持できます。ほとんどの汎用ワークロードについて、T2 Unlimited インスタンスは追加料金を一切生じることなく十分なパフォーマンスを提供
– 高クロックのインテル Xeon プロセッサ
– CPU クレジットと、一貫したベースラインパフォーマンスによって制御されるバースト可能な CPU
– 最も低コストな汎用インスタンスタイプであり、無料利用枠の対象*

M5 インスタンスは、最新世代の汎用インスタンス
このファミリーでは、コンピューティング、メモリ、ネットワークの各リソースがバランスよく提供されるため、多くのアプリケーションに適している。
– インテル Advanced Vector Extension (AVX-512) の新しい命令セットを搭載した、インテル Xeon® Platinum 8175 プロセッサ (2.5 GHz)
– さらに大きなインスタンスサイズ m5.24xlarge で、96 コアの vCPU と 384 GiB のメモリを提供
– 拡張ネットワーキングを採用した最大 25 Gbps のネットワーク帯域幅

M4 インスタンスでは、コンピューティング、メモリ、ネットワークの各リソースがバランスよく提供されるため、多くのアプリケーションに適している
– インテル Xeon® E5-2686 v4 (Broadwell) プロセッサ (2.3 GHz) またはインテル Xeon® E5-2676 v3 (Haswell) プロセッサ (2.4 GHz)
– デフォルトで EBS 最適化、追加料金なし

各 vCPU はインテル Xeon コアのハイパースレッド
インスタンスタイプによって使用しているプロセッサーが違いますね。

AWS auto scaling

EC2からauto scaling groupを押下します。

get started を押下後、Amazon Linux 2 AMIを選択します。

public ip addressを各インスタンスに割り当てる。

セキュリティグループの設定

auto scaling groupの詳細設計

auto scaling group

ec2でpythonにpost

[ec2-user@ip-xxx-xx-xx-xx app]$ python -V
Python 2.7.14

[ec2-user@ip-xxx-xx-xx-xx app]$ python35
Python 3.5.5 (default, Apr 25 2018, 23:51:32)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>>

python2系だからか?
usr/binを見ます。

うまくいきませんね。
他の方法を試してみましょうか。。

AWS https通信で位置情報を取得する

AWSに入ります。

__| __|_ )
_| ( / Amazon Linux AMI
___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
21 package(s) needed for security, out of 31 available
Run “sudo yum update” to apply all updates.

cyberduckでも入ります。

index.phpをつくります。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>位置情報取得サンプル</title>

  <script>
    // Geolocation APIに対応している
    if (navigator.geolocation) {
      alert("この端末では位置情報が取得できます");
    // Geolocation APIに対応していない
    } else {
      alert("この端末では位置情報が取得できません");
    }

    // 現在地取得処理
    function getPosition() {
      // 現在地を取得
      navigator.geolocation.getCurrentPosition(
        // 取得成功した場合
        function(position) {
            alert("緯度:"+position.coords.latitude+",経度"+position.coords.longitude);
        },
        // 取得失敗した場合
        function(error) {
          switch(error.code) {
            case 1: //PERMISSION_DENIED
              alert("位置情報の利用が許可されていません");
              break;
            case 2: //POSITION_UNAVAILABLE
              alert("現在位置が取得できませんでした");
              break;
            case 3: //TIMEOUT
              alert("タイムアウトになりました");
              break;
            default:
              alert("その他のエラー(エラーコード:"+error.code+")");
              break;
          }
        }
      );
    }
  </script>
</head>
<body>
  <h1>位置情報取得サンプル</h1>
  <button onclick="getPosition();">位置情報を取得する</button>
</body>
</html>


wow, 緯度経度が取れました。※渋谷にいます。
httpsならいけるんですね。
リダイレクトで取得するとすると、地域はやはりipアドレス + geo liteでしょうね。
問題は年齢、性別をどのように取得するか。
まずは、アドセンスの仕組み解析からでしょうか。
アドセンス、ASPのタグの中身を見ていきましょう。

AWSのELBとクライアント間でhttps通信

概念図はこちら

※AWSのアイコンにも少し慣れてきました。

以下のパターンで実装できるとのこと
1.AWSの証明書管理サービスであるACM(AWS Certificate Manager)発行のもの
2.シマンテックなどの外部CAで発行したもの

AWSコンソールにログインします。
セキュリティ、アイデンティティ、コンプライアンスに、Certificate Managerがありますね。
こいつか!?

流れとしては、
1. Route 53にサブドメイン作成
2. ACM証明書設定
2.1. ACMから証明書発行
3. EC2インスタンス作成
4. ELB作成
5. 動作確認

サブドメインですか?
一応、Elastic IPを設定して、EC2とRoute 53は既に作成済みです。

ELBとは?
Elastic Load Balancingですね。

ec2でpython3のcrontabの設定

[ec2-user@hoge ~]$ crontab -e

毎時10分に実行とします。

10 * * * * cd /var/local/amedas; /usr/bin/python3 app.py

[ec2-user@hoge ~]$ crontab -e
crontab: installing new crontab

さあ、反映されるかな。しかし、実感値としては、pythonはvagratよりec2の方がサクサク動きますね。

おおおおおおおおおおおおお、ちゃんと自動で実行されてますね♪

ec2にpython3をインストールする

puttyでec-2にログインして、localでpython app.pyと打つ

[ec2-user@ip-hoge amedas]$ python app.py
File “app.py”, line 18
SyntaxError: Non-ASCII character ‘\xe4’ in file app.py on line 18, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
[ec2-user@ip-172-31-24-16 amedas]$ python app.py
Traceback (most recent call last):
File “app.py”, line 1, in
import urllib.request
ImportError: No module named request

あら、python2系だと駄目のようです。
yum listでPython3がコレクションされているのがわかります。
$ yum list | grep python35
mod24_wsgi-python35.x86_64 3.5-1.25.amzn1 amzn-updates
python35.x86_64 3.5.5-1.12.amzn1 amzn-updates
python35-devel.x86_64 3.5.5-1.12.amzn1 amzn-updates
python35-libs.i686 3.5.5-1.12.amzn1 amzn-updates
python35-libs.x86_64 3.5.5-1.12.amzn1 amzn-updates
python35-pip.noarch 9.0.3-1.26.amzn1 amzn-updates
python35-setuptools.noarch 36.2.7-1.33.amzn1 amzn-main
python35-test.x86_64 3.5.5-1.12.amzn1 amzn-updates
python35-tools.x86_64 3.5.5-1.12.amzn1 amzn-updates
python35-virtualenv.noarch 15.1.0-1.14.amzn1 amzn-main

入れていきます。
$ yum install python35-devel python35-libs python35-setuptools
$ /usr/bin/easy_install-3.5 pip

もう一度コマンドを打ちます。

wow はや
[ec2-user@hoge amedas]$ python3 app.py
finish

ec-2でもpython35が実行されているのがわかります。

index.html, style.cssものせると、awsにのりました。

ec2でgit

$ git version
git version 2.14.4

共有リポジトリをつくる。
bareリポジトリは、ワーキングコピーを持たないリポジトリ
sharedオプションをつけないと,ファイルパーミッションが無くてpushできなくなってしまう

mkdir test.git
cd test.git
git --bare init --shared
git clone ../git/test.git

git remote add origin
git push -u origin master

$ git push origin master
The authenticity of host ‘()’ can’t be established.
何!?

ec2のtimezoneをJST-9に変更

バックアップを取りながら進めます。拡張子は皆さんに習って.org
sysconfig/clockは、ZONE=”Asia/Tokyo” UTC=falseにします。

$ date
Sat Jun 23 23:02:34 UTC 2018
$ strings /etc/localtime
TZif2
TZif2
UTC0

$ sudo cp /etc/localtime /etc/localtime.org
$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ date
Sun Jun 24 08:04:10 JST 2018

$ sudo cp /etc/sysconfig/clock /etc/sysconfig/clock.org
$ sudo vi /etc/sysconfig/clock

OK♪

$ strings /etc/localtime
TZif2
TZif2
JST-9

ここから、crontabを編集
binはcyberduckで一応かくにんしておく。/usr/bin/php

00 02 * * 5 cd /var/local/device/ ; /usr/bin/php -q index.php

:wqで保存して、crondを再起動

$ sudo service crond restart
Stopping crond:                                            [  OK  ]
Starting crond:                                            [  OK  ]

OK! ec2からhotmailへ毎週、週間スマホ売上ランキングが飛んでくるようになりました。
hotmailでは、spamは扱いですが、まあいいとしましょう!
シャーディー♪