Hay más ejemplos de AWS SDK disponibles en el repositorio de ejemplos de AWS Doc SDK.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Modifique el plazo de renovación de un acuerdo de contrato de SaaS mediante un AWS SDK
Los siguientes ejemplos de código muestran cómo modificar un contrato de SaaS para añadir o actualizar su plazo de renovación.
- Java
-
- SDK para Java 2.x
-
nota
Hay más información al respecto. GitHub Busque el ejemplo completo y aprenda a configurarlo y ejecutarlo en el repositorio Biblioteca de código de referencia de la API de AWS Marketplace
. package com.example.awsmarketplace.agreementapi.buyer; import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider; import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.marketplaceagreement.MarketplaceAgreementClient; import software.amazon.awssdk.services.marketplaceagreement.model.AcceptAgreementRequestRequest; import software.amazon.awssdk.services.marketplaceagreement.model.AcceptAgreementRequestResponse; import software.amazon.awssdk.services.marketplaceagreement.model.ConfigurableUpfrontPricingTermConfiguration; import software.amazon.awssdk.services.marketplaceagreement.model.CreateAgreementRequestRequest; import software.amazon.awssdk.services.marketplaceagreement.model.CreateAgreementRequestResponse; import software.amazon.awssdk.services.marketplaceagreement.model.Dimension; import software.amazon.awssdk.services.marketplaceagreement.model.GetAgreementEntitlementsResponse; import software.amazon.awssdk.services.marketplaceagreement.model.Intent; import software.amazon.awssdk.services.marketplaceagreement.model.RenewalTermConfiguration; import software.amazon.awssdk.services.marketplaceagreement.model.RequestedTerm; import software.amazon.awssdk.services.marketplaceagreement.model.RequestedTermConfiguration; import utils.AgreementApiUtils; /** * Demonstrates how to create a SaaS agreement with CONTRACT pricing model and then turn on * the auto-renewal setting using the AWS Marketplace Agreement Service APIs. * * <p>Scenario: A buyer subscribes to a SaaS product using a public offer that supports * auto-renewal. After acceptance, the buyer decides to amend the agreement to enable * auto-renewal via the RenewalTerm configuration. * * <p>Before running this sample, replace the placeholder constants below with values from * your AWS Marketplace offer: * <ul> * <li>{@code AGREEMENT_PROPOSAL_IDENTIFIER} — the agreementProposalId from the offer.</li> * <li>Term IDs (starting with {@code term-}) — found in the offer's term list.</li> * <li>{@code SELECTOR_VALUE} — duration for the agreement (e.g., {@code P1M} for 1 month).</li> * <li>{@code DIMENSION_1_KEY} — the dimension key defined in the offer.</li> * </ul> */ public class AmendSaaSContractRenewalTerm { // The agreementProposalId from the offer. private static final String AGREEMENT_PROPOSAL_IDENTIFIER = "<your-agreement-proposal-identifier>"; // Term ID for the ConfigurableUpfrontPricingTerm in your offer. private static final String CONFIGURABLE_UPFRONT_PRICING_TERM_ID = "<your-configurable-upfront-pricing-term-id>"; // Duration for the agreement (e.g., "P1M" for 1 month, "P12M" for 1 year). private static final String SELECTOR_VALUE = "<your-selector-value>"; // The dimension key defined in your offer. private static final String DIMENSION_1_KEY = "<your-dimension-key>"; // Quantity for the dimension. private static final int DIMENSION_1_VALUE = 1; // Term ID for the RenewalTerm in your offer. private static final String RENEWAL_TERM_ID = "<your-renewal-term-id>"; // Term ID for the LegalTerm in your offer. private static final String LEGAL_TERM_ID = "<your-legal-term-id>"; // Term ID for the SupportTerm in your offer. private static final String SUPPORT_TERM_ID = "<your-support-term-id>"; public static void main(String[] args) { amendSaaSContractAgreementRenewalTerm(); } /** * Full end-to-end flow: * 1. Create a SaaS agreement with CONTRACT pricing model with auto-renewal disabled. * 2. Wait for entitlements to become active. * 3. Amend the agreement to enable auto-renewal. */ private static void amendSaaSContractAgreementRenewalTerm() { MarketplaceAgreementClient marketplaceAgreementClient = MarketplaceAgreementClient.builder() .httpClient(ApacheHttpClient.builder().build()) .credentialsProvider(ProfileCredentialsProvider.create()) .build(); RequestedTerm configurableUpfrontPricingTerm = RequestedTerm.builder() .id(CONFIGURABLE_UPFRONT_PRICING_TERM_ID) .configuration(RequestedTermConfiguration.fromConfigurableUpfrontPricingTermConfiguration( ConfigurableUpfrontPricingTermConfiguration.builder() .selectorValue(SELECTOR_VALUE) .dimensions(Dimension.builder() .dimensionKey(DIMENSION_1_KEY) .dimensionValue(DIMENSION_1_VALUE) .build()) .build())) .build(); // Initial agreement: auto-renewal disabled. RequestedTerm renewalTerm = RequestedTerm.builder() .id(RENEWAL_TERM_ID) .configuration(RequestedTermConfiguration.fromRenewalTermConfiguration( RenewalTermConfiguration.builder() .enableAutoRenew(false) .build())) .build(); RequestedTerm legalTerm = RequestedTerm.builder().id(LEGAL_TERM_ID).build(); RequestedTerm supportTerm = RequestedTerm.builder().id(SUPPORT_TERM_ID).build(); // --- Create and accept the initial SaaS agreement request with CONTRACT pricing model --- CreateAgreementRequestRequest createAgreementRequestRequest = CreateAgreementRequestRequest.builder() .clientToken(AgreementApiUtils.generateClientToken()) .intent(Intent.NEW) .requestedTerms(configurableUpfrontPricingTerm, renewalTerm, legalTerm, supportTerm) .agreementProposalIdentifier(AGREEMENT_PROPOSAL_IDENTIFIER) .build(); CreateAgreementRequestResponse createAgreementRequestResponse = marketplaceAgreementClient.createAgreementRequest(createAgreementRequestRequest); System.out.println("Agreement request created. AgreementRequestId: " + createAgreementRequestResponse.agreementRequestId()); AcceptAgreementRequestRequest acceptAgreementRequestRequest = AcceptAgreementRequestRequest.builder() .agreementRequestId(createAgreementRequestResponse.agreementRequestId()) .build(); AcceptAgreementRequestResponse acceptAgreementRequestResponse = marketplaceAgreementClient.acceptAgreementRequest(acceptAgreementRequestRequest); System.out.println("Agreement request accepted. AgreementId: " + acceptAgreementRequestResponse.agreementId()); // Wait for entitlements to become active before amending. System.out.println("Waiting for entitlements to become active..."); GetAgreementEntitlementsResponse entitlementsResponse = AgreementApiUtils.pollUntilEntitlementsAvailable( marketplaceAgreementClient, acceptAgreementRequestResponse.agreementId()); System.out.println("Entitlements are now active."); AgreementApiUtils.formatOutput(entitlementsResponse); // --- Amend: enable auto-renewal --- RequestedTerm renewalTermAmended = RequestedTerm.builder() .id(RENEWAL_TERM_ID) .configuration(RequestedTermConfiguration.fromRenewalTermConfiguration( RenewalTermConfiguration.builder() .enableAutoRenew(true) .build())) .build(); // Use Intent.AMEND and sourceAgreementIdentifier to target the existing agreement. CreateAgreementRequestRequest carRequest = CreateAgreementRequestRequest.builder() .clientToken(AgreementApiUtils.generateClientToken()) .intent(Intent.AMEND) .requestedTerms(configurableUpfrontPricingTerm, renewalTermAmended, legalTerm, supportTerm) .sourceAgreementIdentifier(acceptAgreementRequestResponse.agreementId()) .build(); CreateAgreementRequestResponse carResponse = marketplaceAgreementClient.createAgreementRequest(carRequest); System.out.println("Amend agreement request created. AgreementRequestId: " + carResponse.agreementRequestId()); AcceptAgreementRequestRequest aarRequest = AcceptAgreementRequestRequest.builder() .agreementRequestId(carResponse.agreementRequestId()) .build(); AcceptAgreementRequestResponse aarResponse = marketplaceAgreementClient.acceptAgreementRequest(aarRequest); System.out.println("Amendment accepted. Auto-renewal enabled. New AgreementId: " + aarResponse.agreementId()); } }-
Para obtener más información sobre la API, consulta CreateAgreementRequestla Referencia AWS SDK for Java 2.x de la API.
-
- JavaScript
-
- SDK para JavaScript (v3)
-
nota
Hay más información. GitHub Busque el ejemplo completo y aprenda a configurarlo y ejecutarlo en el repositorio Biblioteca de código de referencia de la API de AWS Marketplace
. const { MarketplaceAgreementClient, CreateAgreementRequestCommand, AcceptAgreementRequestCommand, } = require("@aws-sdk/client-marketplace-agreement"); const { generateClientToken, formatOutput, pollUntilEntitlementsAvailable } = require("./utils/AgreementApiUtils"); /** * Demonstrates how to create a SaaS agreement with CONTRACT pricing model and then turn on * the auto-renewal setting using the AWS Marketplace Agreement Service APIs. * * Scenario: A buyer subscribes to a SaaS product using a public offer that supports * auto-renewal. After acceptance, the buyer decides to amend the agreement to enable * auto-renewal via the RenewalTerm configuration. * * Before running this sample, replace the placeholder constants below with values from * your AWS Marketplace offer: * - AGREEMENT_PROPOSAL_IDENTIFIER — the agreementProposalId from the offer. * - Term IDs (starting with "term-") — found in the offer's term list. * - SELECTOR_VALUE — duration for the agreement (e.g., "P1M" for 1 month). * - DIMENSION_1_KEY — the dimension key defined in the offer. */ // The agreementProposalId from the offer. const AGREEMENT_PROPOSAL_IDENTIFIER = "<your-agreement-proposal-identifier>"; // Term ID for the ConfigurableUpfrontPricingTerm in your offer. const CONFIGURABLE_UPFRONT_PRICING_TERM_ID = "<your-configurable-upfront-pricing-term-id>"; // Duration for the agreement (e.g., "P1M" for 1 month, "P12M" for 1 year). const SELECTOR_VALUE = "<your-selector-value>"; // The dimension key defined in your offer. const DIMENSION_1_KEY = "<your-dimension-key>"; // Quantity for the dimension. const DIMENSION_1_VALUE = 1; // Term ID for the RenewalTerm in your offer. const RENEWAL_TERM_ID = "<your-renewal-term-id>"; // Term ID for the LegalTerm in your offer. const LEGAL_TERM_ID = "<your-legal-term-id>"; // Term ID for the SupportTerm in your offer. const SUPPORT_TERM_ID = "<your-support-term-id>"; /** * Full end-to-end flow: * 1. Create a SaaS agreement with CONTRACT pricing model with auto-renewal disabled. * 2. Wait for entitlements to become active. * 3. Amend the agreement to enable auto-renewal. */ async function amendSaaSContractAgreementRenewalTerm() { const client = new MarketplaceAgreementClient(); const configurableUpfrontPricingTerm = { id: CONFIGURABLE_UPFRONT_PRICING_TERM_ID, configuration: { configurableUpfrontPricingTermConfiguration: { selectorValue: SELECTOR_VALUE, dimensions: [ { dimensionKey: DIMENSION_1_KEY, dimensionValue: DIMENSION_1_VALUE }, ], }, }, }; // Initial agreement: auto-renewal disabled. const renewalTerm = { id: RENEWAL_TERM_ID, configuration: { renewalTermConfiguration: { enableAutoRenew: false, }, }, }; const legalTerm = { id: LEGAL_TERM_ID }; const supportTerm = { id: SUPPORT_TERM_ID }; // --- Create and accept the initial SaaS agreement request with CONTRACT pricing model --- const createAgreementRequestResponse = await client.send( new CreateAgreementRequestCommand({ clientToken: generateClientToken(), intent: "NEW", requestedTerms: [configurableUpfrontPricingTerm, renewalTerm, legalTerm, supportTerm], agreementProposalIdentifier: AGREEMENT_PROPOSAL_IDENTIFIER, }) ); console.log("Agreement request created. AgreementRequestId: " + createAgreementRequestResponse.agreementRequestId); const acceptAgreementRequestResponse = await client.send( new AcceptAgreementRequestCommand({ agreementRequestId: createAgreementRequestResponse.agreementRequestId, }) ); console.log("Agreement request accepted. AgreementId: " + acceptAgreementRequestResponse.agreementId); // Wait for entitlements to become active before amending. console.log("Waiting for entitlements to become active..."); const entitlementsResponse = await pollUntilEntitlementsAvailable(client, acceptAgreementRequestResponse.agreementId); console.log("Entitlements are now active."); formatOutput(entitlementsResponse); // --- Amend: enable auto-renewal --- const renewalTermAmended = { id: RENEWAL_TERM_ID, configuration: { renewalTermConfiguration: { enableAutoRenew: true, }, }, }; // Use Intent.AMEND and sourceAgreementIdentifier to target the existing agreement. const carResponse = await client.send( new CreateAgreementRequestCommand({ clientToken: generateClientToken(), intent: "AMEND", requestedTerms: [configurableUpfrontPricingTerm, renewalTermAmended, legalTerm, supportTerm], sourceAgreementIdentifier: acceptAgreementRequestResponse.agreementId, }) ); console.log("Amend agreement request created. AgreementRequestId: " + carResponse.agreementRequestId); const aarResponse = await client.send( new AcceptAgreementRequestCommand({ agreementRequestId: carResponse.agreementRequestId, }) ); console.log("Amendment accepted. Auto-renewal enabled. New AgreementId: " + aarResponse.agreementId); } amendSaaSContractAgreementRenewalTerm();-
Para obtener más información sobre la API, consulta CreateAgreementRequestla Referencia AWS SDK para JavaScript de la API.
-
- Python
-
- SDK para Python (Boto3)
-
nota
Hay más información al respecto GitHub. Busque el ejemplo completo y aprenda a configurarlo y ejecutarlo en el repositorio Biblioteca de código de referencia de la API de AWS Marketplace
. """ Demonstrates how to create a SaaS agreement with CONTRACT pricing model and then turn on the auto-renewal setting using the AWS Marketplace Agreement Service APIs. Scenario: A buyer subscribes to a SaaS product using a public offer that supports auto-renewal. After acceptance, the buyer decides to amend the agreement to enable auto-renewal via the RenewalTerm configuration. Before running this sample, replace the placeholder constants below with values from your AWS Marketplace offer: - AGREEMENT_PROPOSAL_IDENTIFIER — the agreementProposalId from the offer. - Term IDs (starting with term-) — found in the offer's term list. - SELECTOR_VALUE — duration for the agreement (e.g., P1M for 1 month). - DIMENSION_1_KEY — the dimension key defined in the offer. """ import boto3 from utils.agreement_api_utils import ( format_output, generate_client_token, poll_until_entitlements_available, ) class AmendSaaSContractRenewalTerm: # The agreementProposalId from the offer. AGREEMENT_PROPOSAL_IDENTIFIER = "<your-agreement-proposal-identifier>" # Term ID for the ConfigurableUpfrontPricingTerm in your offer. CONFIGURABLE_UPFRONT_PRICING_TERM_ID = "<your-configurable-upfront-pricing-term-id>" # Duration for the agreement (e.g., "P1M" for 1 month, "P12M" for 1 year). SELECTOR_VALUE = "<your-selector-value>" # The dimension key defined in your offer. DIMENSION_1_KEY = "<your-dimension-key>" # Quantity for the dimension. DIMENSION_1_VALUE = 1 # Term ID for the RenewalTerm in your offer. RENEWAL_TERM_ID = "<your-renewal-term-id>" # Term ID for the LegalTerm in your offer. LEGAL_TERM_ID = "<your-legal-term-id>" # Term ID for the SupportTerm in your offer. SUPPORT_TERM_ID = "<your-support-term-id>" @staticmethod def amend_saas_contract_agreement_renewal_term(): """ Full end-to-end flow: 1. Create a SaaS agreement with CONTRACT pricing model with auto-renewal disabled. 2. Wait for entitlements to become active. 3. Amend the agreement to enable auto-renewal. """ client = boto3.client("marketplace-agreement") cls = AmendSaaSContractRenewalTerm configurable_upfront_pricing_term = { "id": cls.CONFIGURABLE_UPFRONT_PRICING_TERM_ID, "configuration": { "configurableUpfrontPricingTermConfiguration": { "selectorValue": cls.SELECTOR_VALUE, "dimensions": [ { "dimensionKey": cls.DIMENSION_1_KEY, "dimensionValue": cls.DIMENSION_1_VALUE, }, ], } }, } # Initial agreement: auto-renewal disabled. renewal_term = { "id": cls.RENEWAL_TERM_ID, "configuration": { "renewalTermConfiguration": { "enableAutoRenew": False, } }, } legal_term = {"id": cls.LEGAL_TERM_ID} support_term = {"id": cls.SUPPORT_TERM_ID} # --- Create and accept the initial SaaS agreement request with CONTRACT pricing model --- create_response = client.create_agreement_request( clientToken=generate_client_token(), intent="NEW", requestedTerms=[configurable_upfront_pricing_term, renewal_term, legal_term, support_term], agreementProposalIdentifier=cls.AGREEMENT_PROPOSAL_IDENTIFIER, ) agreement_request_id = create_response["agreementRequestId"] print("Agreement request created. AgreementRequestId: " + agreement_request_id) accept_response = client.accept_agreement_request( agreementRequestId=agreement_request_id ) agreement_id = accept_response["agreementId"] print("Agreement request accepted. AgreementId: " + agreement_id) # Wait for entitlements to become active before amending. print("Waiting for entitlements to become active...") entitlements_response = poll_until_entitlements_available(client, agreement_id) print("Entitlements are now active.") format_output(entitlements_response) # --- Amend: enable auto-renewal --- renewal_term_amended = { "id": cls.RENEWAL_TERM_ID, "configuration": { "renewalTermConfiguration": { "enableAutoRenew": True, } }, } # Use Intent.AMEND and sourceAgreementIdentifier to target the existing agreement. car_response = client.create_agreement_request( clientToken=generate_client_token(), intent="AMEND", requestedTerms=[configurable_upfront_pricing_term, renewal_term_amended, legal_term, support_term], sourceAgreementIdentifier=agreement_id, ) print("Amend agreement request created. AgreementRequestId: " + car_response["agreementRequestId"]) aar_response = client.accept_agreement_request( agreementRequestId=car_response["agreementRequestId"] ) print("Amendment accepted. Auto-renewal enabled. New AgreementId: " + aar_response["agreementId"]) if __name__ == "__main__": AmendSaaSContractRenewalTerm.amend_saas_contract_agreement_renewal_term()-
Para obtener más información sobre la API, consulta CreateAgreementRequestla AWS Referencia de API de SDK for Python (Boto3).
-