web-technical-blog

web開発に関する技術メモ

digdag runコマンドを実行する際のメモ

digdag runコマンドを実行する際の注意点をメモ。

digdag/embulkでのディレクトリ構成は以下のような感じで。

$ tree
.
├── config
│   ├── dev.yml
│   ├── load_table_list.txt
│   └── prod.yml
├── scripts
│   ├── commons
│   │   ├── _input_aurora.yml.liquid
│   │   ├── _input_redshift.yml.liquid
│   │   └── _output_redshift.yml.liquid
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── tasks
│   │   ├── __init__.py
│   │   └── __init__.pyc
│   ├── transfer_data.yml.liquid
│   ├── user_history.yml.liquid
│   ├── workflow_append.dig
│   └── workflow_util.dig
├── workflow_append.dig
└── workflow_util.dig

scriptディレクトリから実行する場合

digdag run -P ../config/dev.yml workflow_util.dig --rerun

xxx.digファイルにconfigの設定が書いてあると xxx.dig側が優先されるみたい。

ホームディレクトリから実行する場合

digdag run -P config/dev.yml workflow_util.dig --rerun

scripts/workflow_util.dig

+load:
  _retry: ${retry_cnt}
  +log_user_history:
    sh>: embulk run --log ${logdir}/log_user_history.log ..scripts/user_history.yml.liquid ## scriptディレクトリから実行する際はこれに変更する
    sh>: embulk run --log ${logdir}/log_user_history.log scripts/user_history.yml.liquid

Lambda関数でS3をトリガーに設定する際に気を付けるポイント

Lambda関数を実行している際に、 なぜかaws-cliでs3にファイルをアップロードするとLambdaが発火せずにはまった内容。

原因はイベントタイプ設定で、イベントタイプで「PUT」を設定していたのが問題であった。

GUIからファイルをアップロードする際は、 マルチパートで分割してアップしないのでLambdaは発火していた。

しかしaws-cliから大きいファイルをアップロードする際は、 マルチパートで分割してアップするみたいでLambdaが発火しない。

zappa等でDeployする際は以下に注意が必要

s3:ObjectCreated:PUT ← これはNG
s3:ObjectCreated:* ← これはOK

LambdaでS3のイベントトリガーを設定しようとした場合にエラーする場合

LambdaでS3のイベントトリガーを設定しようとした場合に 以下のエラーが出る場合は、S3のプロパティのEventを確認して削除する

Configuration is ambiguously defined. 
Cannot have overlapping suffixes in two rules if the prefixes are overlapping for the same event type.

lambdaをローカル環境で開発する方法(mac)

python-lambda-localをインストールする

https://github.com/HDE/python-lambda-local

  • 実行コマンド
python-lambda-local -l venv/lib/ -f lambda_handler main.py event.json
  • event.json

    • lambdaでテストする際のテスト呼び出しコードを記入する
  • AWSサービスを使用する場合は、.aws/credentialsが必要

  • 以下のURLに書いてある「requirements.txt」は特に設定は必要ない https://kakakakakku.hatenablog.com/entry/2017/08/02/085839

  • windows環境ではSIGALRMをCallできないとかでエラーするので無理

signal.signal(signal.SIGALRM, signal_handler)
AttributeError: module 'signal' has no attribute 'SIGALRM'

https://qiita.com/tanj/items/70c57ed9ca742884c61e

コマンドプロンプト(windows10)でlinuxコマンドを使用できるようにする

virtualboxの共有フォルダの設定について

# ls -l /media
drwxrwx--- 1 root vboxsf 0 12月 11 17:09 2016 sf_vbox_share

このままだと権限がないので、 rootかvboxsfグループのユーザーしかアクセスできないため、 既存ユーザーをvboxsfグループに追加しておく。有効にするため一度再起動したら、 共有できるようになっているはず。単に共有さえできればいいならここまでで設定は終わり。

# gpasswd -a vagrant vboxsf
# reboot

http://itemy.net/?p=1355

windows10の場合はシンボリックリンクを設定が必要 everyoneを設定する

https://tokibito.hatenablog.com/entry/2018/02/28/012014

digdagServerの構築メモ

Centos7にdigdagサーバーを構築した際のメモ

久しぶりに自分のローカルPCにCentos7でサーバーを構築しようとしたが、 vagrant up しようとするとエラーが発生。。

下記組み合わせだとvagrant upがエラーする

  • virtual box:バージョン 5.2.6 r120293 (Qt5.6.2)
  • vagrant:Vagrant 2.0.4
D:\vagrant\labo>vagrant up
The version of powershell currently installed on this host is less than
the required minimum version. Please upgrade the installed version of
powershell to the minimum required version and run the command again.

  Installed version: 2
  Minimum required version: 3

上記エラーメッセージからPowerShellのバージョンを2系から3系以上に変更したが 次にWMF5.0(Windows Management Framework 5.0)をインストールする必要もあった。 詳細は以下のリンクから確認できる。

WMFのインストールが必要

digdagServerを構築する際にpostgreSQL

  • postgres9.6のインストールは以下のURLを参考にしてインストール
  • CREATE EXTENSIONしないとエラーになるので注意
digdag_db=> CREATE EXTENSION "uuid-ossp";
ERROR:  could not open extension control file "/usr/pgsql-9.6/share/extension/uuid-ossp.control": No such file or directory

## 拡張モジュールのインストールが必要
# yum -y install postgresql96-contrib.x86_64

## postgresユーザーでログインして
psql -U postgres -h 127.0.0.1 -d digdag_db

CREATE EXTENSION "uuid-ossp";

postgre9.6 install

digdag/embulkのインストール

  • java1.8がインストールされていることが前提
$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

# インストールされていなければいれる
$ yum -y install java-1.8.0-openjdk
# Embulkの導入
$ curl --create-dirs -o ~/bin/embulk -L https://dl.embulk.org/embulk-latest.jar
$ chmod +x ~/bin/embulk

# Digdagの導入
$ curl --create-dirs -o ~/bin/digdag -L "https://dl.digdag.io/digdag-latest"
$ chmod +x ~/bin/digdag

# OSX環境の場合は次のように.bash_profileを編集する
$ cat << 'EOF' >> ~/.bash_profile
# User specfic environment and startup programs
export PATH=$PATH:$HOME/bin
EOF
$ source ~/.bash_profile

digdagはまりポイント

https://qiita.com/toyama0919/items/142d290c8dcb2c86851c

# vi /usr/lib/systemd/system/digdag.service
[Unit]
Description=digdag

[Service]
Type=simple
PIDFile=/run/digdag.pid
ExecStart="/usr/local/bin/digdag server -b 0.0.0.0 --config /opt/digdag/server.properties -O /opt/digdag/logs/tasklogs -A /opt/digdag/logs/accesslogs -L /opt/digdag/logs/server.log"
User=root
Group=root
WorkingDirectory=/opt/digdag
Restart=always
RestartSec=5
KillMode=process
TimeoutStopSec=1200
SyslogIdentifier=digdag

[Install]
WantedBy=multi-user.target

ExecStartは別ファイルにしないとエラーになるので注意

シェルは別ファイルにしないとエラーする

[Unit]
Description=digdag

[Service]
Type=simple
PIDFile=/run/digdag.pid
ExecStart=/opt/digdag/start.sh
User=root
Group=root

[Install]
WantedBy=multi-user.target

https://qiita.com/cmwig65/items/3386a061aeb3d2f81b81 https://qiita.com/toyama0919/items/142d290c8dcb2c86851c https://qiita.com/bwtakacy/items/ec3151644512ca65f6b6