"AWS Lambda에서 Laravel을 움직여 보았습니다"를 시도했습니다.

죄송합니다, 완전히 두 번 달인 녀석을 씁니다. 어레인지는 할 수 있으면 하지만 우선 해본다.
약간의 LT를 할지도 모르고, 그 자료를 대체로 이런 식으로 생각하고 있어요.

AWS Lambda에서 Laravel을 실행해 보았습니다.

Lambda Layer 만들기



그런 이유로 견본대로 먼저 시도한다. 과연, Lambda의 Layer 사용하는군요. 한번 해보고 싶었다.
하지만 어렵지. 너무 잘 모르겠어요. 손을 움직여 기억하자.

실은 프라이빗에서는 ec2 사용하지 않고, 어쩐지 작업할 때는 gcp의 무료 테두리로 하고 있었습니다만, 이것은 ec2의 amazon linux로 하는 것이 틀림없을 것 같기 때문에 t3.nano 만들어 해 봅니다.
떨어질 수도 있고, 스팟 인스턴스와 야를 사용해 볼까. 시도에.
통상의 온 디맨드 인스턴스는 0.0068USD/H인것 같지만, 0.0041로 입찰해 보았다. 월 400엔 안 갈 정도인가.

그리고, 무사히 작성할 수 있고 ssh도 할 수 있었으므로 진행해 가자.
  • yum으로 git 넣는다
  • git clone htps : // 기주 b. 이 m / s tac ry / php - mb입니다 - ぁi r
  • docker 있다고. sudo amazon-linux-extras install docker
  • sudo service docker start
  • build.sh 교체 (견본대로)
  • bootstrap 편집 (견본대로)
  • sudo make (php-lambda-layer 내에서)
  • upload.sh 편집. (md5를 md5sum으로 다시 쓰고 bucket을 만들거나 regions.sh를 편집하여 ap-northeast-1로 만들거나 bucket_name을 바꿉니다)
  • make upload
  • publish.sh도 편집 (bucket_name 바꾸거나)
  • pip install ( htps : // / p. py 빠. 이오 / 엔 / s 타 b / 엔 s 팻 g / # 인 s 흠 g ぃ )
  • sudo pip install -U awscli
  • make publish

  • 그러자 뭔가 Layer는 할 수 있었다.
    Lambda 함수가 동작하는 docker 환경이라고도 생각하면 좋을까.



    견본 사이트의 SAM 템플릿을 만들고 싶습니다.

    Lambda 함수 만들기



    또한 호스트에 필요한 응용 프로그램을 넣어 둡니다.
    $ sudo amazon-linux-extras install php7.2  
    $ sudo yum install -y php-cli php-mbstring php-mysqlnd php-opcache php-pdo php-pgsql zip
    $ curl -sS https://getcomposer.org/installer | php
    $ php composer.phar create-project --prefer-dist laravel/laravel laravel "5.7.*"
    

    그리고 캐시를/tmp에 놓치는 것도 해 둔다.
    bootstrap/app.php와 config/cache.php와 config/view.php를 편집하십시오. 그리고 config/session.php도.

    그래서 sam cli를 넣으십시오. 덧붙여서 gcc나 cpp도 넣었습니다.
    $ sudo pip install --user --upgrade aws-sam-cli
    

    이것도 그대로.
    sam package \
        --template-file template.yml \
        --output-template-file serverless-laravel.yml \
        --s3-bucket <デプロイ用バケット名>
    
    sam deploy \
        --template-file serverless-laravel.yml \
        --stack-name serverless-laravel \
        --capabilities CAPABILITY_IAM
    

    오류



    그래서 deploy 할 수 있었지만.
    [Sat Dec 29 00:53:40 2018] PHP Fatal error: require(): Failed opening required '/var/task/public/../vendor/autoload.php' (include_path='.:/usr/share/pear7:/usr/share/php7') in /var/task/public/index.php on line 24
    

    모르겠지만 composer install이라든가 하면 좋을까. vendor 디렉토리 없음.
    laravel directory에 {"message": "Internal server error"} 라고 친다.
    치면 phpunit가 어떻게 든지 말해져, 그렇게 말하자면 composer.json에서 지워도 괜찮은 composer install.

    그리고, 그러면 다음은 이런 에러 나왔다.



    bootstrap/cache에 쓸 수 없어, 라고 말하고 있는 것은 알지만… 이것을/tmp에 가져오려면 어떻게 하면 에이야로.

    라고 생각했지만 artisan 실행하면 좋을 뿐이었다.
    $ sudo php artisan key:generate
    $ sudo php artisan config:cache
    



    오, 이렇게 되면 앞으로 조금 없어진다.
    분명히 view를 볼 때는 bootstrap/cache/config.php를 보는 것 같지만, 이것은 deploy 환경에서 artisan을 실행하면 deploy 환경의 path가 될 것 같다.
    정공법이 아니겠지만, lambda의 환경과 path 맞추어 버릴까. .
    $ mv laravel /var/task
    $ ln -s /var/task ./laravel
    $ cd !$
    $ sudo php artisan config:clear
    $ sudo php artisan config:cache
    

    이것으로 어때!



    괜찮아.
    하지만 결국 해보았을 뿐이다.
    vue.js라든지 사용하고 싶었지만 이미 졸립니다.
    오늘은 여기까지-.

    라고 할까 정직한 곳, laravel을 서버리스로 하는 의미는 그다지 모르겠습니다만. .

    좋은 웹페이지 즐겨찾기