Closed12
SSRありのNetx.jsアプリをAWS App Runnerにデプロイするまでのメモ
ちょうど記事が出てたので自分でも試してみる
Amplifyへのデプロイはしたことあるのでせっかくだし、AWS App Runnerのお試しも含めて
手順スレッド
やった手順をここに書いてく
サンプルのNext.jsアプリの用意
実コードはここ
SSRするような処理を追加する
pageの実装
src/pages/index.tsx
import { GetServerSideProps, NextPage } from 'next'
// 型チェックが弱いの許してぇ
const getHello = () => fetch('http://localhost:3000/api/hello')
interface IndexPageProps {
data: {
message: string
}
}
const IndexPage: NextPage<IndexPageProps> = ({data}) => {
console.log({data});
return <h1>{data.message}</h1>
}
export default IndexPage
export const getServerSideProps: GetServerSideProps = async () => {
const res = await getHello()
const data = await res.json()
return { props: { data } }
}
apiの実装
src/pages/api/hello.ts
import { NextApiRequest, NextApiResponse } from "next";
const handler = async (_req: NextApiRequest, res: NextApiResponse) => {
res.status(200).json({
message: 'Hello! おろかなせかい'
})
}
export default handler
package.jsonの設定
pacakge.json
{
"scripts": {
"setup": "yarn --frozen-lockfile --ignore-optional",
"dev": "next",
"build": "next build",
"start": "next start -p $PORT",
"typecheck": "tsc"
},
}
App Runnnerの設定
- ソースコードリポジトリを選ぶ
- githubと連携する
- デプロイするリポジトリとブランチを選択する
- runtimeとビルドコマンド・スタートコマンドを設定する
- 環境変数の
PORT
を追加し3000にした - あとはデフォルトのままにした
githubと連携する画面
構築設定の画面
DynamoDBにアクセスしたい
どんぴしゃりなことを記事にされてるのを発見!!
とりあえずdynamo dbとアクセスできるiam作る
dynamo dbは画面ぽちぽちでいけるけどapp runnerのロールは画面ぽちぽちで作れなそう?
iamはcdkで作る
readはgetServerSideProps内で実装すればいい感じにdynamoDBのレコードを取得できた
put(insert)は/pages/api配下でapiの処理として記述するとdynamoDBにレコードを追加してくれた
ただその状態でデプロイするとエラーが出ちゃったのでそのエラーの原因を確認するところからやる
dynamoDBにアクセスできる権限のロールをapp runnerに設定して最新のコードをデプロイしたら下記のようなエラーが出てデプロイしたurlにアクセスできなくなったのでその解消から
06-16-2021 03:00 PM }
06-16-2021 03:00 PM time: 2021-06-16T06:00:28.867Z
06-16-2021 03:00 PM retryable: true,
06-16-2021 03:00 PM region: 'ap-northeast-1',
06-16-2021 03:00 PM hostname: 'dynamodb.ap-northeast-1.amazonaws.com',
06-16-2021 03:00 PM syscall: 'getaddrinfo',
06-16-2021 03:00 PM code: 'NetworkingError',
06-16-2021 03:00 PM errno: 'EAI_AGAIN',
06-16-2021 03:00 PM at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:66:26) {
06-16-2021 03:00 PM Error: getaddrinfo EAI_AGAIN dynamodb.ap-northeast-1.amazonaws.com
06-16-2021 02:54 PM }
App Runner + Next.jsでDynamoDBのレコードのgetとputできた!
(putは普通にgetリクエストでやっちゃってるけど)
(App Runnerのドメインをコミットに混ぜちゃったけど試すとき以外は止めてるしいっかなと)
このスクラップは2021/07/07にクローズされました