Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengintegrasikan produk kontainer Anda menggunakan pengukuran khusus dengan dan AWS Marketplace Metering ServiceAWS SDK untuk Java
AWS Marketplace produk kontainer dapat memiliki pengukuran khusus hingga 24 dimensi harga yang berbeda per produk. Untuk mengaktifkan pengukuran khusus, Anda mengintegrasikan produk container Anda dengan AWS Marketplace Metering Service. Anda dapat menentukan unit harga Anda sendiri dan pengukuran kustom untuk penggunaan tersebut AWS
untuk penagihan menggunakan operasi MeterUsage
API. Contoh berikut menguraikan implementasi yang menggunakan AWS SDK untuk Java untuk mengintegrasikan dengan operasi AWS Marketplace Metering ServiceMeterUsage
.
Untuk detail lengkap, lihatMeterUsageContoh Java. Banyak langkah-langkah berikut berlaku terlepas dari bahasa.
Contoh: Integrasi Layanan AWS Marketplace Metering
-
Masuk ke Portal Manajemen AWS Marketplace
. -
DariAset, pilihKontaineruntuk mulai membuat produk kontainer baru. Membuat produk menghasilkan kode produk untuk produk untuk mengintegrasikan dengan citra kontainer Anda. Untuk informasi tentang izin pengaturan AWS Identity and Access Management (IAM), lihat. AWS Marketplace izin API pengukuran dan hak
-
Unduh AWS Java SDK
publik. penting
Untuk memanggil operasi metering API dari Amazon Elastic Kubernetes Service (Amazon EKS), Anda harus AWS menggunakan SDK yang didukung dan berjalan di klaster Amazon EKS yang menjalankan Kubernetes 1.13 atau yang lebih baru.
-
Panggil
MeterUsage
operasi dari tugas atau pod setiap jam sekali untuk setiap penggunaan dimensi. Operasi API menerima satu catatan pengukuran untuk kombinasi unikDimension
,Resource
, danHour
. Sumber daya adalah salah satu Amazon Elastic kontainer Service (Amazon ECS) tugas atau pod Amazon EKS.{ "ProductCode" : "string", // (required) "UsageDimension" : "string", // (required) "UsageQuantity": int, // (optional) Default is 0. Acceptable value from [0, 2147483647 (INT_MAX)] "Timestamp": Date, // (required) Timestamp in UTC. Value can be one hour in the past. "UsageAllocations": List<UsageAllocation> // (optional) UsageAllocations across 1 or more tags. }
catatan
Dimungkinkan untuk melihat masalah sementara dalam menghubungkan ke. AWS Marketplace Metering Service AWS Marketplace sangat merekomendasikan menerapkan percobaan ulang hingga 30 menit, dengan mundur eksponensial, untuk menghindari pemadaman jangka pendek atau masalah jaringan.
-
Buat kembali versi baru gambar kontainer Anda yang menyertakan
MeterUsage
panggilan, beri tag penampung, dan dorong ke registri Docker apa pun yang kompatibel dengan Amazon ECS atau Amazon EKS, seperti Amazon Elastic Container Registry (Amazon ECR). Jika Anda menggunakan Amazon ECR, memastikan bahwa akun meluncurkan tugas Amazon ECS atau Amazon EKS pod memiliki izin pada repositori Amazon ECR. Jika tidak, operasi gagal. -
Buat IAM
role yang memberikan izin untuk kontainer Anda untuk dipanggil MeterUsage
, seperti yang didefinisikan dalam contoh kode berikut. Anda harus menyediakan peran ini AWS Identity and Access Management (IAM) dalam parameter Peran Tugas tugas tugas Amazon ECS atau definisi pod Amazon EKS. -
Buat tugas Amazon ECS atau definisi pod Amazon EKS yang mereferensikan wadah yang telah terintegrasi AWS Marketplace dan mereferensikan peran IAM yang Anda buat di langkah 6. Jika Anda ingin melihat logging, aktifkan AWS CloudTrail logging dalam definisi tugas.
-
Buat Amazon ECS atau Amazon EKS cluster untuk menjalankan tugas Anda atau pod. Untuk informasi selengkapnya tentang membuat klaster Amazon ECS, lihat Membuat klaster di Panduan Pengembang Layanan Kontainer Elastis Amazon. Untuk informasi selengkapnya tentang membuat cluster Amazon EKS (menggunakan Kubernetes versi 1.1.3.x atau yang lebih baru), lihatMembuat klaster EKS Amazon.
-
Konfigurasikan cluster Amazon ECS atau Amazon EKS dan luncurkan definisi tugas Amazon ECS atau pod Amazon EKS yang Anda buat di langkah 8, di Wilayah us-east-1. AWS Hanya selama proses pengujian ini, sebelum produk ditayangkan, bahwa Anda harus menggunakan Wilayah ini.
-
Saat Anda mendapatkan respons yang valid dari
MeterUsage
untuk masing-masing dimensi yang diterbitkan untuk produk, Anda dapat mulai membuat produk kontainer Anda. Untuk pertanyaan, hubungiAWS Marketplace Operasi PenjualTim.
MeterUsage
Contoh Java
Contoh kode berikut menggunakan AWS Marketplace Metering Service AWS SDK untuk Java dan AWS untuk memanggil MeterUsage
operasi.
Contoh kode berikut panggilanMeterUsage
operasi tanpaUsageAllocations
.
import com.amazonaws.services.marketplacemetering.AWSMarketplaceMetering; import com.amazonaws.services.marketplacemetering.AWSMarketplaceMeteringClientBuilder; import com.amazonaws.services.marketplacemetering.model.MeterUsageRequest; import com.amazonaws.services.marketplacemetering.model.MeterUsageResult; import java.util.Date; public class MeterUsage { private static final String PRODUCT_CODE = "......."; private final AWSMarketplaceMetering awsMarketplaceMetering; public MeterUsage() { awsMarketplaceMetering = AWSMarketplaceMeteringClientBuilder.standard().build(); } /** * Submits metering record for a FCP Dimension. The API accepts 1 metering record per dimension * for a given buyer's resource for a given timestamp hour. Ex. If a buyer is running 10 tasks, * the API will accepts 1 call to MeterUsage in an hour for a given dimension for each running task. * * @param dimension - FCP dimension name provided during the publishing of the product. * @param quantity - FCP dimension consumption value for the hour. * @param timestamp - Timestamp, in UTC, for which the usage is being reported. * Timestamp cant be more than 1 hour in the past. * Make sure the timestamp value is not before the start of the software usage. */ public void callMeterUsage(String dimension, int quantity, Date timestamp) { MeterUsageRequest meterUsageRequest = new MeterUsageRequest() .withProductCode(PRODUCT_CODE) .withUsageDimension(dimension) .withUsageQuantity(quantity) .withTimestamp(timestamp); MeterUsageResult meterUsageResult = awsMarketplaceMetering.meterUsage(meterUsageRequest); } }
Contoh kode berikut panggilanMeterUsage
Operasi denganUsageAllocations
.
private static String callMeterUsageWithAllocationsByTag(AWSMarketplaceMetering marketplaceMetering) { // Tag Keys for the product String tagKey1 = "Key1"; String tagKey2 = "Key2"; String tagKey3 = "Key3"; // 1st Usage Allocation bucket which has two Tags [{Key1, Key1Value1},{Key2, Key2Value1}] List<Tag> tagsForUsageAllocation1 = Arrays.asList(new Tag().withKey(tagKey1).withValue("Key1Value1"), new Tag().withKey(tagKey2).withValue("Key2Value1")); UsageAllocation usageAllocation1 = new UsageAllocation() .withTags(tagsForUsageAllocation1) .withAllocatedUsageQuantity(20); // 2nd Usage Allocation bucket which has two Tags [{Key1, Key1Value2},{Key2, Key2Value1}] List<Tag> tagsForUsageAllocation2 = Arrays.asList(new Tag().withKey(tagKey1).withValue("Key1Value2"), new Tag().withKey(tagKey2).withValue("Key2Value1")); UsageAllocation usageAllocation2 = new UsageAllocation() .withTags(tagsForUsageAllocation2) .withAllocatedUsageQuantity(20); // 3rd Usage Allocation bucket which has two Tags [{Key1, Key1Value2},{Key2, Key2Value2},{Key3, Key3Value1}] List<Tag> tagsForUsageAllocation3 = Arrays.asList(new Tag().withKey(tagKey1).withValue("Key1Value2"), new Tag().withKey(tagKey2).withValue("Key2Value2"), new Tag().withKey(tagKey3).withValue("Key3Value1")); UsageAllocation usageAllocation3 = new UsageAllocation() .withTags(tagsForUsageAllocation3) .withAllocatedUsageQuantity(15); // 4th Usage Allocation bucket with no tags UsageAllocation usageAllocation4 = new UsageAllocation() .withAllocatedUsageQuantity(15); List<UsageAllocation> usageAllocationList = Arrays.asList(usageAllocation1, usageAllocation2, usageAllocation3, usageAllocation4); MeterUsageRequest meterUsageRequest = new MeterUsageRequest() .withProductCode("TestProductCode") .withUsageDimension("Dimension1") .withTimestamp(new Date()) //UsageQuantity value must match with sum of all AllocatedUsageQuantity .withUsageQuantity(70) .withUsageAllocations(usageAllocationList); MeterUsageResult meterUsageResult; try { meterUsageResult = marketplaceMetering.meterUsage(meterUsageRequest); } catch (Exception e) { // Log Error throw e; } return meterUsageResult.getMeteringRecordId(); }