Uso de la API AMS en CLI, Ruby, Python y Java - Guía de usuario avanzada de AMS

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.

Uso de la API AMS en CLI, Ruby, Python y Java

La siguiente es una lista de fragmentos de código para la ListChangeTypeClassificationSummaries operación de la API de AMS, en todos los idiomas disponibles.

Para Python, Ruby y Java SDKs, consulta Herramientas para Amazon Web Services y desplázate hacia abajo hasta la SDKs sección. Cada instalador del SDK contiene un archivo README con fragmentos de código adicionales.

Ejemplo de API a CLI de AMS

Una vez instalada la CLI de AMS (requiere la AWS CLI; consulteInstalación o actualización de la CLI de AMS), puede ejecutar cualquier operación de la API de AMS reformando primero la llamada especificando qué API de AMS aws amscm oaws amsskms, a continuación, asignando la acción con guiones en lugar de mayúsculas y minúsculas. Por último, proporcione credenciales, como SAML.

Para obtener más información, consulte Uso de la interfaz de línea de AWS comandos.

Ejemplo:

  • API: 'ChangeTypeClassificationSummaries[].[Category,Subcategory,Item,Operation,ChangeTypeId]'

  • CLI: amscm list-change-type-classification-summaries --query "ChangeTypeClassificationSummaries[*].[Category,Subcategory,Item,Operation,ChangeTypeId]" --output table

nota

Si se autentica con SAML, aws --profile saml añádalo al principio del comando. Por ejemplo:

aws --profile saml amscm list-change-type-classification-summaries --query "ChangeTypeClassificationSummaries[*].[Category,Subcategory,Item,Operation,ChangeTypeId]" --output table

Ejemplo de API AMS para Python

Para utilizar la API de AMS con Python, instale la CLI de AMS e instale boto3. Siga estos pasos:

  1. Instale la CLI de AMS. Consulte Instalación o actualización de la CLI de AMS.

  2. Instala boto3, el AWS SDK para Python. Para obtener más información, consulta esta entrada del blog Ahora disponible: AWS SDK para Python (Boto3).

    import boto3

  3. Obtenga el cliente AMS Change Management:

    cm = boto3.client('amscm')

  4. Obtenga el AMS CTs:

    cts = cm.list_change_type_classification_summaries()

    print(cts)

Ejemplos de Python

A continuación, se muestran algunos ejemplos del uso de Python en AMS. Para crear EC2 instancias, and/or utilice Lambda.

Ejemplo de Python para crear un EC2

En este ejemplo se muestra cómo se puede utilizar la RESTFul API amscm desde el código de Python para archivar y realizar procesos de RFC.

  1. Instale la CLI de AMS en algún lugar al que tenga acceso; necesitará los archivos que proporciona.

  2. Llama a las bibliotecas de Python y crea la EC2 instancia:

    import boto3 import json import time # Create the amscm client cm = boto3.client('amscm') # Define the execution parameters for EC2 Create AMSExecParams = { "Description": "EC2-Create", "VpcId": "VPC_ID", "Name": "My-EC2", "TimeoutInMinutes": 60, "Parameters": { "InstanceAmiId": "INSTANCE_ID", "InstanceSubnetId": "SUBNET_ID" } } # Create the AMS RFC cts = cm.create_rfc( ChangeTypeId="ct-14027q0sjyt1h", ChangeTypeVersion="3.0", Title="Python Code RFC Create", ExecutionParameters=json.dumps(AMSExecParams) ) # Extract the RFC ID from the response NewRfcID = cts['RfcId'] # Submit the RFC RFC_Submit_Return=cm.submit_rfc(RfcId=NewRfcID) # Check the RFC status every 30 seconds RFC_Status = cm.get_rfc(RfcId=NewRfcID) RFC_Status_Code = RFC_Status['Rfc']['Status']['Name'] while RFC_Status_Code != "Success": if RFC_Status_Code == "PendingApproval": print(RFC_Status_Code) time.sleep(30) elif RFC_Status_Code == "InProgress": print(RFC_Status_Code) time.sleep(30) elif RFC_Status_Code == "Failure": print(RFC_Status_Code) break else: print(RFC_Status_Code) RFC_Status = cm.get_rfc(RfcId=NewRfcID) RFC_Status_Code = RFC_Status['Rfc']['Status']['Name']

Ejemplo de Python con Lambda

En este ejemplo, se muestra cómo agrupar los modelos AMS con el código para poder usarlos con Lambda, o EC2 en lugares en los que no se va a instalar o no se puede instalar. amscli

nota

AMS no proporciona un SDK de Python importable específico para AMS. El amscli script de instalación instala los modelos de datos del servicio AMS en la ruta normal de la CLI. Para el uso de CLI y el uso de Python del sistema, está bien, ya que ambos awscli boto3 leen sus modelos de servicio desde las mismas ubicaciones predeterminadas (~/.aws/models). Sin embargo, cuando desea utilizar los servicios de AMS a través de boto3 en Lambda (o en cualquier otro entorno de ejecución no local), se interrumpe porque ya no tiene los modelos de datos. El siguiente es un método para solucionar este problema empaquetando los modelos de datos con la función.

Hay pasos sencillos que puede seguir para ejecutar su código Python integrado en AMS en Lambda o en otro entorno de ejecución como EC2 Fargate, etc. El siguiente flujo de trabajo muestra los pasos necesarios para las funciones Lambda integradas en AMS.

Al añadir los modelos de datos al paquete de implementación del código y actualizar la ruta de búsqueda del SDK, puede simular una experiencia de SDK.

importante

Este ejemplo y todos los comandos que no son de Python que se muestran se probaron en un ordenador Mac.

Ejemplo de flujo de trabajo:

  1. Instale la amscli. Esto crea una carpeta ~/.aws/models en su ordenador (Mac).

  2. Copie los modelos a un directorio local:cp ~/.aws/models ./models.

  3. Incluya los modelos en el paquete de implementación de su código.

  4. Actualice el código de la función para añadir los nuevos modelos a la ruta del SDK. ¡Ten en cuenta que este código debe ejecutarse antes de importar boto3 o botocore!

# Force Python to search local directory for boto3 data models import os os.environ['AWS_DATA_PATH'] = './models' import boto3 import botocore
nota

Como los modelos de ejemplo están en un directorio llamadomodels, los agregamos a _PATH. ./models AWS_DATA Si el directorio tuviera un nombre/ams/boto3models, añadiríamos el siguiente código:

import os.environ['AWS_DATA_PATH'] = './ams/boto3models' import boto3 import botocore

El código debería encontrar correctamente los modelos AMS. Como ejemplo más específico sobre el empaquetado, este es el flujo de trabajo específico de Lambda.

Ejemplo de flujo de trabajo Lambda de AMS:

En estos pasos se aplica el ejemplo genérico anterior a la creación de una función de AWS Lambda.

  1. Instale el amscli. Esto crea una carpeta ~/.aws/models en su ordenador (Mac).

  2. Copie los modelos a un directorio local:

    cp ~/.aws/models ./models
  3. Añada los modelos al archivo zip de despliegue de su función:

    zip -r9 function.zip ./models
importante

Actualiza el código de tu función para añadir los nuevos modelos a la ruta del SDK. ¡Ten en cuenta que este código debe ejecutarse antes de importar boto3 o botocore!

# Force Python to search local directory for boto3 data models import os os.environ['AWS_DATA_PATH'] = './models' import boto3 import botocore
nota

Como los modelos de ejemplo están en un directorio llamadomodels, los agregamos a _PATH. ./models AWS_DATA Si el directorio tuviera un nombre/ams/boto3models, añadiríamos el siguiente código:

import os os.environ['AWS_DATA_PATH'] = './ams/boto3models' import boto3 import botocore

Ahora, despliega tu función:

  1. Añada el código de su función al archivo zip de despliegue (si aún no lo ha hecho):

    zip -g function.zip lambda-amscm-test.py
  2. Cree o actualice su función con el archivo zip que creó (consola o CLI):

    aws lambda update-function-code --function-name lambda-amscm-test --zip-file fileb://function.zip --region us-east-1

Su Python Lambda integrado en AMS debería funcionar ahora.

nota

Su función debe tener permisos de IAM amscm o se producirá un error de permisos.

Ejemplo de código de función Lambda para probar amscm (contenido de .py): lambda-amscm-test

import json # Force lambda to search local directory for boto3 data models import os os.environ['AWS_DATA_PATH'] = './models' import boto3 import botocore def lambda_handler(event, context): use_session = boto3.session.Session(region_name="us-east-1") try: cm = use_session.client("amscm") cts = cm.list_change_type_categories() print(cts) except botocore.exceptions.UnknownServiceError: print("amscm not found") return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }

Resultados de la prueba (éxito):

Respuesta de la función:

{ "statusCode": 200, "body": "\"Hello from Lambda!\"" } Request ID: "1cea13c0-ed46-43b1-b102-a8ea28529c27"

Registros de funciones:

START RequestId: 1cea13c0-ed46-43b1-b102-a8ea28529c27 Version: $LATEST {'ChangeTypeCategories': ['Deployment', 'Internal Infrastructure Management', 'Management'], 'ResponseMetadata': {'RequestId': 'e27276a0-e081-408d-bcc2-10cf0aa19ece', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'e27276a0-e081-408d-bcc2-10cf0aa19ece', 'content-type': 'application/x-amz-json-1.1', 'content-length': '89', 'date': 'Sun, 10 May 2020 23:21:19 GMT'}, 'RetryAttempts': 0}} END RequestId: 1cea13c0-ed46-43b1-b102-a8ea28529c27

Ejemplo de API de AMS a Ruby

Para usar la API de AMS con Ruby, instale el SDK de AWS Ruby y la CLI de AMS. Siga estos pasos:

  1. Instale la CLI de AMS. Consulte Instalación o actualización de la CLI de AMS.

  2. Instale el SDK de AWS Ruby. Consulte Herramientas para Amazon Web Services.

  3. Configura Ruby con estos comandos:

    require 'aws-sdk'

    config = {

     region: 'us-east-1',

     credentials: Aws::Credentials.new('ACCESS_KEY','SECRET_KEY')}

  4. Obtenga el AMS CTs:

    ams_cm = Aws::amscm::Client.new(config)

    cts = ams_cm.list_change_type_classification_summaries

    print(cts)

Ejemplo de API de AMS para Java

Para utilizar la API de AMS con Java, instale el SDK de AWS Java y la CLI de AMS. Siga estos pasos:

  1. Instale la CLI de AMS. Consulte Instalación o actualización de la CLI de AMS.

  2. Instale el SDK de AWS Java. Consulte Herramientas para Amazon Web Services.

  3. Configure Java con estos comandos:

    import com.amazonaws.auth.BasicAWSCredentials;

    import com.amazonaws.services.amscm.model.AWSManagedServicesCMClient;

    import com.amazonaws.services.amscm.model.ListChangeTypeClassificationSummariesRequest;

    import com.amazonaws.services.amscm.model.ListChangeTypeClassificationSummariesResult;

    public static void getChangeTypeClassificationSummaries() {

  4. Establezca las credenciales. Le recomendamos que no lo codifique de forma rígida.

    final BasicAWSCredentials awsCredsCm =

     new BasicAWSCredentials("ACCESS_KEY", "SECRET_KEY");

  5. Cree el cliente AMS Change Management:

    final AWSManagedServicesCMClient cmClient =

     new AWSManagedServicesCMClient(awsCredsCm);

  6. Obtenga el AMS CTs:

    final ListChangeTypeClassificationSummariesRequest listCtsRequest = new ListChangeTypeClassification SummariesRequest();

    final ListChangeTypeClassificationSummariesResult listCtsResult =

    cmClient.listChangeTypeClassificationSummaries(listCtsRequest);

    System.out.println("List of CTs");

    listCtsResult.getChangeTypeClassificationSummaries().stream()

    .map(x -> x.getCategory() + "/" + x.getSubcategory() + "/" + x.getItem() + "/" + x.getOperation())

    .forEach(System.out::println);

    }