Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
第90回 雲勉【オンライン:初心者向け】AWS App RunnerにLaravelをデプロイ...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Y.Sumikura
December 09, 2022
Technology
940
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第90回 雲勉【オンライン:初心者向け】AWS App RunnerにLaravelをデプロイしてLINEBotを作ってみよう
Y.Sumikura
December 09, 2022
More Decks by Y.Sumikura
See All by Y.Sumikura
第103回 雲勉【オンライン】インフラエンジニアにおける ChatGPT の便利な使い方と注意点
sumikurayurie1125
1
340
第101回 雲勉【オンライン】VPC から始めるネットワーク入門
sumikurayurie1125
0
200
第99回 雲勉【オンライン:初心者向け】Infrastructure as Code (IaC) 入門 〜TerraformとAnsibleを使ってみよう〜
sumikurayurie1125
0
280
第96回 雲勉【オンライン:初心者向け】インフラエンジニアのKubernetes入門
sumikurayurie1125
0
280
第8回 雲勉LT【オンライン:中級者向け】AthenaでS3上のデータとDynamoDBのデータを結合する
sumikurayurie1125
0
400
第93回 雲勉【オンライン:初心者向け】CI/CDって結局何なの?インフラエンジニアがCode3兄弟を学ぶ
sumikurayurie1125
13
5.4k
第7回 雲勉LT【オンライン:初心者向け】サーバレスコンテナサービス Lambda, Fargate, App Runnerの特徴、違いを解説
sumikurayurie1125
3
710
第6回 雲勉LT【オンライン:初心者向け】2022年 気になったアップデート情報:「RDSコンソールの、EC2ワンクリック接続オプション」について
sumikurayurie1125
0
200
第5回 雲勉LT【オンライン:初心者向け】GCのサービスだけでCI_CDを構築してみよう
sumikurayurie1125
0
87
Other Decks in Technology
See All in Technology
20260929_AmazonGuardDutyの検出通知メールにAWS DevOpsAgentの調査結果を追加する
yhana
1
330
AWS App Runnerから Cloudflare Workersへ移行した話
ryota09
0
110
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
620
2026-09-26 Platform Engineering Kaigi 2026 インフラとアプリの境界線と委譲の設計 / Drawing the Infra and App Line
masasuzu
0
420
特殊変数大全
dak2
0
160
「今盗んで、後で解く」に備える ― AWSのポスト量子暗号入門
yama3133
2
270
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
1.7k
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
3.3k
Harness Engineering on Rails
joelq
0
730
行動するAIのためのオントロジー | DevRev — Encraft #26.pdf
dvrv_tknrszk
1
560
C#未経験の僕がAIに読めるコードを書かせるまで
maguroalternative
0
340
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
sanghyuk
0
230
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Designing Powerful Visuals for Engaging Learning
tmiket
1
580
Docker and Python
trallard
47
4.2k
HDC tutorial
michielstock
2
920
The Cult of Friendly URLs
andyhume
79
7k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
530
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
690
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Transcript
第90回 雲勉【オンライン︓初⼼者向け】 AWS App RunnerにLaravelをデプロイして LINEBotを作ってみよう 2022/12/08
アジェンダ 2 0. ⾃⼰紹介 1. AppRunnerとは(19:05~19:15) 2. AppRunnerにLaravelをデプロイ (19:15~19:25) 3.
LINE Botの作成 (19:25~19:40) 4. まとめ (19:40~19:45) 5. 質疑応答(19:45~20:00)
0.講師⾃⼰紹介 3 n 名前 有本 史紀(ありもとふみのり) • クラウドインテグレーション事業部開発第⼆セクション • 過去3社ほどWebエンジニアとして活動
• 2020年5⽉アイレット ⼊社 • 主にLAMP環境でのアプリケーション開発に従事、アイレット ではそれに加えてLambdaでのサーバーレスアプリケーショ ン開発、Redshiftを使ったDWH開発などを⾏なっている
1. AppRunnerとは 4
1. AppRunnerとは 5 n 概要 • 「AWS App Runner は、コンテナ化されたウェブアプリケーションや
API を開発者が簡単かつ迅速にデプロイ できるフルマネージド型サービスです。⼤規模に、しかも事前のインフラ経験を必要とせずにデプロイすること ができます。ソースコードからでも、コンテナイメージからでも始められます。App Runner は、ウェブアプリ ケーションを⾃動的に構築してデプロイし、暗号化を利⽤するトラフィックの負荷を分散し、トラフィックの ニーズに合わせてスケールし、お客様のサービスがプライベート Amazon VPC で実⾏される他の AWS のサー ビスやアプリケーションと簡単に通信できるようにします。App Runner を使⽤すれば、サーバーやスケーリン グについて煩わされることもなく、アプリケーションに集中できる時間が増えます。」 • → 裏側でFargateが実⾏されているので⾃動でスケーリング、AZ分散が⾏われる • → インフラに関する詳細な知⾒があまりなくてもコンテナアプリケーションをデプロイできる︕
1. AppRunnerとは 6 n AppRunnerでできること • AppRunner単体でWebアプリケーションを構築できる - 独⾃ドメインが払い出される •
オートスケーリング • CI / CD環境構築 - ECRにDockerイメージがプッシュされたとき - Gitリポジトリにプッシュされたとき 対応している⾔語 (https://docs.aws.amazon.com/apprunner/latest/dg/service-source-code.html) • CloudWatch - メトリクス監視 - ログ管理 • Route53でのカスタムドメイン作成 • IAMで他のサービスとの連携を制御できる(ただしCLIの知識が必要)
1. AppRunnerとは 7 n AppRunnerでできないこと(2022年11⽉現在) • シークレットマネージャー、パラメータストアの連携 - 環境変数はAppRunnerのコントロールパネルから設定する •
複数のイメージ管理 - PHPだとNginxとPHP-FPMのイメージをタスク定義ファイルで連携するような⽅法は使えない • セキュリティグループにおけるインバウンド設定 • 別のサービスからInvokeする https://docs.aws.amazon.com/aws-sdk-php/v3/api/class-Aws.AppRunner.AppRunnerClient.html 基本的にはhttpのエンドポイントでの実⾏
1. AppRunnerとは 8 n AppRunnerのユースケース • モバイルアプリやAPIのバックエンド • ⼩規模ウェブサイトのCMSシステム等 •
アプリのプロトタイプ環境としての利⽤ • コンテナでのアプリケーション構築を試してみたい⼈
1. AppRunnerとは 9 n 今回はLINEBotを利⽤したアプリを作ってみよう 本⽇はブルーの枠内 • App Runner •
ECR の説明を⾏います
1. AppRunnerとは 10 n 今回はLINEBotを利⽤したアプリを作ってみよう 完成サンプルイメージ
2. AppRunnerにLaravelをデプロイ 11
2.AppRunnerにLaravelをデプロイ 12 n 環境について • MacOS catalina • Docker version
20.10.6 • aws version aws-cli/2.1.36 • Laravel v9.21.6 • PHP v8.1.13 n 他に必要なもの • AWSアカウント • AppRunner、ECRの操作に関するロール • アクセスキーとシークレットキー • LINEアカウント
2.AppRunnerにLaravelをデプロイ 13 n アプリケーションの構造 docker/ (各種Dockerfile) ┣ ecs ┣ mysql
┣ nginx ┣ php src/ (Laravelベースのソースコード) ┣ app ・・・・
2.AppRunnerにLaravelをデプロイ 14 n Dockerfileについて PHPの開発はローカル環境はQiitaなどで調べると出てくる「nginx」と「php-fpm」を併⽤ する「docker-compose」を使⽤した構成を利⽤することが多い https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4
2.AppRunnerにLaravelをデプロイ 15 n Dockerfileについて ただ、この構成だと前述の通り、AppRunnerにはデプロイできない それで別途ECRにビルドするためのDockerfileをひとつ⽤意する
2.AppRunnerにLaravelをデプロイ 16 n Dockerfileについて
2.AppRunnerにLaravelをデプロイ 17 n ローカルでビルドしてみる docker build -t laravel-docker-aws -f ./docker/ecs/Dockerfile
./src
2.AppRunnerにLaravelをデプロイ 18 n ローカル環境で確認する docker run --rm -it -p 80:80
laravel-docker-aws http://localhostにアクセス
2.AppRunnerでLaravelをデプロイ 19 n コンテナイメージをECRにプッシュする コンソール画⾯ > Elastic Container Registry >
レジストリの作成 「プッシュコマンドの表⽰」からコマンドを取得 aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 21xxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com docker tag laravel-docker-aws:latest 21 21xxxxxxxxxx.dkr.ecr.ap-northeast- 1.amazonaws.com/laravel_sandbox:latest docker push 21 21xxxxxxxxxx.dkr.ecr.ap-northeast- 1.amazonaws.com/laravel_sandbox:latest
2.AppRunnerでLaravelをデプロイ 20 n ECRにプッシュする
2.AppRunnerでLaravelをデプロイ 21 n ECRにプッシュする
2.AppRunnerでLaravelをデプロイ 22 n ECRからAppRunnerにデプロイ 「コンソール画⾯」 > 「AppRunner」 > 「サービスの作成」
2.AppRunnerでLaravelをデプロイ 23 n ECRからAppRunnerにデプロイ 基本的にはデフォルトの設定のままでOK
2.AppRunnerでLaravelをデプロイ 24 n ECRからAppRunnerにデプロイ ポートを80に変更
2.AppRunnerでLaravelをデプロイ 25 n ECRからAppRunnerにデプロイ ビルドが終了すると「デフォルトドメイン」にアクセスできます
3. LINEBot作成 26
3. LINEBot作成 27 n LINEBotの考え⽅ • LINE Developersのアカウントにログインして「Create a new
channel」から 「Messaging API」を作成する
3. LINEBot作成 28 n LINEBotの考え⽅ • WebhookのURLとして今回作成するAppRunnerのURLを指定する
3. LINEBot作成 29 n AppRunner側のアプリに必要なのは • チャンネルシークレット • チャンネルアクセストークン n
LINEBotに必要なものは • WebhookURL
3. LINEBot作成 30 n Laravelでの実装⽅法 • 「LINE Messaging API SDK
for PHP」をインストール • https://github.com/line/line-bot-sdk-php $ composer require linecorp/line-bot-sdk
3. LINEBot作成 31 n 実装イメージ
3. LINEBot作成 32 n Laravelでの実装⽅法 < routes/api.php > webhookの受け⼊れのルートを設定する Route::post('/webhook',
[App¥Http¥Controllers¥LineWebhookController::class, 'index'])->name('api.webhook_index');
3. LINEBot作成 33 n Laravelでの実装⽅法(コントローラ) < app/controllers/LineWebhookController> <⼤切な部分> $httpClient =
new CurlHTTPClient(config('line.line_channel_access_token')); $bot = new LINEBot($httpClient, ['channelSecret' => config('line.line_channel_secret')]); $signature = $request->header(HTTPHeader::LINE_SIGNATURE); $events = $bot->parseEventRequest($request->getContent(), $signature);
3. LINEBot作成 34 n Laravelでの実装⽅法
3. LINEBot作成 35 n Laravelでの実装⽅法 <Repositoryクラス>
3. LINEBot作成 36 n Laravelでの実装⽅法 <Botの設定ファイル>
3. LINEBot作成 37 n 今後のアップデート Botの設定ファイルについて ・完全⼀致 ・部分⼀致 に分けて設定していくことで精度をあげていく 今回はconfigファイルで設定しているが、
• S3のJsonファイルを取得する • DBを使⽤する 等のブラッシュアップを検討していく
3. LINEBot作成 38 n 今後のアップデート 完全⼀致でも部分⼀致でもキャッチできなかったテキストメッセージをDBに保存して分析する ことでユーザーの要望に対する精度をあげていく
4. まとめ 39 • AppRunnerはDockerfileひとつで⼿軽にデプロイ、CI/CDもできるのでコンテナベースのアプ リケーション⼊⾨におすすめです。 • LINE Botはバックエンドの設計に注⼒できるし、拡張性もあるので「何か作ってみたいけど 何を作ればいいかわからない」⽅におすすめです︕
4. まとめ 40 ありがとうございました m(__)m