#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で接続できるようになるツール