まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

AWS

ALBでhttpをhttpsにリダイレクトできるやつが便利だった

AWS

今まではnginxでリダイレクトさせてた こんな感じでhttpでアクセスしてきたらhttpsにリダイレクトするっていうのをnginxの設定で書いてました。 if ($http_x_forwarded_proto != https) { return 301 https://$host$request_uri; } これで困るのは ALBからの…

ECSでAWSコンソールに入って見てたような情報をCLIでインタラクティブに見れるやつを作りました

AWS

github.com インタラクティブにECS ServiceにデプロイされてるImageの一覧が見たいとき こんな感じで$ ecswalk servicesと打つと、jとkで選んだり、/を押してpecoみたいにinteractiveでfilteringして選ぶこともできます。 AWSのコンソールで見たときの情報と…

ap-northeast-1dでは起動できるインスタンスタイプが限定されている

AWS

spot instanceをリクエストするとbad-parametersと言われてしまう c3.xlargeのインスタンスをone-timeのspot requestをしようと思っても以下のようなエラーが出て失敗する。 bad-parameters: Your Spot request failed due to bad parameters. Spot request …

AWS Route53を使ってDNS-01でLet's Encryptの証明書を取得する

DNS-01方式 HTTPを利用して認証する場合に、IP制限や社内のみの通信などの制限をしている環境においてはLet's Encrypt側からの通信が届かないので認証できません。そこでDNSのTXTレコードで認証するDNS-01のタイプがあります。 こちらのサイトの説明がわかり…

re:Inventでコネクテッドカーのworkshop受けてきた

AWS

今流行りのコネクテッドカー https://recruit-mp.qiita.com/_mpon/items/cc5a957f029c3902ddcb と同じようなworkshopというやつで、Deep Dive into the Connected Vehicle Reference Architectureというやつも受けた。 これも、名前につられてノコノコと参加…

re:Inventでゲノム解析のワークショップ受けてきた

AWS re:Inventでのworkshopとは? 2時間ぐらい使って実際にAWS上でなんらかの処理をするやつです。 今回、ぼくがやったのは、High-Throughput Genomics on AWSという、 ゲノム解析をAWS上でやるというやつでした。なんかECSって書いてあったからノコノコと参…

WordpressをAmazon ECSで冗長化する

wordpressを動かすには何が必要か まずwordpressを動かすために何が必要かを整理すると、wordpressはMySQLとphpが動く環境が必要です。 なので本当に必要なものはDBサーバーとWebサーバーだけなんだけど、実際の本番運用してくとしたら画像のキャッシュとかD…

datadogでrecoverdされない問題をサポートに聞いたら色々教えてくれた

alert出た後にrecoverされない alertが通知されたけど、その後、recoverdが来ないという現象 次の日になってrecoverされた これはなんかやり方があるだろうとdatadogのサポートに連絡 原因 サポートの回答 > AWS Cloudwatch doesn't generate a metric value…

terraformでECSのクラスタ、サービスのモジュールの構成を変更した

terraformでECSのclusterとserviceを作成するにあたって実際の運用を通して少し変わってきたのでまとめておく。 最初のterraformのmodule構成で起きた問題点 以前は、aws_ecs_clusterとaws_autoscaling_groupを同一moduleにおいていた。 問題その1: インスタ…

Spot Fleet化するまでにはまったところと工夫した点

AWS

入札するインスタンスタイプとストラテジー spot fleetの分散ストラテジーには、lowestPriceとdiversifiedがある。lowestPriceはその時点で入札を入れたプールの中で一番最安値のやつで全台購入する。なので、そのプールが高騰したときに弱い。 じゃあ、dive…

AWS Spot Fleetでインフラ作ったら安すぎたので本当は内緒にしておきたい話

会社で昔発表したやつを汎用的な感じにして残しておきます。 EC2のお値段が性能そのままに8割お安くなりましたという話 Spot Fleet前のAWSのECSでクラスター構成について クラスターのEC2インスタンスはオンデマンド(定価)のautoscaling Docker化でスケー…

ECSの概念を理解しよう

社内でインフラエンジニア増やしたいなと思ってECSの概念を理解してもらおうと思って書いたやつです。 問題を間に挟みつつ理解の手助けになればいいなと思ってます。 今更ですがDockerとは? 分かってる人はもううんざりかもしれませんが、一応復習。ECSの概…

ECSのlogdriverにawslogsを指定した場合はawslogs-stream-prefixをつけたほうがいい

awslogs-stream-prefixをつけない場合 log stream名が "${docker psのCONTAINER ID}${randomな文字列}" となる。 これだと、例えば、あるコンテナのログだけ見たいっていう場合に、sshログインして、docker psしないといけない awslogs-stream-prefixをつけ…

Cloudwatch Logsが簡単便利安いだった

事の発端 Railsのlogrotateされたあとのファイルをどこに保存しようかと迷ったのがきっかけでした。 fluentdなどでS3に保存していくとか作るかーと思ってたんですが、社内のメンバーに相談してみたところAWSのCloudwatch Logsで簡単にできるよとのことで、調…

fluentdのS3 output pluginでは権限に注意しよう

現象 fluentdが集めてきたログをS3にputしていたつもりが、全体のうちの1/3ぐらいしかputされずそれ以外がロストしていたという話です。 調べてみると・・エラー吐いてた fluentdのヘルスチェックとかは確認していて、fluentdが死んでいる様子はない。 S3に…

AWSのRoute53でpublic/private zoneの名前のつけ方に注意

AWS

Route53のzoneの名前を同じにしていると・・ Route53では、外部公開用のpublic zoneとVPC内に閉じたprivate zoneで、それぞれレコードを登録することができます。 しかし、public/privateなzoneでdomain nameを同じにするとpublic zoneの名前が引けなくなっ…

crondはtimezone変えただけだと反映されない

AWS

cronはUTCのまま JSTにタイムゾーン変更したときに、crondをrestartしないと実行がUTCのままでした。 service crond restart で反映しました。 参考: Timezoneを設定したらcronの実行時間がずれる EC2の初期スクリプトとかでrebootいる? AWSのEC2のuser dat…

AWSのEC2でRetire Notificationというのがきた

AWS

まとめ 突然EC2インスタンスが故障して、1時間後ぐらいにAWSからそのインスタンス修復不可能だからretireさせるよという通知がメールで来ました。 stopさせようにもstoppingでなかなか進捗しなかったので、開発環境だったからterminateしたけど、terminateも…

【AWSしかやったことない人向け】AWSとGCPのネットワークの違いを理解してみよう

AWS

背景 AWSでVPC作ったりしたことあるけど、GCPやったことないって人は色々違いに戸惑う アカウントの関係性、ネットワークの概念の違いなどを理解したのでまとめた AWSとGCPのアカウントの考え方の違い AWSの場合、ある人間に対して色々なAWSアカウントが付与…

AWSのロードバランサーあたりのセキュリティーグループ制限がさくっと緩和できなかった

AWS

http://docs.aws.amazon.com/ja_jp/general/latest/gr/aws_service_limits.html#limits_elastic_load_balancer ロードバランサーあたりのセキュリティグループ 5 ご担当者様 平素よりお世話になっております。 AWSカスタマーサービスの藁品でございます。 折…

awsのsecurity groupにはルールの上限がある

AWS

IPアドレスをたくさん追加しようとしたら:scream: 各拠点のIPアドレスを追加してほしいという依頼で、terraform planで問題なかったので、applyしたらエラーが出た。 * aws_security_group.elb_app: Error authorizing security group ingress rules: RulesP…

aws_security_groupのdescriptionはupdateできない

AWS

descriptionを気軽な名前で作ってしまって、あとでちょこっと変更したいなーと思って terraform planするとforce new resourceになってしまう。 ドキュメントにも書いてあった。 AWS: aws_security_group - Terraform by HashiCorp description - (Optional,…

ECSでの動的なネットワークポートマッピングとfluentd

AWS

固定ポートだとインスタンスの数以上にコンテナが増やせない ECS上でfluentdを複数コンテナで動かして集約サーバーとして動かそうとしている。 最初だから試しにautoscaling groupで1つのインスタンスだけ立ち上げて、コンテナを2つ(desired count = 2)なサ…

fluent-plugin-s3でなかなかs3にアップロードされない

AWS

github.com time_slice_formatの値をexampleに従って、%Y%m%d-%Hにしたんだけど、なかなかs3にアップされない。 buffered_pathには吐かれてるんだけどなかなかS3には上がってこない。 instanceのpoliciyかなーとかs3のbucketのpoliciyかなーとか色々迷ってて…

ECS(Amazon EC2 Container Service)がなんなのかやっと理解できてきた

AWS

いざ自分で一から作ってみると・・・ 今まで人が作ったECS上でサービスの作成とか更新とか、タスクの更新とかやってきてなんとなく使えてたけど、 いざ自分で一から作ってみるとそれぞれの要素がどうなってるのか何も分かってないことに気づいた。 今まではE…

IAMのロールとかポリシーとか分からない人

AWS

私です。 公式のこれが分かりやすい docs.aws.amazon.com

sts:AssumeRoleとは

AWS

AWS STSが分からなかった AWS Security Token Serviceのこと。 aws stsでググると このドキュメントが出てきてざーっと読んでなんかCLIしたいときに使うのか?みたいなぐらいでしっくりこなかった。 docs.aws.amazon.com EC2サービスを信頼するという概念 こ…