Soporte ejemplos de uso del SDK para JavaScript (v3) - AWS SDK for JavaScript

La Guía de referencia de la API de AWS SDK for JavaScript V3 describe en detalle todas las operaciones de la API para la versión 3 (V3) de AWS SDK for JavaScript.

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.

Soporte ejemplos de uso del SDK para JavaScript (v3)

Los siguientes ejemplos de código muestran cómo realizar acciones e implementar escenarios comunes mediante el uso de AWS SDK for JavaScript (v3) con. Soporte

Los conceptos básicos son ejemplos de código que muestran cómo realizar las operaciones esenciales dentro de un servicio.

Las acciones son extractos de código de programas más grandes y deben ejecutarse en contexto. Mientras las acciones muestran cómo llamar a las distintas funciones de servicio, es posible ver las acciones en contexto en los escenarios relacionados.

En cada ejemplo se incluye un enlace al código de origen completo, con instrucciones de configuración y ejecución del código en el contexto.

Introducción

En los siguientes ejemplos de código se muestra cómo empezar a utilizar Soporte.

SDK para JavaScript (v3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

Invoque ‘main()’ para ejecutar el ejemplo.

import { DescribeServicesCommand, SupportClient, } from "@aws-sdk/client-support"; // Change the value of 'region' to your preferred AWS Region. const client = new SupportClient({ region: "us-east-1" }); const getServiceCount = async () => { try { const { services } = await client.send(new DescribeServicesCommand({})); return services.length; } catch (err) { if (err.name === "SubscriptionRequiredException") { throw new Error( "You must be subscribed to the AWS Support plan to use this feature.", ); } throw err; } }; export const main = async () => { try { const count = await getServiceCount(); console.log(`Hello, AWS Support! There are ${count} services available.`); } catch (err) { console.error("Failed to get service count: ", err.message); } };
  • Para obtener más información sobre la API, consulta DescribeServicesla Referencia AWS SDK for JavaScript de la API.

Conceptos básicos

En el siguiente ejemplo de código, se muestra cómo:

  • Obtenga y muestre los servicios disponibles y los niveles de gravedad de los casos.

  • Cree un caso de asistencia mediante un servicio, una categoría y un nivel de gravedad seleccionados.

  • Obtenga y muestre una lista de casos abiertos para el día actual.

  • Añada una serie de archivos adjuntos y una comunicación al nuevo caso.

  • Describa el nuevo archivo adjunto y la comunicación del caso.

  • Resuelva el caso.

  • Obtenga y muestre una lista de casos resueltos para el día actual.

SDK para JavaScript (v3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

Ejecute un escenario interactivo en el terminal.

import { AddAttachmentsToSetCommand, AddCommunicationToCaseCommand, CreateCaseCommand, DescribeAttachmentCommand, DescribeCasesCommand, DescribeCommunicationsCommand, DescribeServicesCommand, DescribeSeverityLevelsCommand, ResolveCaseCommand, SupportClient, } from "@aws-sdk/client-support"; import * as inquirer from "@inquirer/prompts"; import { retry } from "@aws-doc-sdk-examples/lib/utils/util-timers.js"; const wrapText = (text, char = "=") => { const rule = char.repeat(80); return `${rule}\n ${text}\n${rule}\n`; }; const client = new SupportClient({ region: "us-east-1" }); // Verify that the account has a Support plan. export const verifyAccount = async () => { const command = new DescribeServicesCommand({}); try { await client.send(command); } catch (err) { if (err.name === "SubscriptionRequiredException") { throw new Error( "You must be subscribed to the AWS Support plan to use this feature.", ); } throw err; } }; /** * Select a service from the list returned from DescribeServices. */ export const getService = async () => { const { services } = await client.send(new DescribeServicesCommand({})); const selectedService = await inquirer.select({ message: "Select a service. Your support case will be created for this service. The list of services is truncated for readability.", choices: services.slice(0, 10).map((s) => ({ name: s.name, value: s })), }); return selectedService; }; /** * @param {{ categories: import('@aws-sdk/client-support').Category[]}} service */ export const getCategory = async (service) => { const selectedCategory = await inquirer.select({ message: "Select a category.", choices: service.categories.map((c) => ({ name: c.name, value: c })), }); return selectedCategory; }; // Get the available severity levels for the account. export const getSeverityLevel = async () => { const command = new DescribeSeverityLevelsCommand({}); const { severityLevels } = await client.send(command); const selectedSeverityLevel = await inquirer.select({ message: "Select a severity level.", choices: severityLevels.map((s) => ({ name: s.name, value: s })), }); return selectedSeverityLevel; }; /** * Create a new support case * @param {{ * selectedService: import('@aws-sdk/client-support').Service * selectedCategory: import('@aws-sdk/client-support').Category * selectedSeverityLevel: import('@aws-sdk/client-support').SeverityLevel * }} selections * @returns */ export const createCase = async ({ selectedService, selectedCategory, selectedSeverityLevel, }) => { const command = new CreateCaseCommand({ subject: "IGNORE: Test case", communicationBody: "This is a test. Please ignore.", serviceCode: selectedService.code, categoryCode: selectedCategory.code, severityCode: selectedSeverityLevel.code, }); const { caseId } = await client.send(command); return caseId; }; // Get a list of open support cases created today. export const getTodaysOpenCases = async () => { const d = new Date(); const startOfToday = new Date(d.getFullYear(), d.getMonth(), d.getDate()); const command = new DescribeCasesCommand({ includeCommunications: false, afterTime: startOfToday.toISOString(), }); const { cases } = await client.send(command); if (cases.length === 0) { throw new Error( "Unexpected number of cases. Expected more than 0 open cases.", ); } return cases; }; // Create an attachment set. export const createAttachmentSet = async () => { const command = new AddAttachmentsToSetCommand({ attachments: [ { fileName: "example.txt", data: new TextEncoder().encode("some example text"), }, ], }); const { attachmentSetId } = await client.send(command); return attachmentSetId; }; export const linkAttachmentSetToCase = async (attachmentSetId, caseId) => { const command = new AddCommunicationToCaseCommand({ attachmentSetId, caseId, communicationBody: "Adding attachment set to case.", }); await client.send(command); }; // Get all communications for a support case. export const getCommunications = async (caseId) => { const command = new DescribeCommunicationsCommand({ caseId, }); const { communications } = await client.send(command); return communications; }; /** * @param {import('@aws-sdk/client-support').Communication[]} communications */ export const getFirstAttachment = (communications) => { const firstCommWithAttachment = communications.find( (c) => c.attachmentSet.length > 0, ); return firstCommWithAttachment?.attachmentSet[0].attachmentId; }; // Get an attachment. export const getAttachment = async (attachmentId) => { const command = new DescribeAttachmentCommand({ attachmentId, }); const { attachment } = await client.send(command); return attachment; }; // Resolve the case matching the given case ID. export const resolveCase = async (caseId) => { const shouldResolve = await inquirer.confirm({ message: `Do you want to resolve ${caseId}?`, }); if (shouldResolve) { const command = new ResolveCaseCommand({ caseId: caseId, }); await client.send(command); return true; } return false; }; /** * Find a specific case in the list of provided cases by case ID. * If the case is not found, and the results are paginated, continue * paging through the results. * @param {{ * caseId: string, * cases: import('@aws-sdk/client-support').CaseDetails[] * nextToken: string * }} options * @returns */ export const findCase = async ({ caseId, cases, nextToken }) => { const foundCase = cases.find((c) => c.caseId === caseId); if (foundCase) { return foundCase; } if (nextToken) { const response = await client.send( new DescribeCasesCommand({ nextToken, includeResolvedCases: true, }), ); return findCase({ caseId, cases: response.cases, nextToken: response.nextToken, }); } throw new Error(`${caseId} not found.`); }; // Get all cases created today. export const getTodaysResolvedCases = async (caseIdToWaitFor) => { const d = new Date("2023-01-18"); const startOfToday = new Date(d.getFullYear(), d.getMonth(), d.getDate()); const command = new DescribeCasesCommand({ includeCommunications: false, afterTime: startOfToday.toISOString(), includeResolvedCases: true, }); const { cases, nextToken } = await client.send(command); await findCase({ cases, caseId: caseIdToWaitFor, nextToken }); return cases.filter((c) => c.status === "resolved"); }; const main = async () => { let caseId; try { console.log(wrapText("Welcome to the AWS Support basic usage scenario.")); // Verify that the account is subscribed to support. await verifyAccount(); // Provided a truncated list of services and prompt the user to select one. const selectedService = await getService(); // Provided the categories for the selected service and prompt the user to select one. const selectedCategory = await getCategory(selectedService); // Provide the severity available severity levels for the account and prompt the user to select one. const selectedSeverityLevel = await getSeverityLevel(); // Create a support case. console.log("\nCreating a support case."); caseId = await createCase({ selectedService, selectedCategory, selectedSeverityLevel, }); console.log(`Support case created: ${caseId}`); // Display a list of open support cases created today. const todaysOpenCases = await retry( { intervalInMs: 1000, maxRetries: 15 }, getTodaysOpenCases, ); console.log( `\nOpen support cases created today: ${todaysOpenCases.length}`, ); console.log(todaysOpenCases.map((c) => `${c.caseId}`).join("\n")); // Create an attachment set. console.log("\nCreating an attachment set."); const attachmentSetId = await createAttachmentSet(); console.log(`Attachment set created: ${attachmentSetId}`); // Add the attachment set to the support case. console.log(`\nAdding attachment set to ${caseId}`); await linkAttachmentSetToCase(attachmentSetId, caseId); console.log(`Attachment set added to ${caseId}`); // List the communications for a support case. console.log(`\nListing communications for ${caseId}`); const communications = await getCommunications(caseId); console.log( communications .map( (c) => `Communication created on ${c.timeCreated}. Has ${c.attachmentSet.length} attachments.`, ) .join("\n"), ); // Describe the first attachment. console.log(`\nDescribing attachment ${attachmentSetId}`); const attachmentId = getFirstAttachment(communications); const attachment = await getAttachment(attachmentId); console.log( `Attachment is the file '${ attachment.fileName }' with data: \n${new TextDecoder().decode(attachment.data)}`, ); // Confirm that the support case should be resolved. const isResolved = await resolveCase(caseId); if (isResolved) { // List the resolved cases and include the one previously created. // Resolved cases can take a while to appear. console.log( "\nWaiting for case status to be marked as resolved. This can take some time.", ); const resolvedCases = await retry( { intervalInMs: 20000, maxRetries: 15 }, () => getTodaysResolvedCases(caseId), ); console.log("Resolved cases:"); console.log(resolvedCases.map((c) => c.caseId).join("\n")); } } catch (err) { console.error(err); } };

Acciones

En el siguiente ejemplo de código, se muestra cómo utilizar AddAttachmentsToSet.

SDK para JavaScript (v3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

import { AddAttachmentsToSetCommand } from "@aws-sdk/client-support"; import { client } from "../libs/client.js"; export const main = async () => { try { // Create a new attachment set or add attachments to an existing set. // Provide an 'attachmentSetId' value to add attachments to an existing set. // Use AddCommunicationToCase or CreateCase to associate an attachment set with a support case. const response = await client.send( new AddAttachmentsToSetCommand({ // You can add up to three attachments per set. The size limit is 5 MB per attachment. attachments: [ { fileName: "example.txt", data: new TextEncoder().encode("some example text"), }, ], }), ); // Use this ID in AddCommunicationToCase or CreateCase. console.log(response.attachmentSetId); return response; } catch (err) { console.error(err); } };
  • Para obtener más información sobre la API, consulta AddAttachmentsToSetla Referencia AWS SDK for JavaScript de la API.

En el siguiente ejemplo de código, se muestra cómo utilizar AddCommunicationToCase.

SDK para JavaScript (v3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

import { AddCommunicationToCaseCommand } from "@aws-sdk/client-support"; import { client } from "../libs/client.js"; export const main = async () => { let attachmentSetId; try { // Add a communication to a case. const response = await client.send( new AddCommunicationToCaseCommand({ communicationBody: "Adding an attachment.", // Set value to an existing support case id. caseId: "CASE_ID", // Optional. Set value to an existing attachment set id to add attachments to the case. attachmentSetId, }), ); console.log(response); return response; } catch (err) { console.error(err); } };
  • Para obtener más información sobre la API, consulta AddCommunicationToCasela Referencia AWS SDK for JavaScript de la API.

En el siguiente ejemplo de código, se muestra cómo utilizar CreateCase.

SDK para JavaScript (v3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

import { CreateCaseCommand } from "@aws-sdk/client-support"; import { client } from "../libs/client.js"; export const main = async () => { try { // Create a new case and log the case id. // Important: This creates a real support case in your account. const response = await client.send( new CreateCaseCommand({ // The subject line of the case. subject: "IGNORE: Test case", // Use DescribeServices to find available service codes for each service. serviceCode: "service-quicksight-end-user", // Use DescribeSecurityLevels to find available severity codes for your support plan. severityCode: "low", // Use DescribeServices to find available category codes for each service. categoryCode: "end-user-support", // The main description of the support case. communicationBody: "This is a test. Please ignore.", }), ); console.log(response.caseId); return response; } catch (err) { console.error(err); } };
  • Para obtener más información sobre la API, consulta CreateCasela Referencia AWS SDK for JavaScript de la API.

En el siguiente ejemplo de código, se muestra cómo utilizar DescribeAttachment.

SDK para JavaScript (v3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

import { DescribeAttachmentCommand } from "@aws-sdk/client-support"; import { client } from "../libs/client.js"; export const main = async () => { try { // Get the metadata and content of an attachment. const response = await client.send( new DescribeAttachmentCommand({ // Set value to an existing attachment id. // Use DescribeCommunications or DescribeCases to find an attachment id. attachmentId: "ATTACHMENT_ID", }), ); console.log(response.attachment?.fileName); return response; } catch (err) { console.error(err); } };
  • Para obtener más información sobre la API, consulta DescribeAttachmentla Referencia AWS SDK for JavaScript de la API.

En el siguiente ejemplo de código, se muestra cómo utilizar DescribeCases.

SDK para JavaScript (v3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

import { DescribeCasesCommand } from "@aws-sdk/client-support"; import { client } from "../libs/client.js"; export const main = async () => { try { // Get all of the unresolved cases in your account. // Filter or expand results by providing parameters to the DescribeCasesCommand. Refer // to the TypeScript definition and the API doc for more information on possible parameters. // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-support/interfaces/describecasescommandinput.html const response = await client.send(new DescribeCasesCommand({})); const caseIds = response.cases.map((supportCase) => supportCase.caseId); console.log(caseIds); return response; } catch (err) { console.error(err); } };
  • Para obtener más información sobre la API, consulta DescribeCasesla Referencia AWS SDK for JavaScript de la API.

En el siguiente ejemplo de código, se muestra cómo utilizar DescribeCommunications.

SDK para JavaScript (v3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

import { DescribeCommunicationsCommand } from "@aws-sdk/client-support"; import { client } from "../libs/client.js"; export const main = async () => { try { // Get all communications for the support case. // Filter results by providing parameters to the DescribeCommunicationsCommand. Refer // to the TypeScript definition and the API doc for more information on possible parameters. // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-support/interfaces/describecommunicationscommandinput.html const response = await client.send( new DescribeCommunicationsCommand({ // Set value to an existing case id. caseId: "CASE_ID", }), ); const text = response.communications.map((item) => item.body).join("\n"); console.log(text); return response; } catch (err) { console.error(err); } };
  • Para obtener más información sobre la API, consulta DescribeCommunicationsla Referencia AWS SDK for JavaScript de la API.

En el siguiente ejemplo de código, se muestra cómo utilizar DescribeSeverityLevels.

SDK para JavaScript (v3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

import { DescribeSeverityLevelsCommand } from "@aws-sdk/client-support"; import { client } from "../libs/client.js"; export const main = async () => { try { // Get the list of severity levels. // The available values depend on the support plan for the account. const response = await client.send(new DescribeSeverityLevelsCommand({})); console.log(response.severityLevels); return response; } catch (err) { console.error(err); } };
  • Para obtener más información sobre la API, consulta DescribeSeverityLevelsla Referencia AWS SDK for JavaScript de la API.

En el siguiente ejemplo de código, se muestra cómo utilizar ResolveCase.

SDK para JavaScript (v3)
nota

Hay más información. GitHub Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS.

import { ResolveCaseCommand } from "@aws-sdk/client-support"; import { client } from "../libs/client.js"; const main = async () => { try { const response = await client.send( new ResolveCaseCommand({ caseId: "CASE_ID", }), ); console.log(response.finalCaseStatus); return response; } catch (err) { console.error(err); } };
  • Para obtener más información sobre la API, consulta ResolveCasela Referencia AWS SDK for JavaScript de la API.