【问题标题】:How to deploy SAM template using boto3如何使用 boto3 部署 SAM 模板
【发布时间】:2018-03-25 01:59:51
【问题描述】:

我正在尝试部署 https://s3.amazonaws.com/serverless-chatbot-code/chatbot.yaml 使用 boto3 库函数 create_stack 但出现错误

“CreateStack 不能与包含变换的模板一起使用”

如何使用 boto3 部署此堆栈?

谢谢。

【问题讨论】:

  • 我认为您必须创建一个更改集(即使没有现有堆栈),然后应用更改集。转换不适用于 CreateStack 操作。
  • 您现在可以在 CreateStack 调用的 Capabilities 参数中使用 CAPABILITY_AUTO_EXPAND

标签: aws-lambda boto amazon-cloudformation boto3 aws-cli


【解决方案1】:

注释是正确的,您必须先创建一个更改集,然后在更改集创建完成后执行该更改集。代码大纲如下

client = boto3.client('cloudformation')

# Helper function to retrieve change set status
def changeSetStatus(change_set_name, client):
    response = client.describe_change_set(
      ChangeSetName=change_set_name,
    )
    return response['Status']

# Create change set
cs_response = client.create_change_set(
  StackName=stackname,
  TemplateURL=templateurl,
  Parameters=params,
  Capabilities=[capabilities],
  ChangeSetType="CREATE",
  ChangeSetName=stackname + "-cs"
)

#Remove print statements, here for illustration
print(str(cs_response))

change_set_name = cs_response['Id']

# Wait until change set status is CREATE_COMPLETE
while True:
  response = change_set_status(change_set_name, client)
  print(str(response))
  time.sleep(10)
  if response == 'CREATE_COMPLETE':
      break

# Execute change set
ex_response = client.execute_change_set(
  ChangeSetName=change_set_name
)

【讨论】:

    猜你喜欢
    • 2017-08-17
    • 2021-04-02
    • 2020-08-09
    • 2019-11-09
    • 2021-03-25
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2021-08-15
    相关资源
    最近更新 更多