- 1. AWS Lambdaとkagomeを組み合わせてお手軽に形態素解析APIを作る
- 2. AWS EventBridge + Lambda + LINE でモーニングコールするBotを作ってみた
- 3. Amazon Inspector で AWS Lambda 関数の脆弱性スキャンをしてみよう!
- 4. 40代おっさんREST API サーバーレスを学ぶ①
- 5. 【re;Invent2022】Lambda SnapStartの有効化方法(コンソール)
- 6. avifはオンデマンドな画像変換には向かないって言う話
- 7. CloudWatch Dashboard カスタムウィジェット内でのタイムゾーン扱い
- 8. 自己学習記録:TypeScript を Lambda で使う為には
- 9. AWS Lambda for Python 用に cryptography を同梱する
- 10. Lambdaのメモリサイズの設定値について考える
- 11. Twitter 画像付き自動投稿つくってみた【AWS Lambda】
- 12. 自己学習記録:Lambda で DynamoDB 連携
- 13. [初心者向け]たった50行のコードでTwitter Botを作成してみる
- 14. EventBridgeのサンドボックスを使いイベントパターンのチェックを行う。
- 15. The Lambda Function Returned An Error.の原因
- 16. SQS(FIFO) – Lambda構成の備忘録
- 17. AWS Lambda + Translate で翻訳機能使ってみた!
- 18. AWSの無料期間が終了するのでEC2からlambdaに移行した
- 19. 初心者がAWS lambdaを使ってみたお話
- 20. Lambda で どうしても大きい容量のライブラリが必要な場合
AWS Lambdaとkagomeを組み合わせてお手軽に形態素解析APIを作る
# 対象読者
– AWS Lambda未経験でとりあえず何か作ってみたい人
– 自前で形態素解析APIをお手軽に用意したい人## 動作確認環境
– `Go 1.9`
– `M1 MacBook pro` OS :`MAC OS X 12.4 Monteray`# 概要
Goで書かれた形態素解析エンジン `kagome` と AWS Lambdaを使って形態素解析APIを作ってみる。## モチベーション
みなさんは普段業務で形態素解析って使ってますか?
私は流通系の会社に勤めているため、商品に含まれてはいけない成分があるかを調べたり、日本語の商品説明を外国語に翻訳するとき、固有名詞を抽出するのに使っています。公開されているサービスですと下記のようなものがあります。
https://developer.yahoo.co.jp/webapi/jlp/ma/v2/parse.html
https://labs.goo.ne.jp/api/jp/morphological-analysis/
しかしながら、このようなオープンなサービスでは提供者の都合によるサービス終了や停止
AWS EventBridge + Lambda + LINE でモーニングコールするBotを作ってみた
## はじめに
「AWSを使って便利なチャットBotを作る」をテーマに掲げ、自分自身の勉強も兼ねて、その成果を記事にしていきます。
まず第1弾としてLINEにモーニングコールメッセージを送信するBotを作ってみました。
この記事が少しでも役に立てば嬉しいです。## 完成イメージ
完成イメージは下図のような感じです。
毎朝6時にモーニングコールのメッセージを届けてくれます。![IMG_4A2D169908D7-1 2(中).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24724/f4514f78-7728-2240-0b49-d7e4551fb7ba.png)
## システム構成
下図のようなシステム構成でBotを作成していきます。
![Chatbot-LineMoningCall.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24724/93c48b8e-54ab-420b-a70d-e24
Amazon Inspector で AWS Lambda 関数の脆弱性スキャンをしてみよう!
# 概要
* [Amazon Inspector](https://aws.amazon.com/jp/inspector/)に新機能として AWS Lambda関数の脆弱性をスキャンする機能が追加されました。
* ということで早速試してみたという記事になります。# Amazon Inspectorとは
* [Amazon Inspector](https://aws.amazon.com/jp/inspector/) というのは脆弱性を管理するためのサービスであり、今までは **Amazon EC2 インスタンス**の脆弱性や、**Amazon ECR** に存在するコンテナイメージの脆弱性を継続的にスキャンできました。
* 今回追加された機能というのは、AWS Lambda 関数と Lambda レイヤ全体の脆弱性を継続的にスキャンできるようになりました。## 気をつけるべき点
* 現時点では、Java、NodeJS、Python で記述された関数とレイヤーに対してのスキャンが実行できます(2022/11/29 時点)
* デフォルトでは、アカウント内のすべての関数を
40代おっさんREST API サーバーレスを学ぶ①
## 本記事について
この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。## DB用意
DynamoDBを使います。
リージョンを東京にする。(Lambda関数を使う時リージョンが違うと問題が出る。)![スクリーンショット 2022-11-29 191200.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/b7b5d86a-59f5-8f74-a0e6-de92b22c7514.png)
テーブル名 users
パーティションキー idそれ以外はデフォルト
## IAM
ロールを作成するので左のロールをクリック
開いたら
左上にロールを作成があるのでそれをクリック![IAMロール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/e3183c3d-f709
【re;Invent2022】Lambda SnapStartの有効化方法(コンソール)
# はじめに
こん〇〇は!
re;Invent2022で発表された「Lambda Snap Start」ですが、さっそくどのように有効化したらよいか確認してみたので、記事にしました!
もうすでに、AWSのサイトに今回の記事の内容は書いてありますので、それを試してみた。といったような内容です。# 前提条件
使用できるランタイムは「Java 11」のみ(2022/11/29現在)# できないこと、できない環境/サービス
– プロビジョニングされた同時実行
– arm64 アーキテクチャ
– Lambda 拡張機能 API
– Amazon Elastic File System (Amazon EFS)
– 512MBを超えるエフェメラル(一時)ストレージ# 注意点
スナップショットは以下の場合削除されます。
– 関数または関数バージョンを削除したとき。
– 14日間の関数バージョンの呼び出しがないとき。(14日後に呼び出された場合再作成される。)# 有効化方法
まず、Lambdaを作りましょう。
使用できるランタイムは「Java 11」のみなので、コンソール上から
avifはオンデマンドな画像変換には向かないって言う話
## 最初に理由から言うと
webpと比較すると画像変換にかなり時間がかかるためです## まずは各ブラウザの対応状況
https://caniuse.com/avif
![スクリーンショット 2022-11-19 18.05.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322555/1138802d-8232-26cc-4f98-6ae100574fe5.png)
iOS16からsafariもavifに対応したことによって、ほとんどのブラウザでavifが使えるようになりました## 実際の比較
比較に使った画像はこれです
![cat-7536508_1920.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322555/79d27c23-fc24-0f39-1033-f2d1cefbade5.jpeg)
1920×1280のjpegで315kbあります
オンデマンドで画像変換及びリサイズしている環境は以下です
CloudWatch Dashboard カスタムウィジェット内でのタイムゾーン扱い
# カスタムウィジェットで得られる情報
## カスタムウィジェット詳細
詳細は公式ドキュメントを見るのが一番確実です。https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/add_custom_widget_dashboard_about.html
## タイムゾーン関連部分
“`typescript
timezone: {
label: string, // Local or UTC
offsetInMinutes: number
},
“`
labelにAsia/Tokyoのような文字列が入ると予想していたのですが、実際にはLocalかUTCのいずれかが入ります。Management Consoleと同じイメージですね。# ユーザにはどう表示するべきか
JSTを前提に書くのが一番楽ではありますが、offsetInMinutesが取得できるのでこれを元に時差を調整して変換します。1. 日時をUTCタ
自己学習記録:TypeScript を Lambda で使う為には
# 背景
業務で AWS や JavaScript などが必要になった、おじいちゃんの学習記録。Lambda では TypeScript を使えないってことで、使う方法は?って探したところ
Serverless Framework が見つかった。で、試してたら、なんか色々あることを知らされる・・
– serverless
– SAM
– AWS-ToolKit for VSCode
– 結局は、SAM ?## Serverless に対する期待
– TransCompile しながら Lambda への Deploy が出来そう
– Serverless Offline もあるので、うまくいったあとは、開発は Offline で
– Google Cloud Functions/Azure Function などへも deploy 出来るので、覚えておくと役立つかも?## SAM & ToolKit
AWS のサポート受けられるってことでやっぱりこっちなのかな・・と
まぁ、どっちも素人なので・・こっちを選びたくない理由は、Docker 入れないと Of
AWS Lambda for Python 用に cryptography を同梱する
# はじめに
Lambda 関数デプロイ時に JWT デコードに利用する cryptography を同梱してデプロイしたかった。
そのため、cryptography を含む AWS Lambda Layer を作成 or 再利用しようとしたのだが、[Lambda@Edge 用の関数は Layer を利用できないという制約がある](https://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/edge-functions-restrictions.html)。最初は local で pip でインストールしようとしたのだが、 cryptography のライブラリ自体が pip でインストールする時に環境依存のバイナリを入れてくるため、`pip -t .` でインストールしたモジュールをアップロードしても、基本的には動作しない。
そのための解消方法をメモする。
が、正直、原始的なやり方であり、かなり限定的なユースケースでしかないので、代用が可能ならそちらを利用した方が良いので本当に最終手段と
Lambdaのメモリサイズの設定値について考える
## 概要
– Lambdaでのパラメータ値であるメモリサイズについての選択についての記事です
– Lambdaをあまり使ったことのない人、チュートリアルで使ったことのある人向けに記事です## tl;dr
– Lambdaは実行時間課金なのでメモリサイズを大きくする=ランニングコストが高くなるわけではない
– コスパの良いメモリサイズを選択するために、「AWS Lambda Power Tuning」で測定してみましょう
– 並列処理(CPU依存)をしている場合にはメモリサイズとコア数の関係を意識してメモリサイズを選択しましょう## Lambdaの課金体系
Lambdaの利用料金は、「リクエスト数」×「実行時間」によって決まります。
ここでいう実行時間は、「何MBのメモリサイズで何秒実行されたか」というような計算で決まります。
つまり、EC2などのサービスとは異なり、リソースサイズが大きいほど利用料金が高くなるというわけではありません。例: メモリサイズを2倍にすることで実行時間が1/2になる場合は、利用料金としては変わらなくなります(変わらないということは
Twitter 画像付き自動投稿つくってみた【AWS Lambda】
## あらまし
素数の日(=yy/mm/dd のdd 部が素数)[^1]にその素数にちなんだ画像を自動ツイートする機能をAWS Lambda で作成しました。[^1]:yyyymmdd の8桁が素数の場合を「素数の日」と呼ぶ流派もあるようです。
今日は23日です.素数の日おめでとう.
#pixelart #LINEスタンプ
https://t.co/Ya7euC5jMG
自己学習記録:Lambda で DynamoDB 連携
# 背景
業務で使うことになったので、ついていくために、おじいちゃんの自己学習記録。Node.js + AWS で少し見えてきた。
ということで、今度は DynamoDB + Lambda で少し遊んでみる
ゴールイメージは、
1. DynamoDB のテーブルAに値を追加すると
1. Lambda で追加内容に応じて、別テーブルに項目追加# まずは、DynamoDB のテーブル準備
[DynamoDB](https://ap-northeast-1.console.aws.amazon.com/dynamodbv2/home?region=ap-northeast-1#service) にて、テーブル作成とりあえず、適当に以下で作ってみた
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/b8aae7db-33ea-292d-abc9-6c93dd2bebdf.png)## 命名規則とデータ型
https://docs.aws.amazon.com/ja
[初心者向け]たった50行のコードでTwitter Botを作成してみる
## 目次
0. 概要
1. プログラミング初心者のアプリケーション開発の悩みとTwitter Botを題材にした理由
2. 今回、使用する各種サービスの説明とシステム全体の構成図(登場する用語の解説や構成の全体像の解説)
3. 実装
4. まとめ## 1. 概要
### 記事の目的
本記事は、プログラミング初心者向けに、Twitter Botアプリケーションの作り方を紹介します。記事の目的としては、`とにかくアプリケーションを動かしたい人に対して、簡単にアプリケーションが実装できることを理解してもらう`ことにあります。
この記事を通して、アプリケーション開発の第1歩目を踏み出してもらえたらと思います。
### 想定読者
多少言及がありましたが、想定読者は、`プログラミング初心者でアプリケーションとして動くものを作りたい人`としています。### 説明しないこと
– 利用したサービスの選定理由や使用する技術に対する詳細な解説
– 今回のアプリケーションに必要なアカウントの作成手順(参考にできそう記事を添付します)### 説明すること
– 今回使用する各種サービスの
EventBridgeのサンドボックスを使いイベントパターンのチェックを行う。
# はじめに
先日、`EventBridge`で`CloudTrail`に記録されたイベントを契機にするルールを作成した際、四苦八苦しながら少しだけサンドボックスの機能を使ってみたので、残しておこうと思います。# EventBridgeのサンドボックス機能とは
`EventBridge`のルールを「**イベントパターンを持つルール**」の形式で作成する場合、各サービス等から出力されるイベントに合致するように「**イベントパターン**」を記載して、イベントに合致した場合にルールを実行する動作となりますが、「**イベントパターン**」の記載方法があっているかを確認するためには実際にイベントを発生させて確認する必要があります。ただ、記載方法があっているかを確認するのに毎回イベントを発生させるのは非常に手間なので、2022年3月に新たに「**サンドボックス**」の機能が加わりました。
– 「[Amazon EventBridge がマネジメントコンソールでルールフィルタリングとイベント変換機能の強化を開始](https://aws.amazon.com/jp/about-aws/wh
The Lambda Function Returned An Error.の原因
## 背景
Amazon ConnectからLambdaを呼んでDynamoDBに値を保存する事を実現する上で注意する必要のある事を残しておく## 起きうる現象
### 1. Roleの設定ミス
必要に応じて、設定>アクセス制限>実行ロールからロールを作成して付与してあげる必要がある。### 2. returnでstatusCode:200を返していない事によるLambdaの失敗
下記エラーが発生する要因の一つとして、
“`
The Lambda Function Returned An Error.
“`
下記のようにreturn分で200を返していない事が挙げられる。
※[こちら](https://dev.classmethod.jp/articles/amazon-connect-calling-lambda-and-subscribe-lambda/ “クラスメソッド”)にも記載がある。
“`
return {
‘statusCode’: 200
};
“`
SQS(FIFO) – Lambda構成の備忘録
# SQS(FIFO) – Lambda構成の備忘録
AWS歴5-6年なのにSQSを一度も触ったことがなく。。。
AssociateやPro資格は全て取得したので、多少のドキュメントレベルの知識ならあると思うんですが。
触る経験がないことが心残りでした。そんな中、やっとSQSのキュートリガーを使ったLambdaの構成を検証する機会が舞い降りたので!
自分の備忘録がてらにメモを残します。## 構成
![screenshot.78.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/236355/eaf3b382-52b8-ef0a-a5cf-ff65b38ccffa.jpeg)
## CFnコード(yaml)
### IAM Role
“`yaml
AWSTemplateFormatVersion: ‘2010-09-09’
Description: [TEST] IAM Role for Lambda.
Parameters:
RoleName:
Type: String
AWS Lambda + Translate で翻訳機能使ってみた!
*この記事はawsハンズオンビギナーズをやってみて復習として作成しています
https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Serverless-1-2022-reg-event.html?trk=aws_introduction_page
今回は、Lambdaをテスト実行してその結果を英訳できるところまでをやります。
## 1 Lambda関数の作成
以下の画面から「関数の作成」ボタンをクリックします。
![スクリーンショット 2022-11-20 15.46.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686037/a3aec48b-ffb2-c6ec-24fb-e142114865ae.png)
~設定項目~
1,任意の関数名を入力
2,ランタイムの設定(今回はpython3.7にしました)
3,アーキテクチャは「x86_64」を選択![スクリーンショット 2022-11-20 16.00
AWSの無料期間が終了するのでEC2からlambdaに移行した
## EC2の無料期間が終了してしまう(まずい)
AWSのEC2を使って、アニメの配信通知をつぶやく[Twitterボット]()を動かしているのですが、私のアカウントのAWS無料期間が2022年12月で終わってしまうため、その後は毎月約3000円の料金が発生してしまいます(もったいない!)。
費用圧縮のためにLambdaに移行しようと作業していた所、つまづいた箇所がいくつかありました。
同じようなことで困っている方の参考になればと思います。### lambda(ラムダ)で出来ること
> Lambda は必要に応じて関数を実行し、1 日あたり数個から 1 秒あたり数千個のリクエストまで自動的にスケーリングします。課金は実際に消費したコンピューティング時間に対してのみ発生します。コードが実行されていない場合、料金は発生しません。引用元:[Amazon](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html)
## 1) フォルダごと圧縮しても動かない
lambdaでは、プログラムを「lambda_funct
初心者がAWS lambdaを使ってみたお話
初心者がAWS lambdaを使ってみた感想。
# AWS lambdaとは
Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを関数として実行できるサービスです。
関数とは・・・中学校の数学の関数、y=f(x)を想像してください。(懐かしい)
![Screenshot_20221119_161402.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/933408/8c016890-457d-7dcd-11e4-b3d3e2c6e15b.png)
左からxが来てます。真ん中の四角が関数のf(x)。で、右側にyが出力されています。
つまり、xが何らかのブラックボックスf(x)を通るとyに変換されて出てくるわけですね。この四角のf(x)の部分がlambdaです。
左のxはトリガー、右のyは送信先になります。
# サーバレスって言ったって・・・
lambdaはサーバーレスであるのが特徴で、EC2とかにデプロイする必要がありません。ですが、実際にはそれを意識させないだけで、どこかの仮想環境に関数が
Lambda で どうしても大きい容量のライブラリが必要な場合
Selenium を動かすときにはまったので、備忘録として。
https://valmore.work/aws-labmda-pytorch/
の内容の追加になります。
## Lambda のレイヤーでは対応できない場合
Lambda のレイヤーを使えば、250MB までのライブラリを比較的簡単にインストールできます。
ですが、250MB 以上になった場合は、どうしても EFS を使って EC2 も使って ライブラリを呼び出す必要があります。使い方は、
https://valmore.work/aws-labmda-pytorch/
に載っている通りなのですが、いくつかハマるポイントがあるので、それを説明します。
#### 2049番ポートからのアクセスを開放しているセキュリティグループ
EC2 のセキュリティルールで、インバウンド 2049・アウトバウンド全許可のルールを作りましょう。SSH も忘れずに。
#### Lambda への ポリシーのアタッチ
https://valmore.work/aws-lambda-s3/#lambda
にポリシーへのアタ