sironekotoroの日記

Perl で楽をしたい

「PHPでもサーバーレス!AWS Lambda Custom Runtime 入門」でさっそく詰まる

AWS Lambda で詰まった

  • 前回AWS Lambda を使って Perl を動かして Hello, World! まではできた
  • Lambda 上で自作のモジュールを動かしたいけど、やり方がわからない
    • コンテナの所定のフォルダに入れる?
    • どのコンテナ使うの?Alpineとかでいいの?

AWS Lambda 標準でサポートされていない Perl を使うっていう獣道をいくんだから、分からないの仕方ないよねー

で、この本を読んでみることにしました。 id:taiko19xx さんの本です。

PHP以外の言語でカスタムランタイムを実行する際にも役に立つ一冊です。

この一言にすがる気持ちで・・・

そう、PHPAWS Lambda 標準でサポートされていない言語なので、何かわかるのではないか!?と。

時の流れは無常

この本は 2019 年に発行された本です。そして、2 年もあれば AWS の設定画面が変わるには十分すぎる時間なわけです。

と言うわけで、最初の phpinfo() を出すところまでの画面ショットと解説です。

もちろん、自分用です。

自分は AWS Lambda 触って日が浅いです。Amazon 公式のハンズオンを見て動かしただけというレベル感です。

pages.awscloud.com

ハンズオンごとに登録を求められるのが本当に鬱陶しいのですが、まぁ、相手は企業やしな・・・と言う寛大な気持ちで登録してハンズオン見させてもらっています。

2.1 Lambdaの設定をする

  • 図2.4:名前とランタイム

    • 「関数の作成」 -> ランタイムの選択「ユーザー独自のブートストラップを提供する」とあるが、ない。
    • Amazon Linux 2 でユーザー独自のブートストラップを提供する」を選択
  • 図2.7:関数にレイヤーを追加

    • 画面上部の「ARN を指定」のラジオボタンを選択
    • 画面下部の「ARN を指定」の入力欄に arn:aws:lambda:ap-northeast-1:834655946912:layer:php-demo-layer:4 を入力
      • PC 版 kindle からコピペするとハイフンが消えてしまうようなので注意
    • 画面右下の「追加」ボタンをクリック
  • 図2.13:ハンドラを変更

    • ハンドラはコードエディタの下、ランタイム設定の右上にある「編集」ボタンをクリックしてデフォルトの hello.handler から変更する
  • そして、ここが大事なのですが、コードを書いた後にデプロイする必要があります。

    • f:id:sironekotoro:20210329183705p:plain
    • この画像のオレンジ色の「Deploy」ボタンをクリックすること!
    • このボタンを押していないと、API Gateway と関連づけてもエラーになります。
      • ブラウザで API Gateway の呼び出し先をクリックした時のエラー
      • Warning: Unknown: failed to open stream: No such file or directory in Unknown on line 0 Fatal error: Unknown: Failed opening required 'index.php' (include_path='.:/usr/share/pear7:/usr/share/php7') in Unknown on line 0
      • f:id:sironekotoro:20210329184103p:plain

2.2 API Gateway の設定をする

  • 図2.15:APIGatewayのコンソール

    • API タイプを選択」の画面になるので「REST API」の「構築」ボタンをクリック
    • f:id:sironekotoro:20210328230854p:plain
      • この確認画面が出たらokボタンをクリックして閉じる
  • 図2.16:APIの新規作成

    • 「新しい API」のラジオボタンを選択
    • 名前と説明
      • API名:CustomRuntimeFirstFunction
      • 説明:空欄でok
  • 図2.20:権限の許可

    • f:id:sironekotoro:20210328231512p:plain
    • ここまでは掲載通りいける感じ。くれぐれも「Lambda プロキシ統合の使用」のチェックを忘れないこと!
      • もちろん自分が忘れたのでここで注釈として書いておきます・・・
      • f:id:sironekotoro:20210329185113p:plain
  • ステージ

    • f:id:sironekotoro:20210328232129p:plain
  • 画面確認

    • f:id:sironekotoro:20210328232346p:plain

ということで

回り道してる感もあるんですが、それもまた楽しからずや、です。