AWS Support exemplos usando SDK for JavaScript (v3) - AWS SDK for JavaScript

O Guia de API referência da AWS SDK for JavaScript V3 descreve detalhadamente todas as API operações da AWS SDK for JavaScript versão 3 (V3).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

AWS Support exemplos usando SDK for JavaScript (v3)

Os exemplos de código a seguir mostram como realizar ações e implementar cenários comuns usando o AWS SDK for JavaScript (v3) com AWS Support.

As noções básicas são exemplos de código que mostram como realizar as operações essenciais em um serviço.

Ações são trechos de código de programas maiores e devem ser executadas em contexto. Embora as ações mostrem como chamar funções de serviço individuais, você pode ver as ações no contexto em seus cenários relacionados.

Cada exemplo inclui um link para o código-fonte completo, onde você pode encontrar instruções sobre como configurar e executar o código no contexto.

Conceitos básicos

O exemplo de código a seguir mostra como começar a usar o AWS Support.

SDKpara JavaScript (v3)
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

Invoque `main()` para executar o exemplo.

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 API obter detalhes, consulte DescribeServicesem AWS SDK for JavaScript APIReferência.

Conceitos básicos

O exemplo de código a seguir mostra como:

  • Obter e exibir os serviços disponíveis e os níveis de gravidade dos casos.

  • Criar um caso de suporte usando um serviço, uma categoria e um nível de gravidade selecionados.

  • Obter e exibir uma lista de casos em aberto para o dia atual.

  • Adicionar um conjunto de anexos e uma comunicação ao novo caso.

  • Descrever o novo anexo e a comunicação para o caso.

  • Resolver o caso.

  • Obter e exibir uma lista de casos resolvidos para o dia atual.

SDKpara JavaScript (v3)
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS.

Execute um cenário interativo no 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); } };

Ações

O código de exemplo a seguir mostra como usar AddAttachmentsToSet.

SDKpara JavaScript (v3)
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da 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 API obter detalhes, consulte AddAttachmentsToSetem AWS SDK for JavaScript APIReferência.

O código de exemplo a seguir mostra como usar AddCommunicationToCase.

SDKpara JavaScript (v3)
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da 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); } };

O código de exemplo a seguir mostra como usar CreateCase.

SDKpara JavaScript (v3)
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da 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 API obter detalhes, consulte CreateCaseem AWS SDK for JavaScript APIReferência.

O código de exemplo a seguir mostra como usar DescribeAttachment.

SDKpara JavaScript (v3)
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da 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 API obter detalhes, consulte DescribeAttachmentem AWS SDK for JavaScript APIReferência.

O código de exemplo a seguir mostra como usar DescribeCases.

SDKpara JavaScript (v3)
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da 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 API obter detalhes, consulte DescribeCasesem AWS SDK for JavaScript APIReferência.

O código de exemplo a seguir mostra como usar DescribeCommunications.

SDKpara JavaScript (v3)
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da 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); } };

O código de exemplo a seguir mostra como usar DescribeSeverityLevels.

SDKpara JavaScript (v3)
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da 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); } };

O código de exemplo a seguir mostra como usar ResolveCase.

SDKpara JavaScript (v3)
nota

Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da 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 API obter detalhes, consulte ResolveCaseem AWS SDK for JavaScript APIReferência.