

文档 AWS SDK 示例 GitHub 存储库中还有更多 [S AWS DK 示例](https://github.com/awsdocs/aws-doc-sdk-examples)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将 `UpdateStack` 与 CLI 配合使用
<a name="cloudformation_example_cloudformation_UpdateStack_section"></a>

以下代码示例演示如何使用 `UpdateStack`。

------
#### [ CLI ]

**AWS CLI**  
**更新 AWS CloudFormation 堆栈**  
以下 `update-stack` 命令更新 `mystack` 堆栈的模板和输入参数：  

```
aws cloudformation update-stack --stack-name mystack --template-url https://s3.amazonaws.com/sample/updated.template --parameters ParameterKey=KeyPairName,ParameterValue=SampleKeyPair ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,SampleSubnetID2
```
以下 `update-stack` 命令更新 `mystack` 堆栈的 `SubnetIDs` 参数值：如果您没有指定参数值，则将使用模板中指定的默认值：  

```
aws cloudformation update-stack --stack-name mystack --template-url https://s3.amazonaws.com/sample/updated.template --parameters ParameterKey=KeyPairName,UsePreviousValue=true ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,UpdatedSampleSubnetID2
```
以下 `update-stack` 命令向 `mystack` 堆栈添加两个堆栈通知主题：  

```
aws cloudformation update-stack --stack-name mystack --use-previous-template --notification-arns "arn:aws:sns:use-east-1:123456789012:mytopic1" "arn:aws:sns:us-east-1:123456789012:mytopic2"
```
有关更多信息，请参阅《*AWS CloudFormation 用户指南》*中的[AWS CloudFormation 堆栈更新](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks.html)。  
+  有关 API 的详细信息，请参阅*AWS CLI 命令参考[UpdateStack](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudformation/update-stack.html)*中的。

------
#### [ PowerShell ]

**适用于 PowerShell V4 的工具**  
**示例 1：使用指定的模板和自定义参数更新堆栈 “MyStack”。 'PK1' 表示模板中声明的参数的名称，而 'PV1' 表示其值。也可以使用 “密钥” 和 “值” 来指定自定义参数，而不是 “ParameterKey” 和 “ParameterValue”。**  

```
Update-CFNStack -StackName "myStack" `
                -TemplateBody "{Template Content Here}" `
                -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }
```
**示例 2：使用指定的模板和自定义参数更新堆栈 “MyStack”。 PK1'和' PK2 '表示模板中声明的参数的名称，' 和 PV1 'PV2' 代表其请求的值。也可以使用 “密钥” 和 “值” 来指定自定义参数，而不是 “ParameterKey” 和 “ParameterValue”。**  

```
Update-CFNStack -StackName "myStack" `
                -TemplateBody "{Template Content Here}" `
                -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )
```
**示例 3：使用指定的模板和自定义参数更新堆栈 “MyStack”。 'PK1' 表示模板中声明的参数的名称，而 'PV2' 表示其值。也可以使用 “密钥” 和 “值” 来指定自定义参数，而不是 “ParameterKey” 和 “ParameterValue”。**  

```
Update-CFNStack -StackName "myStack" -TemplateBody "{Template Content Here}" -Parameters @{ ParameterKey="PK1"; ParameterValue="PV1" }
```
**示例 4：使用从 Amazon S3 获得的指定模板和自定义参数更新堆栈 “MyStack”。 PK1'和' PK2 '表示模板中声明的参数的名称，' 和 PV1 'PV2' 代表其请求的值。也可以使用 “密钥” 和 “值” 来指定自定义参数，而不是 “ParameterKey” 和 “ParameterValue”。**  

```
Update-CFNStack -StackName "myStack" `
                -TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template `
                -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )
```
**示例 5：使用从 Amazon S3 获取的指定模板和自定义参数更新堆栈 “MyStack”（在本示例中假设该堆栈包含 IAM 资源）。 PK1'和' PK2 '表示模板中声明的参数的名称，' 和 PV1 'PV2' 代表其请求的值。也可以使用 “密钥” 和 “值” 来指定自定义参数，而不是 “ParameterKey” 和 “ParameterValue”。包含 IAM 资源的堆栈要求您指定-Capabilities “CAPABILITY\$1IAM” 参数，否则更新将失败并出现 “” 错误。InsufficientCapabilities**  

```
Update-CFNStack -StackName "myStack" `
                -TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template `
                -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } ) `
                -Capabilities "CAPABILITY_IAM"
```
+  有关 API 的详细信息，请参阅 *AWS Tools for PowerShell Cmdlet 参考 (V* 4) [UpdateStack](https://docs.aws.amazon.com/powershell/v4/reference)中的。

**适用于 PowerShell V5 的工具**  
**示例 1：使用指定的模板和自定义参数更新堆栈 “MyStack”。 'PK1' 表示模板中声明的参数的名称，而 'PV1' 表示其值。也可以使用 “密钥” 和 “值” 来指定自定义参数，而不是 “ParameterKey” 和 “ParameterValue”。**  

```
Update-CFNStack -StackName "myStack" `
                -TemplateBody "{Template Content Here}" `
                -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }
```
**示例 2：使用指定的模板和自定义参数更新堆栈 “MyStack”。 PK1'和' PK2 '表示模板中声明的参数的名称，' 和 PV1 'PV2' 代表其请求的值。也可以使用 “密钥” 和 “值” 来指定自定义参数，而不是 “ParameterKey” 和 “ParameterValue”。**  

```
Update-CFNStack -StackName "myStack" `
                -TemplateBody "{Template Content Here}" `
                -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )
```
**示例 3：使用指定的模板和自定义参数更新堆栈 “MyStack”。 'PK1' 表示模板中声明的参数的名称，而 'PV2' 表示其值。也可以使用 “密钥” 和 “值” 来指定自定义参数，而不是 “ParameterKey” 和 “ParameterValue”。**  

```
Update-CFNStack -StackName "myStack" -TemplateBody "{Template Content Here}" -Parameters @{ ParameterKey="PK1"; ParameterValue="PV1" }
```
**示例 4：使用从 Amazon S3 获得的指定模板和自定义参数更新堆栈 “MyStack”。 PK1'和' PK2 '表示模板中声明的参数的名称，' 和 PV1 'PV2' 代表其请求的值。也可以使用 “密钥” 和 “值” 来指定自定义参数，而不是 “ParameterKey” 和 “ParameterValue”。**  

```
Update-CFNStack -StackName "myStack" `
                -TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template `
                -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )
```
**示例 5：使用从 Amazon S3 获取的指定模板和自定义参数更新堆栈 “MyStack”（在本示例中假设该堆栈包含 IAM 资源）。 PK1'和' PK2 '表示模板中声明的参数的名称，' 和 PV1 'PV2' 代表其请求的值。也可以使用 “密钥” 和 “值” 来指定自定义参数，而不是 “ParameterKey” 和 “ParameterValue”。包含 IAM 资源的堆栈要求您指定-Capabilities “CAPABILITY\$1IAM” 参数，否则更新将失败并出现 “” 错误。InsufficientCapabilities**  

```
Update-CFNStack -StackName "myStack" `
                -TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template `
                -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } ) `
                -Capabilities "CAPABILITY_IAM"
```
+  有关 API 的详细信息，请参阅 *AWS Tools for PowerShell Cmdlet 参考 (V* 5) [UpdateStack](https://docs.aws.amazon.com/powershell/v5/reference)中的。

------