Usando a API AMS em CLI, Ruby, Python e Java - Guia do usuário avançado do AMS

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á.

Usando a API AMS em CLI, Ruby, Python e Java

Veja a seguir uma lista de trechos de código para a ListChangeTypeClassificationSummaries operação da API AMS, em todos os idiomas disponíveis.

Para Python, Ruby e Java SDKs, consulte Ferramentas para Amazon Web Services e role para baixo até a seção. SDKs Cada instalador do SDK contém um README com trechos de código adicionais.

Exemplo de API AMS para CLI

Depois de instalar a CLI do AMS (requer a AWS CLI; consulteInstalando ou atualizando a CLI do AMS), você pode executar qualquer operação da API do AMS reformando a chamada, primeiro especificando qual API do AMS aws amscm ouaws amsskms, em seguida, executando a ação com hífens substituindo camel case. Por fim, forneça credenciais, como SAML.

Para saber mais, consulte Usando a interface de linha de AWS comando.

Exemplo:

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

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

nota

Se você se autenticar com SAML, adicione aws --profile saml ao início do comando. Por exemplo,

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

Exemplo de API AMS para Python

Para usar a API AMS com Python, instale a CLI do AMS e instale o boto3. Siga estas etapas:

  1. Instale o AMS CLI. Consulte Instalando ou atualizando a CLI do AMS.

  2. Instale o boto3, o AWS SDK para Python. Para obter mais informações, consulte esta postagem do blog Agora disponível — AWS SDK para Python (Boto3).

    import boto3

  3. Obtenha o cliente AMS Change Management:

    cm = boto3.client('amscm')

  4. Obtenha o AMS CTs:

    cts = cm.list_change_type_classification_summaries()

    print(cts)

Exemplos de Python

A seguir estão alguns exemplos de como usar o Python no AMS, para criar EC2 instâncias, use o and/or Lambda.

Exemplo em Python para criar um EC2

Este exemplo mostra como você pode usar a RESTFul API amscm de dentro do código Python para arquivar e executar processos RFC.

  1. Instale a CLI do AMS em algum lugar ao qual você tenha acesso; você precisa dos arquivos que ela fornece.

  2. Chame as bibliotecas do Python e crie a EC2 instância:

    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']

Exemplo de Python com Lambda

Este exemplo mostra como agrupar os modelos AMS com seu código para que você possa usá-lo com o Lambda, EC2 ou; lugares que você não quer ou não pode instalar. amscli

nota

O AMS não fornece um SDK Python específico importável do AMS. O script de amscli instalação instala os modelos de dados do serviço AMS no caminho normal da CLI. Para o uso da CLI e do sistema Python, tudo bem, porque ambos awscli boto3 lêem seus modelos de serviço nos mesmos locais padrão (). ~/.aws/models No entanto, quando você deseja usar serviços AMS via boto3 no Lambda (ou em qualquer outro tempo de execução não local), ele falha, porque você não tem mais os modelos de dados. A seguir está um método para corrigir isso empacotando os modelos de dados com a função.

Há etapas simples que você pode seguir para executar seu código Python integrado ao AMS no Lambda ou em outro tempo de execução, como Fargate, etc. EC2 O fluxo de trabalho a seguir mostra as etapas necessárias para as funções Lambda integradas ao AMS.

Ao adicionar os modelos de dados ao pacote de implantação do código e atualizar o caminho de pesquisa do SDK, você pode simular uma experiência de SDK.

Importante

Este exemplo e todos os comandos não python mostrados foram testados em um computador Mac.

Exemplo de fluxo de trabalho:

  1. Instale o amscli. Isso cria uma pasta ~/.aws/models no seu computador (Mac).

  2. Copie os modelos para um diretório local:cp ~/.aws/models ./models.

  3. Inclua os modelos no pacote de implantação do seu código.

  4. Atualize seu código de função para adicionar os novos modelos ao caminho do SDK. Observe que esse código deve ser executado antes da importação do boto3 ou do 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 os modelos de exemplo estão em um diretório chamadomodels, adicionamos ./models ao AWS_DATA _PATH. Se o diretório fosse nomeado/ams/boto3models, adicionaríamos o seguinte código:

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

Seu código deve encontrar com sucesso os modelos AMS. Como um exemplo mais específico sobre embalagem, aqui está o fluxo de trabalho específico do Lambda.

Exemplo de fluxo de trabalho do AMS Lambda:

Essas etapas aplicam o exemplo genérico anterior à criação de uma função do AWS Lambda.

  1. Instale o amscli. Isso cria uma pasta ~/.aws/models no seu computador (Mac).

  2. Copie os modelos para um diretório local:

    cp ~/.aws/models ./models
  3. Adicione os modelos ao arquivo zip de implantação da sua função:

    zip -r9 function.zip ./models
Importante

Atualize seu código de função para adicionar os novos modelos ao caminho do SDK. Observe que esse código deve ser executado antes da importação do boto3 ou do 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 os modelos de exemplo estão em um diretório chamadomodels, adicionamos ./models ao AWS_DATA _PATH. Se o diretório fosse nomeado/ams/boto3models, adicionaríamos o seguinte código:

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

Agora, implante sua função:

  1. Adicione seu código de função ao arquivo zip de implantação (se você ainda não tiver feito isso):

    zip -g function.zip lambda-amscm-test.py
  2. Crie ou atualize sua função com o arquivo zip que você criou (console ou CLI):

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

Seu Python Lambda integrado ao AMS agora deve funcionar.

nota

Sua função deve ter permissões do IAM amscm ou você receberá um erro de permissão.

Exemplo de código da função Lambda para testar o amscm (conteúdo 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 do teste (sucesso):

Resposta da função:

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

Registros de funções:

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

Exemplo de API AMS para Ruby

Para usar a API AMS com Ruby, instale o SDK do AWS Ruby e a CLI do AMS. Siga estas etapas:

  1. Instale o AMS CLI. Consulte Instalando ou atualizando a CLI do AMS.

  2. Instale o SDK do AWS Ruby. Consulte Ferramentas para Amazon Web Services.

  3. Configure o Ruby com estes comandos:

    require 'aws-sdk'

    config = {

     region: 'us-east-1',

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

  4. Obtenha o AMS CTs:

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

    cts = ams_cm.list_change_type_classification_summaries

    print(cts)

Exemplo de API AMS para Java

Para usar a API AMS com Java, instale o AWS Java SDK e o AMS CLI. Siga estas etapas:

  1. Instale o AMS CLI. Consulte Instalando ou atualizando a CLI do AMS.

  2. Instale o AWS Java SDK. Consulte Ferramentas para Amazon Web Services.

  3. Configure o Java com estes 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. Defina as credenciais. Recomendamos que você não codifique isso.

    final BasicAWSCredentials awsCredsCm =

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

  5. Crie o cliente AMS Change Management:

    final AWSManagedServicesCMClient cmClient =

     new AWSManagedServicesCMClient(awsCredsCm);

  6. Obtenha o 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);

    }