#author("2020-11-19T11:00:33+00:00","default:wikiadmin","wikiadmin")
#author("2023-04-25T07:16:54+00:00","default:wikiadmin","wikiadmin")
-AWSを使うに当たって基礎知識まとめ

#ls2(AWS)

#contents

*料金概算 [#a4467f54]

**要注意 [#e29596c7]

-転送量がかさむもの
-課金APIが1コールで0.01ドルと詐欺的!
-最低課金単位が時間のもの(Redis,ELB)

**実測値 [#a9bbee78]

|ECS *1 + ALB 2H|0.06ドル|
|ECS *1 + タスク定義書き換えで数タスクを二回ほど|0.01ドルなので安いもんだ|
|AWS to 外部ネットワーク|1G 0.1ドル|
|S3保存料金|1G 0.1ドル|
|S3 5G取り出し|0.1*5 = $0.5|
|Elasticache Redis|2台構成で1時間単位なので最低2時間で0.05ドル|
|サーバー移行往復|0.4$|
|RDS Aurora最小構成|データインポートでIOPS利用の$0.36|


*無料枠について [#k9c60d59]

申し込み月の1年後の月末まで有効。

|AWS 2015|zag|使っていないので2017/04に削除だが、翌日新しいアカウントをnifty.ne.jpで作成しようとしたら重複と言われた|
|AWS 2016|gmail|ほぼ日本道路情報のブログだがあまり使ってない。S3移行しだい削除予定|
|AWS 2017|mb.infoweb.ne.jp|2017はこれ!|
|AWS 2018|mb.infoweb.ne.jp|2017はこれ!|


**無料枠経過後の作業 [#g1ce9641]

CloudFrontがCnameが共有しずらいので別のCNAMEを用意してそちらへ移行させる。
S3はbackup/AnsibleのチェックでOK
wikiがうまくいかなかったが、理由は「Forwarded Query String」がなかったため。

**無料枠経過後の従量課金状況 [#kc4328da]

-S3のbackupは週二回に減らした。
-CloudFrontは従来通り
-その他は使わない

上記で$2.5程度、うちCloudFrontが8割でこれを除去すればよいな。

**無料枠終了後も一定量は無料となるサービス [#y679d7a7]

-DynamoDB
-Lambda
-SQS
-SNS
-CodeCommit

**無料枠を辞めた時の概算 [#g0b9df3a]

-CloudFront 5GBで0.7$
-S3で5GBで0.125$

月1$程度なら継続するか(移行するのがめんどい)

*構成要素 [#n0f907a7]

以下を見れば一目瞭然だが、自分で噛み砕いて理解しておくこと

http://aws.clouddesignpattern.org/index.php/CDP:%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88#.E4.BB.AE.E6.83.B3.E3.82.B5.E3.83.BC.E3.83.90_-_EC2_.28Amazon_Elastic_Compute_Cloud.29

*Tips [#scd8eeb3]

|Terminate Protection|誤って削除されないように有効化をおすすめ|
|日本時間に変える|sudo cp /usr/share/zoneinfo/Japan /etc/localtime|
|yum updateでも日本時間のままにする|/etc/sysconfig/clockを編集しZONE="Asia/Tokyo"UTC=False|
|インスタンスメタデータの取得 instance_id|http://169.254.169.254/latest/meta-data/instance-id|
|インスタンスメタデータの取得 ipv4|http://169.254.169.254/latest/meta-data/public-ipv4|
|インスタンスメタデータを変数に格納|instanceid=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`|

*[[AWS コマンドラインインターフェイス>AWS/cli]] [#o596e2bf]

コマンドラインでAWSを操作するためのもの。aws 操作名のような感じで行う。

|aws s3 ls s3://mybucket|s3とローカルフォルダの比較|
|aws configure|CLIの設定。ID/KEY/REGION/formatを設定する。設定ファイルが~/.aws/configに作成される|

*SWAPの作成 [#qa2c54c3]

-swapが有効か否かを確認する

 swapon -s

**ファイルで作成 [#g88b89ae]

 sudo dd if=/dev/zero of=/swap bs=1M count=512
 sudo dd if=/dev/zero of=/swap bs=1M count=2048
 sudo mkswap /swap
 sudo chmod 0600 /swap
 sudo swapon /swap

http://qiita.com/na0AaooQ/items/278a11ed905995bd16af

-恒久的にswapファイルを設定するには/etc/fstabに追加

 sudo echo "/swap         swap          swap    default     0 0" >> /etc/fstab

*ボリュームの拡張(2017/02からオンラインでできるようになった!) [#qdbca2ec]


基本的にはAWS公式を参照せよ。AMIが作成できるのであれば、いったんAMIを作成しておき、起動時に容量を増やしておくのが良い。

+スナップショットの作成(時間かかる。6Gでも10分)
+スナップショットからEBSの作成(一瞬)
+インスタンス停止→EBSボリュームのデタッチ(2分)
+新しく作成したEBSをアタッチ(ルートデバイスの指定は以前と同じにしておく。/dev/sda1なら/dev/sda)。
+起動(エラーが出る場合はルートデバイスの指定が間違っている)
+resize2fs実施

resize2fs /dev/xvde1

*インスタンスタイプの変更 [#c41220bc]

+停止
+インスタンスタイプの変更
+起動

*後からインスタンスストレージを追加 [#fc64e25a]

+curl http://169.254.169.254/latest/meta-data/block-device-mapping/ 現状確認
+AMI作成
+起動時に指定

*AWSコンポーネント [#e1e750eb]

**[[AWS CloudWatch>AWS/CloudWatch]] [#w1c6331e]


**Amazon ElastiCache [#o5dc3f95]

-MemcacheやRedisなどのオンメモリKVSが用意されている。

redis-cliをつかって操作してみる。

**インスタンスストレージ [#aedc07c8]

物理ディスク。再起動では大丈夫だが、停止で失われる。利用シーンがあまり思いつかないが、スワップならOKかと。t1.micro/m3では利用不可能。


**RDS [#ce3fd6e9]

リレーショナルDB専用のインスタンス。起動・停止ができないので課金を節約したい場合は不向きだが、ワンクリックでDB構築ができるので便利。

**Route53 [#b38c16b2]

AWS提供のDNSサーバー。稼働率100%保障でダウンしたらサービスクレジットがもらえる。ALIASレコードというものが独自仕様で外向けにはCNAMEと同様に映る

**Kinesis [#a916b18f]

データストリーミング。現在無料枠はなく、シャードと呼ばれる最小処理単位の稼働時間で課金される。
秒間1M程度捌ける最小構成で月間14ドルほどなので結構かかるな。ElasticSearchServiceに簡単に流し込むことができ同時にS3バックアップも実行できる。

***プロデューサーとコンシューマー [#r8e324db]

SQSと同じようにデータを投入するプロデューサーとそのデータを処理するコンシューマーの作成が必要。
ElasticSearchServiceだと直接投入できるが、それ以外の場合は厳しいかもしれん


**Security Group [#zf5082c8]

仮想ファイヤーウォール。インスタンスに対して紐づける。デフォルトはノーガードだが、制限する場合は、プライベートだろうと設定しないとだめ。


**CloudFront [#qcbb08a9]

CNDキャッシュサーバー。立ち上がりに時間がかかる!


*IAMユーザーの作成 [#u4dc4551]

rootアカウントは何でもできてしまうので、IAMユーザーの作成を推奨。

*自動構築 [#q0d53ca5]

下にいくほど自由度が高い=難易度も高い。

-Elastic Beanstalk

デプロイとそれにまつわるリソース管理の自動化。開発、本番などの環境に合わせてデプロイ方式の設定ができたり、AutoScaleの設定をしてくれたりする。ELB,EC2,SGの設定などを個別にやるよりは楽なんじゃないだろうか!

-OpsWorks

Chefを利用した自動構築。

-CloudFormation

 JSON形式で構築作業を自動化できる。AWS-CLIよりはハードルが低そう。


*インフラ構築方法 [#o0bdc7da]

**AWS Elastic Beanstalk [#k81aa7f9]

http://www.slideshare.net/shimy_net/aws-elastic-beanstalk-23314834

** [#xf74ecb1]

** [#wd508472]



*構成案 [#x62d12d5]

Wordpressを分散するのはwp-contentディレクトリをNFSにするかrsyncしないとダメ。

*クラウドデザインパターン [#u01167dd]

http://aws.clouddesignpattern.org/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8

*アクセスライブラリ [#ac8f6750]

+JCould(AWSに限らず、OpenStackなども)

*DNAT [#f088919a]

-Destination NATの略。ポートが開けられない場合に80などを利用して、1521,3306,8080などに接続する。HTTPならProxy使えばいいのでDBやSSHなどに利用する。

 # Generated by iptables-save v1.4.18 on Thu Sep  3 10:21:16 2015
 *filter
 :INPUT ACCEPT [2107:162972]
 :FORWARD ACCEPT [0:0]
 :OUTPUT ACCEPT [1547:336490]
 COMMIT
 # Completed on Thu Sep  3 10:21:16 2015
 # Generated by iptables-save v1.4.18 on Thu Sep  3 10:21:16 2015
 *nat
 :PREROUTING ACCEPT [0:0]
 :INPUT ACCEPT [0:0]
 :OUTPUT ACCEPT [0:0]
 :POSTROUTING ACCEPT [0:0]
 -A PREROUTING -p tcp -m tcp --dport 受け側ポート -j DNAT --to-destination  NAT先PrivateIP:NAT先ポート
 -A POSTROUTING -j MASQUERADE
 COMMIT
# Completed on Thu Sep  3 10:21:16 2015

*メンテナンス記録(とある現場) [#rb0cf561]

+3/3 インスタンス障害で再起動
+5/5 再起動(5/16まで猶予あり)

*beanstalk [#mb9acc46]

Worker

*ツール [#z855307c]

-yoga

EC2にCUIで接続できるようになるツール

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS