🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

3121閲覧

twitter bot(python)をAWS lambdaで定期実行させたいです。

penuts_batapi

総合スコア1

Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/03/29 15:05

前提・実現したいこと

Google Cloud PlatformかAWS lambdaで簡単なpythonコード(twitter botの定期実行)を実行したいです。(以下の質問はAWS lambdaで発生した問題であり、GCPで簡単にコードの定期実行が実現できそうであればそちらを教えていただいても嬉しいです。)

発生している問題・エラーメッセージ

"errorMessage": "Unable to import module 'lambda_function': No module named 'lambda_function'", "errorType": "Runtime.ImportModuleError"

該当のソースコード

python

1import tweepy 2import time 3 4print('hello world!') 5 6def tweet(): 7 8 CONSUMER_KEY = '****' 9 10 CONSUMER_SECRET = '****' 11 12 ACCESS_KEY = '****' 13 14 ACCESS_SECRET = '****' 15 16 auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 17 18 auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) 19 20 api = tweepy.API(auth, wait_on_rate_limit=True) 21 22 23 keyword = 'gme' 24 25 tweet_count = 10 26 27 for tweet in tweepy.Cursor(api.search, keyword).items(tweet_count): 28 29 try: 30 31 print('Tweet succeeded') 32 33 tweet.retweet() 34 35 time.sleep(5) 36 37 except tweepy.TweepError as e: 38 print(e.reason) 39 except StopIteration: 40 break 41tweet()

試したこと

最初の頃は上記のエラーの他にも「tweepyやtimeの外部モジュールを読み込めない」といったエラーが出ていたのですが、それらをパッケージとしてpipインストールしてzip形式でlambdaにアップロードした所、今度はlambda_functionが読み取れないと表示されました。

補足情報(FW/ツールのバージョンなど)

私はサーバーレス環境を使うのがこれで始めてであり、上記のソースコードの定期実行も簡単にできるだろうと高を括っていましたが、予想以上にAWSの仕組みが複雑で切羽詰まってしまいました。

初心者故に以上の書いてある以外の設定は全くいじっていないです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

'該当のソースコード'のファイル名はlambda_functionになっていますか?
lambdaのランタイム設定 - ハンドラに設定されている値によってlambdaからの関数の呼出先が決まります。
イメージ説明

たとえば、ハンドラがlambda_function.lambda_handlerとなっている場合、
lambda_function.pylambda_handler関数が呼び出されますので、

  • ファイル名をlambda_function.py
  • 定期実行したい関数def tweet():def lambda_handler(_event, _context):

にしていただくと動くかと思います。

lambdaが呼び出すのは、ファイルではなく関数のイメージですね。

投稿2021/04/06 11:50

yskszk63

総合スコア161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問