終わりの季節

Posted by yonezo in 日記 | Leave a comment

長く続けてきたいろんな事が終わった。
いろんな人が去って、離れていき。
楽しかった事、場所に興味が薄れてきて、
人生の中の「もう会う事もないだろうな」、な人の数が一気にカウントアップ。
大事にしてた服も断捨離してスッキリした。
なんだか終わりの季節を感じる。
多分、周りの人には何も変わってないように見えるのだろう。

ただ、何か新しい事が始まればいい。
まだまだ続いていくものもあるから。

【laravel8】Please ensure you have permission to create files

Posted by yonezo in 日記 | Leave a comment

laravelでcronによる処理と、管理画面などのログインが共存しているとタイトルのようなエラーになる場合がある。というか私の場合だけかもですがありました。

原因は/storage/framework/cache/data/配下のディレクトリ、ファイルのパーミッションが

ログイン時:個人ユーザー

cron実行時:nginxユーザー

とで作成されるために、どちらかのユーザーでchownとかしても一時的に解決するだけで永続的な解決法ではなくなっていたためでした。

プログラム的になんとかする方法(ログイン時ユーザーをnginxでcacheさせるようにする等)もあると思いますが、今回はlinux側での対応を行ったので、備忘録です。

 

cacheディレクトリ、ファイルのパーミッションが問題なので、そもそも新規に作成される場合のパーミッションを指定・固定します。

$ cd /storage/framework/cache/

$ sudo setfacl -R -d -m g::rwx ./data

setfaclでdataディレクトリ配下で作成されるディレクトリ、ファイルのパーミッションをdataと同じにするものです。

※上記操作と共に既存ディレクトリ、ファイルのchmodも忘れずに

※作成される可能性のあるユーザー(個人ユーザー、nginx)を同一のグループに所属させる事も忘れずに

これで、ユーザーは異なるものになる可能性はありますが、パーミッションは書き込み可能となるのでエラーにはならなくなりました。

「お前は何を言っているんだ?」という人は以下を参照ください。この記事の1000倍くらい丁寧に解説されています。

CentOS/Apache/Laravel使用時のpermission設定方法

【AWS備忘録】特定URL(パス)でアクセスするインスタンスを固定したい

Posted by yonezo in 日記 | Leave a comment

分かりにくいタイトルですが、要するに複数のインスタンスをALB(ロードバランサー)で振り分けてる場合に、「このURLの場合はこのインスタンスに固定でアクセスさせたいなぁ。」といった場合、簡単に設定できるという事です。

複数WEBサーバをバランシングしてるが、とある事情で片方のインスタンス(WEBサーバ)にしか無いAPIをhttpsで叩きたい、というような要件があった場合です。

今回既に稼働しているシステムだったので、ロードバランサーは設定済み。そこへ振り分けのルールを追加していきます。

手順は2つ。

1.ターゲットグループ作成

2.リスナールール設定

だけです。

 

「ターゲットグループ」から後でリスナーで設定する振り分け先インスタンスの設定を行います。

 

気を付けたいのは、ヘルスチェックの設定でしょうか。

この部分を設定しておかないと、動作してくれないみたいです。

ターゲットグループが設定できたら、リスナーの設定。

追加します。

ルールは上に設定したものから順次判定されるみたいで、自由に優先順に設定できるようです。

「ルールの挿入」を押下すると、設定フォームが表示されます。

条件は結構細かく指定できるようですが、今回は特定のURLで判定させたいので「パス」を選択。

ドメイン以下のパスを設定して、このURLでアクセスされた場合に振り分けるターゲットグループを設定します。

上記では「https://hugahuga.com/hogehoge/index/」にアクセスされた場合に「web1」のターゲットグループで指定したインスタンスにアクセスさせたい、という感じです。

シンプルにこれだけで、設定は完了。

ブラウザなどで叩いてみると、ちゃんと指定したインスタンスにアクセスしているようです。

 

メルセデスベンツ 純正アクセサリー パフュームアトマイザー 交換用リフィル FREESIDE MOOD

Posted by yonezo in 日記 | Leave a comment

うちの車はなんか知らんが、芳香剤入れないと異様に臭う。汗臭いのか革の臭いなのかよくわからない独特のにおいがするので、とりあえず純正の芳香剤(パフュームアトマイザー)を使ってます。

これ、匂いは良くて付けておくと自動的に拡散してくれるので良いのだが、値段がアレです。さすがにベンツです。

8000円以上するけど、2年くらい持つのかな。そう考えるとそれほど高いものではないのかも。

メルセデスベンツ 純正アクセサリー パフュームアトマイザー 交換用リフィル FREESIDE MOOD

握力計ってみた

Posted by yonezo in 日記 | Leave a comment

子供が学校で体力測定したらしく「握力が全然ない!」と騒いでいたので、ポチってみました。

人の事言えなかった。

コストコ

Posted by yonezo in 日記 | Leave a comment
そろそろハロウィンですか🎃

事務所の水やらが無くなってきたのでコストコへ。

入る時にマスクしてなかったら

「マスクして下さい!マスク持ってますか?!」

だって。まだまだ終わりそうに無いねぇ。

うに小屋行ってきた。

Posted by yonezo in 日記 | Leave a comment
タカさんと行ってきました。

かなり期待してました。が、まぁコスパは良く無いですね。牡蠣が99円というのは驚きましたが、その他のメニューが…。全般的に高めで、渋谷ってこんなに高いのかと驚きました。さすが都会。

ネギ間の焼き鳥が一本確か580円くらいだったので、相当なデカさのヤツが来るのかなと思ってたら、まぁ普通。少し大きいかなくらい。250円てとこじゃないかなぁ。

極め付けは看板にドドーン!と写っているウニの四種盛り。「この量で3800円?!安いかも!」と思ってそれを3人分頼んだら、まぁ少ないこと、唖然としました。

小鉢に入ってる量は1口分て感じ。

これなら、少し良い回転寿司の軍艦食べた方が満足度は高そうです。いや、間違いなく高い。

量的にも全然満たされないので最後にご飯でもと、痛風の人が泣いて逃げ出しそうなヤツを注文。

雲丹少ねぇ…

写真だと大きそうに見えるけど実際は量は少な目で良かったです。

結果、3人で35000円とかでした。うち1人は女性で殆ど食べてなかったのでコスパ具合が分かるかと思います。

お金のある人はネタで行くのもいいかと思います。私はもう行かないと思います。

sunriseにて

Posted by yonezo in 日記 | Leave a comment

マスターに山崎の12年と白州の12年を勧められて飲んだら二日酔いです。

【備忘録】python+AWS SESでメール送信

Posted by yonezo in 日記 | Leave a comment

タイトル通り、pythonでSESからメール送信してみました。

今回は既に運用中のAWSアカウントにて設定したので、セットアップとかは省略。また、送信先については固定で1つだけなので制限解除申請などはしてません。

手順としては、

1.SES側での送信先メールアドレス認証作業

2.AMIで認証情報作成

3.python実装

という感じ。

SES側での送信先メールアドレス認証作業

登録と検証を行わずに送信しようとするとエラーに。

Email address is not verified. The following identities failed the check in region US-WEST-2:[送信先メールアドレス]

とりあえず、SESの画面から送信先を登録。

検証メールを送信してメール内のURLをクリックするだけで完了。簡単。

AMIで認証情報作成

こちらも既存のユーザーに認証情報タブからアクセスキーの作成を実行して保存。簡単。

python実装

いろいろやり方はあると思いますが、とりあえず公式のやり方が無難だろうという事で、こちらを参考。

https://docs.aws.amazon.com/ses/latest/dg/send-email-raw.html

なぜかアクセスキーとかセットする部分が無かったので、このままだとエラーに。

botocore.exceptions.NoCredentialsError: Unable to locate credentials

なので、

client = boto3.client(‘ses’,region_name=AWS_REGION)

この部分を

client = boto3.client(‘ses’,region_name=AWS_REGION,
                aws_access_key_id=AWS_ACCESS_KEY,
                aws_secret_access_key=AWS_SECRET_KEY)
 
のようにしました。
 
ファイルも添付できて良きですね。

 

【備忘録】AWS EC2でpython+selenium+chromeでスクレイピング

Posted by yonezo in 日記 | Leave a comment

久しぶりの更新がこれかよですが、何かの約に立つかなと。

目的:

とあるサイトへのスクレイピング。

pythonはほぼ初めてだったが、まぁスクレイピングくらいならそれほど難しくはないですね。

やったこと:

とあるサイトにヘッドレスchromeで接続し、CSVをダウンロードする、というものです。

とりあえずEC2立ち上げ。

これは特に凝ったことはせず、とりあえずAmazonLinuxなインスタンスを立ち上げ。

ec2-userでログインしたら、以下実行。

※python3、pip3はデフォルトで入っているので、省略です。
 
確認は
 
python3 -V
 
もし無かったら
 
yum install python3
 
pip3の確認は
 
pip3 -V
 
ここからが本番。seleniumをインストール。
 
pip3 install Selenium
 
確認
 
pip3 show selenium
 
Chromeインストール
 
rpm -qa | grep google-chrome
 
 
または
 
google-chrome –version
 
 
下記のサイトからgoogle-chromeをインストールした際のバージョンに合うChromeを選択する
 
 
chromedriverインストール
 
cd /tmp/
 
chromedriverをダウンロード
 
wget https://chromedriver.storage.googleapis.com/105.0.5195.52/chromedriver_linux64.zip
 
解凍
 
unzip chromedriver_linux64.zip
 
解凍したファイルを /user/bin配下に移動
※移動するだけでOK
 
sudo mv chromedriver /usr/bin/chromedriver
 
確認
 
chromedriver –version
 
 
と、ここまでで環境は整うのだが、今回は以下も必要だったので入れました。
 
pip3 install requests
 
pip3 install scp
 
pip3 install paramiko
 
で、ここで単純に「rootでいいだろう」とsudoとかしてインストールすると、「rootでインストールするのはおススメしないぜ。」的な警告が出ます。
 
まぁおススメしないだけで動くんだろ!と思いながらテストしていたんですが、
 

「DevToolsActivePort file doesn’t exist」

 
のエラーが。
 
調べてみるとoptionを付けろだとか、書いてあるんですが何をやっても改善せず。
 
なんだか人によって環境によって対応策が異なり、ある人はこれでOKだったがある人は何やってもダメみたいなカオスが繰り広げられてました。
解決した人もいれば、いない人もいるような感じ。
 
で、私も全く原因が分からず数時間。
 
ただ、なぜかもう一つ同じ環境を作って、そこで実行するとうまく動くのです。
 
ただ上記のインストールを同じようにしただけなのに!
 
で、いろいろやっていたんですが結果、上記pip3でインストールした3つのモジュール?をrootで入れてしまうとエラーになるようでした。
 
これ、uninstallして再度installしてもダメでした。
何か順番的な影響があったんでしょうか。
 
当然、ec2-userでインストールしてから自分のuserをaddしたりしてpip3でインストールしたのと他のユーザーで実行しても同様。
 
何か設定をchromeのdriverが持ってしまうのでしょうか。
なので、selenium+chromeでスクレイピングする時は、必ず最終的な実行ユーザーを作ってから、そこでpip3でのインストールを行うべしという教訓でした。
 
 
きっとこれも私だけの事象かも知れませんが、何かのお役に立てば&モアベターな解決策があれば教えてください。