CloudFrontとELBでSSLするときの502エラー

CloudFront(SSLあり) + ELB(SSLあり)な環境で、ときどきCloudFrontが502を返す現象が発生。

結論

CloudFrontのDNS(xxxx.cloudfront.net)に直接アクセスがきていた。アクセス元はbot。

  • xxxx.cloudfront.net/robots.txtにアクセスがくる
  • CloudFrontがELBにリクエストを送る
  • SSL証明書で登録してあるドメイン名と異なるので認証エラーとなる

っちゅーことでした。エラー自体は正しいけれど、WAFとかで防ぐしかないのかなぁ。

boto + python2.7環境でS3へのSigV4アクセス

S3へのSigV2アクセスが終わっちゃいますね。
https://dev.classmethod.jp/cloud/aws/s3-sigv2-abolition/
boto(not boto3)を使っている環境でSigV4になるように修正しました。

1. botoのバージョンを最新にする

pipで最新版をインストールしましょう。

1
pip install boto

2. /etc/boto.cfgを書く

1
[s3] use-sigv4 = True

基本はこれでOK。ただ、一部メソッドは明示的に書き換える必要があるようで、具体的にはS3Connectionを使ってると以下のようなエラーが出ます。

1
2
boto.s3.connection.HostRequiredError: BotoClientError: When using SigV4,
you must specify a 'host' parameter.

なので明示的にhostを書いてあげます。リージョンは合わせたほうがよいかも?(よくわかってない

1
S3Connection(host='s3-ap-northeast-1.amazonaws.com')

とりあえずできたっぽいのでよし。

CloudFrontのエラーキャッシュ

背景

S3 + CloudFrontな静的Webサイトで、CloudFrontの5xxエラー率が上昇。

結論

CloudFrontのアクセスログを出していたので確認。推測だけど、

  • /favicon.icoとか、/appleなんちゃらへのアクセスがたまたま500エラーになる
    • こいつらたぶん同じタイミングでどばっとアクセスされるからS3が一瞬機嫌悪かっただけで全部500になる???
  • CloudFrontで5xxエラーとしてキャッシュされる
  • CloudFrontのエラーキャッシュはデフォルト5分なので、5分間同アクセスがエラーになる
  • iphoneからとかのアクセスが多かったら/appleなんちゃらへのアクセスも必然的に多くなるのでエラー率が上昇する

ということかな、と。解決策としてはCloudFrontのエラーキャッシュ時間を短くすることくらいか。S3に配置してる静的ページなのでそれで問題ないと思われる。

SQSをVPC Endpointから使うときにハマった話

VPC Endpointを使うとセキュアだったりAWS内部で通信が完結したりいいことずくめです。最近SQSをVPC内のLambdaから利用することがあったときにハマったメモです。

結論

SQSのVPC Endpointを利用するときは、

1
client = boto3.client('sqs', endpoint='エンドポイントのDNS')

こんな感じでエンドポイント名を明示的に指定しないとダメ。エンドポイントのDNSというところは、作っておいたSQSのVPCエンドポイント見に行ったら書いてある。ゾーンごとにDNS切られてたり、東京リージョンの場合はsqs.ap-northeast-1.amazonaws.comでたぶんどのゾーンからもアクセスができる(と思われる)。

JAWS DAYS 2019に参加してきました

去年はいち参加者として、今回はスタッフとして。
去年の感想はこちら
JAWS DAYS 2018に参加して分かった、エンジニアとバンドマンの関係

スタッフとして

JAWS FESTAに続いてスタッフとして参加、セッションオーナー担当でした。
FESTAんときよりも規模がすごいので気を回さないといけないことも多く
もう少し人の誘導とかできればよかったかなというのが個人的な反省。

参加者として

この場で得たことをINPUTして終わりではなくて、
こうしてブログを書いたり、業務に取り入れてみることで
初めて参加した意味が出てくるので、気になった話は
自分でも調べつつ早速業務に取り入れていかないと。
JAWSのイベントはAWSを扱う自分の仕事柄、業務を見直すきっかけが多くあると思っていて
あの機能使ってみよう、とか、知らない便利ソフトを知れるという意味でとても有意義。
今回見て気になった話は以下

  • SSHしない
  • Well Architected
  • EKS用のプラグイン(業務では使わないだろうけど)

フェスとして

去年は音楽フェスになぞらえましたが
どっちにしろお祭りには変わりなく
今年は知り合いも増えたのでより楽しめました。
普段会えないはずの仕事上のお客様にも会えたりして
面白いつながりができたなぁ。
あと、村主さんにAWS資格勉強本をいただきました。神。
最短突破 AWS認定ソリューションアーキテクト アソシエイト 合格教本
ファンの方からサインを求められてもかっこいいサイン書いてはった。神。

ぽえむ

部活内の演奏会はやったし、
部活外のオリジナルバンドも始めている。
じゃあそろそろ地域のハコでライブしないとなぁ。
セットリストを考えておかないと。

まめ

コンテナの勉強してるんでコンテナアプリ作ろうと思ってしこしこ作ってました。

勉強会用タグ付きツイート量産クライアント

鳩に豆鉄砲喰らわせる、の意で、「まめ」という名前に。

概要

  • flask(python3)アプリ
  • nginxとuwsgiの2つのコンテナをセットで利用
    • k8sでいうところのpodをイメージ
  • やることはTwitter連携と投稿
    • ただのラッパ
    • タグを最初に指定しておけば勝手につけてくれる
  • ドメインもとった
    • gunofma.me
    • 豆の銃
    • ecs.gunofma.me とか eks.gunofma.me とか

進捗

  • とりあえずECS(Fargate)で動くところまでできた
  • ソースはちょっとリポジトリの分け方とか決まってから…

やりたいこと

ハマったこと

  • モジュールの分け方
    • 本当はtwitterとの通信は別コンテナにすべき?
    • ややこしかったので今回はviewに組み込み
  • uwsgi is 何
    • pythonアプリのお作法的なところもあまりわかってない
    • nginxもよく知らない
  • twitter callback urlでよく死ぬ
    • 単純に設定間違いとか、twitter側に登録できてなかったとか

よくわかってないこと

  • セッション管理
    • ECSで組む場合はElastiCacheと連携したほうがいいのかなぁ
    • 今はコンテナ1つだからいいけど。ALBのStickySessionもアリ?
    • k8sはserviceの設定でいい感じにしてくれるらしい
  • 全体的なお作法
    • アプリのディレクトリ構成
    • ソースリポジトリの分け方
    • ローカルでのdocker build
    • 秘匿情報の外だしのやりかた

Helixその後

もげた

  • 左手側もげました
  • 右手側に挿せばいいんじゃね
  • キー配列が左右反転する…だと
  • USBんとこ買い直し
  • でもガッチリはんだづけしてるので取るのめんどい
  • 基盤からやり直すかーポチ
  • https://gist.github.com/unak/b2defbcb830c579c28276318e0e616cf
  • よくよく考えたら配列はソフトウェアで制御してんだから…
  • 基盤とUSB microが余る←いまここ

Helixビルドログ

あとhexoのテストも兼ねる

結論

  • LEDなしだったらはんだ素人でもなんとかなる
  • 結構時間をとられたけどモノはよくて満足
  • ここからが本当の沼の始まり

失敗したこと(ハマったこと)

  • LEDの方向を間違えていてPCにつないだときに認識されなかった
    • 間違ってたやつ全部外して解決
    • つけ直す時間が惜しかったので左側は中途半端、右側は最初からLEDなし
  • やっぱり4行がいいかなっつって無理やり4行にしたこと
    • アクリル板が中途半端になった
  • 機材不足(はんだ吸い取り線、やすり)
  • ピンジャックのはんだが甘く、左右つないだときだけ片方動かなかった
    • 片方ずつUSBに挿したら動いたのでそこから推測

ビルドログ

途中経過は残っていないので、これを見たら作れる!っていうサイトを紹介します。

さいごに

正直新しいキーマップになれるのに大変で新年早々生産性が下がりそう。でも頑張ろう。

この記事はHelixで書きました!!!

JAWS FESTA 2018

感想

帰属することがモチベーション」を体験できた一日でした。今後も積極的に参加します。

タイムライン

  • 07:35:家を出発(チャリで
  • 08:00:駐輪場難民になりつつ到着。搬入、会場設営のお手伝い
  • 10:30:あっという間に開会。基調講演を見て、お昼
  • 12:00:受付業務
  • 13:00:キーノート拝聴
  • 14:00:Bトラックセッションオーナー〜ブースサポート〜Aトラックセッションオーナー
  • 18:00:あっという間に閉会、写真撮影、撤収
  • 18:30:懇親会、名刺交換タイム
  • 20:30:撤収

各セッション

今回はスタッフしてたのでつぶやきもほとんどせず。

  • 基調講演
    • JAWSUGという組織について、というか良い組織のあり方についてというか、色んな所に当てはまることだなと
  • キーノート
    • 実はあんまり聞いてなかった…
  • JAWS-UGのご案内
    • 山下さんより。各支部の紹介、JAWS DAYS2019のお知らせ!
  • [EKS / コンテナ] k8sを使ってリアルタイム価格予測システムを運用している話
    • 価格予測システムの概要とk8sの使い方について
  • 株式会社NTTスマイルエナジー
    • オフィスがgoogle的な今風
  • [MicroService] 数千イベント/sをServerless x Microserviceで捌く
  • [運用 / SRE] AWS Amplify で超加速するフロント開発最前線
    • Amplify知らなかったけどモダンな開発を確かに加速してくれそう
  • [EKS / コンテナ] Kubernetes界隈のpassionate (熱量)伝えます
    • コンテナとは〜というところから界隈の事情を丁寧に解説されてました
    • 紹介されてた本読もう
  • マルチクラウドで実現するデータドリブンEコマース基盤
    • 各クラウドのいいとこ取りしたらいいよ、意外と連携も楽だよってお話

また資料とかは見直しておきたい。そしてk8sの勉強再開したい。

雲勉:大阪【もくもく会】Kubernetesもくもく会に参加しました。

Kubernetes初心者ですが、参加してきました。みんなで集まって黙々とk8sのチュートリアルやったり、東京で同刻開催されていたk8s meetupの生中継流したり、実際の運用についての意見交換があったりしました。

知見

  • KubernetesチュートリアルはHello Worldで終わるものが多い
  • クラスタ作るだけならGKEでサクッとできてしまう
  • meetupの内容は濃い。みんなついていけなかった模様
  • 監視ツールもセットで覚える Ex: datadog
  • rancherが2.0発表とのこと。こちらも要チェック

感想

  • いろんな知識レベルの人が集まっていてちょうどよかった
  • 同じことに興味を持っている人との繋がりができてよかった
  • とりあえず上司命令なのでもっとk8s勉強します