www.aipacommander.com www.aipacommander.com
続き。
今日(昨日だけど)は、lambdaからlambda叩いたり、s3のイベントからlambda叩いたり、lambdaからsqsにqueueを追加したりなどした。
やったこと箇条書きする。
- その前に、bs4でlxmlを使おうとしたらエラーで死んだ
- どうやら別途バイナリを用意しないといけないらしい -> requirements.txtのようにモジュールを~/lib/なんちゃらに配置してzipしてアップロードしたら動いた
- LambdaでPythonのlxmlを使う - 万年素人からHackerへの道
- GitHub - JFox/aws-lambda-lxml: AWS Lambda precomiled binaries for lxml 3.6.4 built for python 2.7 and python 3.6 runtimes
- lambda -> s3 -> s3 event -> lambda -> sqs (一旦繋がりがなくなり) cloud watch(でやる予定) -> lambda -> lambda のピタゴラスイッチを作成した
- このあと、これと同じ長さのピタゴラを用意する予定。だるい
- s3のputでevent発火させている -> すでに同じファイルが存在する場合、更新がかかるが、更新処理ではevent発生しないのかなと思いきや、発生した(実装最初あたり、何度かテストして動かなかったけど、後半動いたからよしとする。キャッシュとかかな
- s3 -> lambdaで何が受け取れるのか
- sqs -> queueの追加イベントでlambdaを並列実行したかったけど、fifoで設定してしまったため、そのイベントがないんだとか
- sqs初めて使ったけど、全体像はこっちがわかりやすかった
- boto3でsqsを使うにはドキュメントが最強だった
- そういえば、boto3.client()とboto3.resource()どっち使えばいいの問題
- ざっというと、高・低レベルAPIの話だった
- Boto3 で S3 のオブジェクトを操作する(高レベルAPIと低レベルAPI) - Qiita
- sqs、テスト中、追加したqueueを一気にクリアしたいときどうすればいいの?
- ドキュメント チュートリアル: Amazon SQS キューからメッセージを消去する - Amazon Simple Queue Service
- クリア実行して数十秒後に消えるので、実行したあとにポーリングするとまだ残っている場合がある
- queue処理、はじめて使ったが、呼び出したqueueはずっと残り続けるので、削除する必要があることを知った
- lambda -> sqsは権限が必要。ロールに設定すればおk
- lambda -> lambda呼ぶときどうすりゃいいんや
- AWS LambdaからLambda呼んでハマった話。 - Qiita
- 非同期で呼びたかったから上でおk
結構ハマったけどピタゴラできたのでよかった.
悩みと次やりたいこと
- sqsに投げたあと一旦ピタゴラとしては終了し、queueをcloudwatchでevent発火してlambdaでポーリングしようとしてる
- lambdaからDB接続
- lambda、lambda layersを使えば、ある程度共通化できるので、lambda関数自体は軽くなるのでそれは良い
- そうだ。今回のピタゴラで集めた情報を使って、s3とlambdaとvue.jsでフロントを用意する予定なんだが、結局のところlambdaとRDS問題があるので、どうやってデータを取得してフロントにわたすものを用意しようか
- やっぱりdynamodbがいいんかな?????
- 来週のLTまでに間に合わせたい気持ちだがこれは大変そうだ