- 1. ぷらそにかの動画を毎日宣伝するbotを作った?
- 2. AWS Lambda、FlaskとOpenCVの環境構築
- 3. Developers.IO 2019 Tokyoに参加してみた【レポート】
- 4. 初学者のためのAWS入門(6) – Lambdaでサーバレス実行してみる
- 5. lambdaにTypeScriptをデプロイする手順(zip)
- 6. AWS Lambdaのアプリケーション作成を使ってCI/CDパイプラインを一気に構築
- 7. 【AWS】CodePipelineから呼び出したLambdaがずっと進行中になっている問題と対応
- 8. Amazon Comprehendが日本語対応したのでAlexaスキルで感情分析してみた
- 9. 質問です/LambdaとTwitterApiを使ってBotを作ったのものの、30分毎のイベント発火がうまく作動しない
- 10. Lambdaのログをいい感じにS3に保存し続ける方法
- 11. 【DynamoDB】LastEvaluatedKeyを使ってscanリクエストで全件取得
- 12. AWS Lambdaでのコールドスタートのメモリの罠と、Invoke Lambdaでのタイムアウトの罠
- 13. CodePipeLineからLambda呼び出しを行うCloudFormationテンプレートの定義
- 14. AmazonAWSLambdaでRuby使ってpostgresにアクセスする時にIgnoring pg-XX because its extensions are not built. Try: gem pristine pg と出た時の対処法
- 15. Amazon ECRのイメージスキャン結果をSlackに通知する
- 16. AWS初心者がLambdaでLINE BOIを作る
- 17. AWS SDK for Ruby v3をAWS Lambdaで使おうとしたらタイムアウトした
- 18. kintoneにサーバーレスで印刷機能を実装する(AWS Lambda + Thinreports)
- 19. AWSサーバレスアーキテクチャで、よくある安否確認システムをSlackに対応させる
- 20. brefを使って簡単にLambdaのPHP Custom Runtime環境を構築する
ぷらそにかの動画を毎日宣伝するbotを作った?
## 動機
1. Pythonを書いたことない
2. Pythonの勉強がしたい
3. Youtubeチャンネル「ぷらそにか」にハマっている
4. 友達にオススメしている
5. タイトルへ進む## AWS
毎朝動かしたかったので、LambdaのトリガーにCloudWatch Eventsを設定しました。
↑日本時間で朝9時## とりあえず全文
“`python:
#!/usr/bin/pythonimport os
import syssys.path.append(os.path.join(os.path.dirname(__file__), “packages”))
from oauth2client.tools im
AWS Lambda、FlaskとOpenCVの環境構築
# はじめに
– AWS LambdaでのOpenCVの環境構築は、大変です。具体的には、デプロイ環境の構築が大変です。
– デプロイ環境は、`AWSCLI`、`Serverless Framework`等色々な物が必要です。
– 今回も、以前作成した顔認識アプリをLambdaへ移植します。ソースコードは、同一です。上記のデプロイに関する設定ファイルが異なる程度です。
– ソース一式は [ここ](https://github.com/maedamikio/public/tree/master/flask_opencv_lambda) です。# 概要
– Mac
– 顔認識アプリ
– Flask
– OpenCV
– Python
– デプロイツール等
– AWSCLI
– Docker
– Homebrew
– Node.js
– Serverless Framework
– AWS
– API Gateway
– Clo
Developers.IO 2019 Tokyoに参加してみた【レポート】
# Developers.IO 2019 Tokyoに初参戦
表題のとおり、[Developers.IO 2019 Tokyo](https://eventregist.com/e/191004-developers-io-2019)に参加して参りました!>今年で5回目の開催を迎えるクラスメソッド主催のカンファレンスイベント Developers.IO 2019
【11/1(金)東京】国内最大規模の技術フェス!Developers.IO 2019 東京開催!AWS、機械学習、サーバーレス、SaaSからマネジメントまで60を越えるセッション数!
とありますが恥ずかしながら今まで知らずにおりました。。
普段からブログには散々お世話になっておりますが、色々と勉強になったのでよかったです!
参加したセッションは以下です。– Developers.IO CAFEのこれまでとこれから 〜顧客体験へのフォーカスから考える技術選択〜(横田聡)
– ハイブリッド/マルチVPC環境を構成するAWSネットワークの完全理解(菊池修治)
– サーバーレスの基本とCI/CD構築 & 運用 〜システムは動いてからが本番だ〜(藤井元貴)
– Amazon Cult
初学者のためのAWS入門(6) – Lambdaでサーバレス実行してみる
ここでは、AWSを基礎から学ぶ人向けに必要な情報をまとめていきます。
#### 初学者のためのAWS入門シリーズ
– [初学者のためのAWS入門(1)] (https://qiita.com/mshinoda88/items/e7557227f7060b52d8ae)
– [初学者のためのAWS入門(2) – CloudFormation入門1] (https://qiita.com/mshinoda88/items/c5b238212c2de850efdd)
– [初学者のためのAWS入門(3) – CloudFormation入門2]
(https://qiita.com/mshinoda88/items/65e7e145c7ec943af403)
– [初学者のためのAWS入門(4) – S3でBasic認証を設定してリポジトリを公開](https://qiita.com/mshinoda88/items/dfb1ee355fbcb08e47e5)
– [初学者のためのAWS入門(5) – S3+Athena+QuickSightでデータ分析結果の可視化](https://
lambdaにTypeScriptをデプロイする手順(zip)
# はじめに
TypeScriptをlambdaにデプロイする方はServerless FreamworkやSAMなどがあります。
しかし、installや設定などの事前準備が必要で、手軽ではありません。
そこで今回は簡単にデプロイして動作確認するために、zip化してデプロイする手順を記載していきます。## 事前準備
### typescriptのインストール`npm install -g typescript`
### AWS CLI
[AWS CLI のインストール](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-install.html)### lambda関数の作成
あらかじめ、AWSコンソールやcliでlambda関数を作成しておきます。AWS Lambdaのアプリケーション作成を使ってCI/CDパイプラインを一気に構築
# AWS Lambdaのアプリケーション作成とは
AWS Lambdaのアプリケーション作成機能を利用してLambda関数を作成すると、Lambda関数自体の他に
– Lambda関数のソースコード等を管理するGitリポジトリとしてCodeCommit
– CodeCommitのmasterブランチの更新を契機にLambda関数へのデプロイを行うCodePipeline
等々、CI/CDパイプライン実現のためのAWSリソースが同時に作成されます。
Lambda関数自体は手軽に作ったものの、次のステップとしてCI/CD環境を構築するのは腰が重く、ソースの更新はマネジメントコンソール上で実施している・・・といったケースを改善するアプローチとして、このようなCI/CD
【AWS】CodePipelineから呼び出したLambdaがずっと進行中になっている問題と対応
## 問題
**ずっとインジケータがぐるぐるしている**
(10分立ってもそのままで)もう気が狂う!!!S3へのデプロイ完了後にCloudFrontのキャッシュを消すLambdaを呼びたいなーと思ったときに躓いたのでまとめ。
## 原因
**`codepipeline:PutJobSuccessResult(※)`を返却しないため**
※ 失敗の場合は`codepipeline:PutJobFailedResult`### PutJobSuccessResultって?
> PutJobSuccessResult
> ジョブワーカーによってパイプラインに返されたジョブの成功をレポートするために必要です。
Amazon Comprehendが日本語対応したのでAlexaスキルで感情分析してみた
# 概要
2019年11月7日にAWSの自然言語処理サービスである**Amazon Comprehend**が日本語に対応したので、早速Alexaスキルで感情分析を試してみました。スキルの作成には[ASK CLI](https://developer.amazon.com/ja/docs/smapi/ask-cli-command-reference.html)を使い、言語はPython3を使っているのでその辺の知識があると分かりやすいかと思います。
# やった事
Amazon Comprehendの感情分析機能である**Sentiment**を使ってユーザーからの入力を感情分析し、その結果によってレスポンスが変わるAlexaスキルの作成# 東京リージョンではまだ使えない
2019年11月8日時点でAmazon Comprehendはまだ東京リージョンに対応していないので、ASK CLIでスキル作成する前に `aws configure` でリージョンを `us-east-1` などに変更してあげる必要があります。#### 現在対応しているリージョン一覧 (2019年1
質問です/LambdaとTwitterApiを使ってBotを作ったのものの、30分毎のイベント発火がうまく作動しない
初心者です。
LambdaとTwitterApiを使って、Twitterにステイーブジョブスの名言を、30分毎にツイートする自動BOTと作成しました。
![001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29856/5de884a5-e6ff-648b-fcf3-3c15dfe830e6.jpeg)動作して、ちゃんとツイートもしたのですが、時間の間隔が常に30分毎ではなく、1時間間隔の時や、時には2時間おきの場合もあります。
![002.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29856/bacff4d1-6dcd-d27b-f44f-cc0544141102.jpeg)Lamda側では、30分毎にイベントが発火しているようなのですが、何が原因かご教示いただきたいです。
![003.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazona
Lambdaのログをいい感じにS3に保存し続ける方法
CloudWatch Logsに出力されたLambdaのログをS3に保管する方法です。
CloudWatch Logsのサブスクリプションという機能でログをKinesis Data Firehoseに送信します。
そのままS3に出力すると複数のログが1行に並ぶ形になってしまいますが、Kinesis Data Firehoseのデータ変換機能で改行を加えることで解決します。こんな感じです。
![名称未設定ファイル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/ebe981c7-0dde-83eb-cd68-580bed8f0695.png)
# S3バケットの作成
ログを出力するバケットを作成します。今回は`log-backup-xxxxx`とします。
# データ変換用Lambdaの作成
データ変換用LambdaはAWSが設計図を用意してくれているので簡単に作成できます。
マネジメントコンソールでLambda関数を作成します。| 項目 | 選択 | 説明 |
|—|–
【DynamoDB】LastEvaluatedKeyを使ってscanリクエストで全件取得
## はじめに
RDBMSを使っていると、allとかで全件取得出来て特に気にする必要がないのですが、DynamoDBでは1MBまでのデータ量の件数のみしか取得が出来ないので、知っていないとあれ全件取得出来ていない…みたいなことになり私のように痛い目にあってしまうので、自分への戒めの意味も込めて残しておきます。
情報ソース:[DynamoDB でのスキャンの使用](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Scan.html)
## 環境
* Nodejs
## 実装
“`js
const AWS = require(‘aws-sdk’);
const DynamoDB = new AWS.DynamoDB.DocumentClient({region: “ap-northeast-1”});
const tableName = ‘hoges’;module.exports.hello = async (event, context) => {
try {
AWS Lambdaでのコールドスタートのメモリの罠と、Invoke Lambdaでのタイムアウトの罠
# 問題の経緯
API Gateway経由、ALB経由でAPI化しているLambdaを構築していた。
ALB経由Lambdaの中には、VPCに含んでいるものもあった。
そのLambdaからは別のLambdaもいくつかInvokeしていた。
実装を一通り終わってテストしていると、どうもレスポンスが早いときと、遅いとき、酷いとタイムアウト(API Gatewayは30秒制約あるし。。)することがあった。# 調査した結果
調査してみると、どうにもInvokeしている部分が怪しかった。
やっぱりVPC Lambdaだとコールドスタートのせいで遅いのかなぁと思いながらログから調査していった。
Invoke自体は実行されているが、何故かInvoke先のLambdaにログが来ていない。。。。
もしかして、コールドスタートから起き上がる前にタイムアウトしてる??と思い、Lambda関連のドキュメントを漁りながら、やっぱりLambdaを定期実行して、コールドスタート回避するしかないのかなぁと思っていると下記の記事を発見。。。。
[VPC Lambdaのコールドスタートにお悩みの方へ捧ぐコールドスター
CodePipeLineからLambda呼び出しを行うCloudFormationテンプレートの定義
# はじめに
CodePipeLineが終わったらSlackに通知を送るために、最後にLambda呼び出したかった。
作成したものを備忘として記録。# テンプレート
“`yaml
# CodePipeLine
Pipeline:
Type: AWS::CodePipeline::Pipeline
Properties:・・・(lambda以外は省略)
Stages:
・・・(lambda以外は省略)
– Name: lambda
Actions:
– Name: lambda
ActionTypeId:
Category: Invoke
Owner: AWS
Version: 1
Provider: Lambda
Configuration:
AmazonAWSLambdaでRuby使ってpostgresにアクセスする時にIgnoring pg-XX because its extensions are not built. Try: gem pristine pg と出た時の対処法
lambdaでRubyを使ってPostgresにアクセスする際に以下のようなエラーが出る場合があります。
“`
Ignoring pg-1.1.4 because its extensions are not built. Try: gem pristine pg –version 1.1.4
“`
それをどのように解決したかを記載します。###結論
pgやnokogiriなど、c言語のライブラリを使用しているものをrequireする際は
linux環境(redhat系)でbundle installを行ったvendorフォルダをlambda上にアップロードする。###原因
lambdaがc言語のライブラリを参照する際にライブラリのパスが分からない。###解決方法
dockerでAmazonLinuxの仮想環境を作成し、そこでbundle installを実行します。####前提
– GemfileでRubyの開発環境が作れる
– Dockerがインストールしてある####通常のlambdaでRuby動かすための環境構築
– Gemfileを作成“`
Amazon ECRのイメージスキャン結果をSlackに通知する
## はじめに
2019/10/28 Amazon ECR でコンテナイメージの脆弱製スキャン機能が利用可能になりました!
しかもスキャン機能自体の利用は無料です。最高。
https://aws.amazon.com/jp/about-aws/whats-new/2019/10/announcing-image-scanning-for-amazon-ecr/いずれ [AWS Chatbot](https://aws.amazon.com/jp/chatbot/) が対応してくれそうですが、
それまでの繋ぎでスキャン結果を Slack に通知する Lambda 関数を作成しました。
Amazon EventBridge(CloudWatch Events)と組み合わせて利用します。
## 結果イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/08180890-abe6-37f6-fec2-c81a12f65e51.png)
イメージ名をクリックするとスキャン結果の
AWS初心者がLambdaでLINE BOIを作る
LINE BOTでオウム返しのBOTを作ります。
正直AWSを触ったことが無いので、よく分からず困ったので同じように困る人が出ないように
記事にすることにしました。言語・ツール選定
私はRaspberry pi & PHPでLine botを作ったことが有る。
内容としては位置情報を渡すと近くのコンビニを教えてくれるものだ。
しかし、Raspberry piでLine botを作ると、常にRaspberry piを起動しておく必要があり電力的に優しくなく、
サーバの構築や認証鍵の設定が面倒だった。
そこでサーバレスのLine Botを作ろうと思いました。
私が選択したのはLambda+Node.js。
選択肢としてGAS(Google App Script)もあったけれど今後の拡張性を考えた時、
ES6が簡単に使えない(変換すれば使えるが面倒な)のが嫌だと思ったのでやめました。環境構築
LINE Developers
https://developers.line.me/ja/
↑LineBotを作るためにアカウント取得する
【公式】クラウドならアマゾン ウェブ サービス (A
AWS SDK for Ruby v3をAWS Lambdaで使おうとしたらタイムアウトした
AWS SDK for Ruby v3をLambdaで使おうとしたらタイムアウト(確認したのは128MBで1分)した。
切り分けをしたところ、以下だけの簡単なコードでもタイムアウトしてしまって、どうやらAWS SDKのライブラリ全体を require しようとすると時間がめちゃめちゃかかってしまうみたい(手元だと全然時間がかかるようなことは無いのだが、理由はよく分からない…深追いはしていない)。“`ruby:main.rb
require ‘aws-sdk’# エントリポイント
def lambda_handler(event:, context:)
{ statusCode: 200, body: JSON.generate(‘Hello from Lambda!’) }
end
“`なので
“`ruby:main.rb(抜粋)
require ‘aws-sdk-s3’
“`みたいに必要なサービスのみ require するようにしたら問題無くすぐに実行された。
***
と思って上記記事を書いた後にもう少しぐぐってみたところ同じような部分で格闘していた
kintoneにサーバーレスで印刷機能を実装する(AWS Lambda + Thinreports)
# 最初に
kintoneに限らず業務系のWebサービスでは、帳票印刷が必要になってきます。
(まだまだ紙で印刷したり、メールに添付したり、ダウンロードしたり)ここでは、[kintone](https://kintone.cybozu.co.jp/) の印刷機能について調査と独自実装する場合の方法についての考え方をまとめたいと思います。
# 主な [kintone 帳票印刷ソリューション](https://kintone-sol.cybozu.co.jp/integrate/?_ga=2.217224278.1575313049.1572136352-973750221.1496066698&_gac=1.262536702.1570843509.Cj0KCQjw0IDtBRC6ARIsAIA5gWvCvZQJv5_IIkx2pr_sdG-J8KFmxzXUvvAIIWUpxygR7D1l4_EFjEgaAktlEALw_wcB#tab-refine)
(カッコ内は販売会社名)kintone連携ソリューション公式ページから個人的に使ったり、知っている主な製品をまとめてみまし
AWSサーバレスアーキテクチャで、よくある安否確認システムをSlackに対応させる
# 災害時に気づかれない安否確認を何とかしたかった
先日の[台風19号](https://ja.wikipedia.org/wiki/%E4%BB%A4%E5%92%8C%E5%85%83%E5%B9%B4%E5%8F%B0%E9%A2%A8%E7%AC%AC19%E5%8F%B7)の上陸時、自社の安否確認システムが発動し、全社員に一斉連絡が行われました。
この連絡は、安否確認システムに登録された電話番号とメールアドレス宛に行われることとなっています。
これは、各社でよくある安否確認システムの仕組みだと思われます。
しかし、今回の安否確認連絡に対する回答率は、普段実施している訓練の時よりも悪くなってしまったようです。
個人的な考察ですが、訓練では事前にメールを送信されると知らされているから回答率が良いのであり、いざ本番となると気づかない人が多いのだと考えました。
電話はEメールよりも効果的だと思うのですが、いたずら電話と勘違いして、取られないのかもしれません。# 部員全員が使っているSlackに通知したら回答率が上がるのではないか
「Eメールは埋もれる」「電話は取られない」のだとす
brefを使って簡単にLambdaのPHP Custom Runtime環境を構築する
## 概要
LambdaでPHPを動かすためにはCustom Runtimeの機能を使って、自分でランタイム環境をビルドして、bootstrapというCustom Runtimeのエンドポイントとなるファイルを用意する必要があります。
しかし、[bref](https://bref.sh/)というサーバーレス環境でPHPを動かすためのツールとServerless Frameworkを使うことで非常に簡単にPHPのCustom Runtime環境が構築できたのでその紹介をしたいと思います。
## 使い方
### テンプレートからプロジェクトを作成
brefのgithubリポジトリにサンプルとなるプロジェクトが公開されているのでそれを元にローカル