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
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:
Instale la CLI de AMS. Consulte Instalación o actualización de la CLI de AMS.
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 boto3Obtenga el cliente AMS Change Management:
cm = boto3.client('amscm')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.
Instale la CLI de AMS en algún lugar al que tenga acceso; necesitará los archivos que proporciona.
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:
Instale la
amscli. Esto crea una carpeta~/.aws/modelsen su ordenador (Mac).Copie los modelos a un directorio local:
cp ~/.aws/models ./models.Incluya los modelos en el paquete de implementación de su código.
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.
Instale el amscli. Esto crea una carpeta
~/.aws/modelsen su ordenador (Mac).Copie los modelos a un directorio local:
cp ~/.aws/models ./modelsAñ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:
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.pyCree 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:
Instale la CLI de AMS. Consulte Instalación o actualización de la CLI de AMS.
Instale el SDK de AWS Ruby. Consulte Herramientas para Amazon Web Services
. Configura Ruby con estos comandos:
require 'aws-sdk'config = {region: 'us-east-1',credentials: Aws::Credentials.new('ACCESS_KEY','SECRET_KEY')}-
Obtenga el AMS CTs:
ams_cm = Aws::amscm::Client.new(config)cts = ams_cm.list_change_type_classification_summariesprint(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:
Instale la CLI de AMS. Consulte Instalación o actualización de la CLI de AMS.
Instale el SDK de AWS Java. Consulte Herramientas para Amazon Web Services
. 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() {Establezca las credenciales. Le recomendamos que no lo codifique de forma rígida.
final BasicAWSCredentials awsCredsCm =new BasicAWSCredentials("ACCESS_KEY", "SECRET_KEY");Cree el cliente AMS Change Management:
final AWSManagedServicesCMClient cmClient =new AWSManagedServicesCMClient(awsCredsCm);-
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);}