/home/by-natures/dev*

データ界隈で働くエンジニアとしての技術的なメモと、たまに普通の日記。

AWS

2023/08/18 読んだ記事まとめ(Snowflake コスト削減/最適化/Iceberg連携)

お盆休みをしっかりいただけたので、徐々に通常運転に戻すべく今日は Snowflake 絡みの記事を3つ取り上げてみます。 Best practices to optimize Snowflake spend medium.com Snowflake のコストが高いと最近耳にしますが、便利で高性能なサービスがゆえに利…

2023/06/15 Webアプリ開発中: Create React App への環境変数の渡し方

1ヶ月近くブログ更新できていなかったのですが、ここしばらくは一からWebアプリを作ってみようと思い立って業務が終わってからずっと開発をしていました。ようやく最低限の機能開発と、ローカルとAWSでの差異を加味した環境構築が終わったのでブログにまとめ…

2023/05/09 DuckDB のための AWS Lambda での文字コード変換

前回話した DuckDB の文字コード問題ですが、やはり UTF-8 しか想定されていないようです(DuckDB Foundation の方からリプを貰えました)。DuckDB は S3 や HTTP(S) などの外部データを直接読み込むことができる便利な機能がありますが、処理したいファイル…

2022/02/01 読んだ記事まとめ(Lambda with SQS, Cloud Logging in Google Cloud, OpenAssistant)

気分転換にヘッダを変えてみました。Iittala社のキャンドルホルダーが大好きで、(まだ一応)趣味のカメラと組み合わせてキャンドルを撮影したりしているので、その画像を拝借。冬場にはもちろん、友人が家に来たときなんかに使うと、少しムードが出て良い感…

2019/06/19 Elastic Beanstalk の ALB の scaling trigger では RequestCount がうまく機能しない

Elastic Beanstalk では ALB を簡単に定義することができます。今構築しているアプリケーションでは、リクエストがシンプルかつ大量であるため、リクエスト数に応じてスケーリングさせようと思い、スケーリングトリガーのメトリクスで RequestCount を設定し…

2019/06/18 AWS ELB 配下の tomcat が X-Forwarded-For を取得できない? -> 解決しました

ロードバランサー配下のWebサーバは、ロードバランサーがもともとのクライアントのリクエスト情報を保持するために X-Forwarded- というHTTPヘッダを追加します。このリクエスト元の情報を保存するヘッダはただのデファクトスタンダードでしたが、今は RFC …

2019/04/05 ITP 2.1 対応, ElasticBeanstalk での tomcat 設定値書き換え

4月からオフィスが新しくなって、また一緒に働いていた人が退職したこともあり、労働環境が大きく変わりました。やることは増えましたが、やれることも増えそうなので案外楽しめています。開発リソースが足らず、一緒に働く方を増やしたいので色々と整備して…

2019/03/20 Glue の SparkSQL が直接 DataCatalog にアクセスできるようになりました

先日のアナウンスで、Glue Job から DataCatalog に直接アクセスできるようになりました。 「AWS Glue によって Apache Spark SQL クエリの実行が可能に」というリリースタイトルがやや誤解を招きそうですが、Spark SQL はもともと利用できたのですが、今ま…

2019/03/12 DynamicFrame の書き出し

Glue の書き出しは結局 "from_options" で Glue Job による DynamicFrame のデータ書き出し方法には書き出し方法がいくつかあって、 from_options を使っていたのですが、ふとドキュメントを見ていると from_catalog というメソッドが。 Glue Job を使う以上…

2019/03/06 AWS での ETL 方法 (Glue Job / Athena)、Glue での ETL 基盤構築事例

AWS などのクラウドサービスは多くのサービスが提供されているので、それを組み合わせるだけで目的のシステムが構築できるかというと、似たようなサービスがあってどちらを使うべきか判断に迷う場面も多く、調査に時間を要すると感じます。今は ETL 処理に何…

2019/02/27 Athena の結果を Parquet 形式で出力したい

今日は Athena でのクエリ結果の出力方法についてです。 ユースケースがハマるなら CTAS で、データサイズが小さいなら Python 側で処理して、そうでなければ現状は Athena を使うのは難しそうです。データの加工に Glue Job を使えば、SparkSQL を発行して …

2019/02/26 StepFunctions + Athena 動作の読み解き

昨日も少し触れましたが、StepFunctions から Athena を呼んで ETL 処理をさせたいと思っています。AWS の方に、以下のリポジトリが参考になると紹介していただきました: github.com 以下の図が動作概要図です: この図、一見分かったような気になりますが…

2019/02/25 AWS サーバレスアーキテクチャ諸々

先週から調べていたことの簡単なまとめです。 AWS SAM サーバレスアーキテクチャに適した形で CloudFormation を使えるようにする拡張です。SAM = Serverless Application Model。サンプルを動かしていたのですが、IAM の設定がどうしてもうまくいかずにひと…

2019/02/19 コンウェイの法則

AWS

2月頭に箱根に行って、「ガラスの森美術館」に行こうとしたら閉館しており、隣に建っている「星の王子さまミュージアム」に行きました。そこで買ってきた星の王子様を週末読み終えたのですが、意外なバッドエンド?に驚きました。王子様が自殺する経緯につい…

2019/02/15 Glue Job の同時実行数について

Glue Job から Spark ジョブを呼ぶことで、大規模データに対する ETL 処理をしたいなと思っているのですが、Glue Job に同時実行数の制限があることに気がつきました: docs.aws.amazon.com Glue Job にはテンプレート部分を記述して、実際に動かす SparkSQL…

2019/02/12 CloudFormation

先週末、都内でキャンプをしまして、インドアな自分としてはとてもアクティブな体験でした。たき火を見ながらぼーっと話をするのもよいものです。翌朝起きたら、キャンプ場一体が雪で真っ白だったことにも驚きました。新鮮な体験でした。 AWS での運用につい…

2019/02/06 DynamicFrame の出力スキーマを parquet-tools で確認

AWS Glue で書いた Parquet ファイルが Glue のデータカタログのスキーマと異なることが度々発生しているので、直接 Parquet ファイルのスキーマを確認できないか調べたところ、parquet-tools コマンドで確認できることがわかりました。 github.com mvn inst…

2019/02/05 AWS サービスにインストールされている boto3 のバージョン

AWS CodeCommit を利用して、Glue Job から CodeCommit からファイルを取得して集計処理をしたいなと思ったのですが、 get_file というメソッドが存在しないとエラーが起きてしまいました。 boto3.amazonaws.com GitHub の boto3 リポジトリを見ると get_fil…

2019/02/01 Parquet ファイルと Glue DataCatalog のスキーマ差異の問題など

AWS Glue と戯れる日々なのですが、SparkSQL の扱い方がわかったところでまたいくつか問題が。 Parquet とテーブルスキーマのフォーマット差異 S3 に書き出したファイルを Glue の DataCatalog を経由して Athena や Redshift から読み込もうとすると、Athen…

2019/01/22-23 AWS Glue Crawler が struct をカラムに持つテーブルに使いづらい

AWS

AWS Glue を色々と触っているのですが、どうにも正しい使い方がよく分からなくなってきました。 Glue Job で Parquet フォーマットで書き出して Athena から読み込みたいのですが、パーティションによってキー数が大きく異なる JSON 形式のカラムがあるため…

2019/01/15 Glue における SQL 中心アーキテクチャ ETL、他

昨日居酒屋で飲んでいたら(かぶら屋 美味しいです、おすすめ)、隣の席の人が UberEATS の使いすぎで他の方から怒られていました。僕の友人でも UberEATS や LINE デリマを良く使う人はいるので、別にいいんじゃないかなと思ったら、どうやら人はタクシーや…

2019/01/11

ご挨拶が遅れました、あけましておめでとうございます。 年の始まりはいつも不思議な出来事があって、今年はこういう感じなのか、と思うことがあります。今年は変わったことがちらほら周りで起きていて、変化の年になるのかもしれません。よい方向に変化する…

2018/12/14 AWS Glue と Lambda Architecture

クリスマスの雰囲気が好きなのですがいかんせん寒くなってきて、出かけるのが億劫になってきました。インフルエンザも流行りだしたようなので、そろそろマスクをしなければいけない季節でしょうか。 今日は分散処理周りで調べ物をしていたので、読んだ記事を…

2018/12/13 (公式ブログより)AWS Kinesis を利用したリアルタイム+バッチ集計

Amazon Kinesis および Amazon Athena を使用して VPC ネットワークのトラフィックを分析および視覚化する AWS の公式ブログにて、以下の Kinesis と Athena を利用した分析基盤の例が紹介されていました: aws.amazon.com Athena のところは本質的ではない…

AWS OpsWorks を使ってみて分かった善し悪し

OpsWorks は AWS の1サービスで、Chef を使ったプロビジョニングを楽に行ってくれるサービスです。今のプロジェクトでは、自前の Ansible から OpsWorks へ移行しているため、社内で OpsWorks について紹介しました。 スライドの中では、実際に使ってみた所…

「第3弾 週末ランサーズ」に参加しました

「週末ランサーズ」とは… 普段WEBサービスを作る若手エンジニアの方たちが集まり、技術について語り、開発し、交流を深めることを目的とする勉強会です。 ということで、ランサーズ株式会社さんが主催しているエンジニア向けの勉強会です。 まだ始まった…

fluentd の heartbeat_interval と phi_threshold の関係

以前、「Apache ログを転送するための fluentd 初期設定」というエントリーを書いたのですが、以下のような match 部の設定を紹介しました: <match apache.access> type forward send_timeout 60s recover_wait 30s heartbeat_interval 1s <server> name (td-agent がログ出力時に利用す</server></match>…

AWS Summit Tokyo 2013 に参加しました(2日目)

[gallery size="medium" columns="2" ids="3074,3076"] 2013年6月に行われた、AWS Summit Tokyo 2013 の2日目に参加してきました。 今年の AWS Summit はビジネス寄りの話や利用事例が多く、例年よりテクニカルな話は少なかったそうなのですが、それだけ AWS…

Apache ログを転送するための fluentd 初期設定

概要 このエントリーは、さくらインターネットの VPS 上の WEB サーバと、Amazon EC2 インスタンス間を fluentd で繋いだときの、さくらVPS 側の設定メモです。 そもそもは MongoDB を個人学習のために使ってみようと思い立ったのですが、さくらVPS 上に Mon…

第1回渋谷アドテク勉強会に参加しました

先日、株式会社ミクシィさんの下田さん(twitter:@rindai87)を発起人として行われた、第1回渋谷アドテク勉強会に参加してきました。イベントの趣旨としては、 「こういう狙いでこの機能を作って、それを実現されるためにこんな技術を使っている」そんなちょ…