Serverless Offline이 OOM에서 떨어지기 때문에dynamo-local을 Docker로 사용합니다
서버less-offline 플러그인을 사용하면 메모리가 OOM에 다 떨어져서 아쉬운 특징이다.Giithub의 issue에서도
기본적으로 서버리스는 무상태 처리이기 때문에 떨어져도 문제가 되지 않지만 한 가지 중요한 것이 있습니다.
영구 레이어에 쓰기, 이번에는 DynamoDB에 쓰기.
서버less 프레임워크의 플러그인으로 서버less-dynamodb-local이 있습니다. 이것을 사용하면 로컬에서dynamoDB를 시작할 수 있습니다.
이른바 서버less 프레임워크의 플러그인 동작이란 서버less 프레임워크의 하위 프로세스로 시작하는 것이다.즉 서버less 프레임워크가 상기 OOM에서 떨어지면 하위 프로세스도 함께 끝난다는 것이다.
이 때문에 다이나모DB에 테스트 데이터를 쓰는 과정에서 같은 처리가 여러 차례 발생했다.
서버less 프레임워크가 멈추더라도 데이터를 저장하는 방법은 2가지가 있다.dynamodb-local의 데이터를 파일에 저장하거나, dynamodb-loca를 다른 프로그램으로 시작합니다.
파일에 데이터를 저장하는 것은 직관적인 오류인 것 같아서 다른 프로그램으로 시작하는 방법을 논의했다.
시작 등에 시간을 들이고 싶지 않기 때문에, docker를 사용하여dynamodb-local을 시작하십시오.
서버less-dynamodb-local에서amazon에서 제공하는jar 파일을 실행합니다.
dynamodb-local이docker hub에 컨테이너를 등록해 주셔서 감사합니다.
설명을 보면 옵션은 특별히 필요하지 않습니다.port의 지정이 움직일 것 같습니다.
docker run -p 8000:8000 amazon/dynamodb-local
서버less-dynamodb-local 옵션에 noStart: true
시작serverless offline
을 넣습니다. dynamodb:
start:
port: 8000
+ noStart: true
inMemory: true
migrate: true
seed: true
정상적으로 시작된 것 같지만 서버less offline과dynamodb는 연결되지 않은 것 같습니다.그래서 내가 알아봤는데 아래의 issue가 나왔다.
기본 docker는 옵션이 부족해서 시작할 수 없습니다.따라서 issue의 물건을 그대로 이용하여docker-compose로dynamodb-local을 시작할 때 의도와 같은 행동이 된다.
dynamodb:
image: 'amazon/dynamodb-local'
ports:
- '8000:8000'
command: ["-jar", "DynamoDBLocal.jar", "-sharedDb", "-inMemory"]
dynamodb-local을 자세히 보면 기본sharedDb 옵션이 진짜입니다.index.js
const config = this.service.custom && this.service.custom.dynamodb || {};
const options = _.merge({
sharedDb: this.options.sharedDb || true,
install_path: this.options.localPath
},
config && config.start,
this.options
);
sharedDb 옵션이 필요한 이유는 공식 문서에 기재되어 있으니 참고하십시오.Reference
이 문제에 관하여(Serverless Offline이 OOM에서 떨어지기 때문에dynamo-local을 Docker로 사용합니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/merutin/articles/0462b069bdba2b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)