web-technical-blog

web開発に関する技術メモ

python3.6でpycryptoをインストールする際にはまったのでメモ...

windows環境はエラーします。mac環境はエラーはしない。。

python3.6にpycryptoをインストールするとエラーになる時の解消法

$ pip install pycrypto 上記コマンドをインストールしようとするとエラーが...

ビルドツールのインストールが必要

  • Visual Studio Build Tools 2017」をインストールする必要がある
    • Visual C++ Build Toolsをインストール
  • ビルドしている際に以下の「inttypes.h」ファイルの構造体でエラーが発生する
  • 対処は#defineで定義して回避
  • これでインストールがとりあえず可能になる
> notepad 'C:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt\inttypes.h'
================================================
typedef struct
{
#define intmax_t long long               ### これを追記
#define uintmax_t unsigned long long     ### これを追記
    intmax_t quot;
    intmax_t rem;
} _Lldiv_t;

typedef _Lldiv_t imaxdiv_t;
================================================

https://qiita.com/ftakao2007/items/e7f951de98509929bdfb https://www.python.jp/install/windows/install_vstools2017.html

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