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
이 명령은 출력을 생성하지 않습니다.
-
API 세부 정보는 AWS CLI 명령 참조의 ContinueUpdateRollback
을 참조하세요.
-
- PowerShell
-
- PowerShell용 도구
-
예 1: 이름이 지정된 스택의 롤백을 계속합니다. 스택은 'UPDATE_ROLLBACK_FAILED' 상태여야 합니다. 계속된 롤백이 성공하면 스택은 'UPDATE_ROLLBACK_COMPLETE' 상태가 됩니다.
Resume-CFNUpdateRollback -StackName "myStack"
-
API 세부 정보는 AWS Tools for PowerShell Cmdlet 참조의 ContinueUpdateRollback을 참조하세요.
-
스택을 만듭니다
create-stack
명령을 사용하여 스택을 생성합니다. 스택 이름, 유효한 템플릿의 위치 및 입력 파라미터를 제공해야 합니다. 파라미터 키 이름은 대/소문자를 구분합니다. 파라미터 키 이름을 잘못 입력할 경우 CloudFormation에서는 스택을 생성하지 않고 템플릿에 해당 파라미터가 없다고 보고합니다.
기본적으로 describe-stacks
명령은 파라미터값을 반환합니다. 암호와 같은 민감한 파라미터값이 반환되지 않도록 하려면 TRUE
로 설정된 NoEcho
속성을 CloudFormation 템플릿에 포함합니다.
중요
NoEcho
속성을 사용해도 다음에 저장된 정보는 마스킹되지 않습니다.
-
Metadata
템플릿 섹션. CloudFormation은Metadata
섹션에 포함된 정보를 변환, 수정 또는 삭제하지 않습니다. 자세한 내용은 Metadata 단원을 참조하십시오. -
Outputs
템플릿 섹션. 자세한 내용은 Outputs 단원을 참조하십시오. -
리소스 정의의
Metadata
속성입니다. 자세한 내용은 Metadata 속성 단원을 참조하십시오.
이러한 메커니즘을 사용하여 암호나 보안 정보와 같은 중요한 정보를 포함하지 않는 것이 좋습니다.
중요
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-bodyfile://sampletemplate.json
--parametersParameterKey=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-overridesKey1=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-items2
{
"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=="
}
-
API 세부 정보는 AWS CLI 명령 참조의 DescribeStackEvents
를 참조하세요.
-
- 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-idMyFunction
출력:
{ "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" } } }
-
API 세부 정보는 AWS CLI 명령 참조의 DescribeStackResource
를 참조하세요.
-
- 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" } } ] }
-
API 세부 정보는 AWS CLI 명령 참조의 DescribeStackResources
를 참조하세요.
-
- 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"
-
API 세부 정보는 AWS Tools for PowerShell Cmdlet 참조의 DescribeStackResources를 참조하세요.
-
스택 설명
- 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" } } ] }
-
API 세부 정보는 AWS CLI 명령 참조의 ListStackResources
를 참조하세요.
-
- 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-urlhttps://s3.amazonaws.com/sample/updated.template
--parametersParameterKey=KeyPairName,ParameterValue=SampleKeyPair
ParameterKey=SubnetIDs,ParameterValue=SampleSubnetID1\\,SampleSubnetID2다음
update-stack
명령에서는mystack
스택의SubnetIDs
파라미터값만 업데이트합니다. 파라미터값을 지정하지 않으면 템플릿에 지정된 기본값이 사용됩니다.aws cloudformation update-stack --stack-name
mystack
--template-urlhttps://s3.amazonaws.com/sample/updated.template
--parametersParameterKey=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 스택에는 샌드박스나 테스트 영역이 없기 때문에 테스트 중 만든 리소스는 본인이 담당해야 합니다.
가용성 예제
필요한 예제를 찾을 수 없습니까? 이 페이지 하단의 피드백 제공 링크를 사용하여 새 예제를 요청합니다.