AWSからSMS(ショートメール)を送信する

AWSからSMS送信

SMS(ショートメール)は電話番号を宛先として短い文章を送信できる仕組みです。最近では、本人確認のためSMS(ショートメール)を使った二段階認証を用いたシステムも増えてきています。AWSでは「Amazon Simple Notification Service」というサービスが提供されていて誰でも簡単にSMS送信を試すことができます。下記はNode.jsを使ったSMS送信例です。

const AWS = require('aws-sdk');

exports.handler = async (event) => {
    let sns1 = new AWS.SNS({region : "ap-northeast-1"})
    return await sns1.publish(event).promise()
}

let aTest = exports.handler({
    Message : "Mjeld Technologies \n認証コード: xxx1",
    PhoneNumber : "+81電話番号",
    MessageAttributes : {
        'AWS.SNS.SMS.SenderID': {
        'DataType': 'String',
        'StringValue': 'MJELD'
        }
    }
})
Promise.all([aTest]).then((athreadList) => {
    athreadList.forEach(aVal => {
        console.log(aVal)
    })
})

exports.handler = async (event) => {}に実装しているのはlambdaでもテストできるように書いています。eventオブジェクトの中のMessageが本文で、PhoneNumberに+81のつく電話番号を設定します。

Swift 日付T時刻フォーマット処理 ISO8601

ISO8601DateFormatterを使った方法

WebAPIなどのJSON文字列で”yyyy-MM-ddTHH:mm:ss+0900″のような形式をDateTimeとして扱う場合があります。このフォーマットはISO-8601で定められた国際規格とのことです。Swiftは、ISO-8601の国際規格フォーマットの文字列をDate型に変換するためのISO8601DateFormatterというクラスが用意されています。下記のコードは、ISO-8601形式の文字列からDateに変換する例です。

import Foundation

let s1: String = "2020/10/08T13:08:00+0900"
let fmt: ISO8601DateFormatter = ISO8601DateFormatter()
let d1:Date = fmt.date(from: s1)!

上記コードの結果は「2020-10-08T04:08:00Z」になりました。9時間のズレがありますがこれは協定世界時(UTC)です。ISO8601DateFormatterは、Formatterを継承して作成されています。それに加えISO8601DateFormatterの内部には、timeZoneを設定できます。timeZoneを設定することで、日本時間表示が可能になります。

import Foundation

let s1: String = "2020/10/08T13:08:00+0900"
let fmt: ISO8601DateFormatter = ISO8601DateFormatter()
fmt.timeZone = TimeZone(identifier: "Asia/Tokyo")!
let d1:Date = fmt.date(from: s1)!

timeZoneTimeZone(identifier: “Asia/Tokyo”)日本時間を設定しています。このtimeZoneを設定することでprintなどでアウトプットさせる場合も日本時間として表示されます。

Date型をISO-8601文字列に変換するには下記のような記述ができます。

let fmt: ISO8601DateFormatter = ISO8601DateFormatter()
fmt.timeZone = TimeZone(identifier: "Asia/Tokyo")!
print( fmt.string(from: Date()) )

2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED