Go言語でAmazon SNSを使ってSMSを送ってみた

以前、Amazon SNSコンソール上からSMSを送信する手順を記事にしました。

あわせて読みたい
Amazon SNSでSMSを送ってみた 何らかの通知をSMSで送りたいと思ったことはありませんか。 Amazon Simple Notification Service(SNS)は可用性が高く耐久性に優れたセキュアな完全マネージド型のpub/su...

今回はプログラムからSMSを送信する手順を記事にしたいと思います。
使用する言語は「Go言語」です

目次

はじめに

プログラムからAWSの機能を使う場合、各言語に対応したSDKが必要になります。
Go言語の場合は「AWS SDK FOR GO V2」のページが参考になるかと思います。

あわせて読みたい

導入方法は割愛しますが、Go言語の場合はお馴染みのgo getでいけますから比較的容易だと思います。

サンプルプログラム

上記ページに載っているサンプルプログラムはIAMユーザーの認証情報をconfigファイルから取得しています。
しかし、プログラムを動かすユーザーによってはconfigファイルが存在しない場合があります。
そういった場合にプログラムで認証情報を設定する必要があります。

以下の方法でいけるかと思います。

package GoNotify

import (
	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/credentials"
	"github.com/aws/aws-sdk-go/aws/session"
	"github.com/aws/aws-sdk-go/service/sns"
)

func SmsNotify(clientKey string, clientSecret string, clientRegion string, topic string, message string) {
	snsCredential := credentials.NewStaticCredentials(clientKey, clientSecret, "")
	snsSession, err := session.NewSession(&aws.Config{
		Credentials: snsCredential,
		Region:      aws.String(clientRegion),
	})

	if err != nil {
		return
	}

	snsClient := sns.New(snsSession)

	publishInput := &sns.PublishInput{}
	publishInput.SetMessage(message)
	publishInput.SetTopicArn(topic)

	snsClient.Publish(publishInput)
}

メインプロセスでこのパッケージをimportして、SmsNotifyメソッドを呼べばSMSを送信することができます。
引数はIAMユーザーアクセスキー、IAMユーザーシークレット、リージョン、トピックARN、送信したいメッセージになります。
(全てstring)

送信先などは予め前述の記事を参考にしてSNSコンソールから設定しておいてください。
また、SMS送信に使うIAMユーザーのアクセスキーも作成しておいてください。

送信できなかった場合でも特にこれといった処理はしていません。
Publishメソッドの返り値がメッセージIDとerrorなので必要でしたらそちらをハンドリングしてください。


まとめ

非常に簡単に送れますね。
IAMユーザーの認証情報をソースコードに記載してGithubで公開したりすることのないように気をつけたいところです。
私は.envに記述するようにしています。

Go言語でSMSを送ってみたい方の参考になれば幸いです。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次