woshidan's blog

そんなことよりコードにダイブ。

Hadoop3.1.1でs3a://ファイルシステムを利用する場合の環境構築をしてみる

今日はHadoopのファイルシステム(特に、s3を利用するもの)についてすこしおさらいしてから表題の環境構築をしてみます。 Hadoopのファイルシステム Hadoopは抽象化されたファイルシステムの概念を持っていて、その実装に HDFS Hadoop上で利用される分散ファ…

Hadoop 3.1.1をインストールしてPseudo-Distributed Modeで動かしてみる

Javaと環境変数のセットアップ $ sudo yum install java-1.8.0-openjdk [ec2-user@ip-172-31-16-244 ~]$ sudo update-alternatives --config java There are 2 programs which provide 'java'. Selection Command -----------------------------------------…

Hadoop 3.1.1をインストールしてLocal Modeで動かしてみる

今日は https://qiita.com/Esfahan/items/39fd1e2f8b755eacec65 http://www.atmarkit.co.jp/ait/articles/0902/27/news129_2.html http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html あたりを参考にしつつHadoop…

Linuxにrbenvをインストールし、rbenvでRubyを入れ、mysql2のgemを入れるまでのメモ

ちょっとたくさんのインスタンスからMySQLにクエリを投げたいことってありますよね? というわけで今日はRubyでMySQLに接続するコードを書く前段階として表題のEC2上で環境構築の素振りをします。 TL;DR rbenvおよび、rbenvのプラグイン ruby-buildはGitHubか…

CSVからCSVを作るためのシェル芸のいくらかについてメモ

列の順番を入れ替えたい awkを使えばよい。 aaa,ddd,fff,bbb,ccc,eee のような行があったとき、 aaa,bbb,ccc,ddd,eee,fff のように列を入れ替えたいとすると $ echo 'aaa,ddd,fff,bbb,ccc,eee' | awk -F ',' '{ print $1 "," $4 "," $5 "," $2 "," $6 "," $3…

Capistranoでぺらいち未満のWebサイトをデプロイしてみます

今日はRubyで書かれたビルド・デプロイ作業の自動化フレームワークのCapistranoにさわってみます。 Capistranoでできること 最初に、入門 Capistrano 3 ~ 全ての手作業を生まれる前に消し去りたいを読めばいいという話ではあるんですが、Capistranoでできる…

Terraformで検証用インスタンスを立ち上げるのに使う最低限の作業についてメモ

検証用の環境作るとき、微妙に設定をいじって立て直す、その後複数台で動かしたい、みたいな場合はTerraformでやったりします*1。 そのとき、共通でやる作業についてメモしておきます。 共通 変数設定など アプリごとにパスフレーズなしの認証鍵を使い捨てで…

ecs_deployのecs_auto_scalerにPRを出すときに環境構築をがんばったよ、というお話

先日、 ecs_auto_scaler にPRを出してマージされてしばらく運用して問題なさそうので今日はちょっと自慢をします。 ecs_auto_scaler そのものについては前回の記事でふれたのでそちらをご参照ください。 woshidan.hatenablog.com 複数のサービスが連携させて…

ecs_deployによるECSのオートスケーリングとAWSのECSによるオートスケーリングの違いについて

今日は会社で管理しているOSSの一つ、ecs_deployに関連する話をECSの復習がてらします。 TL;DR ecs_deploy gemでは、ECSへのデプロイに関するCapistranoタスクの定義とECSのオートスケーリングを行うスクリプトが入っている ECSのオートスケーリングはAutoSc…

ssh-agentでsshコマンドで認証鍵の指定を入れなくていいようにしたりログイン先のサーバに認証鍵の情報を転送したりする

TL;DR ssh-agent bash で ssh-agent を起動して ssh-add /path/to/secret_key することで ssh コマンドで認証鍵の指定やパスフレーズの入力が省略できる ssh-agent はOpenSSHの認証エージェントで、認証エージェントの「転送」により、ローカルで動いている…

CloudWatchにさわってみたときのメモ(カスタムメトリクスのパブリッシュ、アラームの設定)

とりあえず今日はCloudWatchの復習で。 CloudWatchはAWSのモニタリングや監視のためのサービスで、EC2など各種AWSのサービスを動かすと自動的にCPU利用率などのメトリクスを取得してくれる他、AWS CLIなどを利用してカスタムメトリクスを送ることも可能です…

EC2インスタンスをECSの特定のクラスタに所属させる

今日は、EC2インスタンスをECSの特定のクラスタのコンテナインスタンスとして登録するために必要なものについてまとめておきます。 EC2インスタンスがECSのコンテナインスタンスになる仕組み ECSのコンテナインスタンスはecs-agentが動作していて、ecs-agent…

IAMのロール、EC2インスタンスやECSのタスクに対するロールについてメモ

今日はIAMのロールについて復習しようと思います。 TL;DR 特別な作業をする時だけふだん使わない権限を一時的に使いたいときは、IAMロールの出番 IAMロールの使い方 IAMロール自体を作成し、 誰がそのロールを利用できるのか、を記述した信頼ポリシー と 「~…

Terraformで外部の設定ファイルから設定を読み込む(file, template_file, template_cloudinit_config)

今日はとりあえずTerraformのTemplateプロバイダーを少しさわってみようと思います*1。 TerraformのTemplateプロバイダーには、データリソース*2として template_file template_cloudinit_config リソースとして template_dir*3 がありますが、今回は templa…

terraformのmoduleの基本的な使い方を試しました

あれもこれもやらなくては~と思っていたらどれにも手がついておらず結構ガッカリですが、ひとまず今日はterraformのmoduleの基本についてまとめておきます。 TL;DR terraformがビルドに使うのはカレントディレクトリにある.tfファイル moduleで他のディレク…

Application Load Balancer(ALB)のコンポーネントについてメモ

先週、CLBではできなくてALBでできるようになったいくつかのことについてメモしました。 今週は、その記事に出てきたリスナーグループ、ターゲットグループといったALBの各コンポーネントに対し、そのコンポーネントを作成することで何を設定しているのかに…

ALBでできるようになったコンテントベースルーティングとALBと連携したECSの動的ポートマッピングについて

ELBとCLBとALBの違い AWSのロードバランサで検索すると、ロードバランサを指す言葉に、ELB, CLB, ALBの3種類がでてきます。 この3種類の違いは、 ELB ... Elastic Load Balancing. サービス名。ELBの提供しているロードバランサのリソースにCLBとALBがある C…

AWSのAuto Scalingグループの概要について(概念に関する用語とスケーリングポリシーの種類)

今週はAuto Scalingグループの概要について調べました。 Auto Scalingグループ EC2 AutoScaling と Auto Scalingグループ はなんのためにあるのか EC2のインスタンスは起動時間に対して料金が請求される従量制の課金形式となっています。 なので、1日の負荷…

いままでのECSの起動モード(EC2起動モード)のネットワーク設定(bridge ネットワークモード)とFargate起動モードを利用した場合のネットワーク設定関連で嬉しいことについて

2017年11月14日にAWSがAmazon ECSのTask Networkingを発表*1し、その恩恵を受ける Fargate 起動タイプが2018年7月4日に東京リージョンでサービス開始となりました*2。 自分の職場でも一部サービスでFargate(with awsvpcモード)の採用が始まったのをレビュー…

AWS SQSのvisibility timeoutとdelay queueのdelayの違いについて

今週の復習です。 consumerがキューからメッセージを受信するリクエストを送った後、 通信の問題で結局受け取れなかった consumer側で処理中にエラーになって結局最後まで処理できなかった などの事態に備えるため、SQSのキューにあるメッセージはconsumerが…

ECSのタスク、サービス、クラスタ、コンテナインスタンスの意味についてまとめました

ECSのタスク、サービス、クラスタ... といった言葉の意味がいまいちよくわからなかったので、それぞれの言葉が指すインスタンスを作成するときに何を設定するかに基づいてまとめたメモです。 もとの説明をいい感じに引用して... とかの時間がなかったのでひ…

APNsのプッシュ通知で利用するプロバイダ証明書関連の各種ファイル形式について調べてみたメモ

前の記事では、APNsとプロバイダの間の接続信頼の話をしました。この記事では、接続信頼の確認に使う証明書関係のファイルの話をします。 複数の鍵や証明書をまとめて扱うための個人情報交換( .p12 ) まず、Push通知の証明書関連で調べているとよく出てくる …

APNsを利用する際に必要な2種類の接続信頼について

APNsを利用する際に必要な2種類の接続信頼 APNsを利用する際には証明書やトークンが必要ですが、それは認証のためです。 ドキュメント*1には、暗号化されたデータが正しく復号できるか、途中で改ざんされていないかみたいな確認にあたる暗号化検証とあわせて…

EMRのHiveのドキュメントを読むのが不自由だったので読み方からメモ

仕事で若干AWS EMR上のHiveにさわったので少しだけメモ。 ドキュメントの読み方とか頭いっぱいになってるとすっこ抜けて死んでいますが、EMRの他のサービスについても似たような感じに気をつければいいはずだ。。 マネージドサービスとはいえ、設定できる項…

Appleの証明書関連を調べるときに公式ドキュメントの「証明書」ページを読んでおくととても捗る

Appleの証明書関連を検索するとき、かなり検索しにくく感じるときがありますが、 証明書 - サポート - Apple Developer のページに目を通しておくと公式ドキュメントのググラビリティが非常に上がります。というか、先に読んでおくもののはずなんですが、グ…

RSpecでクラスの挙動や定数をテスト用のダミーにする、見慣れなかったマッチャ、普段は実行しないテストのスキップ、などの話

参加しているプロジェクトのRSpecを見ていたら見慣れないことがいろいろあったので、復習しておきます。 RSpecでクラスの挙動をダミー用のものにする target_obj = double("target_obj") # initializeの文字のほうに深い意味はないらしい target_obj.stub(:s…

インフラエンジニアの教科書2を読みました

DockerとかAWSとか色々勉強しなければいけない感じなのですが、DockerやAWSの説明に出てくる用語がわからないということで、その辺りの基本的なことが載ってそうだし、薄いし、ということで「インフラエンジニアの教科書2」を読みました。 さらっとわかりや…

mysql2のgemのインストール時にchecking for mysql_query() in -lmysqlclient... no が出ていたらC言語版のMySQLのクライアントライブラリがない

mysql2のgemをインストールするときに、 checking for mysql_query() in -lmysqlclient... no ... のエラーが出て失敗する場合、C言語版のMySQLのクライアントライブラリがないです。 なので、たとえばMac OS X(10.11.6)の場合、 $ brew mysql でC言語版のMy…

RailsのFormクラスについて

Railsでバリデーションを書くケースといえばビジネスロジックで場所はModel(ActiveRecord)が多いのではないかと思います。 これは、たとえばRails Tutorialで扱うような、フォームで扱うModelが一つかつ単純な場合には特に迷う必要はありません。Railsのフォ…

fluentdについてのメモ

fluentdとは 参考: https://docs.fluentd.org/v0.12/articles/quickstart 基本Cで書かれていてRubyの薄いラッパーがあるログ収集用のライブラリ。 Fluentdは入ってきたログをJSONとして扱う。 インプットプラグインとアウトプットプラグイン 参考: https://d…