本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 CLI、Ruby、Python 和 Java 中使用 AMS API
以下是 AMS API ListChangeTypeClassificationSummaries 操作的所有可用语言的代码片段列表。
有关 Python、Ruby 和 Java SDKs 的信息,请参阅亚马逊 Web Services 工具
AMS API 到 CLI 示例
安装 AMS CLI(需要 CL AWS I;请参阅安装或升级 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。
安装适用于 Python 的 AWS 软件开发工具包 boto3。欲了解更多信息,请参阅这篇博客文章现已推出 — 适用于 Python 的 AWS SDK (Boto3
)。 import boto3获取 AMS 变更管理客户端:
cm = boto3.client('amscm')获取 AMS CTs:
cts = cm.list_change_type_classification_summaries()print(cts)
Python 示例
以下是一些在 AMS 中使用 Python、要创建 EC2 实例、 and/or 使用 Lambda 的示例。
创建一个 Python 示例 EC2
此示例展示了如何在 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 模型。以下是关于:打包的更具体的示例,以下是 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 函数代码示例(.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!') }
测试输出(成功):
函数响应:
{ "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
Ruby 的 AMS API 示例
要在 Ruby 中使用 AMS API,请安装 Rub AWS y SDK 和 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,请安装 Jav AWS a SDK 和 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);}