Carpe Diem

備忘録。https://github.com/jun06t

AWS

IAMグループのポリシーの管理

概要 IAMグループのポリシーをちゃんと役割に分けて管理しようという話です。 方針 admin, developer, operatorの3つの役割で分け、各グループに適切な権限を与えるようにします。 ただし パスワード変更 MFAの設定 は各IAMユーザができるようにします。 付…

AWSのCost Explorerをスクレイピングして毎日の利用料金をslackへ通知

概要 使っていないインスタンスが起動しっぱなしだったせいで、AWSの利用料がいつの間にか大きくなっていたことがきっかけです。 一方毎日CostExplorerを見に行くのも手間が多いので、slackに通知するようにしたいと思い作ってみました。 また環境構築が面倒…

TerraformでECSを動的ポートマッピングに

概要 以前ECSの記事を幾つか書きましたが、 TerraformでECS環境の構築 - Carpe Diem TerraformでECS環境の構築【オートスケール編】 - Carpe Diem 当時のECSは1インスタンス1コンテナにしないとポートが競合して同じ種類のコンテナを載せることはできませ…

ECSのオートスケール戦略

概要 ECSはコンテナのスケールアウトとインスタンスのスケールアウトのタイミングが重要です。 よく起きる問題としては インスタンスのスケールアウトが遅くてコンテナのスケールアウトも遅くなってしまう しきい値が不適切でインスタンスがスケールアウトせ…

CloudFrontのキャッシュでハマった話

概要 ブラウザのキャッシュ - Carpe Diem を検証している時に期待した挙動をしなくてハマったので、CloudFrontのキャッシュの動作と注意点をまとめます。 CloudFrontのキャッシュ動作 レスポンスヘッダのx-cacheを見ると以下の3つに区別できます。 x-cache …

SPAを S3+CloudFront で表示する方法

概要 AngularなどのSPAをS3+CloudFrontで表示する方法についてです。 要件 SSL/TLSを使いたい https://example.com/hoge のようなサブディレクトリのようなパスで403にならないようにしたい ↑のようなパスでもOGPがきちんと表示される リロードしても404にな…

S3 + CloudFrontにした時にハマったこと

概要 静的Webサイトを用意して、HTTPSでアクセスできるようCloudFrontを前に用意したのですがそこでハマったことをまとめます。 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 問題 SSL証明書を設定したのにERR_SSL_VERSION_OR_CIPHER_MISMATCHというエラーがでてペー…

うるう秒対応

概要 2017/01/01 09:00:00(JST)にうるう秒が挿入されますが、ちゃんと問題点や対応方法を理解してなかったのでまとめ。 うるう秒発生でどうなるか ntpを入れているか、tzdataが更新されているかによって動作が異なります。 JST ntp(stepモード) tzdata 未対…

Packerでソースに使う公式AMIの場所

概要 Packerでsource_amiとして使用する公式のAMIが探しにくいので、利用するものだけまとめました。 Ubuntu Ubuntu Amazon EC2 AMI Finder こちらで検索します。Searchのところに16.04などバージョンを入れれば出てきます。 その中でInstance Typeがややこ…

ECSでコンテナのrolling update

概要 ECS上のコンテナをダウンタイム0で更新(デプロイ)する方法をまとめます。 環境 ALB ECS container agent 1.13.0 Docker 1.11.2 Amazon ECS Container Agent Versions - Amazon EC2 Container Service ポイント minimumHealthyPercentとmaximumPercen…

TerraformでECS環境の構築【オートスケール編】

概要 TerraformでECS環境の構築 - Carpe Diemでは書いてなかったオートスケールについてです。 terraform 0.7からServiceでのオートスケールにも対応したので、それを使って構築します。 環境 Ubuntu 14.04 Terraform 0.7.3 実装 完成形はこちら github.com

TerraformでECS環境の構築

概要 ECSというコンテナのクラスタ環境構築のサービスをTerraformで作成してみます。 簡単のため、以下の設定はこのコードには含んでいません。 EC2インスタンスのオートスケール用のアラーム設定なし ECSのコンテナのオートスケールはなし(Terraform未対応…

ELB+nginxでbasic認証をかける方法

概要 開発環境では外部に見られないようにbasic認証をかけることが良くあります。 一方でELBのHealthCheckはbasic認証がかかったパスだと401エラーが返り、そのままだとOutOfServiceとなって接続することができません。 今回はそんな時の対応方法です。Nginx…

TerraformでAutoScaling環境の構築

概要 Terraformを使ってAutoScaling環境を構築します。 以下の状態をゴールとします デフォルト1台 CPUが30%超えたら1台増やす CPUが5%以下なら1台減らす 環境 Terraform 0.6.9 Terraform設定 セキュリティグループなどはTerraformでAWSのセキュアな構成…

TerraformでAWSのセキュアな構成を構築

概要 PublicSubnetとPrivateSubnetを切り分けてよりセキュアに構築する方法。 PrivateSubnetのインスタンスにSSHアクセスする場合は別途VPNを立てる形になると思いますが、今回は割愛させていただきます。 環境 Terraform 0.6.3 構成図とネットワークフロー …

Terraformでtarget指定の削除

概要 Terraformでインスタンスなどを削除する際、普段xxx.tfファイルの該当箇所削除してterraform applyで消してたんですが、あるとき消す順番の指定が必要になって「仕方ないから2回(消す順に)実行するかー」と思ってtarget指定したのですが、何故かterr…

Terraform で ELB の設定とインスタンス作成

概要 前回の続きです。ここまで来たら小規模ながらきちんとしたAWS構成を作れます。 環境 Ubuntu 14.04 Terraform 0.6.2 前提 Terraform でセキュリティグループを管理でVPC、サブネット、セキュリティグループの設定が済んでいる状態。 フォルダ構成 ├── co…

Terraform でセキュリティグループを管理

概要 セキュリティグループはAWS標準のファイアウォール機能です。 作成したセキュリティグループをEC2インスタンスやELBに設定することで反映されます。 今回はTerraformでそれを作成し、EC2に結びつけてみます。 環境 Ubuntu 14.04 Terraform 0.5.2 前提 T…

Packer で AWS の AMI を作成する

概要 AWSのAMIをPackerから作ります。基本的にAnsibleで使用するパッケージをインストールします。 簡単のためNginxだけインストールしたAMIを作ります。 Packerのインストールは「Packer で Virtualbox 用の VagrantBox を作成する」を参考にしてください。…

TerraformでAWSのVPCを設定

概要 TerraformでVPCの設定をします。 基本的な設定ですが、サブネットは一応AZを考慮して2つ作っています。 環境 Ubuntu 14.04 Terraform 0.3.7 設定 以下の設定で構築します。 VPC 設定項目 設定値 名前 vpc-1 ネットワークの範囲 10.0.0.0/16

AWS-CLIを使えるようにする

AWS

環境 OSX 10.10.2 Python 2.7.6 aws-cli 1.7.15 インストール pythonのpipが必要なのでインストールしてからawscliをインストールします。 $ sudo easy_install pip $ sudo pip install awscli 確認します。 $ aws --version aws-cli/1.7.15 Python/2.7.6 Da…