C AWS CDK #에서 작업하기 - AWS Cloud Development Kit (AWS CDK) v2

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

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

C AWS CDK #에서 작업하기

. NET에서 완전히 지원되는 클라이언트 AWS CDK 언어이며 안정적인 것으로 간주됩니다. C #이 기본입니다. NET예제와 지원을 제공하는 언어. 다른 언어로 AWS CDK 애플리케이션을 작성하도록 선택할 수 있습니다. NETVisual AWS Basic 또는 F #과 같은 언어는 있지만 이러한 언어를 와 함께 사용하는 것은 제한적으로 지원됩니다. CDK

Visual Studio, Visual Studio Code, dotnet 명령, NuGet 패키지 관리자 등의 친숙한 도구를 사용하여 C #으로 AWS CDK 응용 프로그램을 개발할 수 있습니다. AWS 구성 라이브러리를 구성하는 모듈은 nuget.org를 통해 배포됩니다.

C #으로 AWS CDK 앱을 개발하려면 Windows용 Visual Studio 2019 (모든 에디션) 를 사용하는 것이 좋습니다.

C# 시작하기

를 사용하려면 AWS 계정과 자격 증명이 있어야 AWS CDK하며 Node.js 및 AWS CDK 툴킷이 설치되어 있어야 합니다. 시작하기 AWS CDK을 참조하세요.

C# AWS CDK 응용 프로그램에는 다음이 필요합니다. NETCore v3.1 이상은 여기에서 사용할 수 있습니다.

그. NET툴체인에는 빌드 dotnet 및 실행을 위한 명령줄 도구가 포함되어 있습니다. NET애플리케이션 및 패키지 관리. NuGet 주로 Visual Studio에서 작업하는 경우에도 이 명령은 배치 작업과 AWS 구성 라이브러리 패키지 설치에 유용할 수 있습니다.

프로젝트 생성

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 구성 라이브러리 모듈 관리

The. NET생태계는 NuGet 패키지 관리자를 사용합니다. 핵심 클래스와 모든 안정적인 서비스 구조를 포함하는 기본 CDK 패키지는 입니다Amazon.CDK.Lib. 새로운 기능이 활발히 개발 중인 실험용 모듈의 이름은 다음과 같습니다Amazon.CDK.AWS.SERVICE-NAME.Alpha. 여기서 서비스 이름은 AWS or Amazon 접두사가 없는 짧은 이름입니다. 예를 들어, AWS IoT 모듈의 NuGet 패키지 이름은 입니다Amazon.CDK.AWS.IoT.Alpha. 원하는 패키지를 찾을 수 없는 경우 NuGet.org를 검색하십시오.

참고

그. NETCDKAPI레퍼런스 에디션에는 패키지 이름도 표시됩니다.

일부 서비스의 AWS 구성 라이브러리 지원은 둘 이상의 모듈에서 제공됩니다. 예를 들어, 라는 이름의 Amazon.CDK.AWS.IoT.Actions.Alpha 두 번째 AWS IoT 모듈이 있습니다.

대부분의 AWS CDK 앱에 필요한 AWS CDK의 기본 모듈은 C# 코드로 다음과 같이 Amazon.CDK 가져옵니다. AWS 구성 라이브러리의 다양한 서비스에 대한 모듈은 아래에 Amazon.CDK.AWS 있습니다. 예를 들어, Amazon S3 모듈의 네임스페이스는 입니다. Amazon.CDK.AWS.S3

CDK핵심 구조 및 각 C# 소스 파일에서 사용하는 각 AWS 서비스에 대해 C# using 지시문을 작성하는 것이 좋습니다. 이름 충돌을 해결하려면 네임스페이스나 형식에 별칭을 사용하는 것이 편리할 수 있습니다. 명령문 없이도 언제든지 형식의 정규화된 이름 (네임스페이스 포함) 을 사용할 수 있습니다. using

에서 종속성 관리 C#

C# AWS CDK 앱에서는 를 사용하여 종속성을 관리합니다. NuGet NuGet 에는 4개의 표준 인터페이스가 있으며 대부분 동일합니다. 필요와 작업 스타일에 맞는 것을 사용하세요. Paket과 같은 호환 가능한 도구를 MyGet사용하거나 .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>

비주얼 스튜디오 NuGet GUI

Visual Studio의 NuGet 도구는 도구 > NuGet 패키지 관리자 > 솔루션용 NuGet 패키지 관리에서 액세스할 수 있습니다. 찾아보기 탭을 사용하여 설치하려는 AWS 구성 라이브러리 패키지를 찾을 수 있습니다. 모듈의 프리릴리즈 버전을 포함하여 원하는 버전을 선택하고 열려 있는 모든 프로젝트에 추가할 수 있습니다.

참고

“실험용”으로 간주되는 모든 AWS Construct Library 모듈 (참조AWS CDK 버전 관리) 은 에서 NuGet 프리릴리즈로 플래그가 지정되며 이름 접미사가 붙습니다. alpha

NuGet package manager showing Amazon CDKAWS alpha packages for various services.

업데이트 페이지에서 새 버전의 패키지를 설치하세요.

NuGet 콘솔

NuGet 콘솔은 Visual Studio 프로젝트의 컨텍스트에서 NuGet 작동하는 PowerShell 기반 인터페이스입니다. Visual Studio에서 도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔을 선택하여 열 수 있습니다. 이 도구를 사용하는 방법에 대한 자세한 내용은 Visual Studio의 패키지 관리자 콘솔을 사용하여 패키지 설치 및 관리를 참조하십시오.

dotnet명령:

dotnet 명령은 Visual Studio C# 프로젝트 작업을 위한 기본 명령줄 도구입니다. 모든 Windows 명령 프롬프트에서 이 명령을 호출할 수 있습니다. 다양한 기능 중에서 Visual Studio NuGet 프로젝트에 종속성을 추가할 dotnet 수 있습니다.

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 -v VERSION-NUMBER

특정 버전의 패키지를 설치하려면 -v 플래그와 원하는 버전을 포함해야 합니다.

패키지를 업데이트하려면 패키지를 설치할 때 사용한 것과 동일한 dotnet add 명령을 실행합니다. 실험용 모듈의 경우에도 명시적인 버전 번호를 지정해야 합니다.

dotnet명령어를 사용한 패키지 관리에 대한 자세한 내용은 CLIdotnet을 사용한 패키지 설치 및 관리를 참조하십시오.

명령어 nuget

nuget명령줄 도구는 NuGet 패키지를 설치하고 업데이트할 수 있습니다. 하지만 Visual Studio 프로젝트를 프로젝트 설정 방식과 cdk init 다르게 설정해야 합니다. (기술적 세부 정보: Packages.config 프로젝트와 함께 nuget 작동하면서 새로운 스타일의 PackageReference 프로젝트를 cdk init 만듭니다.)

에서 만든 AWS CDK 프로젝트에는 이 nuget 도구를 사용하지 않는 것이 좋습니다. cdk init 다른 유형의 프로젝트를 사용 중인데 nuget 사용하려는 경우 NuGet CLI참조를 참조하십시오.

AWS CDK C #의 관용구

소품

모든 AWS Construct Library 클래스는 구문이 정의되는 범위 (구성 트리의 부모), id, props라는 세 가지 인수를 사용하여 인스턴스화됩니다. props는 구문이 생성하는 리소스를 구성하는 데 사용하는 키/값 쌍의 번들입니다. 다른 클래스와 메서드에서도 인수에 “속성 번들” 패턴을 사용합니다.

C #에서 props는 props 형식을 사용하여 표현됩니다. 관용적인 C# 방식으로 객체 이니셜라이저를 사용하여 다양한 속성을 설정할 수 있습니다. 여기서는 구문을 사용하여 Amazon S3 버킷을 Bucket 생성합니다. 해당 props 유형은 입니다BucketProps.

var bucket = new Bucket(this, "MyBucket", new BucketProps { Versioned = true });
작은 정보

패키지를 프로젝트에 추가하면 Amazon.JSII.Analyzers Visual Studio 내의 소품 정의에서 필수 값을 확인할 수 있습니다.

클래스를 확장하거나 메서드를 재정의할 때 부모 클래스에서는 이해할 수 없는 추가 소품을 원하는 용도로 사용할 수 있습니다. 이렇게 하려면 적절한 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, "MyBucket", new MimeBucketProps { Versioned = true, MimeType = "image/jpeg" });

부모 클래스의 이니셜라이저나 오버라이드된 메서드를 호출할 때는 일반적으로 수신한 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) 파일이 포함된 프로젝트 디렉터리의 디렉터리입니다.