Amplify Console에서 Next를 클릭합니다.js ISR 재생성 실패 시 처리 방법
이 사건이 발생한 이유와 대응 방법을 기록하다.
재생성을 하지 않는 이유
결론은DefaultLambda@Edgefor Next CloudFront distribution에서 Next로 이동합니다.SQS에 메시지를 보내는 데 실패하여 js Regeneration Lambda에 불이 났습니다.
먼저 Amplify Constore는 Next입니다.js를 설계할 때 내부적으로 Serverless Next를 설정합니다.js Component를 사용하고 있습니다.
Serverless Next.js Component 제작의 리소스에 대해 다음과 같은 글을 읽으면 쉽게 이해할 수 있습니다.
이번 보도에서DefaultLambda@Edge의 다음 부분이 중요합니다.
ISR 처리가 발생하면 Lambda는 "Next.js Regeneration Lambda"에 불을 붙이기 위해 SQS에 메시지를 보냅니다.
https://zenn.dev/laiso/articles/8c619c38bd7b7b
Amplify Constore는 코드를 분석하여 필요한 자원을 만들지만, 첫 번째 디버깅 시 ISR 코드(getStaticPropos에서 되돌아오는 대상이revalidate를 지정하지 않음)를 사용하지 않은 상태에서 depro를 하고, 두 번째 이후 depro에서 ISR 코드를 depro한 후SendMessage 권한이 할당되지 않은 이유는 무엇입니까?
따라서 두 번째 이후 프로그램에서 ISR을 진행하는 코드로 처음 변경하면 첫 번째 요청에 캐시가 존재하지 않기 때문에 SSR의 결과를 리validate에서 지정한 초수 분간 되돌려주고 캐시하기 때문에 잠시 정상적으로 보일 수 있습니다Default Lambda는 SQS에 재생성 처리 메시지를 보냈으나 권한이 할당되지 않아 오류가 발생하고 503 오류가 반환되었습니다.
해소 방법
2021/11/24시Default Lambda에 sqs:SendMessage 권한을 수동으로 지정할 수 있습니다.
Amplify Constore에서 생성된 리소스(Lambda와 SQS 등)의 정보는 Amplify Console의 대시보드의 deployment 탭에서 확인할 수 있습니다.
AWS 콘솔에서Default Lambda로의 화면 설정 방법을 결합해 소개한다.
이 설정 옵션에서 실행 작용을 편집할 수 있습니다. 다음 정책과 결합하십시오.
4
{
"Effect": "Allow",
"Resource": "arn:aws:sqs:us-east-1:253925498289:<SQS-ID>.fifo",
"Action": [
"sqs:SendMessage"
]
}
sqs:SendMessage의 권한이 분배되면Default Lambda에서 SQS로 메시지를 보내고 ISR의 재생성을 진행하며 페이지도 정상적으로 표시됩니다.앞으로 Amplify Console에 대응할 수 있기를 바랍니다.
같은 issue가 몇 개 서 있기 때문에, 똑같이 괴로워하는 사람도 있다.
저는 첫 번째 deproy 이후에 ISR을 진행하는 코드로 완전히 바꾼 경우가 있다고 생각합니다. 개인적으로 Amplify Consile가 코드의 변경을 감지하고 sqs:SendMessage의 권한을 자동으로 분배하기를 바랍니다.
Reference
이 문제에 관하여(Amplify Console에서 Next를 클릭합니다.js ISR 재생성 실패 시 처리 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/eringiv3/articles/5fa044cc92c3a3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)