- 1. 筋トレを継続したい!(AWS Lambda × Python × ChatGPT でLINEbot作成)
- 2. AWS SAMの基本的な使い方
- 3. gpt-4で英文添削させてWebSocketでstreamレスポンスさせる
- 4. ハッカソン参加時の備忘録 ~ 第5回:AWS LambdaとAWS S3を連携させてみよう ~
- 5. Serverless Frameworkを使ったAWS Lambdaの開発チュートリアル
- 6. Excel LAMBDA関数を手動でステップ実行して理解を深めるには?
- 7. VPC Lambda(Node.js)からSecretsManagerのシークレットを取得する
- 8. 【AWS – Lambda】バージョンをリセットしたい
- 9. [2024年2月更新] GitHub Action (OIDC認証) を用いてAWS Lambdaに自動デプロイする方法
- 10. 【備忘】boto3・SESでメール送信
- 11. lambyを使ってみる
- 12. API GatewayからLambdaを通さずにS3へデータを入れる処理をCDKで書いたメモ
- 13. 【ServerlessFramework】slsでカンタンにAPIサーバーを公開するチュートリアル
- 14. AWS CloudFormationでLambdaを構築してみる
- 15. AWS LambdaとGoogle Drive APIを使用したファイル転送の自動化
- 16. Cloud9でLambda(Python)を作り始めるメモ
- 17. Serverless Frameworkを使ってKindleの価格を通知するLINE Botを作ってみた
- 18. 【AWS】AWS Lambdaで既存のLambdaを複製して作成する方法
- 19. AWS S3, Lambda, EFS でお財布に優しい個人開発はじめました
- 20. Lambda で OpenAI APIを実行する
筋トレを継続したい!(AWS Lambda × Python × ChatGPT でLINEbot作成)
# 筋肉ムキムキになりたい!!
1度くらい筋肉には憧れたことはあるだろう…
そしてトレーニングを始める人もいるだろう…
しかし、続かない…
そこで、筋トレを継続するための、**筋トレbot**を作成しました!# 開発環境
AWS Lambda
Python 3.12# トレーニングメニュー
トレーニングメニューを自分で考えるのは面倒ですよね。
そこで、ChatGPTにお願いして、トレーニングメニューを考えてもらおう!![image0 (1).jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682615/74b9ba69-6594-941d-ffde-ac88146299e2.jpeg)
いい感じのメニューを提案してくれましたね。
# 筋トレ後は褒めてもらおう
ただトレーニングをこなしていくだけだと、モチベーションが保てませんよね。
トレーニングが終わった後は、トレーニングしたことを報告して、褒めてもらおう!![image1.jpeg](https://qiita-i
AWS SAMの基本的な使い方
# AWS SAMの基本的な使い方
AWSのServerless Application Model(SAM)は、サーバーレスアプリケーションの開発とデプロイを簡単にするフレームワークです。
この記事では、SAMを使用してサーバーレスアプリケーションを開発、テスト、デプロイする基本的なコマンドを紹介します。## はじめに
AWS SAMは、AWSのサービスを利用してサーバーレスアプリケーションを構築するためのツールです。
SAMを使用することで、Lambda関数、API Gateway、DynamoDBなどのAWSリソースを簡単に定義し、デプロイできます。## アプリケーションの開発
### アプリケーション初期化
“`
$ sam init
“`### アプリケーション構築
“`
$ sam build
“`### アプリケーションをデプロイ
“`
$ sam deploy –guided
“`### アプリケーション実行
“`
$ sam list endpoints –output json
“`### Lambda関数とやり取
gpt-4で英文添削させてWebSocketでstreamレスポンスさせる
## はじめに
– gpt-4を使って英文の添削をさせるアプリを作ったので、その内容と作成手順を記載します
– 英文添削結果はフォーマットを定義し、その通りに回答を返却させています
– AIからの回答はChat-gptと同じようにStreamレスポンスされますLike this↓
![git_0218.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/754596/df26ea2d-0e35-77b6-525f-2a2e8bf55fbc.gif)## 目次
1. モチベーション
1. 成果物
1. 構成
1. 作成手順## 1.モチベーション
私は、英語の日記を毎日書きます。
ネイティブスピーカーの友人に添削してもらっていましたが、それには添削者の稼働が必要です。
一方で、添削者がいない場合は、文法の間違いやスペルミスをしていても気づけません。
なので、生成AIを活用して添削者を作ります。
これによって英語勉強のハードルを下げます。## 2.成果物
#### アプリ概要
英語のセンテンスが入
ハッカソン参加時の備忘録 ~ 第5回:AWS LambdaとAWS S3を連携させてみよう ~
こんにちは。ITエンジニアのきゅうです。
今回作成するアプリのシステム構成図です。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618971/57c48beb-18ca-4f57-0562-176c1bff3ef4.png)
今までインターフェース部分としてLINEを使用しておりましたが、動かすだけであれば、LambdaにTest機能がありますので、そちらを用いて動かしたいと思います。
ですが、もちろん今までお伝えしていたLINEの設定を行えば、LINEから起動させることももちろん可能です。# Amazon S3について
では、S3とはなんぞや?という方の為に、簡潔に説明していきましょう!## Amazon S3について
『Amazon Simple Storage Service』を、略してS3と言います。
要するにストレージサービスのことです。
もっと簡単に言うと、ファイルサーバーですね。
(ちなみにAPサーバは、EC2です。)勿論無料枠も御座います。
5 GB
Serverless Frameworkを使ったAWS Lambdaの開発チュートリアル
# 概要
最近、LINE Botを開発しました。
そのプロジェクトで、サーバレスアーキテクチャの構築と管理を容易にするServerless Frameworkを使用しました。
Serverless Frameworkを利用することで、AWSへのデプロイや管理が簡単になり、開発プロセスがスムーズになりました。
この記事では、その設定やプロセスについて詳しく説明していきます。# 実行環境
前提条件として、Node.jsおよびAWS CLIインストールが必要です。
私の実行環境は以下の通りです。
“`bash
$ node -v
v20.0.0
“`
“`bash
$ aws –version
aws-cli/2.15.12 Python/3.11.7 Darwin/23.2.0 source/x86_64 prompt/off
“`# Serverless Framework のインストール
まずServerless Frameworkをインストールします。
“`bash
$ npm install -g serverless
$ serverless –versio
Excel LAMBDA関数を手動でステップ実行して理解を深めるには?
[Excel LAMBDA関数でセル範囲を副問い合わせ表をLIKEやBETWEENでJOINするには?(https://qiita.com/madilloar/items/d058f5076a0810f5cf73)](https://qiita.com/madilloar/items/d058f5076a0810f5cf73)
で、2つのセル範囲を2つのテーブルとみなして、クロス結合表を作る関数、CROSS_JOIN関数を紹介しました。“`Lisp:
=LAMBDA(range,range2,
LET(
rows1, ROWS(range),
cols1, COLUMNS(range),
rows2, ROWS(range2),
cols2, COLUMNS(range2),
rowsn, rows1 * rows2,
colsn, cols1 + cols2,
rowindex, SEQUENCE(rowsn, 1),
colindex, SEQUENCE(1, colsn),
arraymodel1
VPC Lambda(Node.js)からSecretsManagerのシークレットを取得する
## 手順
– VPCを作成
– プライベートサブネットを1つ作成
– (↑Lambdaを入れる)
– Lambdaを作成
– Lambdaのロールを編集
– LambdaをVPCに入れるためのポリシーをアタッチ
– SecretsMangerを読むためのポリシーをアタッチ
– LambdaをVPCに入れる
– SecretsMangerでシークレット作成
– VPCエンドポイントを作成
– Lambdaを編集
– Lambdaでシークレットが取得出来る事を確認## VPCを作成
お試しなので下図の最小限の設定で作ります。
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349281/f6b257d2-605d-185a-9c15-de2e8791faf8.png)
## Lambdaを作成
ランタイムはNode.js。関数名のみ入力したらデフォルトのままで「関数の作成」します。
![03.png](https://qiita-image-stor
【AWS – Lambda】バージョンをリセットしたい
## やりたいこと
– Lambdaで関数を作成し、バージョニングを実施(例:6まで)
– その後、作成した関数を削除し、同じ名前で関数を再作成&バージョニング
– この時再作成した関数のバージョンが7からスタートする
– これを1から割り振りたい## 結論
– 1から再度割り振ることはできない
– もし再度1からバージョニングしたい場合、別名で関数を作成する必要がある> Lambda assigns monotonically increasing sequence numbers for versioning. Lambda never reuses version numbers, even after you delete and recreate a function.
## 参考
https://stackoverflow.com/questions/53410914/lambda-versions-are-incremented-even-i-delete-the-lambda-stackie-cfn?rq=3
https://docs.aws.amaz
[2024年2月更新] GitHub Action (OIDC認証) を用いてAWS Lambdaに自動デプロイする方法
業務内でSlack Botを開発した際に利用した実装方法を取りまとめました。
特にAWSのOIDC周りのUIが新しくなっていたため、備忘録としてまとめましたので参考にしていただければ幸いです。ベストプラクティス、改善点等ありましたらお気軽にコメントください。
今回実装したSlack Botは定期的にメッセージを投げる簡単なものですが~~気が向いた際に~~記事を作成します。
# 概要
:::note warn
※2024年2月作成の記事なので今後仕様が変わる可能性ありますので最新の情報をご確認ください。
:::* 特定ブランチが更新されたらLambdaにソースをデプロイ
* AWSのアクセスキー&シークレットキーの管理はGithub→Settingsにある”Select and Variables”には持たせずOIDCを用いて認証
→**IAMロールのarnを指定するだけで認証ができ、キーの管理が不要なのでめちゃ楽**# 実装
## AWS側
### IAM IDプロバイダ登録* IAMページ内の左のメニュー”ID プロバイダ”→プロバイダを追加を選択
![id_p
【備忘】boto3・SESでメール送信
## はじめに
boto3を利用してSESでメール送信処理を実行することが多々あり、
備忘録として記録します!htmlのテンプレートを使用して送信します。
## コード
“`python:ses.py
ses_client = boto3.client(“ses”)# 諸々設定
sender_name = “送信者”
from_email = “from@email.com”
to_email = “to@email.com”
bcc_email = “bcc@email.com”
mail_subject = “メールタイトル”
mail_content = EMAIL_CONTENTresponse = ses_client.send_email(
Source=’%s <%s>‘%(Header(sender_name.encode(‘iso-2022-jp’),’iso-2022-jp’).encode(),from_email),
Destination={
“ToAddresses”: [
to_e
lambyを使ってみる
# はじめに
先月、AWS SAMを利用してrubyをlambdaで動かせることは分かったのですが、railsをlambdaで動かせないかと調べたところ、lambyが出てきたのでこの記事は調査禄となります。
(lambyそのものは前々から知ってたものの、今まで触ったことがなかったので今回が初となります)# スタートアップに準じて触ってみる
https://lamby.cloud/docs/quick-start
## 準備
quick-start記載の以下のコマンドを実行
“`
$ docker run \
–rm \
–interactive \
–volume “${PWD}:/var/task” \
ghcr.io/rails-lambda/lamby-cookiecutter \
“gh:rails-lambda/lamby-cookiecutter”
“`
プロジェクト名を入力
“`
project_name [my_awesome_lambda]: learning_deliverable
“`コンテナの中に入り、awsの設定を
API GatewayからLambdaを通さずにS3へデータを入れる処理をCDKで書いたメモ
## 概要
API GatewayにPutしたデータをS3に格納してみたメモ。[API GatewayからLambdaを通さずに直接DynamoDBにデータを入れる処理をCDKで書いたメモ](https://qiita.com/hibohiboo/items/fb801dca48f01403e0e2)と同様、インテグレーションでマッピングする。
[ソースコード](https://github.com/hibohiboo/aws-cdk-v2/blob/09987ded34fe472bb7524947b14857d70124074f/cdk/lib/api-gateway-proxy-to-s3-by-cdk-stack.ts)## CDK
“`ts
import { RemovalPolicy, Stack, StackProps } from ‘aws-cdk-lib’;
import { AwsIntegration, Cors, MethodLoggingLevel, PassthroughBehavior, RestApi } from ‘aws-cdk-lib/a
【ServerlessFramework】slsでカンタンにAPIサーバーを公開するチュートリアル
slsを利用してLambda x APIGatewayでカンタンにAPIサーバーを公開するチュートリアルです。
元となるリポジトリはこちら
https://github.com/ng3rdstmadgke/sls-tutorial
# node.jsのインストール
“`bash
# nvm インストール
# https://github.com/nvm-sh/nvm#installing-and-updating
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash# v16系のLTSをインストール
nvm install –lts=gallium# v16系のLTSをデフォルトに設定
nvm alias default lts/gallium# 確認
nvm list
“`# サーバーレスフレームワークのインストール
“`bash
# インストール
npm install -g serverless# slsコマンドが利用できるか確認
sls
AWS CloudFormationでLambdaを構築してみる
# はじめに
CloudFormationを用いて、AWS Lambda構築していきたいと思います。
今回はLambdaを構築するところまで実施していきます。
また、Lambda@EdgeとしてCloudFrontと連携して利用するところは次回以降に記載予定です。
AWS Lambda@EdgeはCloudFront が配信するコンテンツをカスタマイズする関数を実行できるコンピューティングサービスです。# 目次
・Lambdaの設定項目
・CloudFormation作成
・最後に
・参考# Lambdaの設定項目
今回はnodejs.18.xを利用し、コードについてはS3から取得してくるようにします。
Lambda@Edgeはバージニア北部にのみ作成可能なため取得してくるS3もバージニア北部であるひつようがあります。また、今回作成するLambdaもバージニア北部に作成するので注意してください
また、IAMロールとCloudFrontへのアクセスを許可するためのポリシーステートメントを作成します上記以外の項目についてはCloudFormationの設定を見てご確認ください
AWS LambdaとGoogle Drive APIを使用したファイル転送の自動化
# AWS LambdaとGoogle Drive APIを使用したファイル転送の自動化
## はじめに
この記事では、AWS Lambda関数を使ってS3バケットからファイルを取得し、Google Driveにアップロードする方法について説明します。
Pythonを使用し、boto3とGoogle Drive APIを活用することで、ファイルの自動転送を実現します。クラウドサービスを使用することで、ファイルの自動化された管理が可能となります。
AWS Lambdaはサーバーレスのコンピューティングサービスであり、Google Drive APIを使用することでファイルのアップロードや管理が簡単にできます。
この組み合わせにより、効率的なファイル管理システムを構築することができます。## フロー
以下のシーケンス図は、AWS Lambdaを使用してAmazon S3からファイルを取得し、Google Driveにアップロードするプロセスを示しています。
1. **Lambda から S3 へ**: ファイルダウンロード要求
2. **S3 から Lambda へ**:
Cloud9でLambda(Python)を作り始めるメモ
AWS Cloud9でLambda開発の環境構築に多少作業が必要だったのでまとめておきます。
既にあちこちでまとめられているけど自分用に。AWS初心者です。## 前提
– OS:Amazon Linux 2023
– インスタンスタイプ:t2.micro(無料枠)
– 接続:AWS Systems Manager(SSM)## 導入作業
### pyenvの追加とPythonバージョン変更
まずはPythonバージョンを確認。
“`bash
$ python –version
Python 3.9.16
“`
サポート期限まで約1年半(2024/2時点)か~~~となったのでバージョン変更できるようにしておきます。まずはpyenvの導入から。
個人的な好みとしては.bash_profileではなく.bashrcに書き込めばよかった…と反省。
“`bash
$ sudo yum -y update
$ sudo yum -y install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sql
Serverless Frameworkを使ってKindleの価格を通知するLINE Botを作ってみた
# 概要
Amazonのほしい物リストをスクレイピングし、その情報を通知するLINE Botを作成しました。
特に **_Kindle_** 向けに最適化されています。Amazon EventBridgeによる定期実行、もしくはメッセージに対する応答として、Kindle版と紙の本の価格やポイントを通知するLINE Botです。
![kindle-wishlist-to-line.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458297/668d0c63-e0b4-1ed3-d9e4-71cb8161882e.jpeg)# プロジェクトの目的と動機
Kindleの値下げを見逃さないために開発しました。
Kindleの価格はセール時に大きく下がることがありますが、AmazonのスマホアプリではKindleの価格を確認できず、値下げを逃すことがしばしばありました。
その課題を解決するために、このLINE Botを作りました。# 技術スタック
技術スタックは以下のようになっています。![
【AWS】AWS Lambdaで既存のLambdaを複製して作成する方法
## 背景
– [AWS Lambda](https://aws.amazon.com/jp/lambda/)はサーバーレスにプログラムを実行できるサービスです。
– `Lmabda`を使用していると既存の`Lambda`を複製して新しい`Lambda`を作成したいことがあると思います。
– この記事では
1. AWSコンソールで複製する方法
2. `AWS CLI`を一部活用する方法
の2つをご紹介します。
– ※本方法は`python`かつ`zip`デブロイによって作成された`Lambda`でのみ検証した方法です。`python`以外の言語や`zip`デブロイ以外で作成された`Lambda`で使用できる方法かは不明です。## 目標
– 既存の`Lmabda`を複製した新しい`Lmabda`を作成できるようになる。## 1.AWSコンソールで複製する方法
### 既存の`Lambda`の`code`の`copy`方法
– 複製したい`Lambda`のコンソール画面を開きます。
– 「関数の概要」セクションの真横にある「ダウンロード」をクリックします。
AWS S3, Lambda, EFS でお財布に優しい個人開発はじめました
## 開発の動機
個人的に欲しかったサービスを年末年始の時間を利用して開発してみようと考えていたのがきっかけで、なぜこのアーキテクチャにしたかというと、AWSのサービスを使いながら運用コストを抑えた開発をしたいという思いが、まず一番にありました。それと前から気になっていたサーバレスのLambdaを採用したかったのと、Frontの技術を個人開発しながら身につけたいという思いで、比較的コスパの良いアーキテクチャと思ったS3, Lambda, EFSという構成でスモールスタートしてみようと考えました。## どれぐらいお財布に優しくなったのか
直近の実績ベースで1日の運用コストは約0.5USDでした。1ヶ月30.5日で考えると15.25USD/Mで、仮に1USD=150円で計算すると、1ヶ月2,287.5円程度になります。ちなみに無料利用枠は使っていないので、アカウント今から作る人ならもっとお安くなるのではと思っています。個人的な比較対象として同じAWSのサービスでECSとRDBの構成だとこの倍の請求だったので、個人的には継続課金しても良いと思えるレベルまでコスト抑えられたと思います。
Lambda で OpenAI APIを実行する
Lambdaを使用しChatGPTで知られるOpenAIを実行してみました
## Lambdaの作成
#### 1. Lambda > 関数にアクセス。関数の作成ボタンから作成を始めます
![スクリーンショット 2024-01-12 11.43.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276326/9662e6df-d058-ec21-4126-82302728b985.png)
#### 2. OpenAI API キーを環境変数に登録
環境変数をして使えるようにするための設定です
設定>環境変数 の編集、環境変数の追加から追加します
CHAT_GPT_KEYという名前で登録しました
#### 3.レイヤーを作成
OpenAIのモジュールを読ませるためにモジュールをzip化しレイヤーに登録するのが一番良さそうです
Pythonをインストールしている環境で以下のコマンドで実行し、zipを作成します
“`
$ python3 -m pip install -t ./