scrutinizer에서 AWS SAM CLI Local 실행
Error: Running AWS SAM projects locally requires Docker. Have you got it installed?
AWS SAM에는 Docker API 버전 v1.35가 필요하며 SAM LOCAL을 시작할 때 Docker API에 ping endpoint 을 쿼리합니다. Scrutinizer는 기본적으로 더 낮은 버전의 Docker를 실행하므로 이 끝점을 호출하면
400
상태 코드가 생성됩니다.Scrutinizer에서 최신 버전의 Docker 사용
최신 버전을 사용하기 위해 scrutinizer는 원격 도커 엔진을 제공합니다.
build:
environment:
docker:
remote_engine: true
AWS SAM 로컬 설치
AWS SAM Local 설치는 매우 간단합니다.
project_setup:
before:
# Install SAM CLI
- pip install aws-sam-cli==1.12.0 # Fixed to version because of a bug in SAM Local: https://github.com/aws/aws-sam-cli/issues/2436
- curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
- unzip awscliv2.zip
- sudo ./aws/install
# Configure AWS defaults
- aws configure set aws_access_key_id scrutinizer_fake_key
- aws configure set aws_secret_access_key scrutinizer_fake_secret
- aws configure set default.region eu-west-1
# Install the readmodel
- make install
- make set_up_dynamodb
# Start Lambda
- command: sam local start-lambda -t cloudformation.yaml
background: true
소스 코드를 사용 가능하게 만들기
원격 엔진은 Scrutinizer 컨테이너에 저장된 코드에 액세스할 수 없습니다. 즉, AWS SAM Local이 다음 결과를 제공합니다.
sam local {"errorType":"Runtime.HandlerNotFound"}
이는 AWS SAM Local이 Cloudformation 코드에서 정의된 핸들러를 찾을 수 없다는 것을 의미합니다.
원격 엔진에서 소스 코드를 사용할 수 있도록 하려면 중간 도커 컨테이너를 사용할 수 있습니다.
- docker run -v /home/scrutinizer/build:/remote-host -d --name cp-container busybox
- docker cp /home/scrutinizer/build cp-container:/remote-host
그러면 코드가 busybox에 연결된 볼륨에 복사되고 이 볼륨은 AWS SAM Local에서 사용됩니다.
이 문제를 해결하는 데 사용되는 도구
--debug
AWS SAM 로컬 명령의 플래그철저한 조사자 설정 완료
build:
environment:
docker:
remote_engine: true
project_setup:
before:
# Install SAM CLI
- pip install aws-sam-cli
- curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
- unzip awscliv2.zip
- sudo ./aws/install
# Configure AWS defaults
- aws configure set aws_access_key_id scrutinizer_fake_key
- aws configure set aws_secret_access_key scrutinizer_fake_secret
- aws configure set default.region eu-west-1
# Copy data to remote docker volume
- docker run -v /home/scrutinizer/build:/remote-host -d --name cp-container busybox
- docker cp /home/scrutinizer/build/code cp-container:/remote-host/code
# Start API and Lambda
- command: sam local start-lambda -t cloudformation.yaml
background: true
tests:
override:
- sam local invoke -t cloudformation.yaml "ProcessStream" --no-event
Reference
이 문제에 관하여(scrutinizer에서 AWS SAM CLI Local 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/coolblue/running-aws-sam-cli-local-on-scrutinizer-3jek텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)