BLOG
AWS License Manager 를 사용하면 Amazon EC2(Amazone Elastic Compute Cloud) 인스턴스와 온프레미스 서버에서 Oracle Java/JDK 사용량을 추적할 수 있습니다. 이미 Amazon Corretto(Amazon의 오픈 JDK 배포)를 운영하고 계시다면, 지금 읽기를 중지할 수 있습니다. 오늘 블로그 포스팅으로는 License Manager가 사용자 환경에서 다른 응용 프로그램의 라이선스 사용량을 추적하는 방법에 대해 설명해드리겠습니다. 라이선스 사용량을 검색하고 추적하는 데 사용되는 단계는 라이선스 관리가 필요한 다른 소프트웨어에 대해 구현될 수 있습니다. 또한 선택적으로 라이선스 컴플라이언스를 적용하는 경우에도 사용할 수 있습니다.
License Manager는 Microsoft, Oracle, IBM, SAP 등 다양한 벤더의 라이선스를 관리를 위한 원스톱 솔루션입니다. License Manager를 통해 관리자는 소프트웨어 벤더 계약에서 라이센싱 규칙을 라이선스 구성으로 에뮬레이트할 수 있습니다. 라이선스 구성은 Amazon AMI(Machine Images), Launch Templates 또는 AWS CloudFormation 템플릿에 연결하여 라이선스 사용량을 추적할 수 있습니다. License Manager는 vCPU, 코어, 소켓 또는 인스턴스에서 할당한 라이선스의 사용량을 추적합니다. 라이선스 구성과 연결된 AMI에서 EC2 인스턴스가 실행되면 License Manager를 통해 라이센스 사용량이 자동으로 추적됩니다. 선택적으로 Amazon SNS(Simple Notification Service)를 사용하여 미터링을 적용하고 경고를 보낼 수 있습니다. 이에 대한 자세한 내용은 라이선스 사용을 제어하는 메커니즘을 참고해주시길 바랍니다.
또한 License Manager는 AMI와 독립적인 애플리케이션별로 라이선스 사용량을 추적할 수 있습니다. 라이선스 구성은 애플리케이션 이름으로 애플리케이션과 연결할 수 있습니다. 이렇게 하면 매일 자동 검색 프로세스가 트리거되어 새 서버 인스턴스를 라이선스 구성과 연결합니다. AWS Systems Manager에 의해 관리되는 EC2 인스턴스 또는 온프레미스 서버는 구성 가능한 주기적 기준으로 소프트웨어 인벤토리를 보고합니다(기본값은 매 30분). License Manager는 이 소프트웨어 인벤토리를 교차 검사하고 구성된 라이센스에 대한 라이센스 사용량을 보고하며, 구성된 경우 준수하지 않을 경우 경고를 보냅니다.
System Manager를 통한 인스턴스 관리
EC2 환경에서 Oracle JDK 사용량을 추적하려면 먼저 시스템 매니저를 사용하여 인스턴스 또는 온사이트 서버를 관리해야 합니다. Amazon Linux EC2 및 윈도우즈 EC2 인스턴스에는 기본적으로 Systems Manager 에이전트가 포함되어 있습니다. 시스템 매니저가 관리할 권한이 있는 AWS IAM(Identity and Access Management) 역할이 필요할 뿐입니다. 다른 EC2 인스턴스는 에이전트를 설치해야 하며 권한이 있는 IAM 역할이 있어야 합니다. 또한 모든 인스턴스에는 시스템 매니저 서비스 엔드포인트에 대한 아웃바운드 네트워크 액세스가 필요합니다. 사내 연결을 통해 NAT 게이트웨이, 인터넷 게이트웨이, VPC 서비스 엔드포인트 또는 네트워크 경로를 사용할 수 있습니다. 이 단계에 대한 자세한 내용은 AWS Systems Manager 에이전트 설치 설명서를 확인해 주시기 바랍니다.
또한 온 프레미스 서버는 System manager에 의해 관리되고 License Manager에게 라이선스 사용량을 보고할 수 있습니다. 이러한 서버에는 System Manager 에이전트가 설치되어 있어야 하며 System Manager에 등록되어 있어야 합니다. 자세한 내용은 하이브리드 환경을 위한 System Manager 사용 설명서를 살펴봐 주시기 바랍니다. 이 단계에는 서버 OS가 Amazon이 사용하는 인증서를 신뢰하는지 확인하는 작업이 포함됩니다. 현대의 OS 유형은 기본적으로 이러한 루트 인증서가 신뢰랍니다. 그런 다음 에이전트를 설치 및 최종 등록하고 시작합니다.
다음과 같은 필수 구성 요소가 있으면 서버가 Systems Manager 콘솔에 관리되는 인스턴스로 표시되어야 합니다.
- System Manager 에이전트가 설치 및 실행 되었습니다.
- 올바른 사용 권한을 가진 IAM 역할 또는 하이브리드 서버의 경우 에이전트를 등록했습니다.
- SSM 서비스에 대한 연결이 작동 중입니다.
Systems Manager 콘솔에서 관리되는 인스턴스의 소프트웨어 인벤토리를 보고 검색할 수 있습니다. 인벤토리 데이터는 기본적으로 30분마다 동기화됩니다. 데이터를 더 빨리 새로 고치려면 대상 인스턴스에서 Systems Manager Run Command 를 사용하여 AWS-RefreshAssociation 명령 문서를 실행할 수 있습니다.
아래 스크린샷은 System Manager에서 관리하는 인스턴스를 보여줍니다. “i-“가 앞에 붙은 인스턴스는 EC2 인스턴스이고, “mi-“가 앞에 붙은 인스턴스는 System Manager 에이전트가 구성된 온프레미스 서버입니다. 이러한 사내 인스턴스를 “On-PremHost”로 명명했습니다. AWS CLI를 원하는 경우 다음 명령을 사용하여 이 결과를 얻을 수 있습니다.
aws ssm describe-instance-information
다음으로, 소프트웨어 인벤토리에서 “jdk”로 시작하는 특정 응용 프로그램을 검색합니다. AWS CLI에서 이 작업을 수행하려면 다음 명령을 실행합니다.
aws ssm list-inventory-entries –instance-id mi-xxxxxxxxxxxxxx –type-name “AWS:Application”
라이선스 구성 생성
License Manager 콘솔로 이동하여 라이센스 구성을 선택하고 라이선스 구성을 생성 합니다.
이 라이선스 구성은 오라클과 같은 소프트웨어 벤더와 합의된 라이센스 조건 집합을 나타냅니다. 이름과 설명을 입력하고, 이 경우 라이선스 유형으로 인스턴스를 선택합니다. 라이선스 수량을 초과하는 경우 알림을 받을지 또는 라이센스 제한을 초과하는 AMI 시작을 차단할지를 지정할 수도 있습니다. 이 설정은 사내 서버 또는 System Manager에서만 관리되는 인스턴스나 실행을 차단하지 않습니다. 구성을 만들려면 제출을 클릭합니다.
다음으로, 이 구성을 이러한 라이센스 조건에 따라 당사의 계정에 있는 모든 AMI와 연결합니다. 본 예제에서는 오라클 JDK를 설치한 위치에 생성한 AMI를 사용하겠습니다. 생성한 라이센스 구성에 대해 Associate AMI 을 선택하고 AMI를 선택한 다음 연결을 누릅니다.
그러나 이 경우 알려진 AMI에서 시작되지 않은 것에 대한 라이센스를 추적하려는 EC2 인스턴스가 있고 라이센선스를 추적해야 하는 사내 서버도 있습니다.
Search inventory(인벤토리 검색)을 선택하면 관리되는 인스턴스 목록이 표시됩니다.
검색 상자에서 Application name: Begins with 을 선택하고 “jdk-”를 입력할 수 있습니다. 이는 오라클 JDK가 리눅스에 설치할 때 사용하는 문자열의 첫 번째 부분입니다. 검색할 항목이 확실하지 않으면 Systems Manager 인벤토리에서 인스턴스를 선택하고 원하는 응용 프로그램을 찾아보십시오. 그런 다음 응용 프로그램 이름에 대해 표시되는 내용을 확인합니다. 라이선스 관리자 검색 인벤토리가 원하는 결과를 반환했으면 반환된 행 중 하나를 선택하고 Associate license configuration(라이선스 구성 연결)을 선택합니다.
jdk-* 문자열을 선택합니다.
다음으로 윈도우즈용 Oracle Java SDK를 검색하여 라이선스 구성에 추가합니다. 또한 별도로 추적하려는 경우 윈도우즈용 라이선스 구성을 별도로 생성할 수도 있습니다.
Application name: Begins with 를 찾아 Java를 입력합니다. 원하는 버전의 Windows 인스턴스를 반환하는 행 중 하나를 선택합니다. 올바른 라이선스 구성과 연결합니다.
이제 돌아가 라이선스 구성을 검토하겠습니다. 상단 카드의 Product information(제품 정보) 아래에 두 문자열을 기록합니다. System Manager에서 탐지한 제품 정보 문자열 중 하나가 있는 응용 프로그램은 자동으로 이 라이선스 구성과 연결된 것으로 표시됩니다. 자동 탐지는 24시간마다 실행됩니다. 연결된 AMI 탭에 나열된 AMI에서 시작된 인스턴스도 표시됩니다(시스템 관리자 에이전트 사용 여부와 무관합니다.).
사용자 환경에 Oracle Java의 추가 버전이 있는 경우 인벤토리를 검색하고 이러한 버전을 추가할 수도 있습니다.
AWS CLI에서 위와 같이 라이선스 구성을 생성하려면 다음 명령을 실행합니다.
aws license-manager create-license-configuration –name “Oracle JDK” \
–description “Oracle JDK Licenses for Linux and Windows” \
–license-counting-type Instance \
–product-information-list='{“ResourceType”:”SSM_MANAGED”,”ProductInformationFilterList”:[{“ProductInformationFilterName”: “Application Name”,”ProductInformationFilterValue”:[“jdk-13.0.2”, “Java(TM) SE Development Kit 13.0.2 (64-bit)”],”ProductInformationFilterComparator”: “EQUALS”}]}’
License Manager는 이 데이터를 동기화하기 위해 24시간마다 한 번씩 프로세스를 실행합니다. 내일 이 시간을 다시 확인해 보시기 바랍니다. System Manager 관리 제품군에서 Oracle JDK 배포에 대한 전체 상황을 한 눈에 볼 수 있습니다.
AWS CLI APIs를 통해 이 데이터를 반환하려면 라이선스의 Amazon Resource Name (ARN) 이 필요합니다. 그런 다음 다음 명령을 실행할 수 있습니다.
aws license-manager list-usage-for-license-configuration –license-configuration-arn arn:aws:license-manager:us-east-1:000000000000:license-configuration:lic- xxxxxxxxxxxxxxxxxxxxxxxxxxxx
–output table 또는 –output text로 더 읽기 쉬운 결과를 생성할 수 있습니다.
사용된 라이선스 값을 프로그래밍 방식으로 쿼리하려면 AWS CLI에서도 이 작업을 수행할 수 있습니다. 입력 매개 변수로 ARN이 필요합니다.
aws license-manager list-license-configurations \
–license-configuration-arns arn:aws:license-manager:us-east-1:000000000000:license-configuration:lic-xxxxxxxxxxxxxxxxxxxxxxxxxxxx \
–query ‘LicenseConfigurations[*].ConsumedLicenses’ \
–output text
요약
이 기능으로 Oracle Java 라이선스 요구 사항을 준수하는 데 많은 도움이 되셨기를 바랍니다. 본 블로그 게시글에서는 EC2 인스턴스와 Systems Manager에서 관리하는 사내 서버에서 License Manager를 사용하는 방법을 보여드렸습니다. 또한 이러한 관리되는 컴퓨터에서 라이선스 구성을 정의하고 배포된 라이선스를 추적하는 방법도 다루어 보았습니다.
License Manager에 대해 추가 문의 사항이 있으시다면 AWS Systems Manager 포럼에 의견을 남겨 주시기 바랍니다.
원문URL : https://aws.amazon.com/ko/blogs/mt/manage-your-oracle-jdk-licenses-with-aws-license-manager/
** 메가존 클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.