Получение данных из API в приложении next.js React, которое локально работает иначе, чем на AWS lambda@edge
Мне удалось успешно извлечь данные из API и использовать getServerSideProps
так что он будет динамическим и будет меняться по мере изменения в базе данных. Все это отлично работает локально.
Моя проблема возникает после развертывания на AWS lambda@Edge, когда данные больше не извлекаются динамически, а страница полностью статична. Внесение изменений в базу данных не влияет на данные, отображаемые на странице. Текущие данные на странице - это данные, которые были в базе данных во время первого развертывания страницы, когда я использовалgetStaticProps
.
Я не уверен, заключается ли проблема в моем развертывании или в коде самой страницы, чтобы ее можно было распознать как страницу с динамической информацией.
Posts.tsx
import Head from 'next/head'
import { PostsCard} from '@cool_posts_feed/cool_posts.storybook/dist/components/PostsCard'
import { GetServerSideProps } from 'next'
export default function Home({posts}) {
return (
<div className="container">
<Head>
<title>Cool Posts</title>
<link rel="icon" href="/favicon.ico" />
</Head>
<main>
{posts.map((posts) => (<PostsCard cardTitle= {posts.title} content={posts.content} link= "">
</PostsCard>))}
</main>
</div>
)
}
export const getServerSideProps : GetServerSideProps = async () => {
const API = 'http://cool-posts/posts'
const res = await fetch(API, {
headers: {
'posts-creator-id': '1234asdf'
}
});
const posts = await res.json()
return{
props: {
posts
}
};
}
Yaml-файл для развертывания
stages:
- stage: develop_build_deploy_stage
pool:
name: Default
demands:
- msbuild
- visualstudio
jobs:
- job: develop_build_deploy_job
steps:
- checkout: self
clean: true
persistCredentials: true
- task: NodeTool@0
displayName: Install Node
inputs:
versionSpec: '12.x'
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc
- script: |
npm install
npx next build
displayName: Install Dependencies and Build
- task: AWSPowerShellModuleScript@1
displayName: Deploy to Lambda@Edge
inputs:
awsCredentials: 'cool-posts'
regionName: 'eu-west-1'
scriptType: 'inline'
inlineScript: 'npx serverless'
- task: PowerShell@2
displayName: 'Increment version'
inputs:
targetType: 'inline'
script: |
git checkout develop
git pull origin develop
git config --global user.email "build.agent@coolposts.com"
git config --global user.name "Build Agent"
npm version patch -m "Increment Version [skip ci]" --force
git push
Как мне динамически получать информацию из нашей базы данных и иметь это изменение в нашей среде?
-update После дополнительных исследований и тестирования выяснилось, что проблема не в конвейере или в процессе развертывания, поскольку развертывание напрямую через vscode дало те же результаты.