Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services CloudFormation CreateStack API包含宏时失败_Amazon Web Services_Aws Lambda_Amazon Cloudformation_Amazon Iam - Fatal编程技术网

Amazon web services CloudFormation CreateStack API包含宏时失败

Amazon web services CloudFormation CreateStack API包含宏时失败,amazon-web-services,aws-lambda,amazon-cloudformation,amazon-iam,Amazon Web Services,Aws Lambda,Amazon Cloudformation,Amazon Iam,我正在使用CloudFormation Boto3 API来使用API创建堆栈。如果我传递一个没有宏的模板,我就能够创建堆栈 前 我还创建了一个宏,可以通过CLI和CloudFormation UI调用它。所以基本上我使用的是上面的云形成和附加的变换 Transform: StackMetrics Resources: Bucket1: Type: AWS::S3::Bucket Bucket2: Type: AWS::S3::Bucket 如前所述,它是通过CL

我正在使用CloudFormation Boto3 API来使用API创建堆栈。如果我传递一个没有宏的模板,我就能够创建堆栈

我还创建了一个宏,可以通过CLI和CloudFormation UI调用它。所以基本上我使用的是上面的云形成和附加的变换

Transform: StackMetrics

Resources:
  Bucket1:
    Type: AWS::S3::Bucket

  Bucket2:
    Type: AWS::S3::Bucket

如前所述,它是通过CLI和UI工作的,而不是通过API

client = boto3.client('cloudformation')
response = client.create_stack(
        StackName='MacroTestStack', TemplateURL='<path_to_above_template>',
        Capabilities=['CAPABILITY_AUTO_EXPAND']
    )

return response

client=boto3.client('cloudformation'))
response=client.create\u堆栈(
StackName='MacroTestStack',TemplateURL='',
能力=[“能力自动扩展”]
)
返回响应

我尝试使用CLI和UI。

如果它在CLI和UI中工作,那么它在API中工作(API是基础AWS API)。我想你的意思是它在boto3 SDK中不起作用(请注意SDK,而不是API,它们是完全不同的东西)

最可能的原因是您的boto3 SDK处于后台。更新并重试


PS如果您进行SDK调用但它不工作,通常会出现某种错误消息、错误响应代码或异常。请提供这些信息,这样我们就不用猜测了。

谢谢@jarmod。我解决了这个问题。看来我们不得不放弃——罗伦。根据文档-如果不指定值,AWS CloudFormation将使用以前与堆栈关联的角色。如果没有可用的角色,AWS CloudFormation将使用从用户凭据生成的临时会话。所以我必须明确地给出CloudFormation在创建堆栈时将承担的角色。对于宏,此角色应具有lambda invoke权限。因此,我添加了一个具有此权限的角色,它开始工作。无论如何,CF错误消息不是很有用。这里有些东西不太合适。您的代码正在调用create_stack,因此不存在“以前与堆栈关联的角色”。而且,从根本上说,使用awscli应该与使用boto3相同,因此如果使用相同的凭据调用相同的API,那么结果将是相同的。无论如何,很高兴你解决了这个问题。
client = boto3.client('cloudformation')
response = client.create_stack(
        StackName='MacroTestStack', TemplateURL='<path_to_above_template>',
        Capabilities=['CAPABILITY_AUTO_EXPAND']
    )

return response