2019/12/02(月)AWS Lambda 用php7.4.zipをつくる

はてブ数

PHP7.4がリリースされましたね。

そうなったら、当然AWS Lambdaで使いたいじゃないですか(短絡的思考

早速、やってみました。

クラメソさんの以下の記事が参考になりました。

https://dev.classmethod.jp/cloud/aws/create-lambda-custom-runtime-php72/

7.3 のPHPイメージを作成する環境は、以下にあります。

https://github.com/stackery/php-lambda-layer

まずは、cloneします。

$ git clone https://github.com/stackery/php-lambda-layer.git

残念ながら 2019/12/2時点ではPHP7.4には対応していませんが、一部有用ですので活用していきます。

Makefileを見ますと、どんな感じでイメージを作成しているかが分かります。

php73.zip:
	docker run --rm -e http_proxy=${http_proxy} -v $(ROOT_DIR):/opt/layer lambci/lambda:build-provided /opt/layer/build-php-remi.sh 3

当方の環境がWindowsであるのと、プロキシとかは不要であることから、直接Dockerコマンドをたたくことにします。

> docker.exe --rm -v C:\path\to\php-lambda-layer:/opt/layer lambci/lambda:build-provided /opt/layer/build-php-remi.sh 4

。。。失敗しました。

cp: cannot stat ‘/usr/lib64/libonig.so.5’: No such file or directory

鬼車がPHP本体にバンドルされなくなったアレですね。

build-php-remi.sh を修正します。

yum install -y httpd
yum install -y postgresql-devel
yum install -y libargon2-devel

# 以下を追加
yum install -y oniguruma5

先ほどのdockerコマンドをやり直します。今度は成功しました。 php74.zip が作成されています。

これをどうごにょごにょするのかは、調べ途中。。。

2019/11/24(日)AWS IAMこねくりまわし

はてブ数

昨日の投稿のつづき。

やっぱりAWSを触るからには、AWS CLIですべてを操作したいじゃないですか。

昨日の段階ではルートアカウントで操作したったらええやん思ってましたが、AWSに「ルートアカウントのアクセスキーを消せ!」と怒られたので、ひとまずIAMだけこねくりまわせるだけのグループ・ユーザを作成します。

グループ、ユーザの作成

新規グループを作成します。

01_create-group.png

グループ名を入力します。

02_create-group-name.png

IAMFullAccessポリシーを割り当てます。

03_create-group-attach-policy.png

確認して、グループ作成します。

04_create-group-velify.png

新規ユーザを作成します。

05_create-user.png

ユーザ名を入力します。

06_create-user-name.png

ユーザにグループを割り当てます。

07_create-user-add-group.png

確認して、ユーザを作成します。

08_create-user-verify.png

アクセスキーを取得します。

09_create-user-get-key.png

これで、AWS CLIからIAMを更新する準備が整いました。

で、今日は時間切れ。

2019/11/23(土)#たまもく 2019/11/23 成果

はてブ数

たまもくも少し間をあけましたが、再開してトータル第6回を数えています。

やるからにはちゃんと成果を記録に残さねば、と思いまして、作業記録を残します。

今回は、来月のアドベントカレンダーのネタであるところの、「AWS LambdaでPHPでスクレイピングする環境を整える」件の調査を進めました。

AWS Lambda に Serverless CLI をつかってデプロイする

インストールとかは、以下の手順。sudoとかは適宜つけてください。

$ pip install awscli aws-sam-cli
$ npm i -g serverless

まずはawsにログインします。アクセスキー、シークレットの入手は次の節でまとめます。

$ aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Default region name [None]: ap-northeast-1
Default output format [None]:

テンプレを使ってプロジェクトを作ります。

$ sls create -t aws-provided -p aws-php-selenium-docker

まずは、テンプレそのまんまをデプロイしてみます。

$ sls deploy

権限が足りないエラー発生、権限追加、を何度か繰り返して、ようやくデプロイできました。

呼び出してみます。

$ sls invoke -f hello
{
    "body": {
        "input": {},
        "msg": "Wecome to serverless!"
    }
}

JSONが返ってきました。

AWS IAM で適切な権限のユーザをつくる

これ、だいぶ試行錯誤しました。正解かどうかも若干あやしいところ。ひとまず、やったことを残します。誰かツッコんでください。(切実)

  1. ルートアカウントでログイン
  2. IAM でグループを作成する
  3. IAM でユーザを作成し、グループに割り当てる
  4. アクセスキー、シークレットを取得する

IAMの画面です。

グループを作成します。

01_create-group.png

グループに適当に名前をつけます。

02_create-group-name.png

適当にポリシーをアタッチします。

03_create-group-attach-policy.png

確認画面で、作成ボタンで作成します。

04_create-group-verify.png

次に、ユーザを作成します。

05_create-user.png

適当にユーザ名を作成します。

06_create-user-name.png

ユーザを先ほど作成したグループに加えます。

07_create-user-add-group.png

こうしてできたユーザの認証情報から、アクセスキーの生成を行います。

08_create-user-get-access-key.png
09_create-user-show-access-key.png

あとから思ったんですけど

これ、awscli から全部できるんじゃね?と思って、調べてみたらできるっぽいです。

ルートアカウントのセキュリティ資格情報を開きます。

10_root-user-authentication.png

「アクセスキー (アクセスキー ID とシークレットアクセスキー)」から、新しいアクセスキーを作成します。

11_root-user-create-key.png

これを、aws configure で入力してルートアカウント権限になります。あとは、コマンドをバシバシと打つ。

・・・はずなんですけど、今日は時間切れ。

2019/11/09(土)仕事の楽しさ

久しぶりのブログです。が、あまり明るい内容ではありません。(´・ω・`)

zac-durant-_6HzPU9Hyfg-unsplash.jpg

謎の

少し前、詳細は伏せますが、謎の2on1がありました。(なんだそりゃ

そこで、「今の仕事は楽しいか?」と問われ「楽しいとは何だろう。今まで仕事で楽しいと感じたことがない。今までずっと仕事は辛く厳しいものだった。今は辛くはないのは確か。きっと楽しいのだと思う」と答えました。

聞いていた2人は「(楽しくなさそうな)謎がとけた」「それは問題だ」と。

仕事が楽しい状態とはどんなものかを定義します。以下かと思います。

  • 責任を持って任されている
  • 困難な課題に対し着実に成果を出せている
  • やり甲斐がある

一方で、自分の仕事の環境、評価は次のような状態が長く続きました。

  • 任されず、評価されない
  • 結果を出せない
  • うまく行かないことの方が多い
  • 叱責される
  • 成果は出せても短期的なものにとどまる

また、以前の記事でも触れましたが、いろいろ困難な状態が続くことが多くありました。(こうやって見ると、本当に仕事できない奴ですな…)

ひとことでまとめれば、「自己肯定感が得られない」状態が多かったと思います。

昔語り

自己肯定感が得られなかった要因の一つに、背景に子供の頃の体験と大人になってからのギャップがあるかと思いました。

私は、自慢に聞こえるかも知れませんが、勉強ができる子供でした。小学校の頃の勉強は理解できるのが当たり前、中学でも校内10位前後をキープし、それなりの進学校へ進み、旧帝大を出ました。10代は、できて当たり前、できて当然の世界を生きていました。

一見順風満帆に見えますが、大学に入る頃からうまく行かなくなります。大学に入るのにニ浪し、大学では勉強について行けなくなり、いろいろあって一年留年しました。

そして、就職によって世界が変わります。仕事ができない奴の誕生です。

仕事上の失敗は誰にでもあることですが、私は失敗のリカバリーがとにかく下手でした。よくやったのは、小さな失敗を軽視し、または気づかずにそのまま突き進み、後で大事になる、というのをよくやりました。

そしてしばしば上司と衝突しました。些細なこと(と当時は思ってました)をネチネチ言ってくるのも気に入らなかったですし、失敗そのものを受け入れられず、落ち込むだけ落ち込んで、改善行為を行いませんでした。

結果、理想と現実のギャップに苦しみ、体を壊して休職に至ったのは過去の記事のとおり。

楽しむ、とは

昔語りが過ぎました。

では、仕事が楽しくなるには、どうしていったらいいのか。

大きく分けてふたつのフェーズがあるかなと思いました。

  • 過程を楽しむ
  • 結果が全てを癒やす

現在ではいい歳のおっさんになりまして、仕事が「基本うまく行かないもの」であることを理解しました。

都度、軌道修正し、自身を成長、変化させ、乗り越えたり迂回したりしてゴールへの道筋をつける、その行為自体をゲームとして楽しむことが重要かなと思えるようになりました。

また、二つ目は前職の社長の座右の銘なんですが、なんだかんだゴールにたどり着くことがカタストロフィを生むのですよね。

今のところ、入社して4ヶ月が経とうとしています。結果はまだまだ出せていないですから、過程を楽しむ必要があります。

果たして、出来ているだろうか。うーむ…

(答え、出ず)