AWS CLI 및 PowerShell에 대한 CloudFormation 스택 작업 명령의 예 - AWS CloudFormation

AWS CLI 및 PowerShell에 대한 CloudFormation 스택 작업 명령의 예

다음 명령줄 예제는 AWS CLI 및 PowerShell을 사용하여 개별 CloudFormation 작업을 수행하는 방법을 보여줍니다. 이러한 예제에는 가장 일반적으로 사용되는 작업만 포함되어 있습니다. 전체 목록은 AWS CloudFormationAPI 참조를 참조하세요.

이 주제의 예제에서는 백슬래시(\) 규칙을 사용하여 긴 명령줄이 다음 줄에 계속됨을 나타냅니다.

스택 업데이트 취소

cancel-update-stack 명령을 사용하여 스택 업데이트를 취소합니다. 자세한 내용은 스택 업데이트 취소 단원을 참조하십시오.

CLI
AWS CLI

진행 중인 스택 업데이트를 취소하려면

다음 cancel-update-stack 명령은 myteststack 스택의 스택 업데이트를 취소합니다.

aws cloudformation cancel-update-stack --stack-name myteststack
  • API 세부 정보는 AWS CLI 명령 참조에서 CancelUpdateStack을 참조하세요.

PowerShell
PowerShell용 도구

예 1: 지정된 스택에 대한 업데이트를 취소합니다.

Stop-CFNUpdateStack -StackName "myStack"
  • API 세부 정보는 AWS Tools for PowerShell Cmdlet 참조CancelUpdateStack을 참조하세요.

업데이트 롤백 계속

continue-update-rollback 명령을 사용하여 업데이트 롤백을 계속합니다. 자세한 내용은 업데이트 롤백 계속 단원을 참조하십시오.

CLI
AWS CLI

업데이트 롤백을 재시도하려면

다음 continue-update-rollback 예제는 이전에 실패한 스택 업데이트에서 롤백 작업을 재개합니다.

aws cloudformation continue-update-rollback \ --stack-name my-stack

이 명령은 출력을 생성하지 않습니다.

PowerShell
PowerShell용 도구

예 1: 이름이 지정된 스택의 롤백을 계속합니다. 스택은 'UPDATE_ROLLBACK_FAILED' 상태여야 합니다. 계속된 롤백이 성공하면 스택은 'UPDATE_ROLLBACK_COMPLETE' 상태가 됩니다.

Resume-CFNUpdateRollback -StackName "myStack"

스택을 만듭니다

create-stack 명령을 사용하여 스택을 생성합니다. 스택 이름, 유효한 템플릿의 위치 및 입력 파라미터를 제공해야 합니다. 파라미터 키 이름은 대/소문자를 구분합니다. 파라미터 키 이름을 잘못 입력할 경우 CloudFormation에서는 스택을 생성하지 않고 템플릿에 해당 파라미터가 없다고 보고합니다.

기본적으로 describe-stacks 명령은 파라미터값을 반환합니다. 암호와 같은 민감한 파라미터값이 반환되지 않도록 하려면 TRUE로 설정된 NoEcho 속성을 CloudFormation 템플릿에 포함합니다.

중요

NoEcho 속성을 사용해도 다음에 저장된 정보는 마스킹되지 않습니다.

이러한 메커니즘을 사용하여 암호나 보안 정보와 같은 중요한 정보를 포함하지 않는 것이 좋습니다.

중요

AWS Systems Manager Parameter Store 또는 AWS Secrets Manager와 같이 CloudFormation 외부에서 저장 및 관리되는 중요한 정보를 참조하려면 CloudFormation 템플릿에 직접 중요한 정보를 포함하는 대신 스택 템플릿에 있는 동적 파라미터를 사용하는 것이 좋습니다.

자세한 내용은 템플릿에 자격 증명을 포함하지 않음 모범 사례를 참조하세요.

다음과 같은 예제에서는 지정된 이름, 템플릿 및 입력 파라미터를 사용하여 새 스택을 생성하는 방법을 보여줍니다.

CLI
AWS CLI

AWS CloudFormation 스택을 생성하려면

다음 create-stacks 명령에서는 sampletemplate.json 템플릿을 사용하여 이름이 myteststack인 스택을 생성합니다.

aws cloudformation create-stack --stack-name myteststack --template-body file://sampletemplate.json --parameters ParameterKey=KeyPairName,ParameterValue=TestKey ParameterKey=SubnetIDs,ParameterValue=SubnetID1\\,SubnetID2

출력:

{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896" }

자세한 내용을 알아보려면 AWS CloudFormation 사용 설명서의 스택을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조CreateStack을 참조하세요.

PowerShell
PowerShell용 도구

예 1: 지정된 이름으로 새 스택을 생성합니다. 템플릿은 사용자 지정 파라미터를 사용하여 제공된 콘텐츠에서 구문 분석됩니다. 여기서, 'PK1' 및 'PK2'는 템플릿 콘텐츠에 선언된 파라미터의 이름을 나타내고, 'PV1' 및 'PV2'는 해당 파라미터의 값을 나타냅니다. 사용자 지정 파라미터는 'ParameterKey' 및 'ParameterValue' 대신 'Key' 및 'Value'를 사용하여 지정할 수도 있습니다. 스택 생성이 실패하면 롤백되지 않습니다.

New-CFNStack -StackName "myStack" ` -TemplateBody "{TEMPLATE CONTENT HERE}" ` -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" }) ` -DisableRollback $true

예 2: 지정된 이름으로 새 스택을 생성합니다. 템플릿은 사용자 지정 파라미터를 사용하여 제공된 콘텐츠에서 구문 분석됩니다. 여기서, 'PK1' 및 'PK2'는 템플릿 콘텐츠에 선언된 파라미터의 이름을 나타내고, 'PV1' 및 'PV2'는 해당 파라미터의 값을 나타냅니다. 사용자 지정 파라미터는 'ParameterKey' 및 'ParameterValue' 대신 'Key' 및 'Value'를 사용하여 지정할 수도 있습니다. 스택 생성이 실패하면 롤백됩니다.

$p1 = New-Object -Type Amazon.CloudFormation.Model.Parameter $p1.ParameterKey = "PK1" $p1.ParameterValue = "PV1" $p2 = New-Object -Type Amazon.CloudFormation.Model.Parameter $p2.ParameterKey = "PK2" $p2.ParameterValue = "PV2" New-CFNStack -StackName "myStack" ` -TemplateBody "{TEMPLATE CONTENT HERE}" ` -Parameter @( $p1, $p2 ) ` -OnFailure "ROLLBACK"

예 3: 지정된 이름으로 새 스택을 생성합니다. 템플릿은 사용자 지정 파라미터를 사용하여 Amazon S3 URL에서 가져옵니다. 여기서, 'PK1'은 템플릿 콘텐츠에 선언된 파라미터의 이름을 나타내고, 'PV1'은 해당 파라미터의 값을 나타냅니다. 사용자 지정 파라미터는 'ParameterKey' 및 'ParameterValue' 대신 'Key' 및 'Value'를 사용하여 지정할 수도 있습니다. 스택 생성이 실패하면 롤백됩니다(-DisableRollback $false를 지정하는 것과 동일).

New-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }

예 4: 지정된 이름으로 새 스택을 생성합니다. 템플릿은 사용자 지정 파라미터를 사용하여 Amazon S3 URL에서 가져옵니다. 여기서, 'PK1'은 템플릿 콘텐츠에 선언된 파라미터의 이름을 나타내고, 'PV1'은 해당 파라미터의 값을 나타냅니다. 사용자 지정 파라미터는 'ParameterKey' 및 'ParameterValue' 대신 'Key' 및 'Value'를 사용하여 지정할 수도 있습니다. 스택 생성이 실패하면 롤백됩니다(-DisableRollback $false를 지정하는 것과 동일). 지정된 알림 AEN은 게시된 스택 관련 이벤트를 수신합니다.

New-CFNStack -StackName "myStack" ` -TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" } ` -NotificationARN @( "arn1", "arn2" )
  • API 세부 정보는 AWS Tools for PowerShell Cmdlet 참조CreateStack을 참조하세요.

또는 템플릿 파일의 AWS Systems Manager 위치를 지정할 수 있습니다.

AWS CLI

다음 create-stack 명령에서는 템플릿 URL에 대한 AWS Systems Manager 문서를 사용하여 이름이 myteststack인 스택을 생성 합니다.

aws cloudformation create-stack --stack-name myteststack \ --template-url "ssm-doc://arn:aws:ssm:us-east-1:123456789012:document/documentName"

출력:

{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896" }

변환이 포함된 스택 생성

deploy 명령을 사용하여 변환이 포함된 스택을 생성합니다.

변환이 포함된 템플릿에서 스택을 생성하려면 변경 세트를 사용해야 합니다. 변경 세트를 생성하여 시작하는 대신에 deploy 명령을 사용하여 이러한 단계를 단일 명령으로 결합합니다.

AWS CLI

다음 deploy 명령에서는 지정된 이름, 템플릿 및 입력 파라미터를 사용하여 스택을 생성 합니다.

aws cloudformation deploy --stack-name myteststack \ --template /path_to_template/my-template.json \ --parameter-overrides Key1=Value1 Key2=Value2

스택 삭제

delete-stack 명령을 사용하여 스택을 삭제합니다. 자세한 내용은 CloudFormation 콘솔에서 스택 삭제 단원을 참조하십시오.

CLI
AWS CLI

스택을 삭제하려면

다음 delete-stack 예제에서는 지정된 스택을 삭제합니다.

aws cloudformation delete-stack \ --stack-name my-stack

이 명령은 출력을 생성하지 않습니다.

  • API 세부 정보는 AWS CLI 명령 참조DeleteStack을 참조하세요.

PowerShell
PowerShell용 도구

예 1: 지정된 스택을 삭제합니다.

Remove-CFNStack -StackName "myStack"
  • API 세부 정보는 AWS Tools for PowerShell Cmdlet 참조DeleteStack을 참조하세요.

삭제에 실패하고 DELETE_FAILED 상태가 반환되는 경우 --deletion-mode 옵션을 사용하여 스택 강제 삭제를 선택할 수 있습니다. deletion-mode에서 다음 값을 사용할 수 있습니다.

  • STANDARD: 스택을 정상적으로 삭제합니다. 기본 삭제 모드입니다.

  • FORCE_DELETE_STACK: 스택을 삭제하고 삭제에 실패한 모든 리소스를 건너뜁니다.

AWS CLI

다음 delete-stack 명령은 deletion-mode 파라미터가 포함된 FORCE_DELETE_STACK 값을 사용하여 myteststack 스택을 강제 삭제합니다.

aws cloudformation delete-stack --stack-name myteststack \ --deletion-mode FORCE_DELETE_STACK

이 명령은 출력을 생성하지 않습니다.

FORCE_DELETE_STACK 사용 후 list-stack-resources 명령을 사용하여 스택 삭제 프로세스 중에 건너뛰었던 리소스를 나열할 수 있습니다. 유지된 리소스에는 DELETE_SKIPPED 상태가 표시됩니다. 자세한 내용은 스택 리소스 나열 단원을 참조하십시오.

스택 이벤트 설명

describe-stack-events 명령을 사용하여 스택 이벤트를 설명합니다. 자세한 내용은 스택 진행 상황 모니터링 단원을 참조하십시오.

CLI
AWS CLI

스택 이벤트를 설명하려면

다음 describe-stack-events 예제에서는 지정된 스택의 가장 최근 이벤트 2개를 표시합니다.

aws cloudformation describe-stack-events \ --stack-name my-stack \ --max-items 2 { "StackEvents": [ { "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "EventId": "4e1516d0-e4d6-xmpl-b94f-0a51958a168c", "StackName": "my-stack", "LogicalResourceId": "my-stack", "PhysicalResourceId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "ResourceType": "AWS::CloudFormation::Stack", "Timestamp": "2019-10-02T05:34:29.556Z", "ResourceStatus": "UPDATE_COMPLETE" }, { "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "EventId": "4dd3c810-e4d6-xmpl-bade-0aaf8b31ab7a", "StackName": "my-stack", "LogicalResourceId": "my-stack", "PhysicalResourceId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "ResourceType": "AWS::CloudFormation::Stack", "Timestamp": "2019-10-02T05:34:29.127Z", "ResourceStatus": "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS" } ], "NextToken": "eyJOZXh0VG9XMPLiOiBudWxsLCAiYm90b190cnVuY2F0ZV9hbW91bnQiOiAyfQ==" }
PowerShell
PowerShell용 도구

예 1: 지정된 스택에 대한 모든 스택 관련 이벤트를 반환합니다.

Get-CFNStackEvent -StackName "myStack"
  • API 세부 정보는 AWS Tools for PowerShell Cmdlet 참조DescribeStackEvents를 참조하세요.

스택 리소스 설명

CLI
AWS CLI

스택 리소스에 대한 정보를 가져오려면

다음 describe-stack-resource 예제에서는 지정된 스택의 이름이 MyFunction인 리소스에 대한 세부 정보를 표시합니다.

aws cloudformation describe-stack-resource \ --stack-name MyStack \ --logical-resource-id MyFunction

출력:

{ "StackResourceDetail": { "StackName": "MyStack", "StackId": "arn:aws:cloudformation:us-east-2:123456789012:stack/MyStack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "MyFunction", "PhysicalResourceId": "my-function-SEZV4XMPL4S5", "ResourceType": "AWS::Lambda::Function", "LastUpdatedTimestamp": "2019-10-02T05:34:27.989Z", "ResourceStatus": "UPDATE_COMPLETE", "Metadata": "{}", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } } }
PowerShell
PowerShell용 도구

예 1: 논리적 ID "MyDBInstance"로 지정된 스택과 연결된 템플릿에서 식별된 리소스의 설명을 반환합니다.

Get-CFNStackResource -StackName "myStack" -LogicalResourceId "MyDBInstance"
  • API 세부 정보는 AWS Tools for PowerShell Cmdlet 참조DescribeStackResource를 참조하세요.

스택 리소스 설명

CLI
AWS CLI

스택 리소스에 대한 정보를 가져오려면

다음 describe-stack-resources 예제에서는 지정된 스택의 리소스에 대한 세부 정보를 표시합니다.

aws cloudformation describe-stack-resources \ --stack-name my-stack

출력:

{ "StackResources": [ { "StackName": "my-stack", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "bucket", "PhysicalResourceId": "my-stack-bucket-1vc62xmplgguf", "ResourceType": "AWS::S3::Bucket", "Timestamp": "2019-10-02T04:34:11.345Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "StackName": "my-stack", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "function", "PhysicalResourceId": "my-function-SEZV4XMPL4S5", "ResourceType": "AWS::Lambda::Function", "Timestamp": "2019-10-02T05:34:27.989Z", "ResourceStatus": "UPDATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "StackName": "my-stack", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "LogicalResourceId": "functionRole", "PhysicalResourceId": "my-functionRole-HIZXMPLEOM9E", "ResourceType": "AWS::IAM::Role", "Timestamp": "2019-10-02T04:34:06.350Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } } ] }
PowerShell
PowerShell용 도구

예 1: 지정된 스택과 연결된 최대 100개의 리소스에 대한 AWS 리소스 설명을 반환합니다. 스택과 연결된 모든 리소스의 세부 정보를 얻으려면 결과의 수동 페이징도 지원하는 Get-CFNStackResourceSummary를 사용하세요.

Get-CFNStackResourceList -StackName "myStack"

예 2: 논리적 ID "Ec2Instance"로 지정된 스택과 연결된 템플릿에서 식별된 Amazon EC2 인스턴스의 설명을 반환합니다.

Get-CFNStackResourceList -StackName "myStack" -LogicalResourceId "Ec2Instance"

예 3: 인스턴스 ID "i-123456"으로 식별되는 Amazon EC2 인스턴스를 포함하는 스택과 연결된 최대 100개의 리소스에 대한 설명을 반환합니다. 스택과 연결된 모든 리소스의 세부 정보를 얻으려면 결과의 수동 페이징도 지원하는 Get-CFNStackResourceSummary를 사용하세요.

Get-CFNStackResourceList -PhysicalResourceId "i-123456"

예 4: 논리적 ID "Ec2Instance"로 지정된 스택의 템플릿에서 식별된 Amazon EC2 인스턴스의 설명을 반환합니다. 스택은 포함된 리소스의 물리적 리소스 ID를 사용하여 식별됩니다. 이 경우에는 인스턴스 ID가 "i-123456"인 Amazon EC2 인스턴스입니다. 템플릿 콘텐츠에 따라 다른 물리적 리소스를 사용하여 스택을 식별할 수도 있습니다(예: Amazon S3 버킷).

Get-CFNStackResourceList -PhysicalResourceId "i-123456" -LogicalResourceId "Ec2Instance"

스택 설명

CLI
AWS CLI

AWS CloudFormation 스택을 설명하려면

다음 describe-stacks 명령에서는 myteststack 스택에 대한 요약 정보를 보여줍니다.

aws cloudformation describe-stacks --stack-name myteststack

출력:

{ "Stacks": [ { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896", "Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "Tags": [], "Outputs": [ { "Description": "Name of S3 bucket to hold website content", "OutputKey": "BucketName", "OutputValue": "myteststack-s3bucket-jssofi1zie2w" } ], "StackStatusReason": null, "CreationTime": "2013-08-23T01:02:15.422Z", "Capabilities": [], "StackName": "myteststack", "StackStatus": "CREATE_COMPLETE", "DisableRollback": false } ] }

자세한 내용을 알아보려면 AWS CloudFormation 사용 설명서의 스택을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조DescribeStacks를 참조하세요.

Go
SDK for Go V2
참고

GitHub에 더 많은 내용이 있습니다. AWS코드 예시 리포지토리에서 전체 예시를 찾고 설정 및 실행하는 방법을 배워보세요.

// StackOutputs defines a map of outputs from a specific stack. type StackOutputs map[string]string type CloudFormationActions struct { CfnClient *cloudformation.Client } // GetOutputs gets the outputs from a CloudFormation stack and puts them into a structured format. func (actor CloudFormationActions) GetOutputs(ctx context.Context, stackName string) StackOutputs { output, err := actor.CfnClient.DescribeStacks(ctx, &cloudformation.DescribeStacksInput{ StackName: aws.String(stackName), }) if err != nil || len(output.Stacks) == 0 { log.Panicf("Couldn't find a CloudFormation stack named %v. Here's why: %v\n", stackName, err) } stackOutputs := StackOutputs{} for _, out := range output.Stacks[0].Outputs { stackOutputs[*out.OutputKey] = *out.OutputValue } return stackOutputs }
  • API 세부 정보는 AWS SDK for Go API 참조DescribeStacks를 참조하세요.

PowerShell
PowerShell용 도구

예 1: 모든 사용자 스택을 설명하는 스택 인스턴스 컬렉션을 반환합니다.

Get-CFNStack

예 2: 지정된 스택을 설명하는 스택 인스턴스를 반환합니다.

Get-CFNStack -StackName "myStack"
  • API 세부 정보는 AWS Tools for PowerShell Cmdlet 참조DescribeStacks를 참조하세요.

템플릿 가져오기

CLI
AWS CLI

AWS CloudFormation 스택의 템플릿 본문을 보려면

다음 get-template 명령에서는 myteststack 스택에 대한 템플릿을 보여줍니다.

aws cloudformation get-template --stack-name myteststack

출력:

{ "TemplateBody": { "AWSTemplateFormatVersion": "2010-09-09", "Outputs": { "BucketName": { "Description": "Name of S3 bucket to hold website content", "Value": { "Ref": "S3Bucket" } } }, "Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "Resources": { "S3Bucket": { "Type": "AWS::S3::Bucket", "Properties": { "AccessControl": "PublicRead" } } } } }
  • API 세부 정보는 AWS CLI 명령 참조GetTemplate을 참조하세요.

PowerShell
PowerShell용 도구

예 1: 지정된 스택과 연결된 템플릿을 반환합니다.

Get-CFNTemplate -StackName "myStack"
  • API 세부 정보는 AWS Tools for PowerShell Cmdlet 참조GetTemplate을 참조하세요.

스택 리소스 나열

CLI
AWS CLI

스택의 리소스를 나열하려면

다음 명령은 지정된 스택의 리소스 목록을 표시합니다.

aws cloudformation list-stack-resources \ --stack-name my-stack

출력:

{ "StackResourceSummaries": [ { "LogicalResourceId": "bucket", "PhysicalResourceId": "my-stack-bucket-1vc62xmplgguf", "ResourceType": "AWS::S3::Bucket", "LastUpdatedTimestamp": "2019-10-02T04:34:11.345Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "LogicalResourceId": "function", "PhysicalResourceId": "my-function-SEZV4XMPL4S5", "ResourceType": "AWS::Lambda::Function", "LastUpdatedTimestamp": "2019-10-02T05:34:27.989Z", "ResourceStatus": "UPDATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } }, { "LogicalResourceId": "functionRole", "PhysicalResourceId": "my-functionRole-HIZXMPLEOM9E", "ResourceType": "AWS::IAM::Role", "LastUpdatedTimestamp": "2019-10-02T04:34:06.350Z", "ResourceStatus": "CREATE_COMPLETE", "DriftInformation": { "StackResourceDriftStatus": "IN_SYNC" } } ] }
PowerShell
PowerShell용 도구

예 1: 지정된 스택과 연결된 모든 리소스에 대한 설명을 반환합니다.

Get-CFNStackResourceSummary -StackName "myStack"
  • API 세부 정보는 AWS Tools for PowerShell Cmdlet 참조ListStackResources를 참조하세요.

스택 나열

list-stacks 명령을 사용하여 스택을 나열합니다. 지정된 상태 코드가 있는 스택만 나열하려면 --stack-status-filter 옵션을 포함합니다. --stack-status-filter 옵션에 대해 하나 이상의 스택 상태 코드를 지정할 수 있습니다. 자세한 내용은 스택 상태 코드 단원을 참조하십시오.

CLI
AWS CLI

AWS CloudFormation 스택을 나열하려면

다음 list-stacks 명령에서는 상태가 CREATE_COMPLETE인 모든 스택에 대한 요약 내용을 보여줍니다.

aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE

출력:

[ { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896", "TemplateDescription": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "StackStatusReason": null, "CreationTime": "2013-08-26T03:27:10.190Z", "StackName": "myteststack", "StackStatus": "CREATE_COMPLETE" } ]
  • API 세부 정보는 AWS CLI 명령 참조ListStacks를 참조하세요.

PowerShell
PowerShell용 도구

예 1: 모든 스택에 대한 요약 정보를 반환합니다.

Get-CFNStackSummary

예 2: 현재 생성 중인 모든 스택에 대한 요약 정보를 반환합니다.

Get-CFNStackSummary -StackStatusFilter "CREATE_IN_PROGRESS"

예 3: 현재 생성 중이거나 업데이트 중인 모든 스택에 대한 요약 정보를 반환합니다.

Get-CFNStackSummary -StackStatusFilter @("CREATE_IN_PROGRESS", "UPDATE_IN_PROGRESS")
  • API 세부 정보는 AWS Tools for PowerShell Cmdlet 참조ListStacks를 참조하세요.

스택 업데이트

update-stack 명령을 사용하여 스택을 직업 업데이트합니다. 업데이트하려는 스택, 파라미터값 및 기능을 지정하고 업데이트된 템플릿을 사용하려는 경우 템플릿 이름을 지정합니다. 자세한 내용은 직접 스택 업데이트 단원을 참조하십시오.

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 스택에 스택 알림 주제 2개를 추가합니다.

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 스택 업데이트를 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조UpdateStack을 참조하세요.

PowerShell
PowerShell용 도구

예 1: 지정된 템플릿 및 사용자 지정 파라미터를 사용하여 'myStack' 스택을 업데이트합니다. 'PK1'은 템플릿에 선언된 파라미터의 이름을 나타내고 'PV1'은 해당 값을 나타냅니다. 사용자 지정 파라미터는 'ParameterKey' 및 'ParameterValue' 대신 'Key' 및 'Value'를 사용하여 지정할 수도 있습니다.

Update-CFNStack -StackName "myStack" ` -TemplateBody "{Template Content Here}" ` -Parameter @{ ParameterKey="PK1"; ParameterValue="PV1" }

예 2: 지정된 템플릿 및 사용자 지정 파라미터를 사용하여 'myStack' 스택을 업데이트합니다. 'PK1' 및 'PK2'는 템플릿에 선언된 파라미터의 이름을 나타내고, 'PV1' 및 'PV2'는 요청된 값을 나타냅니다. 사용자 지정 파라미터는 'ParameterKey' 및 'ParameterValue' 대신 'Key' 및 'Value'를 사용하여 지정할 수도 있습니다.

Update-CFNStack -StackName "myStack" ` -TemplateBody "{Template Content Here}" ` -Parameter @( @{ ParameterKey="PK1"; ParameterValue="PV1" }, @{ ParameterKey="PK2"; ParameterValue="PV2" } )

예 3: 지정된 템플릿 및 사용자 지정 파라미터를 사용하여 'myStack' 스택을 업데이트합니다. 'PK1'은 템플릿에 선언된 파라미터의 이름을 나타내고 'PV2'는 해당 값을 나타냅니다. 사용자 지정 파라미터는 'ParameterKey' 및 'ParameterValue' 대신 'Key' 및 'Value'를 사용하여 지정할 수도 있습니다.

Update-CFNStack -StackName "myStack" -TemplateBody "{Template Content Here}" -Parameters @{ ParameterKey="PK1"; ParameterValue="PV1" }

예 4: Amazon S3에서 가져온 지정된 템플릿 및 사용자 지정 파라미터를 사용하여 'myStack' 스택을 업데이트합니다. 'PK1' 및 'PK2'는 템플릿에 선언된 파라미터의 이름을 나타내고, 'PV1' 및 'PV2'는 요청된 값을 나타냅니다. 사용자 지정 파라미터는 'ParameterKey' 및 'ParameterValue' 대신 'Key' 및 'Value'를 사용하여 지정할 수도 있습니다.

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에서 가져온 지정된 템플릿 및 사용자 지정 파라미터를 사용하여 이 예제에서 IAM 리소스를 포함하는 것으로 가정되는 'myStack' 스택을 업데이트합니다. 'PK1' 및 'PK2'는 템플릿에 선언된 파라미터의 이름을 나타내고, 'PV1' 및 'PV2'는 요청된 값을 나타냅니다. 사용자 지정 파라미터는 'ParameterKey' 및 'ParameterValue' 대신 'Key' 및 'Value'를 사용하여 지정할 수도 있습니다. IAM 리소스가 포함된 스택에서는 -Capabilities "CAPABILITY_IAM" 파라미터를 지정해야 합니다. 그렇지 않으면 업데이트가 실패하고 '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 참조UpdateStack을 참조하세요.

참고

모든 알림을 제거하려면 --notification-arns 옵션에 대해 [] 기호를 지정합니다.

템플릿 검증

validate-template 명령을 사용하여 템플릿 파일의 구문 오류를 점검합니다.

확인 중에 CloudFormation에서는 먼저 템플릿이 유효한 JSON인지를 확인합니다. 유효한 JSON이 아니면 CloudFormation은 템플릿이 유효한 YAML인지를 확인합니다. 두 확인이 모두 실패한 경우 CloudFormation에서는 템플릿 확인 오류를 반환합니다.

CLI
AWS CLI

AWS CloudFormation 템플릿의 유효성을 확인하려면

다음 validate-template 명령은 sampletemplate.json 템플릿의 유효성을 확인합니다.

aws cloudformation validate-template --template-body file://sampletemplate.json

출력:

{ "Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket. You will be billed for the AWS resources used if you create a stack from this template.", "Parameters": [], "Capabilities": [] }

자세한 내용은 AWS CloudFormation 사용 설명서의 AWS CloudFormation 템플릿 사용을 참조하세요.

  • API 세부 정보는 AWS CLI 명령 참조ValidateTemplate을 참조하세요.

PowerShell
PowerShell용 도구

예 1: 지정된 템플릿 콘텐츠의 유효성을 확인합니다. 출력에는 템플릿의 기능, 설명 및 파라미터가 자세히 설명되어 있습니다.

Test-CFNTemplate -TemplateBody "{TEMPLATE CONTENT HERE}"

예 2: Amazon S3 URL을 통해 액세스한 지정된 템플릿의 유효성을 확인합니다. 출력에는 템플릿의 기능, 설명 및 파라미터가 자세히 설명되어 있습니다.

Test-CFNTemplate -TemplateURL https://s3.amazonaws.com/amzn-s3-demo-bucket/templatefile.template
  • API 세부 정보는 AWS Tools for PowerShell Cmdlet 참조ValidateTemplate을 참조하세요.

다음은 검증 오류가 발생하는 응답의 예입니다.

{ "ResponseMetadata": { "RequestId": "4ae33ec0-1988-11e3-818b-e15a6df955cd" }, "Errors": [ { "Message": "Template format error: JSON not well-formed. (line 11, column 8)", "Code": "ValidationError", "Type": "Sender" } ], "Capabilities": [], "Parameters": [] } A client error (ValidationError) occurred: Template format error: JSON not well-formed. (line 11, column 8)
참고

validate-template 명령은 템플릿의 구문만 점검하도록 설계되어 있습니다. 리소스에 대해 지정한 속성값이 해당 리소스에 유효한지 확인하지는 않습니다. 생성된 스택에 존재하게 될 리소스 수를 결정하지도 않습니다.

운영상 유효성을 점검하려면 스택을 만들어 보아야 합니다. AWS CloudFormation 스택에는 샌드박스나 테스트 영역이 없기 때문에 테스트 중 만든 리소스는 본인이 담당해야 합니다.

가용성 예제

필요한 예제를 찾을 수 없습니까? 이 페이지 하단의 피드백 제공 링크를 사용하여 새 예제를 요청합니다.