AWS GlueでS3から差分データを取得する

日次処理などの定期処理でS3からデータを取得しparquet形式に変換やDBにLoadするといったケースについては、ETLする際によくあるのではないでしょうか? 上記のようなケースでは、ETL処理の際にS3から前日からの差分を取得する必要があります。Glueにおいて…

obnizで停電の復旧確認をしてみた

みなさん台風21号の影響はどうでしたでしょうか?今回は私の自宅も3日ほど停電になり結構困りました。 未だに停電から復旧していない地域もあるので早く復旧してほしいですね。 停電してはじめて分かるのですが、電気が生活の基礎を支えているということに改…

obnizをAWS Fargateから動かしてみた

obnizというIoTのコントロールボードが面白そうだったので早速購入してみました。 obnizの特徴としては、wifiと小型のディスプレイが内蔵されており、プログラムもWeb上からjavascriptで可能というかなりお手軽なガジェットです。 サンプルプログラムを動か…

AWS Glueのジョブ監視

先日、CloudWatch Eventを確認するとGlueも追加されていたのでジョブの監視をやってみました。 検証構成 CloudWatch EventでGlueのJobステータスがSucceededもしくはFailedになればSlackに通知しています。 現状、特定ジョブやイベント(Failedのみなど)の…

AWS GlueでAurora Serverlessを利用する

Aurora Serverlessが一般リリースされましたね。みなさん色々ブログを書かれていますので流行りにのってGlueからもAurora Serverlessを利用できるか検証してみました。 検証構成 今回は上記のような構成で、Auroraからデータ取得してS3に出力してみました。 …

ELBがある時・ない時

AWSにおいてELBは気軽に利用できるサービスになっていますが、意外と意識されていないのではないでしょうか?。ELBはロードバランサとしての役割だけでなくSSL証明書のターミネーションやアクセス状況など各種メトリクス確認できることのほかにEC2間を疎結合…

CodeBuildでDockerイメージのマルチステージビルド

Dockerでマルチステージビルドという機能を知ったので検証がてらCodeBuildで試してみました。 マルチステージビルドとは、例えばjavaアプリケーションにおいて、ビルドについてはjdkが入ったイメージを利用してビルドを行い、ビルドされたバイナリだけをjre…

PySparkでMySQLからのデータ取得&集計方法

MySQLに対してSQLでよくやるようなデータの取得や集計などをPySparkのDataFrameだとどうやるのか調べてみましたので、備忘録として残しておきたいと思います。 検証環境は以前紹介したDockerではじめるPySparkをベースにDockerで環境を構築しいます。 こうい…

CodeBuildのbuildspec.ymlで変数定義ができない

CodeBuildを利用していてbuildspec.ymlを書いていたなかで、環境変数ではなく変数定義して使いたいと思い試していたのですが、 どうもうまくいかずハマりましたので備忘録としてのことしておきたいと思います。 やりたかったこと buildspec.ymlのビルド手順…

AWS BatchでEFSをマウントしディスク共有してみる

もうすぐEFSが東京リージョンに来ますね。最近はAWS Batchを触る機会が多くなってきたので、AWS BatchでEFSを使ってのディスク共有を検証してみました。 まだ東京リージョンにはないので今回はバージニアリージョンを利用して検証してみます。 構成 手順概要…

AWS Certified Big Data – Specialty 認定試験を受けました

AWS

AWSの認定資格でビッグデータの専門知識を問われる試験のAWS Certified Big Data – Specialtyを受験しました。何とか合格できたので、この試験に向けて勉強した内容などを残しておきたいと思います。 試験概要 試験の概要は以下参照 AWS 認定ビッグデータ – …

PHPのファイルアップロード機能をサイト別に切り替える

PHPのファイルアップロード機能をサイトごとにhtaccessで切り替えたいというケースがあり、実現方法について調査したので備忘録として残しておきたいと思います。アップロードするファイルサイズの切り替えはケースとしてはよくあるのでネット上に情報があが…

fish shellでaws-cliのコマンド補完

AWS

fish shellでaws cliのコマンド補完を設定してみたので設定方法を紹介したいと思います。 環境 Mac Sierra fish 2.2.0 設定方法 bashやzshについては以下の公式で設定方法が紹介されているのですがfishはありませんでした。 docs.aws.amazon.com色々調べたと…

ec2-scheduleでEC2のインスタンスタイプの自動変更

AWS

ec2-scheduleではインスタンスタイプの変更も可能です。 今回はインスタンスタイプを自動で変更する方法を紹介したいと思います。 設定方法 DynamoDBのConfigTableに以下を設定 テーブル名はスタック名+ConfigTableになっています。 ex) 月曜から金曜までの9…

ec2-schedulerでRDSを定期的に起動・停止する

AWS

前回、ec2-schedulerでEC2の定期起動・停止を試してみましたが、今回はRDSで実行してみたいと思います。RDSについてもほぼEC2と同様の設定になります 設定方法 DynamoDBのConfigTableに以下を設定 テーブル名はスタック名+ConfigTableになっています。 ex) …

ec2-schedulerでEC2を定期的に停止してコストを節約しよう

AWS

AWS Answerで公開されているec2-schedulerを使ってみました。 EC2の自動起動、停止についてはLambdaを使って色々と工夫されているかと思いますが、このec2-schedulerはかなり高機能なソリューションになっていますのでぜひ利用を検討してもらえればと思いま…

SecurityGroup設定のポイント

AWS

AWSのインフラ設計にあたって、セキュリティグループの設計は結構重要だと思うのですが、あまり意識して設計されていないケースも見受けられます。 メンテナンス性が考慮されていないと、後々かなり変更しづらくなりますし、誤って設定してしまい障害を発生…

AWS GlueのJob Bookmarkの使い方

実際にETLで処理するケースとしては、1日1回定期的に処理するなどのケースが多いと思います。 この場合、追加分のみを抽出してETL処理をする必要があります。 Glueには、前回どこまで処理したかを管理するJob Bookmarksという機能があります。 今回はこのJob…

AWS Glueの開発環境をDockerで構築する(その2)

前回、Glueの開発環境をDockerで作りましたが、zeppelinコンテナを起動してホストからsshフォワードを実行して接続するという構成でホストを意識する必要がありましたが、せっかくzeppelinをdockerで作っているのでsshフォワードを行う部分もdockerで実現で…

AWS GlueでVPCフローログ用のclassifiersを作ってみた

GlueでVPCフローログをparquet形式に変換させる定期ジョブを作ろうと思いクロール処理を追加したところ、ビルトインのClassifiersにはなかったため自動でテーブル構造を認識してくれませんでした。 認識させるためにはカスタムClassifiersを作る必要があるこ…

AWS Glueで新しくScalaがサポートされました

AWS GlueのETLスクリプトを作成する言語として、新たにScalaが追加されました。画面を確認すると以下のようにPythonに加えてScalaも選択できるようになっています。 以下はScalaで自動生成されたETLスクリプトになります。 import com.amazonaws.services.gl…

AWS Glueの開発環境(Zeppelin)をDockerで構築する

AWS Glueで自動生成されたETL処理のPySparkの開発について、AWSコンソール上で修正して実行確認は可能ですがかなり手間になります。 そこで開発エンドポイントを使って開発する方法が提供されており、Apache Zeppelinなどを使ってインタラクティブに開発する…

DockerではじめるPySpark

最近Sparkの勉強を始めました。 手軽に試せる環境としてPySparkをJupyter Notebookで実行できる環境を作ればよさそうです。 環境構築に手間取りたくなかったので、Dockerで構築できないか調べてみるとDocker Hubでイメージが提供されていましたので、それを…

AWSで時刻同期サービスがリリースされました

これまでAWS上では時刻同期について、外部のサーバを利用する必要がありましたが、 AWS内で利用できるサービスがリリースされました。 これで外部へアクセスする必要がなくなりました。またうるう秒も自動で調整してくれるため是非利用するべきだと思います …

S3マウントツールのObjectiveFSを試してみた

S3のマウントにみなさん何を使っていますか? s3fs?goofys?使い勝手はいかがでしょう? 今回は、商用ですがObjectiveFS(https://objectivefs.com/)というS3のマウントツールの紹介をしたいと思います。 環境 OS:AmazonLinux 手順 ライセンス取得 14日間のト…

AWS SDKでAuthFailure【cloudpack 大阪 BLOG】

発生した障害 boto(python)で定期的にS3にファイルをアップロードしているスクリプトが突然エラーとなり実行できなくなる問題に遭遇しました。 エラーログを確認すると「403 Forbidden」が発生していました。 調査したこと 何らかの原因で使用しているアクセ…

AutoScalingでEC2のDetach/StandByができない場合の対処法【cloudpack 大阪 BLOG】

AWS

はじめに AutoScalingを設定していて手動で設定を変更していると、たまに台数がずれるなどして最低台数の制限に引っかかりAutoScalingGroupからEC2をDetachやStandByにできない場合があります。スケーリングポリシーに基づいてインスタンスの増減が実施され…

起動後のEC2にIAM Roleを付与する【cloudpack 大阪 BLOG】

AWS

待望の機能追加があったので実際にやってみました。 これまで起動後のec2インスタンスにはiam-roleが付与できなくて不便な思いをしてきましたがやっと開放されそうです現時点ではawscliからのみしかできません。 またawscliの更新が必要になりますので気をつ…

rsyslogで中継サーバ経由してログ送信を行う【cloudpack 大阪 BLOG】

以下のような構成でrsyslogを使用してログをログ収集サーバへ集約させる要件がありました。 検証で動作確認を実施してみたので、備忘録としてやり方を残しておきたいと思います。 やりたいこと webサーバの/var/log/messagesをログ中継サーバを経由させてロ…

Terraformで[Error reading config for xxxx : Invalid dot index found:]エラー【cloudpack 大阪 BLOG】

最近Terraformを触っていて少し躓いたので備忘録として残しておこうと思います。 現象としては、mapping定義にドットで参照しようとしてエラーが発生しました variable "vpc_subnet_cidr" { default = { public-a = "10.1.10.0/24" public-c = "10.1.20.0/24…