Я использую следующий код для создания стека из servicecatalog и помещаю жестко закодированное значение в «provisoningParameters»:
from flask import Flask
import time
import boto3
from flask import Flask
from flask import request
from flask import jsonify, make_response
import requests
import json
import argparse
app = Flask(__name__)
@app.route('/createstack', methods=['POST'])
def post_createstack():
content = request.get_json(force = True)
response = createstack(content['ProductId'], content['ProvisionedProductName'], content['JsonFileName'])
return make_response(str(response), 200)
def cluster(ProductId, ProvisionedProductName):
try:
client = boto3.client('servicecatalog', region_name='us-east-1')
ProvisioningArtifactId = client.list_provisioning_artifacts(ProductId=ProductId)
ArtifactId = ProvisioningArtifactId['ProvisioningArtifactDetails'][0]['Id']
response = client.provision_product(ProductId=ProductId, ProvisionedProductName=ProvisionedProductName, ProvisioningArtifactId=ArtifactId, ProvisioningParameters=JsonFileName)
print(response)
return response
except Exception as e:
error = "An error occurred processing this request: " + str(e)
return(error)
if __name__ == '__main__':
app.debug = True
app.run(host='0.0.0.0', port=8080)
curl -X POST -d '{"ProductId": "prod-ua5lk7mbx436q", "ProvisionedProductName": "test-pipeline", "JsonFileName": "devops-pipeline-params.json"}' http://0.0.0.0:8080/createstack
И я получаю ошибку
An error occurred processing this request: Parameter validation failed:
Invalid type for parameter ProvisioningParameters, value: devops-pipeline-params.json, type: <class 'str'>, valid types: <class 'list'>, <class 'tuple'>
Теперь я поместил все эти значения в json файл и сохранил файл в том же месте, где хранился скрипт выше (service.py)
Я сохранил следующую переменную в "devops-pipeline-params. json "
{
"ParameterValue": "Standard",
"ParameterKey": "ServiceProfile"
},
{
"ParameterValue": "External",
"ParameterKey": "BuildLocation"
},
{
"ParameterValue": "Disabled",
"ParameterKey": "SoapUIEnabled"
},