기본적으로 질문 : 탄력적 인 Beanstalk 배포 프로세스 중에 적용될 환경 변수를 어떻게 설정합니까?탄력적 인 beanstalk 배포 중에 적용된 환경 변수
배포 도중 응용 프로그램에서 액세스 할 수있는 배포 중에 환경 변수를 설정하는 것에 대해 이야기하는 것이 아니라 Elastic Beanstalk의 빌드 스크립트의 특정 동작을 수정하는 환경 변수를 설정하려고합니다.
명확하게 - 나는 일반적으로 이것이 나쁜 생각이라고 생각하지만,이 경우에는 괜찮을 수도 있으므로 실험으로 시도하고 있습니다. 여기에 왜 내가 조사하고 있는지, 왜 그것이 괜찮은지 알 수있는 이유에 대한 배경이 있습니다.
미국의 AWS에서 중국의 AWS로 서버를 전송하는 중입니다. 서버를 배치하는 중입니다. 하루에 따라 시간의 50 % ~ 100 % 사이에서 실패합니다. 이것은 개발 과정에서 커다란 고통입니다.하지만 저는이 프로덕션 환경에서 어떻게 작업 할 것인지에 대해 주로 염려합니다.
이
파이썬 2.7 실행 아마존 리눅스 서버이며,하는 동안 로그를 설치 PIP 실패는 주로 모든 에 의해 생성되는 동안 한 번에 던져 동료에 의해 다시 몇 연결로, 시간 초과 오류를 참조하는 것을 나타냅니다 pypi에서 패키지를 다운로드하십시오. 이를 확인하기 위해 몇 가지 패키지를 수동으로 설치하기 위해 인스턴스로 ssh'd했고 작은 샘플 크기로 비슷한 실패율을 보았습니다. 이것은 중국의 GFW 반대편에있는 콘텐츠에 액세스 할 때 매우 일반적이라는 점에 유의하십시오.그래서, 난 내 로컬 컴퓨터에 핍 다운로드의 패키지가 다음 AWS는 내 서버와 동일한 지역에 위치한 S3 버킷로이야 동기화하는 스크립트를 썼다. 이렇게하면 배포하는 동안 GFW를 건너 뛸 필요가 없습니다.
내 원래 계획은 (내가 뭔가를 놓친하지 않는 한) AWS CP의 핍 캐시 S3에서 패키지가 있지만, 다소 의외로 정직 것으로 나타나지 않는 .ebextension을 추가했다.
따라서 계획 B와 같이 패키지를 인스턴스의 로컬 디렉토리로 리디렉션합니다. 이것은 잘 작동하지만, pip 설치를 사용하여 패키지를 pypi에서 다운로드하지 않고 로컬 디렉토리에서 가져 오도록을 설치할 수 없습니다.
pip 설명서에 따라 PIP_FIND_LINKS 환경 변수를 내 패키지 디렉토리로 지정하면 pip가 "자연스럽게"패키지를 pypi가 아닌 내 디렉토리에서 가져올 것으로 예상했습니다. EB 변경 스크립트에 대한 변경 사항을 투명하게 만들고 이것이 합리적인 해결책이라고 생각한 이유는 무엇입니까?
은 지금까지 나는 시도했다 :
1) 행운과 함께, PIP_FIND_LINKS =/경로 /로/패키지를 내보내는 명령. I이 다른 세션에서 호출되는 전개 단계에 기인 것으로, 그래서 다음 시도 :
2) (이전 수출 외에)에 수출 PIP_FIND_LINKS =/경로를 추가 명령/행/package ~ ~./profile을 새 세션에 적용하려고 시도합니다.
ec2_user와 root 모두에서 명령을 실행하려고 시도했지만 어느 것도 작동하지 않습니다.
이 점을 계속 지키기보다는 EB, 핍 등의 뉘앙스를 조금 더 경험 한 사람이 지침을 제공 할 수 있기를 바랍니다.
어떤 pypi 라이브러리가 문제의 원인 이었습니까? 가끔 내 requirements.txt에는 pypi에 없지만 setup()을 통해 repo에서 설치 한 라이브러리가 포함되어 있습니다. 이로 인해 배포가 실패했습니다. 제 주위에는 요구 사항을 수정하고 대신 도커 환경을 사용하여 배포 스크립트를보다 잘 제어 할 수있었습니다. –
실패한 라이브러리는 실행마다 다르고 때로는 실패가 없습니다. 이것은 실제로 무작위 연결 차단과 관련이있는 것으로 보입니다. 이는 GFW를 통과 할 때 매우 일반적이며 내 종속성을 로컬에 저장하려는 이유입니다. 또한이 요구 사항 파일의 상위 집합이 문제없이 중국 이외 지역에서 1 년 이상 동안 사용되었다고 언급 했어야합니다. – gary