概要
CDKを使ってAWS環境を作成するときの方法についてまとめていこうと思います。
今回は前回作成したCDKの定義にSNSの定義を追加してみました。
準備
-
準備部分は前回等を参照してください。
-
メールアドレス
を変更する場合はパラメータストアから値を取得しなおすためcdk.context.json
を一度削除してください。
コンパイルの準備
- ライブラリインストール後にプロジェクトを作成したディレクトリに移動して以下のコマンドを実行します。windowsの場合はライブラリのインストール時には停止する必要があるので注意を
npm run watch
各モジュールの説明
- モジュールはgithubで公開しています。今回追加した部分のみ追記します。
- /rds-s3
-
SNSの設定を追加しています。
-
./bin/rds-s3.ts
の方で以下のように設定することで複数のソースの定義を使えるようにしています。今回追加部分のみ抜粋しています。import { CdkSnsStack } from '../lib/cdk-sns-stack'; new CdkSnsStack(app,'CdkSnsStack',{ env: { region: 'ap-northeast-1', account: env.AWS_ACCOUNT, }});
-
デプロイするときはStack名を指定して実施します。ワイルドカードの指定も可能です。
-
cdk deploy *
またはcdk deploy CdkSnsStack
の用に指定します。
-
-
CDKの定義
- SNS
-
サブスクリプション用のメールアドレスをパラメータストアから取得するようにしています。
-
必要に応じて外部のファイルからメールアドレスを複数取得する方法にするといいかもしれません。
-
サブスクリプションは他にも選択できるので必要に応じて変えてみるのもよさそうです。
const topic = new sns.Topic(this, 'Topic', { displayName: 'Customer subscription topic', topicName:'cdk-sns-topic' }); const subscriptionMail=ssm.StringParameter.valueFromLookup(this,'/sns/subscriptionMail'); topic.addSubscription(new subscriptions.EmailSubscription(subscriptionMail)); }
-
デプロイ後に登録したメールアドレスに確認用のメールが届くのでサブスクリプションを有効にするのを忘れずに。
-
SNSの送信
作成したSNSの使用コード例です
- pythonで実装しています。
- プログラム内で例えば処理件数などを通知したいときに手軽に実装できます。
import boto3
TOPIC_ARN = u'arn:aws:sns:ap-northeast-1:238836858026:cdk-sns-topic'
msg = 'テストメッセージ'
subject = u'テストタイトル'
client = boto3.client('sns')
request = {
'TopicArn': TOPIC_ARN,
'Message': msg,
'Subject': subject
}
response = client.publish(**request)
response['ResponseMetadata']['HTTPStatusCode']