我正在尝试将AWS CLI命令保存到python变量(列表)中。诀窍是下面的代码返回我想要的结果,但不将其保存到变量中并返回空列表。
import os
bashCommand = 'aws s3api list-buckets --query "Buckets[].Name"'
f = [os.system(bashCommand)]
print(f)
输出:
[
"bucket1",
"bucket2",
"bucket3"
]
[0]
所需的输出:
[
"bucket1",
"bucket2",
"bucket3"
]
("bucket1", "bucket2", "bucket3")
答案 0 :(得分:2)
如果您使用的是Python并且希望列出存储桶,那么最好使用适用于Python的AWS开发工具包,即boto3
:
import boto3
s3 = boto3.resource('s3')
buckets = [bucket.name for bucket in s3.buckets.all()]
请参阅:S3 — Boto 3 Docs
这比调出AWS CLI(本身使用boto!)更为明智。
答案 1 :(得分:0)
我使用此命令创建所有存储桶的Python列表:
bucket_list = eval(subprocess.check_output('aws s3api list-buckets --query "Buckets[].Name"').translate(None, '\r\n '))
答案 2 :(得分:0)
您真的不需要任何花哨的东西,您要做的就是导入子进程和json并使用它们:)
这已在python3.6和Linux上进行了测试
output = subprocess.run(["aws", "--region=us-west-2", "s3api", "list-buckets", "--query", "Buckets[].Name"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output_utf8=output.stdout.decode('utf-8')
output_utf8_json = json.loads(output_utf8)
print(output_utf8_json)
for key in output_utf8_json:
print(key)