C#でもAWS CDKでSNSトピックを作成してみる
こちらの記事で、AWS CDKをTypeScriptを使って書く方法をご紹介しました。
今回は、同じものをC#で作ってみようとおもいます。
前提条件
公式サイトに前提条件が記載されています。.NETCoreの3.1以降が必要です。この記事ではWindows10、Visual Studio 2019で開発を行っています。
またAWS CDKの導入方法については前回の記事と同様ですので割愛します。
プロジェクト作成
プロジェクトフォルダを作成し、コマンドプロンプトでカレントをフォルダ内に移動させます。
以下のコマンドでプロジェクトを作成します。
cdk init app --language csharp
srcフォルダの中にslnファイルが作成されるので、Visual Studioで開きます。
リソースの定義
前回と同じように、SNSとSNSトピックを作成します。
TypeScript版では、以下のとおりでした。
import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as sns from 'aws-cdk-lib/aws-sns';
import * as sub from 'aws-cdk-lib/aws-sns-subscriptions';
export class CdkDemoStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const topic = new sns.Topic(this, 'topic-email', {
topicName: 'test-email-topic',
});
topic.addSubscription(new sub.EmailSubscription('******@gmail.com'));
}
}
C#版は以下のようになります。
using Amazon.CDK;
using Amazon.CDK.AWS.SNS;
using Amazon.CDK.AWS.SNS.Subscriptions;
using Constructs;
namespace CdkCsharp
{
public class CdkCsharpStack : Stack
{
internal CdkCsharpStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)
{
Topic topic = new Topic(this, "topic-email", new TopicProps {
TopicName = "test-email-topic"
});
topic.AddSubscription(new EmailSubscription("******@gmail.com"));
}
}
}
言語の記法の違いのみで、ほとんど同じだということがわかります。
デプロイ
Visual Studioでターミナルを表示させます。上部メニューの表示⇒ターミナルです。ここで以下のコマンドを実行します。
cdk deploy
注意点ですが、cdkコマンドはcdk.jsonが存在するパスで実行する必要があります。ターミナルを開いた時点ではsrcフォルダがカレントになっていると思いますので、プロジェクトのルートフォルダに移動します。
また、「このシステムではスクリプトの実行が無効になっているため、ファイル ***を読み込むことができません。」とエラーが発生する場合があります。その場合、ターミナルで以下のコマンドを実行して、非管理者でスクリプトを実行できるようにします。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
無事にデプロイができると、ターミナル上にStackのARNが表示されます。また、サブスクリプションに登録したメールアドレス宛てにメールが送信されます。
まとめ
使い慣れたVisual Studioを使ってC#でも簡単にAWS CDKが使えることがわかりました。
改めて、AWS CDKってとても便利ですね。