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ってとても便利ですね。

コメントする

メールアドレスが公開されることはありません。