1. ホーム
  2. python

[解決済み] Python Azure CLI で popen コマンドにパイピング変数を発行する

2022-01-30 06:42:28

質問

私の現在の問題は、PythonとHTMLでアプリケーションを作成し、HTMLフォームを使用してデータを収集し、Pythonの変数に変換し、サブプロセスPOPENを使用してAzure CLIコマンドをAzureテナントに送信していることです。コマンドに次のコードを使用すると、エラーが返されます。

Pythonコード

def storageaccountcreate():
    name = request.form['storageaccountname']
    resourcegroup = request.form['resourcegroup']
    subscription = request.form['subscriptionid']
    location = request.form['location']
    sku = request.form['sku']
    command = Popen("az storage account create -n name -g resourcegroup --subscription subscriptionid -l location --sku sku", shell=True ,stdout=subprocess.PIPE)
    text = command.stdout.read().decode("ascii") 
    print(text)
    with open("file.txt","w") as f:
        f.write(text)
    return redirect('/')

エラー

Subscription 'subscriptionid' not recognized.
az storage account create: 'sku' is not a valid value for '--sku'. See 'az storage account create --help'.

変数なしのプレーンテキストとして見ていることがよくわかります。どうすればコマンドに変数を追加できるのでしょうか?Azureに渡されるコマンドは以下のようになります。

az storage account create -n NameVariable -g ResourceGroupVariable --subscription SubscriptionIDVariable -l LocationVariable --sku SkuVariable

解決方法は?

Format のような文字列を作成します。

"az storage account create -n {name} -g {resourcegroup} --subscription {subscriptionid} -l {location} --sku {sku}".format(name=name, resourcegroup=resourcegroup, subscriptionid=subcription, location=location, sku=sku)

また、f-stringも使用できます。

f"az storage account create -n {name} -g {resourcegroup} --subscription {subscription} -l {location} --sku {sku}"