【问题标题】:Convert AWS CLI command into Python AWS Lambda function将 AWS CLI 命令转换为 Python AWS Lambda 函数
【发布时间】:2020-03-01 00:06:24
【问题描述】:

我正在使用 AWS CLI 命令提取结果以进行报告,我必须创建一个 lambda 来完成相同的工作,但面临许多语法错误问题

当前的 AWS CLI 命令:

$ aws ec2 describe-instances \
    --query 'Reservations[].Instances[].[Tags[?Key==`platform`]|[0].Value, Tags[?Key==`resource-version`]|[0].Value]| sort_by(@, &[0])' \
    --output table \
    --filter Name=tag:platform,Values=aip,mmt,pame --profile prod | uniq

你能帮我用python做同样的代码吗?

【问题讨论】:

  • 我认为您正在寻找的是 AWS Python SDK (boto3.amazonaws.com/v1/documentation/api/latest/reference/…)。如果您滚动浏览文档,或者为describe instances 滚动crtl+f,您最终会找到可能对您有所帮助的资源。如果您已经尝试使用 Python 运行相同的命令,但确实遇到了错误,请发布 Python 代码和错误,否则没有人可以帮助您。
  • 你能用文字解释一下你正在寻找的输出是什么吗?对于platform 的值为aipmmtpame 之一的实例,您似乎需要platformresource-version 标记。那是对的吗?您不想要实例 ID 吗?
  • 不,我得到了这个结果:部署的版本是:mmt 1.104.12 mmt 1.104.15 mmt 1.104.15 mmt 1.112.0-SNAPSHOT mmt 1.104.15 mmt 1.104.12 aip 1.112.0-SNAPSHOT mmt 1.112.0-SNAPSHOT mmt 1.104.15 mmt 1.104.12 aip 1.112.0-SNAPSHOT aip 1.112.0-SNAPSHOT mmt 1.112.0-SNAPSHOT

标签: python amazon-web-services aws-lambda boto3 aws-cli


【解决方案1】:

现在我可以打印这个结果了:

部署的版本是:

mmt 1.104.12 mmt 1.104.15 mmt 1.104.15 mmt 1.112.0-SNAPSHOT mmt 1.104.15 mmt 1.104.12 aip 1.112.0-SNAPSHOT mmt 1.112.0-SNAPSHOT mmt 1.104.15 mmt 1.104.12 aip 1.112.0-SNAPSHOT aip 1.112.0-SNAPSHOT mmt 1.112.0-SNAPSHOT

使用这个 cide `import boto3

def instance_list(tagkey, tagvalue): # 当传递一个标签键,标签值这将返回一个找到的InstanceIds列表。

ec2client = boto3.client('ec2')

response = ec2client.describe_instances(
     Filters=[
      {'Name':'tag:platform', 'Values':["mmt","pame","aip"]}
]
)
name = []
instancelist= []
print ("Deployed versions are :")
for reservation in (response["Reservations"]):
    for instance in reservation["Instances"]:
       for tag in instance['Tags']:
           if tag['Key'] == 'platform':
               name.append(tag["Value"])
           if tag['Key'] == 'resource-version':
               instancelist.append(tag["Value"])
a  = [name + instancelist]
for x, y in zip(name, instancelist):
    print (x, y)

`

我正在尝试删除重复的行并通过邮件或 slack 发送结果;有什么帮助吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-10
    • 2021-12-17
    • 2019-10-20
    • 2018-02-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-28
    • 2017-01-05
    相关资源
    最近更新 更多