AWS Marketplace Metering Service에서 AMI 제품을 사용자 지정 측정 - AWS Marketplace

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS Marketplace Metering Service에서 AMI 제품을 사용자 지정 측정

AWS Marketplace 측정 서비스는 판매자가 사용 범주별로 소프트웨어에 직접 요금을 부과하는 데 사용할 수 있는 요금 및 측정 기능입니다. 사용자, 데이터, 대역폭, 호스트, 단위의 다섯 가지 사용 범주가 있습니다. Amazon Machine Image(AMI) 기반, 컨테이너 기반 및 서비스형 소프트웨어(SaaS) 기반 제품에서 측정 서비스를 사용할 수 있습니다. 자세한 내용은 AWS Marketplace 측정 서비스 API 참조를 참조하십시오.

측정 서비스를 사용하는 모든 AMI 기반 소프트웨어는 다음 요구 사항을 충족해야 합니다.

  • 소프트웨어는 Amazon 머신 이미지 (AMI) 를 AWS Marketplace 통해 시작해야 합니다.

  • 기존 제품이 있는 경우 이 기능을 사용하려면 새 AMI를 제출하고 새 제품을 생성해야 합니다. AWS Marketplace

  • 모든 소프트웨어는 AWS Identity and Access Management (IAM) 역할로 프로비저닝되어야 합니다. 최종 고객은 사용자가 소프트웨어를 통해 프로비저닝하는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에 IAM 역할을 추가해야 합니다. 를 통해 소프트웨어를 배포할 때 IAM 역할을 사용하는 것은 선택 사항입니다. AWS Marketplace AWS Marketplace 측정 서비스 소프트웨어를 배포할 때에는 필수입니다.

  • 사용자 소프트웨어는 몇 가지 방식으로 소비를 결정할 수 있어야 합니다.

측정 서비스를 사용하는 제품은 단일 사용 범주를 기준으로 고객에게 요금을 부과해야 하지만, 단일 범주에 최대 24개의 차원을 정의할 수 있습니다. 범주에 따라 소프트웨어는 프로비저닝된 리소스, 동시 리소스 또는 누적 리소스 소비에 의해 가격이 지정될 수 있습니다. 모든 요금은 고객에 의해 시간당 발생합니다. 모든 사용량은 기존 AWS Marketplace 소프트웨어와 동일한 메커니즘을 사용하여 계산되고 매월 청구됩니다.

AWS Marketplace 측정 서비스는 여러 가지 새로운 요금 시나리오를 활성화합니다. 예를 들어, 소프트웨어에서 호스트를 모니터링하는 경우, 모니터링된 각 호스트에 대해 요금을 부과합니다. 호스트 크기에 따라 다른 요금을 가질 수 있으며 매시간 모니터링되는 동시 호스트 수에 대해 요금을 부과할 수 있습니다. 마찬가지로 소프트웨어가 조직 전체에서 많은 사용자를 허용하는 경우 사용자 수에 따라 요금을 부과할 수 있습니다. 시간마다 고객에게 프로비저닝된 사용자의 총 수에 대해 요금이 부과됩니다.

AWS Marketplace 측정 서비스 호출

소프트웨어에서는 시간별로 측정 서비스를 호출하고 해당 시간에 대한 소비 값을 기록해야 합니다.

소프트웨어가 시작되면 시작 minute-of-the-hour 시점을 기록해야 합니다. 이를 시작-분이라고도 합니다. 시작-분에서 매 시간마다 소프트웨어는 해당 시간의 소비 값을 확인하고 측정 서비스를 호출해야 합니다. 이 값을 구하는 방법에 대한 자세한 내용은 측정 서비스를 사용하도록 소프트웨어 수정을 참조하세요.

시작-분에서 매시간 설정 상태로 유지하려면 소프트웨어에서 다음 접근 방식 중 하나를 사용해야 합니다.

  • 소프트웨어 내의 스레드

  • 인스턴스 또는 소프트웨어로 시작하는 데몬 프로세스

  • 애플리케이션을 시작하는 동안 구성되는 cron 작업

    참고

    소프트웨어는 고객 인스턴스에서 구성된 IAM 역할을 사용하여 AWS Marketplace 측정 서비스를 호출하고 소비 차원 및 양을 지정해야 합니다.

소프트웨어는 다음 예제 구현과 마찬가지로 AWS SDK를 사용하여 AWS Marketplace 측정 서비스를 호출할 수 있습니다.

  1. 인스턴스 프로파일을 사용하여 서비스 클라이언트를 생성합니다. 이렇게 하려면 EC2 인스턴스에 대해 구성된 역할이 필요합니다. 역할 자격 증명은 SDK에 의해 자동으로 새고 고쳐집니다.

  2. 매 시간 소프트웨어 구성 및 상태를 읽고 해당 시간에 대한 소비 값을 결정합니다. 여기에는 데이터 수집이 포함될 수 있습니다. value-per-dimension

  3. 다음과 같은 파라미터를 사용하여 SDK 클라이언트에서 meterUsage 메서드를 호출합니다(사용이 있는 각 차원에 대해 추가적으로 호출).

    • timestamp - 기록되는 시간의 타임스탬프(UTC)입니다.

    • productCode - 소프트웨어에 할당된 제품 코드입니다.

    • dimension - 소프트웨어에 할당된 차원입니다.

    • quantity - 시간의 소비 값입니다.

    • allocations - (선택 사항) 추적하는 속성 전체에 걸쳐 사용량을 할당할 수 있습니다. 이러한 할당량을 합산하여 레코드의 총 소비량을 구해야 합니다. 구매자에게는 이러한 정보가 결제 도구 (예: AWS Billing and Cost Management 콘솔) 에 잠재적 비용 할당 태그로 표시됩니다. 구매자는 이러한 태그를 사용하여 비용을 추적하려면 계정에서 태그를 활성화해야 합니다.

또한 소프트웨어는 리전 내 AWS Marketplace 측정 서비스 엔드포인트를 호출해야 합니다. us-east-1이 레코드를 us-east-1 엔드포인트로 전송하고 us-west-2가 레코드를 us-west-2 엔드포인트로 전송하도록 제품의 리전 엔드포인트를 올바르게 설정해야 합니다. 리전 내 호출을 수행하면 구매자에게 더 안정적인 경험을 제공하며, 관련되지 않은 리전의 가용성이 다른 리전에서 실행되는 소프트웨어에 영향을 주는 상황을 방지합니다.

서비스에 측정 레코드를 전송할 때 사용자의 리전에 있는 AWS Marketplace 측정 서비스에 연결해야 합니다. getCurrentRegion() 헬퍼 메서드를 사용하여 EC2 인스턴스가 실행 중인 리전을 결정한 다음 이 리전 정보를 MeteringServiceClient 생성자로 전달합니다. SDK AWS 리전 생성자에서 를 지정하지 않으면 기본 us-east-1 지역이 사용됩니다. 애플리케이션에서 서비스에 대해 교차 리전 호출을 수행할 경우 해당 호출이 거부됩니다. 자세한 내용은 애플리케이션의 현재 지역 결정getCurrentRegion() 을 참조하십시오.

장애 처리

제품은 사용량을 캡처하고 요금을 청구할 수 있도록 퍼블릭 인터넷 엔드포인트인 서비스에 측정 레코드를 전송해야 합니다. 고객이 측정 레코드를 전달되지 않도록 하는 방식으로 네트워크 설정을 수정할 수 있으므로, 제품은 장애 모드를 선택하여 이를 설명해야 합니다.

참고

일부 측정 실패는 연결 중 일시적인 문제일 수 있습니다. AWS Marketplace Metering Service AWS Marketplace 단기 중단이나 네트워크 문제를 방지하려면 지수 백오프를 사용하여 최대 30분 동안 재시도를 구현하고 지수적 백오프를 적용할 것을 강력히 권장합니다.

일반적으로 소프트웨어는 장애 시 열림(경고 메시지를 제공하지만 전체 기능은 유지) 또는 장애 시 닫힘(연결이 다시 설정될 때까지 애플리케이션의 모든 기능을 비활성화)을 수행할 수 있습니다. 장애 시 열림, 장애 시 닫힘 또는 애플리케이션에 고유한 사항을 선택할 수 있습니다. 2시간 이내의 측정 실패 후에는 장애 시 닫힘을 사용하지 않는 것이 좋습니다.

장애 시 부분적으로 열림의 예로, 소프트웨어에 대한 액세스를 계속 허용할 수 있지만 구매자가 소프트웨어 설정을 수정하는 것을 허용하지 않을 수 있습니다. 또는 구매자가 계속 소프트웨어에 액세스할 수 있지만 추가 사용자를 생성할 수 없습니다. 소프트웨어는 이 장애 모드를 정의하고 적용할 책임이 있습니다. 소프트웨어의 장애 모드에는 AMI를 제출할 시기가 포함되어야 하며, 나중에 변경할 수 없습니다.

제한 사항

측정 서비스 활성화 소프트웨어를 설계 및 제출할 때 이 제한 사항을 고려하십시오.

  • 고객에 대한 IAM 역할 및 인터넷 게이트웨이 요구 사항 - 고객은 인터넷 게이트웨이를 보유해야 하고 특정 권한을 가진 IAM 역할로 소프트웨어를 시작해야 합니다. 자세한 정보는 AWS Marketplace 계량 및 권한 부여 API 권한을 참조하세요. 두 가지 조건을 충족하지 못하면 소프트웨어에서 측정 서비스에 연결할 수 없습니다.

  • 기존 측정 서비스 제품에 새로운 사용 범주를 추가하거나 사용 범주를 변경할 수 없음 - 고객이 소프트웨어 제품을 구독하는 경우 이용 약관에 동의하는 것으로 간주됩니다. 측정 서비스를 통해 제품의 차원을 변경하려면 새 제품과 새 구독이 필요합니다.

  • 기존 측정 서비스 제품의 차원을 수정할 수 없음 - 고객이 소프트웨어 제품을 구독하는 경우 이용 약관에 동의하는 것으로 간주됩니다. 측정 서비스를 통해 제품의 차원을 변경하려면 새 제품과 새 구독이 필요합니다. 기존 제품에 새 차원을 최대 24개까지 추가할 수 있습니다.

  • 무료 평가판 및 연간 구독 없음 - 측정 서비스 제품은 시작 시 무료 평가판 및 연간 구독을 지원하지 않습니다.

  • 다중 인스턴스 또는 클러스터 기반 배포 고려 사항 - 일부 소프트웨어는 다중 인스턴스 배포의 일환으로 배포됩니다. 소프트웨어 설계 시 사용량 측정 방식 및 위치, 측정 기록을 내보내는 위치를 고려하십시오.

코드 예제

다음 코드 예제는 AMI 제품을 제품 게시 및 유지 관리에 필요한 AWS Marketplace API와 통합하는 데 도움이 되도록 제공됩니다.

사용량 할당 태그 지정을 사용하는 MeterUsage(선택 사항)

다음 코드 예제는 소비 요금 모델이 적용되는 AMI 제품과 관련이 있습니다. Python 예제는 적절한 사용량 할당 태그가 포함된 미터링 레코드를 AWS Marketplace 전송하여 고객에게 pay-as-you-go 요금을 청구합니다.

# NOTE: Your application will need to aggregate usage for the # customer for the hour and set the quantity as seen below. # AWS Marketplace can only accept records for up to an hour in the past. # # productCode is supplied after the AWS Marketplace Ops team has # published the product to limited # Import AWS Python SDK import boto3 import time usageRecord = [ { "AllocatedUsageQuantity": 2, "Tags": [ { "Key": "BusinessUnit", "Value": "IT" }, { "Key": "AccountId", "Value": "123456789" }, ] }, { "AllocatedUsageQuantity": 1, "Tags": [ { "Key": "BusinessUnit", "Value": "Finance" }, { "Key": "AccountId", "Value": "987654321" }, ] } ] marketplaceClient = boto3.client("meteringmarketplace") response = marketplaceClient.meter_usage( ProductCode="testProduct", Timestamp=int(time.time()), UsageDimension="Dimension1", UsageQuantity=3, DryRun=False, UsageAllocations=usageRecord )

에 대한 MeterUsage 자세한 내용은 AWS Marketplace 미터링 서비스 API 참조를 참조하십시오 MeterUsage.

응답의 예

{ "MeteringRecordId": "string" }