기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CLI, Ruby, Python 및 Java에서 AMS API 사용
다음은 사용 가능한 모든 언어로 된 AMS API ListChangeTypeClassificationSummaries 작업에 대한 코드 조각 목록입니다.
Python, Ruby 및 Java SDKs의 경우 Amazon Web Services용 도구를
AMS API에서 CLI로 예제
AMS CLI를 설치한 후( AWS CLI 필요, 참조AMS CLI 설치 또는 업그레이드) 먼저 호출을 재구성하여 AMS API 또는 aws amscm를 지정한 다음 aws amsskms낙타 대소문자를 대체하는 하이픈으로 작업을 제공하여 모든 AMS API 작업을 실행할 수 있습니다. 마지막으로 SAML과 같은 자격 증명을 제공합니다.
자세한 내용은 AWS 명령줄 인터페이스 사용을 참조하세요.
예시
API:
'ChangeTypeClassificationSummaries[].[Category,Subcategory,Item,Operation,ChangeTypeId]'CLI:
amscm list-change-type-classification-summaries --query "ChangeTypeClassificationSummaries[*].[Category,Subcategory,Item,Operation,ChangeTypeId]" --output table
참고
SAML로 인증하는 경우 명령의 시작 aws --profile saml 부분에를 추가합니다. 예:
aws --profile saml amscm list-change-type-classification-summaries --query "ChangeTypeClassificationSummaries[*].[Category,Subcategory,Item,Operation,ChangeTypeId]" --output table
AMS API에서 Python으로의 예제
Python과 함께 AMS API를 사용하려면 AMS CLI를 설치하고 boto3를 설치합니다. 다음 단계를 따릅니다.
AMS CLI를 설치합니다. AMS CLI 설치 또는 업그레이드을(를) 참조하세요.
AWS SDK for Python인 boto3를 설치합니다. 자세한 내용은이 블로그 게시물 Now Available – AWS SDK for Python (Boto3)
을 참조하세요. import boto3AMS Change Management 클라이언트를 가져옵니다.
cm = boto3.client('amscm')AMS CTs 가져오기:
cts = cm.list_change_type_classification_summaries()print(cts)
Python 예제
다음은 AMS에서 Python을 사용하여 EC2 인스턴스를 생성하거나 Lambda를 사용하는 몇 가지 예입니다.
EC2를 생성하는 Python 예제
이 예제에서는 Python 코드 내에서 amscm RESTFul API를 사용하여 파일을 제출하고 RFC 프로세스를 수행하는 방법을 보여줍니다.
액세스 권한이 있는 위치에 AMS CLI를 설치합니다. AMS CLI가 제공하는 파일이 필요합니다.
Python 라이브러리를 호출하고 EC2 인스턴스를 생성합니다.
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']
Lambda를 사용한 Python 예제
이 예제에서는 AMS 모델을 코드와 번들링하여 Lambda 또는 EC2와 함께 사용할 수 있도록 하는 방법을 보여줍니다.를 설치할 수 없거나 설치할 수 없는 위치입니다amscli.
참고
AMS는 가져올 수 있는 AMS별 Python SDK를 제공하지 않습니다. amscli 설치 스크립트는 CLI의 일반 경로에 AMS 서비스 데이터 모델을 설치합니다. CLI 사용 및 시스템 Python 사용의 경우 awscli 및 모두 동일한 기본 위치()에서 서비스 모델을 boto3 읽기 때문에 괜찮습니다~/.aws/models. 그러나 Lambda의 boto3(또는 로컬이 아닌 다른 런타임)를 통해 AMS 서비스를 사용하려는 경우 데이터 모델이 더 이상 없기 때문에 중단됩니다. 다음은 데이터 모델을 함수로 패키징하여이 문제를 해결하는 방법입니다.
Lambda 또는 EC2, Fargate 등과 같은 다른 런타임에서 AMS 통합 Python 코드를 실행하기 위해 수행할 수 있는 간단한 단계가 있습니다. 다음 워크플로는 AMS 통합 Lambda 함수에 필요한 단계를 보여줍니다.
코드의 배포 패키지에 데이터 모델을 추가하고 SDK 검색 경로를 업데이트하면 SDK 환경을 시뮬레이션할 수 있습니다.
중요
이 예제와 표시된 모든 비 Python 명령은 Mac 컴퓨터에서 테스트되었습니다.
워크플로 예제:
amscli를 설치합니다. 이렇게 하면 컴퓨터(Mac)의~/.aws/models에 폴더가 생성됩니다.모델을 로컬 디렉터리에 복사합니다
cp ~/.aws/models ./models.모델을 코드의 배포 패키지에 포함합니다.
함수 코드를 업데이트하여 SDK 경로에 새 모델을 추가합니다. boto3 또는 botocore를 가져오려면 먼저이 코드를 실행해야 합니다.
# Force Python to search local directory for boto3 data models import os os.environ['AWS_DATA_PATH'] = './models' import boto3 import botocore
참고
예제 모델은 라는 디렉터리에 있으므로 AWS_DATA_PATH./models에를 models추가합니다. 디렉터리 이름이 인 경우 다음 코드를 추가합니다/ams/boto3models.
import os.environ['AWS_DATA_PATH'] = './ams/boto3models' import boto3 import botocore
코드가 AMS 모델을 성공적으로 찾아야 합니다. 패키징에 대한 보다 구체적인 예로 Lambda별 워크플로가 있습니다.
AMS Lambda 워크플로 예제:
이 단계는 위의 일반 예제를 AWS Lambda 함수 생성에 적용합니다.
amscli를 설치합니다. 이렇게 하면 컴퓨터(Mac)의
~/.aws/models에 폴더가 생성됩니다.모델을 로컬 디렉터리에 복사합니다.
cp ~/.aws/models ./models함수의 배포 zip 파일에 모델을 추가합니다.
zip -r9 function.zip ./models
중요
함수 코드를 업데이트하여 SDK 경로에 새 모델을 추가합니다. boto3 또는 botocore를 가져오려면 먼저이 코드를 실행해야 합니다.
# Force Python to search local directory for boto3 data models import os os.environ['AWS_DATA_PATH'] = './models' import boto3 import botocore
참고
예제 모델은 라는 디렉터리에 있으므로 AWS_DATA_PATH./models에를 models추가합니다. 디렉터리 이름이 인 경우 다음 코드를 추가합니다/ams/boto3models.
import os os.environ['AWS_DATA_PATH'] = './ams/boto3models' import boto3 import botocore
이제 함수를 배포합니다.
배포 zip 파일에 함수 코드를 추가합니다(아직 추가하지 않은 경우).
zip -g function.zip lambda-amscm-test.py생성한 zip 파일(콘솔 또는 CLI)을 사용하여 함수를 생성하거나 업데이트합니다.
aws lambda update-function-code --function-name lambda-amscm-test --zip-file fileb://function.zip --region us-east-1
이제 AMS 통합 Python Lambda가 작동합니다.
참고
함수에에 대한 IAM 권한이 amscm 있거나 권한 오류가 발생해야 합니다.
amscm(lambda-amscm-test.py 콘텐츠)을 테스트하기 위한 샘플 Lambda 함수 코드:
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!') }
테스트 출력(성공):
함수 응답:
{ "statusCode": 200, "body": "\"Hello from Lambda!\"" } Request ID: "1cea13c0-ed46-43b1-b102-a8ea28529c27"
함수 로그:
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
AMS API에서 Ruby로 예제
Ruby와 함께 AMS API를 사용하려면 AWS Ruby SDK 및 AMS CLI를 설치합니다. 다음 단계를 따릅니다.
AMS CLI를 설치합니다. AMS CLI 설치 또는 업그레이드을(를) 참조하세요.
AWS Ruby SDK를 설치합니다. Amazon Web Services용 도구를
참조하세요. 다음 명령을 사용하여 Ruby를 구성합니다.
require 'aws-sdk'config = {region: 'us-east-1',credentials: Aws::Credentials.new('ACCESS_KEY','SECRET_KEY')}-
AMS CTs 가져오기:
ams_cm = Aws::amscm::Client.new(config)cts = ams_cm.list_change_type_classification_summariesprint(cts)
AMS API에서 Java로 예제
AMS API를 Java와 함께 사용하려면 AWS Java SDK 및 AMS CLI를 설치합니다. 다음 단계를 따릅니다.
AMS CLI를 설치합니다. AMS CLI 설치 또는 업그레이드을(를) 참조하세요.
AWS Java SDK를 설치합니다. Amazon Web Services용 도구를
참조하세요. 다음 명령을 사용하여 Java를 구성합니다.
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() {자격 증명을 설정합니다. 이를 하드코딩하지 않는 것이 좋습니다.
final BasicAWSCredentials awsCredsCm =new BasicAWSCredentials("ACCESS_KEY", "SECRET_KEY");AMS Change Management 클라이언트를 생성합니다.
final AWSManagedServicesCMClient cmClient =new AWSManagedServicesCMClient(awsCredsCm);-
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);}