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

今回はプログラムから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を送ってみたい方の参考になれば幸いです。

コメント