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
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:
Instale o AMS CLI. Consulte Instalando ou atualizando a CLI do AMS.
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 boto3Obtenha o cliente AMS Change Management:
cm = boto3.client('amscm')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.
Instale a CLI do AMS em algum lugar ao qual você tenha acesso; você precisa dos arquivos que ela fornece.
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:
Instale o
amscli. Isso cria uma pasta~/.aws/modelsno seu computador (Mac).Copie os modelos para um diretório local:
cp ~/.aws/models ./models.Inclua os modelos no pacote de implantação do seu código.
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.
Instale o amscli. Isso cria uma pasta
~/.aws/modelsno seu computador (Mac).Copie os modelos para um diretório local:
cp ~/.aws/models ./modelsAdicione 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:
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.pyCrie 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:
Instale o AMS CLI. Consulte Instalando ou atualizando a CLI do AMS.
Instale o SDK do AWS Ruby. Consulte Ferramentas para Amazon Web Services
. Configure o Ruby com estes comandos:
require 'aws-sdk'config = {region: 'us-east-1',credentials: Aws::Credentials.new('ACCESS_KEY','SECRET_KEY')}-
Obtenha o AMS CTs:
ams_cm = Aws::amscm::Client.new(config)cts = ams_cm.list_change_type_classification_summariesprint(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:
Instale o AMS CLI. Consulte Instalando ou atualizando a CLI do AMS.
Instale o AWS Java SDK. Consulte Ferramentas para Amazon Web Services
. 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() {Defina as credenciais. Recomendamos que você não codifique isso.
final BasicAWSCredentials awsCredsCm =new BasicAWSCredentials("ACCESS_KEY", "SECRET_KEY");Crie o cliente AMS Change Management:
final AWSManagedServicesCMClient cmClient =new AWSManagedServicesCMClient(awsCredsCm);-
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);}