cdk deploy - AWS Cloud Development Kit (AWS CDK) v2

AWS CDK v2 개발자 안내서입니다. 구형 CDK v1은 2022년 6월 1일에 유지 보수에 들어갔고 2023년 6월 1일에 지원이 종료되었습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

cdk deploy

환경에 하나 이상의 AWS CDK 스택을 배포하십시오. AWS

배포 중에 CLI CDK는 콘솔에서 확인할 수 있는 것과 유사한 진행률 지표를 출력합니다 AWS CloudFormation .

AWS 환경이 부트스트랩되지 않은 경우 에셋이 없고 합성된 템플릿이 51,200바이트 미만인 스택만 성공적으로 배포됩니다.

사용량

$ cdk deploy <arguments> <options>

인수

CDK 스택 논리 ID

배포할 앱의 CDK 스택의 논리적 ID입니다.

타입: 문자열

필수 항목 여부: 아니요

옵션

모든 CDK CLI 명령에 사용할 수 있는 글로벌 옵션 목록은 을 참조하십시오. 글로벌 옵션

--all BOOLEAN

CDK 앱에 모든 스택을 배포하십시오.

기본값: false

--asset-parallelism BOOLEAN

자산을 병렬로 빌드하고 게시할지 여부를 지정합니다.

--asset-prebuild BOOLEAN

첫 번째 스택을 배포하기 전에 모든 자산을 빌드할지 여부를 지정합니다. 이 옵션은 빌드가 실패할 때 Docker 유용합니다.

기본값: true

--build-exclude, -E ARRAY

지정된 ID로 에셋을 다시 빌드하지 마십시오.

이 옵션은 단일 명령으로 여러 번 지정할 수 있습니다.

기본값: []

--change-set-name STRING

생성할 AWS CloudFormation 변경 세트의 이름.

이 옵션은 --method='direct'과 호환되지 않습니다.

--concurrency NUMBER

스택 간 종속성을 고려하면서 여러 스택을 병렬로 배포합니다. 이 옵션을 사용하면 배포 속도를 높일 수 있습니다. 여전히 속도 제한 AWS CloudFormation 및 기타 AWS 계정 속도 제한을 고려해야 합니다.

수행할 최대 동시 배포 수 (종속성 허용) 를 지정하려면 숫자를 제공하십시오.

기본값: 1

--exclusively, -e BOOLEAN

요청된 스택만 배포하고 종속성은 포함하지 마십시오.

--force, -f BOOLEAN

기존 스택을 업데이트하기 위해 배포하는 경우 CLI CDK는 배포된 스택의 템플릿 및 태그를 배포하려는 스택과 비교합니다. 변경 사항이 감지되지 않으면 CDK는 배포를 CLI 건너뛰게 됩니다.

변경 사항이 감지되지 않더라도 이 동작을 무시하고 스택을 항상 배포하려면 이 옵션을 사용하세요.

기본값: false

--help, -h BOOLEAN

명령에 대한 명령 참조 정보를 표시합니다. cdk deploy

--hotswap BOOLEAN

더 빠른 개발을 위한 핫스왑 배포. 이 옵션은 가능한 경우 더 빠른 핫스왑 배포를 시도합니다. 예를 들어 CDK 앱에서 Lambda 함수의 코드를 수정하는 경우 CDK는 배포를 수행하는 대신 서비스 API를 통해 리소스를 직접 업데이트합니다. CLI CloudFormation

CDK가 핫스왑을 지원하지 않는 변경을 CLI 감지하면 해당 변경 사항은 무시되고 메시지가 표시됩니다. 전체 CloudFormation 배포를 폴백으로 수행하려는 경우 대신 사용하십시오. --hotswap-fallback

CLICDK는 현재 AWS 자격 증명을 사용하여 API 호출을 수행합니다. @aws-cdk/core:newStyleStackSynthesis기능 플래그가 로 설정되어 있더라도 부트스트랩 스택의 역할을 맡지는 않습니다. true 이러한 역할에는 AWS 리소스를 사용하지 CloudFormation 않고 직접 업데이트하는 데 필요한 권한이 없습니다. 따라서 핫스왑 배포를 수행하는 스택과 동일한 AWS 계정 스택에 대한 자격 증명을 사용하고 리소스를 업데이트하는 데 필요한 IAM 권한이 있는지 확인하십시오.

현재 핫스왑은 다음 변경 사항에 대해 지원됩니다.

  • Lambda 함수의 코드 자산 (Docker이미지 및 인라인 코드 포함), 태그 변경, 구성 변경 (설명 및 환경 변수만 지원됨)

  • Lambda 버전 및 별칭 변경.

  • 상태 머신의 정의 변경. AWS Step Functions

  • Amazon ECS 서비스의 컨테이너 자산 변경.

  • Amazon S3 버킷 배포의 웹 사이트 자산 변경.

  • 프로젝트의 소스 및 환경 변경. AWS CodeBuild

  • AWS AppSync 리졸버 및 함수에 대한 VTL 매핑 템플릿 변경.

  • API의 스키마 변경. AWS AppSync GraphQL

특정 CloudFormation 내장 함수의 사용은 핫스왑 배포의 일부로 지원됩니다. 다음이 포함됩니다.

  • Ref

  • Fn::GetAtt— 부분적으로만 지원됩니다. 지원되는 리소스 및 속성은 이 구현을 참조하십시오.

  • Fn::ImportValue

  • Fn::Join

  • Fn::Select

  • Fn::Split

  • Fn::Sub

이 옵션은 중첩 스택과도 호환됩니다.

참고
  • 이 옵션은 배포 속도를 높이기 위해 의도적으로 CloudFormation 스택에 드리프트를 발생시킵니다. 따라서 개발 용도로만 사용하십시오. 프로덕션 배포에는 이 옵션을 사용하지 마십시오.

  • 이 옵션은 실험용으로 간주되며 향후 주요 변경 사항이 적용될 수 있습니다.

  • 특정 매개변수의 기본값은 핫스왑 매개변수와 다를 수 있습니다. 예를 들어, Amazon ECS 서비스의 최소 정상 비율은 현재 로 설정됩니다. 0 이런 일이 발생할 경우 소스를 적절히 검토하십시오.

기본값: false

--hotswap-fallback BOOLEAN

이 옵션은 다음과 비슷합니다--hotswap. 차이점은 전체 배포가 --hotswap-fallback 필요한 변경 사항이 감지되면 전체 CloudFormation 배포를 수행하도록 대체된다는 점입니다.

이 옵션에 대한 자세한 내용은 --hotswap을 참조하세요.

기본값: false

--ignore-no-stacks BOOLEAN

CDK 앱에 스택이 없더라도 배포를 수행하십시오.

이 옵션은 다음과 같은 시나리오에서 유용합니다. 앱이 여러 환경 (예: 및) 을 포함하고 있을 수 있습니다. dev prod 개발을 시작할 때 prod 앱에 리소스가 없거나 리소스가 주석 처리될 수 있습니다. 그러면 앱에 스택이 없다는 메시지와 함께 배포 오류가 발생합니다. 이 오류를 --ignore-no-stacks 우회하는 데 사용합니다.

기본값: false

--logs BOOLEAN

선택한 스택에 있는 모든 리소스의 모든 이벤트에 대한 표준 출력 (stdout) 에 Amazon CloudWatch log를 표시합니다.

이 옵션은 와만 호환됩니다. --watch

기본값: true

--method, -m STRING

배포를 수행하도록 메서드를 구성합니다.

  • change-set— 기본 방법. CLICDK는 배포할 CloudFormation 변경 내용이 포함된 변경 세트를 만든 다음 배포를 수행합니다.

  • direct— 변경 세트를 만들지 마십시오. 대신 변경 내용을 즉시 적용하십시오. 이 방법은 일반적으로 변경 세트를 만드는 것보다 빠르지만 진행 정보를 잃게 됩니다.

  • prepare-change-set— 변경 세트를 생성하되 배포는 수행하지 마십시오. 이는 변경 세트를 검사할 외부 도구가 있거나 변경 세트에 대한 승인 프로세스가 있는 경우에 유용합니다.

유효한 값: change-set, direct, prepare-change-set

기본값: change-set

--notification-arns ARRAY

스택 관련 CloudFormation 이벤트를 알리는 Amazon SNS 주제의 ARN입니다.

--outputs-file, -O STRING

배포의 스택 출력이 기록되는 경로.

배포 후 스택 출력은 지정된 출력 파일에 JSON 형식으로 기록됩니다.

프로젝트 cdk.json 파일이나 로컬 개발 시스템에서 이 옵션을 구성할 수 있습니다. ~/.cdk.json

{ "app": "npx ts-node bin/myproject.ts", // ... "outputsFile": "outputs.json" }

여러 스택이 배포되는 경우 스택 이름을 나타내는 키로 구성된 출력이 동일한 출력 파일에 기록됩니다.

--parameters ARRAY

배포 CloudFormation 중에 추가 파라미터를 전달하십시오.

이 옵션은 다음 형식의 배열을 허용합니다STACK:KEY=VALUE.

  • STACK— 파라미터를 연결할 스택의 이름.

  • KEY— 스택의 파라미터 이름.

  • VALUE— 배포 시 전달할 값입니다.

스택 이름을 제공하지 않거나 스택 이름으로 제공하는 경우 * 배포되는 모든 스택에 매개 변수가 적용됩니다. 스택에서 파라미터를 사용하지 않으면 배포가 실패합니다.

매개변수는 중첩된 스택으로 전파되지 않습니다. 매개변수를 중첩된 스택에 전달하려면 구문을 사용하십시오. NestedStack

기본값: {}

--previous-parameters BOOLEAN

기존 파라미터에 이전 값을 사용합니다.

이 옵션을 로 false 설정하면 모든 배포에서 모든 파라미터를 지정해야 합니다.

기본값: true

--progress STRING

CDK에서 배포 진행 상황을 CLI 표시하는 방법을 구성합니다.

  • bar— 스택 배포 이벤트를 현재 배포 중인 리소스에 대한 이벤트와 함께 진행률 표시줄로 표시합니다.

  • events— 모든 CloudFormation 이벤트를 포함한 전체 기록을 제공합니다.

프로젝트 cdk.json 파일이나 로컬 개발 시스템에서 이 옵션을 구성할 수도 있습니다. ~/.cdk.json

{ "progress": "events" }

유효한 값: bar, events

기본값: bar

--require-approval STRING

보안에 민감한 변경 사항에 수동 승인이 필요한 사항을 지정하세요.

  • any-change — 스택을 변경하려면 수동 승인이 필요합니다.

  • broadening— 변경 시 권한 확대 또는 보안 그룹 규칙이 포함되는 경우 수동 승인이 필요합니다.

  • never— 승인은 필요하지 않습니다.

유효한 값: any-change, broadening, never

기본값: broadening

--rollback BOOLEAN

배포 중에 리소스 생성 또는 업데이트에 실패하면 CDK가 CLI 반환되기 전에 배포가 안정적인 최신 상태로 롤백됩니다. 해당 시점까지 변경한 내용은 모두 취소됩니다. 생성된 리소스는 삭제되고 적용된 업데이트는 롤백됩니다.

이 동작을 false 비활성화하도록 지정하십시오. 리소스 생성 또는 업데이트에 실패하는 경우 CLI CDK는 해당 시점까지 변경한 내용을 그대로 두고 반환합니다. 이는 빠르게 반복해야 하는 개발 환경에서 유용할 수 있습니다.

--rollback=false 경우 --no-rollback 또는 -R 를 사용할 수 있습니다.

참고

경우에 false 따라 리소스 교체를 야기하는 배포는 항상 실패합니다. 리소스를 업데이트하거나 새 리소스를 생성하는 배포에만 이 옵션 값을 사용할 수 있습니다.

기본값: true

--toolkit-stack-name STRING

기존 CDK 툴킷 스택의 이름.

이 옵션은 레거시 합성을 사용하는 CDK 앱에만 사용됩니다.

--watch BOOLEAN

CDK 프로젝트 파일을 지속적으로 관찰하고 변경 사항이 감지되면 지정된 스택을 자동으로 배포합니다.

이 옵션은 기본적으로 함축되어 있습니다. --hotswap

이 옵션에는 해당하는 CDK CLI 명령이 있습니다. 자세한 정보는 cdk watch을 참조하세요.

예제

라는 이름의 스택을 배포합니다. MyStackName

$ cdk deploy MyStackName --app='node bin/main.js'

앱에 여러 스택을 배포하세요.

cdk list스택을 나열하는 데 사용:

$ cdk list CdkHelloWorldStack CdkStack2 CdkStack3

모든 스택을 배포하려면 다음 옵션을 사용하십시오. --all

$ cdk deploy --all

배포할 스택을 선택하려면 스택 이름을 인수로 제공하십시오.

$ cdk deploy CdkHelloWorldStack CdkStack3

파이프라인 스택 배포

스택 이름을 경로로 cdk list 표시하여 파이프라인 계층 구조에서의 위치를 표시하는 데 사용합니다.

$ cdk list PipelineStack PiplelineStack/Prod PipelineStack/Prod/MyService

--all옵션 또는 와일드카드를 사용하여 모든 * 스택을 배포하세요. 위에서 설명한 것과 같은 스택 * 계층이 --all 있고 최상위 레벨의 스택만 일치시키는 경우 계층 내 모든 스택을 일치시키려면 를 사용하십시오. **

이러한 패턴을 결합할 수 있습니다. 다음은 스테이지의 모든 스택을 배포합니다Prod.

$ cdk deploy PipelineStack/Prod/**

배포 시 파라미터 전달

CDK 스택에서 파라미터를 정의하세요. 다음은 Amazon SNS 주제에 맞는 파라미터를 TopicNameParam 생성하는 예제입니다.

new sns.Topic(this, 'TopicParameter', { topicName: new cdk.CfnParameter(this, 'TopicNameParam').value.toString() });

파라미터 값을 제공하려면 다음을 실행합니다. parameterized

$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterized"

--force옵션을 사용하여 매개변수 값을 재정의할 수 있습니다. 다음은 이전 배포의 주제 이름을 재정의하는 예제입니다.

$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterName" --force

배포 후 스택 출력을 파일에 기록합니다.

CDK 스택 파일에서 출력을 정의합니다. 다음은 함수 ARN에 대한 출력을 생성하는 예제입니다.

const fn = new lambda.Function(this, "fn", { handler: "index.handler", code: lambda.Code.fromInline(`exports.handler = \${handler.toString()}`), runtime: lambda.Runtime.NODEJS_LATEST }); new cdk.CfnOutput(this, 'FunctionArn', { value: fn.functionArn, });

스택을 배포하고 출력을 다음 위치에 기록합니다. outputs.json

$ cdk deploy --outputs-file outputs.json

다음은 배포 outputs.json 후의 예입니다.

{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" } }

이 예제에서 키는 CfnOutput 인스턴스의 논리적 ID에 FunctionArn 해당합니다.

다음은 여러 스택이 배포된 경우의 배포 outputs.json 후 예제입니다.

{ "MyStack": { "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK" }, "AnotherStack": { "VPCId": "vpc-z0mg270fee16693f" } }

배포 방법 수정

변경 세트를 사용하지 않고 더 빠르게 배포하려면 --method='direct' 다음을 사용하십시오.

$ cdk deploy --method='direct'

변경 세트를 만들되 배포하지는 않으려면 를 사용하십시오--method='prepare-change-set'. 기본적으로 이름이 지정된 변경 세트가 cdk-deploy-change-set 생성됩니다. 이 이름을 가진 이전 변경 세트가 있는 경우 해당 변경 세트를 덮어씁니다. 변경 내용이 발견되지 않는 경우 빈 변경 세트는 계속 생성됩니다.

변경 세트의 이름을 지정할 수도 있습니다. 다음은 그 예제입니다.

$ cdk deploy --method='prepare-change-set' --change-set-name='MyChangeSetName'