LoginSignup
1
0

More than 3 years have passed since last update.

AWS Lambdaからツイートする

Last updated at Posted at 2020-10-17

はじめに

引き続き、退社情報自動通知機能を作っていきます。
前回の記事で、スマホからAWSに位置情報を送信することができました。
次は、AWS Lambdaを使って、Twitterと接続します。

通知手段について

前提として、通知先は妻のiPhoneを想定しているので、特殊な設定はしたくありません。
簡単にAWSから第三者のスマホに通知するには以下の方法があげられます。
・LineBot
・TwitterBot
・メール
この中で、一番実装が早そうなTwitterを用いて、通知します。
(もっと簡単な方法があったら教えてください。)

Twitter APIの利用登録

Botのように、プログラムを用いてツイートするためには、「Twitter API」の利用登録をする必要があります。
利用登録の前に、まだTwitterのアカウント登録をしていない方は、しておいてください。
なお、アカウントにメールアドレスも登録しておかないと、「Twitter API」の使用登録はできません。

下記サイトにアクセスし、TwitterAPIの利用登録を行います。
https://developer.twitter.com/en/apps

7.PNG

利用用途が問われます。
今回は趣味(Hobbyist)でBotを作成するので「Making a Bot」を選択します

8.PNG

以後は質問に淡々と答えていきます。
9.PNG

英語で答える必要があるので、人によっては時間がかかるかもしれません。
a.PNG

最後に確認画面が出るので、「Looks good!」をクリックします。
b.PNG

利用条約に目を通します。
c.PNG

この画面が出ればOKです。
登録したメールアドレスに確認用メールが届いているので、そちらを開いて登録します。
d.PNG

Twitter APIの初期設定

Twitterの開発者用画面にログインすると、アプリの名前を聞いてくるので、適当に答えます。

e.PNG

ここで、プログラムからツイートするための鍵が表示されますが、あとで再発行するので、無視して大丈夫です。
「Test an endpoint」をクリックします。

f.PNG

アプリの登録がおわったら、権限の設定を行います。
初期状態だとツイートの読み込みしかできません。
この権限の設定をしないと、プログラムからツイートできないため、後々エラーが発生します。

画面右上の「Developer Portal」を開きます。

F2.PNG

画面左のタブの「Project & Apps」から先ほど名前を付けたアプリ名を選択します。
すると、アプリの設定画面が出るので、「App Permissions」の「Edit」をクリックします。

h.PNG

Read(読み込みのみ)になっているので、「Read + Write + Direct Message」に変更します。

q.PNG

次に、APIを利用するため、KeyとTokenを確認します。
「API Key & Secret」をRegenerateし、①API keyと②API key secretをメモしてください。
また、「Access Token & Secret」をGenerateし、③Access tokenとAccessと④token secretをメモしてください。
後にAWS Lamdaにこの4つの情報を入力します。

g.PNG

これでTwitter APIの設定は終わりです。

AWS Lambdaの構築

「Lambda>関数」から、関数の作成を行います。
Serverless Application Repository>パブリックアプリケーションを選択して、「iot」で検索し、iot-twitter-bridgeを選択します。
6.PNG

アプリケーションの設定で、先ほどTwitterAPIでメモした4つの情報を入力します。
用語が統一されていないのですが、CONSUMER_KEYがAPI keyです。
図1.png

これでLambda関数が作成できました。
k.PNG

デフォルトの関数コードを確認しましょう。
json形式で、deviceIDとincomingTextがトリガーから入力され、その情報をツイートする仕組みみたいです。
とりあえず、関数はそのままにしてTwitterAPIと接続テストします。
n.PNG

テスト

テストイベントを作成します。
下記画像のようにhello-worrldテンプレートを使用し、twitterTestイベントを作成します。
r.PNG

一応、中身を貼り付けておきます。

{
  "deviceID": "6060",
  "incomingText": "twitter from aws"
}

テストします。
下記画像のようにSuccessが表示されたら成功です。
t.PNG

Twitter側も確認します。
u.PNG
おつかれさまでした。

ちなみに、同じ内容でテストするとエラーが帰ってきます。
同じ内容で連続投稿させないためのTwitterの仕様だそうです。

details: {u'errors': [{u'message': u'Status is a duplicate.', u'code': 187}]}

おわりに

退社自動通知機能の作成を目的とし、AWSからツイートするところまでできました。
あとはIotとLambdaを接続し、関数を少しいじくればできそうですね。

参考URL

いつも感謝しています。

twitterアプリの作成
https://yosiakatsuki.net/blog/create-twitter-application/

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0