본문 바로가기
Amazon Web Service

[AWS] AWS NICE DCV 관련 NICE EnginFrame Lambda버전 및 Openssl 사용 관련 오류 해결! AWS re:Post 활용하기!

by 클수저 2024. 5. 20.
728x90
반응형
 

NICE EnginFrame 및 NICE DCV 세션 관리자를 사용하여 자동 스케일링 가상 데스크톱 인프라 (VDI) 를 설정

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com

 

AWS NICE DCV를 사용중이라, 해당 서비스에서 간헐적으로 발생하는 Session Error, login시스템을 한번에 해결 해줄 수 있는 NICE EnginFrame을 설치까지 해보는 작업을 맡았다.

 

https://github.com/aws-samples/elastic-vdi-infrastructure

 

GitHub - aws-samples/elastic-vdi-infrastructure

Contribute to aws-samples/elastic-vdi-infrastructure development by creating an account on GitHub.

github.com

해당 Github에 있는 소스코드를 참조하여 설치 후, 진행하는 방식이며 아래의 방법을 순서대로 진행하였다.

 

위에 순서를 그대로 따라하고 나서 발생한 문제는 아래와 같다.

 

Lambda에서의 오류를 계속 보여주고있고, 두세번정도 동일한 방법으로 실행했을 때도 똑같은 문제였다.

Lambda와 관련된 .py에서 파이썬 버전 3.7이었고, 3.9로 버전을 바꿨지만 문제는 역시나 동일했다.

AWS문서를 찾던 도중에 

https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/lambda-runtimes.html

 

Lambda 런타임 - AWS Lambda

Lambda는 때때로 해당 런타임이 지원하는 언어 버전의 지원 종료일 이후 제한된 기간 동안 Lambda 런타임의 지원 중단을 지연합니다. 이 기간 동안 Lambda는 런타임 OS에만 보안 패치를 적용합니다. Lam

docs.aws.amazon.com

AWS Lambda 런타임에 관한 문서를 보았고, 아래의 그림에서 3.7이 지원되지 않는다는 것을 확인했다.

23년 12월 4일부로 파이썬3.7은 종료이다.

버전을 바꾸고 다시 deploy를 진행하면 위에서 발생한 lambda에서의 문제는 해결이 되었지만, 다시 재설치하는 과정에서 또 다른 에러를 만나게되었다.

 

CloudWatch에서 Log를 확인해본 결과, OpenSSL 문제인 것을 확인했다.

여기서 느끼는 점은 결국 단순히 버전을 지원하지 않는다해서 버전을 바꿔서 해결을 할 수 없고, 그 버전에 묶여있었던 많은 라이브러리까지 모두 바꿔야하는 부분이다.

그러면 3.9버전에서 openssl을 패키징하지 않는다면 코드 내에서 실행시키지 못한다는 오류였고, 이것을 해결하기 위해서 openssl을 패키징하여 lambda layer에 업로드를 하였다.

그래서 생각이 든 추측은, 결국 3.7과 관련된 라이브러리도 같이 묶여있었기에 단순히 버전만 3.9에서 바꾼다고 해결되는 문제가 아니였다.

 

하지만 이 부분에서 계속해서 막히면서 아래와 같은 에러를 만나고 있었다.

/opt/bin/openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
/opt/bin/openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
2024-05-10T05:21:24.026Z
LAMBDA_WARNING: Unhandled exception. The most likely cause is an issue in the function code. However, in rare cases, a Lambda runtime update can cause unexpected function behavior. For functions using managed runtimes, runtime updates can be triggered by a function change, or can be applied automatically. To determine if the runtime has been updated, check the runtime version in the INIT_START log entry. If this error correlates with a change in the runtime version, you may be able to mitigate this error by temporarily rolling back to the previous runtime version. For more information, see https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html
LAMBDA_WARNING: Unhandled exception. The most likely cause is an issue in the function code. However, in rare cases, a Lambda runtime update can cause unexpected function behavior. For functions using managed runtimes, runtime updates can be triggered by a function change, or can be applied automatically. To determine if the runtime has been updated, check the runtime version in the INIT_START log entry. If this error correlates with a change in the runtime version, you may be able to mitigate this error by temporarily rolling back to the previous runtime version. For more information, see https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html
2024-05-10T05:21:24.026Z
[ERROR] CalledProcessError: Command '/opt/bin/openssl genrsa 2048 > /tmp/server.key' returned non-zero exit status 127.
Traceback (most recent call last):
  File "/var/task/cert.py", line 60, in lambda_handler
    subprocess.check_output(os.environ['OPENSSL_PATH'] + " genrsa 2048 > /tmp/server.key", shell=True)
  File "/var/lang/lib/python3.9/subprocess.py", line 424, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/var/lang/lib/python3.9/subprocess.py", line 528, in run
    raise CalledProcessError(retcode, process.args,
[ERROR] CalledProcessError: Command '/opt/bin/openssl genrsa 2048 > /tmp/server.key' returned non-zero exit status 127. Traceback (most recent call last):   File "/var/task/cert.py", line 60, in lambda_handler     subprocess.check_output(os.environ['OPENSSL_PATH'] + " genrsa 2048 > /tmp/server.key", shell=True)   File "/var/lang/lib/python3.9/subprocess.py", line 424, in check_output     return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,   File "/var/lang/lib/python3.9/subprocess.py", line 528, in run     raise CalledProcessError(retcode, process.args,
2024-05-10T05:21:24.027Z
END RequestId: d5152cd5-48d2-436b-b844-20fe82ad74d0
END RequestId: d5152cd5-48d2-436b-b844-20fe82ad74d0
2024-05-10T05:21:24.027Z	REPORT RequestId: d5152cd5-48d2-436b-b844-20fe82ad74d0 Duration: 173.97 ms Billed Duration: 174 ms Memory Size: 128 MB Max Memory Used: 75 MB​

 

결국, 파이썬3.9버전과 라이브러리 패키징 과정에서 문제가 발생하면서 해결을 하지 못하였고, 어떻게 문제를 해결할지 고민을 했다.

 

NICE DCV 서비스는 AWS에서 관리를 한다. 그렇다면, 결국 모든 버전관리와 소스코드 또한 AWS에서 관리하는게 맞다고 판단하여, AWS re:Post를 활용해보기로 했다.https://repost.aws/ko

 

전문가 기술 지침 및 AWS 지식 센터 이용

re:Post(은)는 전문가가 엄선한 답변, 문서, 선택 및 AWS 지식 센터를 제공하는 AWS 관리 커뮤니티입니다.

repost.aws

AWS Support와는 조금 다른점은 기술적인 지식을 공유하는 사이트이다.

번역기로 열심히 돌려서 질문을 올렸고 아래와 같은 답변을 받았다.

 

 

아마 살제로 AWS에서 NICE DCV 서비스를 관리하는 Sr.DevOps 엔지니어가 이슈를 확인했고, 이슈 해결 후 가이드라인까지 전달해주었다.

실제로 해당 깃허브에서도 commit 내용이 3.11버전으로 바꾸면서 openssl layer를 업데이트하였고, 

실제로 작년에 마지막 커밋이었던 것을 내가 메일로 한번 문의한것으로 업데이트가 되었다.

 

3.11 버전 업데이트와 OpenSSL layer 추가로 문제는 해결되었다.

이번 에러를 마주하면서 느낀점이 많았다.

 

해당 서비스는 정말로 구글링으로 자료를 찾아볼 수 없었다. 왜냐하면 그만큼 서비스를 사용하는 사람이 매우 적었기 때문이다. 그래서 참고할만한 자료를 구하는게 너무 어려웠기에 에러를 해결하는게 더더욱 어려웠다.

하지만, 해결이 안된다면 그 서비스의 담당자한테 문의를 해보는것을 통하여 해결할 수 있다는 점을 이번에 느낄 수 있었다.

 

주니어 개발자가 문제를 해결한 것도 대단하지만, 그 문제를 어떻게 해결했는지 그 과정에서 많은 것을 느낄 수 있었다.

 

728x90
반응형