v AWS CDK 2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔으며 2023년 6월 1일에 지원이 종료되었습니다.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
.NET은에 대해 완전히 지원되는 클라이언트 언어 AWS CDK 이며 안정적인 것으로 간주됩니다. C#은 예와 지원을 제공하는 기본 .NET 언어입니다. Visual Basic 또는 F#과 같은 다른 .NET 언어로 AWS CDK 애플리케이션을 작성하도록 선택할 수 있지만 CDK에서 이러한 언어를 사용하는 데 대한 제한된 지원을 AWS 제공합니다.
Visual Studio, Visual Studio Code, dotnet
명령, NuGet 패키지 관리자 등 익숙한 도구를 사용하여 C#에서 AWS CDK 애플리케이션을 개발할 수 있습니다. AWS Construct Library를 구성하는 모듈은 nuget.org
Windows에서 Visual Studio 2019
C# 시작하기
를 사용하려면 AWS 계정과 보안 인증 정보가 있어야 하며 Node.js와 AWS CDK 도구 키트를 설치해야 AWS CDK합니다. 시작하기 AWS CDK을 참조하세요.
C# AWS CDK applications에는 여기에서
.NET 도구 체인에는 .NET 애플리케이션을 빌드 및 실행하고 NuGet 패키지를 관리하기 위한 명령줄 도구인 dotnet
이 포함되어 있습니다. 주로 Visual Studio에서 작업하더라도이 명령은 배치 작업 및 AWS Construct Library 패키지 설치에 유용할 수 있습니다.
프로젝트 생성
빈 디렉터리cdk init
에서 호출하여 새 AWS CDK 프로젝트를 생성합니다. --language
옵션을 사용하고 csharp
를 지정합니다.
mkdir my-project cd my-project cdk init app --language csharp
cdk init
는 프로젝트 폴더의 이름을 사용하여 클래스, 하위 폴더 및 파일을 포함한 프로젝트의 다양한 요소의 이름을 지정합니다. 폴더 이름의 하이픈은 밑줄로 변환됩니다. 하지만 이름은 C# 식별자의 형식을 따라야 합니다. 예를 들어, 숫자로 시작하거나 공백을 포함해서는 안 됩니다.
결과 프로젝트에는 Amazon.CDK.Lib
NuGet 패키지에 대한 참조가 포함됩니다. NuGet에서 해당 종속 항목을 자동으로 설치합니다.
AWS Construct Library 모듈 관리
.NET 에코시스템은 NuGet 패키지 관리자를 사용합니다. 코어 클래스와 모든 안정된 서비스 구문이 포함된 기본 CDK 패키지는 Amazon.CDK.Lib
입니다. 새 기능이 활성 개발 중인 실험 모듈은와 같이 이름이 지정되며Amazon.CDK.AWS.
, 여기서 서비스 이름은 AWS 또는 Amazon 접두사가 없는 짧은 이름입니다. 예를 들어 AWS IoT 모듈의 NuGet 패키지 이름은 입니다SERVICE-NAME
.AlphaAmazon.CDK.AWS.IoT.Alpha
. 원하는 패키지를 찾을 수 없는 경우 Nuget.org를 검색
참고
CDK API 참조의 .NET 에디션에는 패키지 이름도 표시됩니다.
일부 서비스의 AWS Construct Library 지원은 둘 이상의 모듈에 있습니다. 예를 들어 에는 라는 두 번째 모듈이 AWS IoT 있습니다Amazon.CDK.AWS.IoT.Actions.Alpha
.
대부분의 AWS CDK 앱에서 필요한 AWS CDK의 기본 모듈은 C# 코드에서 로 가져옵니다Amazon.CDK
. AWS Construct Library의 다양한 서비스에 대한 모듈은 아래에 있습니다Amazon.CDK.AWS
. 예를 들어 Amazon S3 모듈의 네임스페이스는 Amazon.CDK.AWS.S3
입니다.
CDK 코어 구성 및 각 C# 소스 파일에서 사용하는 각 AWS 서비스에 대해 C# using
지시문을 작성하는 것이 좋습니다. 이름 충돌을 해결하는 데 도움이 되도록 네임스페이스 또는 유형에 별칭을 사용하는 것이 편리할 수 있습니다. using
문 없이 항상 형식의 정규화된 이름(네임스페이스 포함)을 사용할 수 있습니다.
C#에서 종속성 관리
C# AWS CDK apps에서는 NuGet을 사용하여 종속성을 관리합니다. NuGet에는 4개의 표준 인터페이스가 있으며 대부분 동등합니다. 요구 사항과 작업 스타일에 맞는 를 사용합니다. 또한 Paket.csproj
파일을 직접 편집할 수도 있습니다.
NuGet에서는 종속성에 대한 버전 범위를 지정할 수 없습니다. 모든 종속성은 특정 버전에 고정됩니다.
종속성을 업데이트한 후 Visual Studio는 NuGet을 사용하여 다음에 빌드할 때 각 패키지의 지정된 버전을 검색합니다. Visual Studio를 사용하지 않는 경우 dotnet restore 명령을 사용하여 종속성을 업데이트합니다.
직접 프로젝트 파일 편집
프로젝트 .csproj
파일에는 종속성을 <PackageReference
요소로 나열하는 <ItemGroup>
컨테이너가 포함되어 있습니다.
<ItemGroup>
<PackageReference Include="Amazon.CDK.Lib" Version="2.14.0" />
<PackageReference Include="Constructs" Version="%constructs-version%" />
</ItemGroup>
Visual Studio NuGet GUI
Visual Studio의 NuGet 도구는 도구 > NuGet Package Manager > NuGet Packages for Solution 관리에서 액세스할 수 있습니다. 찾아보기 탭을 사용하여 설치하려는 AWS Construct Library 패키지를 찾습니다. 모듈의 사전 릴리스 버전을 포함하여 원하는 버전을 선택하고 열려 있는 프로젝트에 추가할 수 있습니다.
참고
"실험"으로 간주되는 모든 AWS Construct Library 모듈( 참조AWS CDK 버전 관리)은 NuGet에서 사전 릴리스로 플래그가 지정되고 alpha
이름 접미사가 있습니다.

업데이트 페이지에서 패키지의 새 버전을 설치합니다.
NuGet 콘솔
NuGet 콘솔은 Visual Studio 프로젝트의 컨텍스트에서 작동하는 NuGet에 대한 PowerShell 기반 인터페이스입니다. 도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔을 선택하여 Visual Studio에서 열 수 있습니다. 이 도구 사용에 대한 자세한 내용은 Visual Studio의 Package Manager 콘솔을 사용하여 패키지 설치 및 관리
dotnet
명령
dotnet
명령은 Visual Studio C# 프로젝트 작업을 위한 기본 명령줄 도구입니다. Windows 명령 프롬프트에서 간접적으로 호출할 수 있습니다. 여러 기능 중에서 dotnet
은 Visual Studio 프로젝트에 NuGet 종속성을 추가할 수 있습니다.
Visual Studio 프로젝트(.csproj
) 파일과 동일한 디렉터리에 있다고 가정하면 다음과 같은 명령을 실행하여 패키지를 설치합니다. 프로젝트를 생성할 때 기본 CDK 라이브러리가 포함되므로 실험 모듈만 명시적으로 설치하면 됩니다. 실험 모듈에서는 명시적 버전 번호를 지정해야 합니다.
dotnet add package Amazon.CDK.AWS.IoT.Alpha -v
VERSION-NUMBER
다른 디렉터리에서 명령을 실행할 수 있습니다. 이렇게 하려면 add
키워드 뒤에 프로젝트 파일의 경로 또는 프로젝트 파일이 포함된 디렉터리의 경로를 포함합니다. 다음 예에서는 AWS CDK 프로젝트의 기본 디렉터리에 있다고 가정합니다.
dotnet add src/
PROJECT-DIR
package Amazon.CDK.AWS.IoT.Alpha -vVERSION-NUMBER
패키지의 특정 버전을 설치하려면 -v
플래그와 원하는 버전을 포함합니다.
패키지를 업데이트하려면 패키지를 설치하는 데 사용한 것과 동일한 dotnet add
명령을 실행합니다. 실험 모듈의 경우 다시 명시적 버전 번호를 지정해야 합니다.
dotnet
명령을 사용하여 패키지를 관리하는 방법에 대한 자세한 내용은 dotnet CLI를 사용하여 NuGet 패키지 설치 및 관리
nuget
명령
nuget
명령줄 도구는 NuGet 패키지를 설치하고 업데이트할 수 있습니다. 하지만 cdk init
에서 프로젝트를 설정하는 방식과는 다르게 Visual Studio 프로젝트를 설정해야 합니다. (기술적 세부 사항: nuget
은 Packages.config
프로젝트에서 작동하는 반면, cdk init
는 새로운 스타일의 PackageReference
프로젝트를 생성합니다.)
에서 생성한 AWS CDK 프로젝트에서는 nuget
도구를 사용하지 않는 것이 좋습니다cdk init
. 다른 유형의 프로젝트를 사용 중이고 nuget
을 사용하려는 경우 NuGet CLI 참조
AWS CDK C#의 관용어
Props
모든 AWS Construct Library 클래스는 구문이 정의되는 범위(건설 트리의 상위), 구문이 생성하는 리소스를 구성하는 데 사용하는 키/값 페어 번들인 id 및 props의 세 가지 인수를 사용하여 인스턴스화됩니다. 다른 클래스 및 메서드도 인수에 ‘속성 번들‘ 패턴을 사용합니다.
C#에서 props는 props 유형을 사용하여 표현됩니다. 색다른 C# 방식으로 객체 이니셜라이저를 사용하여 다양한 속성을 설정할 수 있습니다. 여기서는 Bucket
구문을 사용하여 Amazon S3 버킷을 생성합니다. 해당하는 props 유형은 BucketProps
입니다.
var bucket = new Bucket(this, "amzn-s3-demo-bucket", new BucketProps {
Versioned = true
});
작은 정보
프로젝트에 Amazon.JSII.Analyzers
패키지를 추가하여 Visual Studio 내에서 props 정의를 필수 값으로 확인합니다.
클래스를 확장하거나 메서드를 재정의할 때 부모 클래스에서 이해하지 못하는 추가 props를 자신의 용도로 수락할 수 있습니다. 이렇게 하려면 적절한 props 유형을 하위 클래스로 분류하고 새 속성을 추가합니다.
// extend BucketProps for use with MimeBucket
class MimeBucketProps : BucketProps {
public string MimeType { get; set; }
}
// hypothetical bucket that enforces MIME type of objects inside it
class MimeBucket : Bucket {
public MimeBucket( readonly Construct scope, readonly string id, readonly MimeBucketProps props=null) : base(scope, id, props) {
// ...
}
}
// instantiate our MimeBucket class
var bucket = new MimeBucket(this, "amzn-s3-demo-bucket", new MimeBucketProps {
Versioned = true,
MimeType = "image/jpeg"
});
부모 클래스의 이니셜라이저 또는 재정의된 메서드를 직접적으로 호출할 때 일반적으로 받은 props를 전달할 수 있습니다. 새 유형은 부모 유형과 호환되며 추가한 추가 props는 무시됩니다.
의 향후 릴리스는 사용자 고유의 속성에 사용한 이름과 함께 새 속성을 AWS CDK 추가할 수 있습니다. 이렇게 해도 속성이 ‘체인 위’로 전달되지 않으므로 부모 클래스나 재정의된 메서드는 기본값을 사용하기만 하면 되므로 구문 또는 메서드를 사용하는 데 있어 기술적 문제가 발생하지 않지만 구문의 사용자에게 혼동을 일으킬 수 있습니다. 이러한 잠재적인 문제를 피하려면 속성의 이름을 지정하여 구문에 명확하게 속하도록 해야 합니다. 새 속성이 많은 경우 이름을 적절하게 지정한 클래스로 번들링하고 단일 속성으로 전달합니다.
일반 구조
일부 APIs에서는 JavaScript 배열 또는 입력되지 않은 객체를 메서드에 대한 입력으로 AWS CDK 사용합니다. (예: AWS CodeBuild의 BuildSpec.fromObject()
메서드 참조) C#에서 이러한 객체는 System.Collections.Generic.Dictionary<String, Object>
로 표현됩니다. 값이 모두 문자열인 경우 Dictionary<String, String>
를 사용할 수 있습니다. JavaScript 배열은 C#에서 object[]
또는 string[]
배열 유형으로 표시됩니다.
작은 정보
이러한 특정 사전 유형을 더 쉽게 사용할 수 있도록 짧은 별칭을 정의할 수 있습니다.
using StringDict = System.Collections.Generic.Dictionary<string, string>;
using ObjectDict = System.Collections.Generic.Dictionary<string, object>;
누락된 값
C#에서 props와 같은 AWS CDK 객체의 누락된 값은 로 표시됩니다null
. null 조건부 멤버 액세스 연산자 ?.
와 null 코어레싱 연산자 ??
는 이러한 값을 사용하기에 편리합니다.
// mimeType is null if props is null or if props.MimeType is null
string mimeType = props?.MimeType;
// mimeType defaults to text/plain. either props or props.MimeType can be null
string MimeType = props?.MimeType ?? "text/plain";
CDK 애플리케이션 빌드 및 실행
는 앱을 실행하기 전에 AWS CDK 자동으로 컴파일합니다. 하지만 오류를 확인하고 테스트를 실행하기 위해 앱을 수동으로 빌드하는 것이 유용할 수 있습니다. Visual Studio에서 F6을 누르거나 명령줄에서 dotnet build
src
를 실행하여 이 작업을 수행할 수 있습니다. 여기서 src
는 Visual Studio 솔루션(.sln
) 파일이 포함된 프로젝트 디렉터리의 디렉터리입니다.