本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 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 操作,首先指定 AMS API aws amscm或 aws amsskms,然後使用連字號取代駝案例來給予 動作。最後,提供登入資料,例如 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。
安裝 boto3,適用於 Python 的 AWS SDK。如需詳細資訊,請參閱此部落格文章現已推出 – AWS SDK for Python (Boto3)
。 import boto3取得 AMS 變更管理用戶端:
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 安裝到您可以存取的位置;您需要其提供的檔案。
呼叫 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
注意
由於範例模型位於名為 的目錄中models,我們會將 ./models新增至 AWS_DATA_PATH。如果目錄名為 /ams/boto3models,我們會新增下列程式碼:
import os.environ['AWS_DATA_PATH'] = './ams/boto3models' import boto3 import botocore
您的程式碼應該會成功尋找 AMS 模型。做為更具體的 re: packaging 範例,以下是 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
注意
由於範例模型位於名為 的目錄中models,因此我們將 ./models新增至 AWS_DATA_PATH。如果目錄名為 /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 函數程式碼範例 (lambda-amscm-test.py 的內容):
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 開發套件和 AMS CLI。請遵循下列步驟:
安裝 AMS CLI。請參閱 安裝或升級 AMS CLI。
安裝 AWS Ruby 開發套件。請參閱適用於 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 範例
若要搭配 Java 使用 AMS API,請安裝 AWS Java 開發套件和 AMS CLI。請遵循下列步驟:
安裝 AMS CLI。請參閱 安裝或升級 AMS CLI。
安裝 AWS Java 開發套件。請參閱適用於 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 變更管理用戶端:
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);}