production.log

ピクスタ株式会社で開発部の部長をやっている星直史のブログです。

技術

AWS EC2のルートボリューム(EBS)をダウンタイム0で拡張する方法

サービスを公開したと同時に、mackerelを導入してみました。 CPU, Memory, filesystemのアラートをデフォルトの閾値で設定した結果、一瞬でfilesystemのアラートが鳴りました。 すぐさま対応できなかったので、とりあえずアラートを止めるために閾値を変える…

mackerelをAWS OpsWorks カスタムクックブックでインストールする方法

これまで、Webサービスを作ったことはあれど、サーバーの管理/監視は構築したことがありませんでした。 手軽に導入したかったので、SaaS型サーバー監視サービスを導入しようと考えていました。 そこで、今回はmackerelを使って監視をしようと思います。また…

GitHubの草を60日間連続で生やしてわかった習慣化のコツ

最近個人プロジェクトの開発をしているのですが、気づけばGithubの草が60日間連続で生えていました。 60日間も毎日草を生やしていると、完全に習慣されたと思ったため、 今回はGithubの草を60日間連続で生やしてわかった習慣化のコツを紹介します。

【Rails】deviseが送信するメールをAWS SESから配信する方法

個人開発において、Railsのdeviseから配信されるメールは、これまでGmailを使用していたのですが、せっかくドメインを取得したので、AWS SESからメールを送信することにしました。 今回はRailsにおいて、deviseが送信するメールをAWS SESから配信する方法に…

AWS OpsWorks スタック におけるCustom Chef cookbooksを適用する方法

AWS OpsWorks スタックでは、Chef Supermarketで公開されているCookbooksを適用する方法もありますが、自前で作成したCustom Chef cookbooksを適用することもできます。今回はAWS OpsWorks スタックにおいて、自前で作成したCustom Chef cookbooksを適用する…

WebdriverIOを使ったChromeによるE2Eテスト環境構築の手順 - Amazon Linux -

Amazon LinuxでWebdriverIOによる自動E2Eテストの実験をしようとしていたのですが、うまくGetting startedできませんでした。Linux環境においてWebdriverIOのGet Startedはやや説明不足感があるため、今回の記事では、Amazon LinuxでWebdriverIOを使ったChro…

Rails 5.2でActive Storage を使った画像のアップロードを試す

ひょんなことから、画像をアップロードする処理を書くことになりました。 これまで、Railsで画像アップロードといえば、CarrierWaveやPaperclipを使っておけば良いでしょ〜!くらいに思ってたんですが、せっかくRails5.2を使っているのであれば、Active Stor…

Rails5.2のcredential管理を試してみた

Rails 5.2でJWTとdeviseを使った認証の仕組みを作る機能を開発しているときに、Rails5.2からcredential管理が変更されたことに気づいたので、 今回はRails5.2のcredential管理の方法をざっくり説明しようと思います。

ChromeExtensionのBrowser Actionsで格納したlocalStorageの値をBackground Pagesを使ってContent Scriptsからアクセスする方法

Chrome ExtensionのBrowser Actionsで認証リクエストし、レスポンスのJWTをlocalStorageに格納する処理を作っていました。 その後、さらに拡張してContent ScriptsでJWTを使って他のAPIリクエストをするときに、「あれ?localStorageのスコープ違くね?\(^o…

Railsでpreflightリクエストを処理し、no route matches optionsを回避する方法

前回の記事ではRailsを使って、APIの受け側を作りました。ただ、このままだとJSでフロントエンドからAPIに対してリクエストした場合、preflightリクエストが飛ぶので、No route matches [OPTIONS]エラーが返ってしまい、正常終了できません。今回は、Railsで…

Rails 5.2でJWTとdeviseを使った認証の仕組みを作る

最近フロントエンドからAPIを叩く実装における認証の仕組みをどうするか考えていました。 以前、AWS Cognitoを使った認証仕組みを作ったことはあったのですが、Railsの場合はどのようにJWTを扱うか知りたかったので、作ってみました。 今回は、タイトルの通…

Redashのバージョンアップで消えたデータソースを復活させる方法

Redashのバージョン2系から3系にupgradeした際、DataSourceのプルダウンから色々なものが消えてしまいました。この記事はBigQuery, AWS Athena, Google Analytics, Google Spreadsheetを復活させる方法について書いています。

AWS Database Migration Serviceを使ったデータベース統合を試してみました

1月20, 21日と、会社の開発合宿に行ってきました。 取り組んだ内容はタイトルの通り、AWS Database Migration Service(以下DMS)を使ったデータベース統合です。

macOS Sierraでssh時にパスフレーズを聞かれないようにする方法

macOS Sierraでssh時にパスフレーズを聞かれないようにする方法について書きました。

crontabで使用するエディタを変更する方法

新しくサーバーを立てた際、cron設定しようと思い、crontab -eをした時に、あ、あれ、、何このエディタ....って感じになり、エディタの設定を毎回変更するも、そのコマンド自体を覚えていないという由々しき状態になるので、メモとして残しておく

「伝説の外資トップが説く リーダーの教科書」を読みました。

会社の輪読会で「伝説の外資トップが説く リーダーの教科書」が題材となったので、読んだ感想をまとめます。この書籍はこれからリーダーになる人(目指している人)〜現在リーダーの人を対象に、 心構え、リーダーのあるべき姿、スキル、役割について、一章に…

【AWS CLI】OpsWorksAgentのインストーラがAgent installation failed.になる場合の対処方法

AWS 既存のEC2インスタンスをOpsWorksに登録する際、インストーラーを実行するのですが、Agent installation failed.になってしまいハマったので、対処方法を書きます。

技術誌に寄稿しました!テーマ選定、執筆の流れと使ったツールの紹介

技術評論社から発刊されているSoftware Designの2017年10月号に「サーバーレスで実現!素材集サービスを効率化した自動画像管理システムに学ぶ」というタイトルで寄稿しました! この記事では、記事執筆にあたり、テーマ選定、記事執筆の全体的な流れ、使っ…

【第三回】成田空港で一人開発合宿をしてきました

概要 雑誌の記事の執筆がいよいよ締め切りに迫ってきたので、一気に書き上げるべく、合宿を行いました。 開発合宿というより執筆合宿ですね。 合宿候補地はどんな感じで決めたの? 第一回目の合宿地が羽田空港で、だいぶ快適だったので、成田空港もきっとええ…

AWS Rekognitionで画像内の物体名を取得する方法

概要 AWS re:Invent 2016で発表された新機能の中にAWS Rekognitionという画像内の物体、シーン、および顔を検出するサービスが発表されました。 今更感ありますが、Rekognitionで画像内の物体名を取得する方法を書きます。 Lambdaでの処理 'use strict'; con…

【ServerlessFramework】lambdaでgmを使って画像加工をする方法

概要 ServerlessFrameworkにおいて、Lambdaで画像加工をする場合、Imagemagickかgm(GraphicsMagick)を使用することになります。 AWS公式ドキュメントではgmを使用しているので、今回はgmを使用してサムネイル作成処理について、書こうと思います。 ハマりど…

RedashでAWS DynamoDBに対してDQLを発行しデータ取得する方法

概要 表題の通りです。 RedashでDynamoDBからデータ取得する場合DQLという、SQLライクな書き方でデータを取得することになります。 今回はDynamoのIndexを指定して絞り込みを行う際に、ちょいハマりしたので、メモとして記録します。 AWS DynamoDBの設定 テ…

自前で立てたRedash(0.12.0+b2449)を最新1.0.3にupgradeする方法

概要 Redashが0.12.0の時に、AWS AMIから立ち上げたのですが、 この度、メジャーバージョンアップしたので、手動でupgradeした時のメモです。 手順もなにも、ドキュメントがあるのでその通りにやるだけですが、 コマンド実行する際に設定を変更する必要があ…

【ServerlessFramework】DynamoDB Streamsでデータの更新をトリガーにLambdaを動かす方法。

概要 表題の通り、DynamoDB Streamsでデータの更新をトリガーにLambdaを動かす方法について説明します。 AWSマネジメントコンソール上でのDynamoDB Streamsの有効化 まず、AWSマネジメントコンソールでStreamsを有効化する必要があります。 DynamoDB > Table…

【ServerlessFramework】S3のオブジェクト格納をトリガーにLambdaを動かす方法

概要 S3に何かしらのオブジェクトを配置したことをトリガーにLambdaを動かす設定について紹介します。 runtimeはnode.jsです。 lambdaの処理を書く lambdaにはトリガーが正常に動いていることだけを確認すれば良いので、 console.log("hello")とだけ書いてお…

【ServerlessFramework】AWS LambdaとCognitoで作るセキュアなS3へのオブジェクト格納

概要 ユーザーがアップロードした画像データをS3に保存するケースにおいて Serverless Frameworkを使用して、AWS API Gateway 経由しLambdaで処理をするときに、 Cognitoで認証したユーザーのIAMをSTSを使用してS3にPUTするときの説明です。 今日は上記の図…

Serverless Framework 1.10.2でAWS IAM変数(${cognito-identity.amazonaws.com:sub})を使用する場合の設定

概要 標題の通りですが、Serverless Framework 1.10.2において、serverless.ymlにAWS IAM変数(${cognito-identity.amazonaws.com:sub}など)を使用する場合、 フレームワークの挙動として${文字列}の値を設定した変数に置き換えようとする動きをするので、そ…

ファイル内の改行を置換するコマンド

2ファイル間で重複する / しない 行を出力する方法 こちらの操作をするときに、セットで、ファイル内の改行を置換するコマンドを調べることがあるので、 メモ程度に残しておく。 $ cat hogehoge.text 1 2 3 4 5 上記のファイルを1,2,3,4,5と出力したい場合の…

2ファイル間で重複する / しない 行を出力する方法

タイトルの通り、何気に結構使う処理だけど都度調べているからメモとして残す。 a.text と b.textが以下の内容の時、1と 2,3,4,5を出力したい場合 $ cat a.text 1 2 3 4 5 $ cat b.text 2 3 4 5 $ sort {a,b}.text | uniq -u # ユニークな行を出力 $ sort {a…

@t_wada さんの「Mac の開発環境構築を自動化する (2015 年初旬編)」をAnsible ベストプラクティスに則り書き換えてみた

Ansibleでmacの環境構築する際、t-wada さんの「Mac の開発環境構築を自動化する (2015 年初旬編)」を参考したのですが、Ansible Best Practicesに沿っていなかったので、書き直してみました。