- 1. 【AWS】AWS SAMが想像以上にバケモノかもしれないことに気づいてしまったかもしれない
- 2. PythonのLambda Layerを作成する方法
- 3. 【これ検索するの何回目だよ】API Gateway + Lambdaプロキシ統合でもう躓きたくない
- 4. Serverless frameworkで`prisma migrate`を実行する
- 5. 【AWS】EventBridge -> Lambda -> RDSのストプロ -> Slack通知の流れを構築する
- 6. Lambda関数のスケーラビリティについてまとめてみた
- 7. Python+AWS LambdaでWEBスクレイピングAPIを作成してみた
- 8. AWS Lambdaを使ってHULFT Squareを実行してみた
- 9. SES+SNS+Lambdaを使ってバウンスメール通知機能を実装しよう!
- 10. LocalStackにAWS SAMでデプロイしたLambdaにAndroidからアクセスしてみた
- 11. ChatGPTに質問しながらLambda関数を作成する
- 12. Amazon Bedrockの新機能「Prompt Flows」Lambdaノードを使ってみた
- 13. 100本ノックしてみたい中堅エンジニア 【AWS】~Lambdaについて簡単に機能紹介~ 3/100
- 14. Lambdaをコンテナイメージとしてデプロイする方法
- 15. 記事紹介:API に Lambda Monolith (別名:Lambdalith) を使うべきか?
- 16. CloudFormationを使ってLambdaとSQSを作成しよう!
- 17. GitHubActionsでLambdaとLambdaレイヤーの構築をしていて躓いた。
- 18. Node.jsランタイムでSJISのcsvファイルを出力するLambda
- 19. 【Nuxt 3とLambdaでTypeScriptの型を共有】:🔰エンジニアが感じたモノレポ構造の威力
- 20. API GatewayでLambdaを呼び出してCORS対応する方法
【AWS】AWS SAMが想像以上にバケモノかもしれないことに気づいてしまったかもしれない
どうもこんにちは。
今回は、AWSのセミナー内でお話に出てきた、AWS SAMについて調べたのでまとめてみました。
ちなみに私、感動しております。
# AWS SAMってなに?
**AWS SAM (Serverless Application Model)** は、サーバーレスアプリケーションをローカルで開発、テスト、デプロイするための強力なオープンソースフレームワークです。AWS SAMを使用するには、AWS SAM CLIというものをインストールする必要があります。
ちなみに、AWS SAM自体は無料で使用できます。AWS SAMを使用して作成したAPI GatewayやLambda関数に対してのみ料金が発生します。
https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/what-is-sam.html
# 通常、サーバーレスアプリケーションを作成するにはどうする?
通常では、以下のような構成でサーバーレスアプリケーションを構築すると思います。(最も
PythonのLambda Layerを作成する方法
# フォルダ直下構成
以下の構成が必要なようです
pythonディレクトリ内に必要なライブラリをインストールする必要があります
![lambda_layer.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1952885/460ae25f-ac39-183b-f78a-1cd5b212ba24.png)# 実際の作り方
1.任意のディレクトリ内にpythonディレクトリを作成する
2.pythonディレクトリに必要なライブラリをインストールする
“`
pip install boto3 -t python
“`
3.pythonディレクトリをzip化
“`
zip -r layer.zip ./python
“`
4.手順3でzip化したものをlayerとして登録する
[AWS Lambda Layersでライブラリを共通化](https://qiita.com/t_okkan/items/394a15577bd1aad46ec3#layer%E3%81%AE%E8%BF%BD
【これ検索するの何回目だよ】API Gateway + Lambdaプロキシ統合でもう躓きたくない
# はじめに
フロントエンドからAPI Gatewayを経由してLambdaを実行する時、毎回少しだけ躓きます、、、。
解決はするのですが、何度も同じことを経験しては忘れてを繰り返しているので教訓をまとめます!!!# 教訓
1. **統合レスポンスをクライアントに返却する際、lambda → API Gatewayのレスポンスは正しい形式である必要がある!**
1. **ライブラリによってPOSTの仕方が異なるので注意するべし!!**
1. **フロントのリクエストボディはparseして利用!!!**これだけです!あとは簡単!!
lambda統合機能最高!!!# 動作確認
## 1. **統合レスポンスをクライアントに返却する際、lambda → API Gatewayのレスポンスは正しい形式である必要がある!!**
API Gatewayのメソッドテスト機能で、以下のようなエラーが発生することがあります。
![cap05.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/
Serverless frameworkで`prisma migrate`を実行する
## この記事を書こうと思った理由
serverless frameworkとPrismaで開発をすることになったのですが、
スキーマを反映させるためのコマンド`prisma migrate`を
lambdaで実行するのにとても苦労したので、自分のした処理をここにまとめます。
本当はもっと良い方法があると思うので、知ってましたら教えてください。# 実行手順
## 1.Prismaインストール
PrismaとPrisma CLIをインストールします。
“`bash
yarn add prisma @prisma/client
“`Prisma CLIをインストールしたら、Prismaの設定を初期化します。
“`bash
yarn prisma init
“`このコマンドにより、prismaディレクトリが作成され、schema.prismaファイルが配置されます。
## 2. データベース接続の設定
.envファイルを開き、使用するデータベースに合わせて接続URLを設定します。
例えば、MySQLを使用する場合は以下のようになります。“`
【AWS】EventBridge -> Lambda -> RDSのストプロ -> Slack通知の流れを構築する
# 概要
EventBridge -> Lambda -> RDSのストプロ -> Slack通知の流れを構築しました。具体的にいうと、
「毎日9時に、プロシージャで実施した結果を、指定のSlackチャンネルに通知する」
という流れがゴールです。構築手順と注意点を解説します。
# 手順概要
1. ストアドプロシージャを作成する
2. Lambda用のSecurityGroupを作成する
3. Lambda用のIAM Roleを作成する
4. Lambda関数を作成する
5. LambdaをVPCに設定する
6. RDSのSecurity Groupを編集する
7. EventBridgeSchedulerを設定する# 手順詳細
## 1. ストアドプロシージャを作成するまず、今回使うSQLを該当のRDSにプロシージャとして保存します。
今回は、sample_tableのcreate_dateカラムが前日のもので、かつ、sample_noカラムに指定の文字列から始まるレコードが何件あるか、というSQLになります。“`count_number.sql
CREATE
Lambda関数のスケーラビリティについてまとめてみた
# はじめに
SAA(AWS Certified Solutions Architect – Associate)取得に向けて勉強を進めていく中でLambdaのスケーラビリティについてよくわからなかったため、まとめてみました。
資格取得を目指すだけの方は「Lambdaにはスケーラビリティがある」という認識だけで十分だと考えています。ただ、知識があって損することはないと思うのでそのような方でもできれば最後まで読んでいただけると幸いです。※Lambdaに関して資格勉強で学習しているだけで実際に触ったことはありません。
## 目次
**1.Lambdaとは**
**2.スケーラビリティとは**
**3.Lambdaのスケーラビリティについて**
**3-1.同時実行数とは**
**3-2.同時実行数の上限(クォータ)について**
**3-3.同時実行数の算出方法について**
**3-4.同時実行数と1秒あたりのリクエスト数の違いについて**
**3-5.スケーリングレートについて**
**3-6.プロビジョニングされた同時実行について**
**4.まとめ**
**5.参考文献
Python+AWS LambdaでWEBスクレイピングAPIを作成してみた
# Lambdaを使ってAPIを作りたい
![Screenshot 2024-08-30 131834.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722467/7fe54343-ed11-6453-664a-2bf239577cde.png)前から気になっていたAWSのサービス、Lambdaを使ってAPIを作成することができました。
コードはPythonで書いており、市町村の観光情報をスクレイピングして取得してjson形式で取得できるAPIです。どんな風に作ったか説明していきます。
# Pythonコード
## 必要なライラブリ
“`python
import json
import requests
from bs4 import BeautifulSoup
import urllib3
“`
json形式で取得するため、json
webスクレイピングに使用するrequests,BeautifulSpoup
SSL証明書がないという警告を無視するためのurlib3
(↑公開するなら対
AWS Lambdaを使ってHULFT Squareを実行してみた
# はじめに
こんにちは。すぎもんです:grinning:
以前、「[コマンドを使って外部からHULFT Squareを実行する方法](https://qiita.com/sugimon/items/beeaaa615d448848ff72)」をご紹介しました。
HULFT Squareは他のクラウド製品と合わせて活用することでサーバーを持たずに稼働させることが出来ます。そこで今回はサーバーレスコンピューティングサービスであるAWS Lambdaを使用して、HULFT Square を実行することが出来るか試してみます。
これにより、AWSや他のサービスから任意のタイミングでHULFT Squareを実行させることが出来ます。# 今回やること
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/4effa46b-f975-710d-c4c5-80375e9a1e0a.png)
今回は、AWSのLambdaを使用してHULFT Squareを実行してみたいと思います。
SES+SNS+Lambdaを使ってバウンスメール通知機能を実装しよう!
## 概要
SESを使ってメールを送信した際に存在しないメールアドレスの場合に検知できる機能をSES+SNS+Lambdaを使って実装する方法について解説します## 前提
– Pythonを使ってLambdaのコードを作成します## 実装
今回は
– S3
– Lambda
– SNSの3種類のリソースをCloudFormationを使って構築します
### S3の構築
Lambda用のzipファイルを格納するS3バケットを作成します“`yaml
AWSTemplateFormatVersion: 2010-09-09
Description: “S3 Bucket Factory Settings Stack”# ————————————-
# Metadata
# ————————————-
Metadata:
AWS::CloudFormation::Interface:
# パラメータの並び順
ParameterGroups:
LocalStackにAWS SAMでデプロイしたLambdaにAndroidからアクセスしてみた
## はじめに
– AWS SAM CLI for LocalStack を使ってアプリをLocalStackにデプロイできる
– Dockerでhttpdを起動した端末とスマホが同じネットワークにいれば、スマホのブラウザからWebページを閲覧できる…ということから、「Dockerで動いているLocalStackにデプロイしたLambda関数へ、同じネットワークのAndroidアプリからアクセスできるのでは?」などと思いつきました。試してみたところ、一応できたのでここに残しておきます
AWSとスマホアプリを連携させるケースを、不具合の混入や費用などの心配なくローカルで好き勝手に試したい、という方の参考になれば幸いですちなみに当方はAndroid専門なので、iOSについては言及しておりません。申し訳ありませんが、ご了承ください
### 追記
私のGitHubに以下の3点を含むレポジトリを共有しております。よければご参考ください
– LocalStackコンテナを起動するための docker-compose.yaml
– 簡単なSAMプロジェクト
– Lambda関数を呼び
ChatGPTに質問しながらLambda関数を作成する
# はじめに
今回、Lambda@Edge で利用する Lambda 関数を用意する必要があったのでそのコードを ChatGPT に書いてもらうことにしました。https://openai.com/chatgpt/
# 構成イメージ
今回は CloudFront + S3 という一般的な構成をベースに導入します。
また、ベースの構成はすでに用意済みの状態で、そこに Lambda@Edge を追加する内容となります。
![スクリーンショット 2024-08-28 10.16.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/f434b3b4-bad4-ff54-7ac2-302db02f0383.png)# 要件
CloudFront の場合だとデフォルトルートは `index.html` の補完を設定することができますが、
その他のパスでは補完がされません。
> 通常
> ○ https://cloudfronturl/ → https://cloudfronturl/inde
Amazon Bedrockの新機能「Prompt Flows」Lambdaノードを使ってみた
# はじめに
今回はAmazon Bedrockの新機能「Prompt Flows」のLambdaノードを使って、ユーザーから入力を受け取り、それをLambda関数で処理し、結果を返すシンプルなアプリケーションを作成してみました。
作成してみて分かったことも共有します。「Prompt Flows」は、ノードを配置して生成AIのワークフローを開発・管理できるサービスです。
https://aws.amazon.com/jp/bedrock/prompt-flows/
# 導入
アプリケーションの全体像は以下の通りです。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3806967/b2b1ae34-3da9-a237-c134-3d8933937439.png)
**①文字列の入力**
**②Lambda関数での処理**
**③処理結果の出力**
という流れになっています。**①文字列の入力**
Flow inputでは、文字列を入力してもらいます。
後ほど記述しますが、今
100本ノックしてみたい中堅エンジニア 【AWS】~Lambdaについて簡単に機能紹介~ 3/100
# はじめに
本記事では何かと利用することが多いLambdaについて、説明していきます。
# Lambdaとは?
– サーバーをプロビジョニングまたは管理することなくコードを実行できるイベント駆動型サービスです
– AWSでサーバーレスアプリーションを作りたいってなったら、必ずと言ってもいいほど出てきます:::note info
:x: サーバーレス = `サーバが存在しない`
:o: サーバーレス = `サーバの管理をAWSが行う`
:::では、Lambdaの各機能について紹介します
# 関数
Lambdaはまず関数を作るところから始まります。
関数は、Lambdaでコードを実行するために呼び出すことが出来る一機能になります。
作成し、任意のAWSサービスや処理から呼び出すことで処理を実行します、関数は以下の3つから作成します。
– `一から作成`:一からコードを書いてLambda関数を実装する場合に選択します。基本はこちらを選択することになると思います
– `設計図の使用`:AWSが用意したサンプルコードをベースに実装する場合に選択します。Lambdaを初めて
Lambdaをコンテナイメージとしてデプロイする方法
従来のZIPファイルによるデプロイに代わり、Dockerイメージを使ってLambdaをデプロイする方法をメモ
## ファイル
“`:構成
.
├── Dockerfile
├── app.py
└── requirements.txt
“`“`docker:Dockerfile
# ベースイメージとして公式のAWS Lambda Python 3.8ランタイムを使用
FROM –platform=linux/amd64 public.ecr.aws/lambda/python:3.8# Lambda関数コードをコンテナにコピー
COPY app.py ${LAMBDA_TASK_ROOT}# 必要なパッケージをインストール
COPY requirements.txt ./
RUN pip install -r requirements.txt# Lambdaハンドラーを指定
CMD [“app.lambda_handler”]“`
※M1 Mac上でビルドする場合、FROMに「–platform=linux/amd64」を指定してあげないと、
記事紹介:API に Lambda Monolith (別名:Lambdalith) を使うべきか?
## 序文
バックエンドAPIから非同期処理を切り出したくLambdaで設計した際に、以下のようなディスカッションをした。*「1つのLambdaに色々な処理を詰め込むモノリスLambdaはアンチパターンと言われているけど、処理ごとに作るのも開発速度が遅くなってしんどそう」*
その際にとても良い記事を見つけることが出来たのでメモ代わり&日本語の検索導線を増やしたい気持ちで紹介記事を起稿。
## 本題
https://rehanvdm.com/blog/should-you-use-a-lambda-monolith-lambdalith-for-the-api
紹介記事冒頭の意訳
*この投稿では、モノリスのLambda API関数(別名Lambdalith)について、APIエンドポイントごとの単一目的のLambda関数と比較して、賛否両論を検討する。
“ベストプラクティス”に挑戦し、APIに関しては多くの場合モノリスLambda関数の方が優れていると主張する。**【重要】
この投稿は、APIに面したLambda関数にのみ適用できる。
それ以外のものには、単一目的の関
CloudFormationを使ってLambdaとSQSを作成しよう!
## 概要
CloudFormationを使って非同期処理でよく使用するLambdaとSQSを作成する方法について解説していきます## 実装
– Lambdaを格納するS3
– SQS
– SQSのメッセージをトリガーに実行するLambdaの3種類のリソースをCloudFormationで作成します
## Lambdaを格納するS3
Lambdaを格納するS3を作成していきます
バケット内のオブジェクトは非公開にします“`yaml
AWSTemplateFormatVersion: 2010-09-09
Description: “S3 Bucket For Lambda”# ————————————-
# Metadata
# ————————————-
Metadata:
AWS::CloudFormation::Interface:
# パラメータの並び順
ParameterGroups:
– Label:
def
GitHubActionsでLambdaとLambdaレイヤーの構築をしていて躓いた。
# はじめに
今回はGitHubActionsを利用してLambdaとLambdaレイヤーを構築します。
LambdaとLambdaレイヤーを紐づける際に上手くいかなかった箇所や解決方法を備忘録として残していきたいと思います。# 目次
・つまづいたところ
・解決方法
・事前準備
・LambdaレイヤーのCloudFormation
・LambdaのCloudFormation
・Lambdaレイヤー構築のGithubActions
・Lambda構築のGithubActions
・動作確認
・最後に
・参考# つまづいたところ
Lambdaレイヤーを複数のLambdaに紐づけることとなり、
GitHubActionsでLambdaレイヤーとLambdaのCFnテンプレートを分けて構築することになりました。
そのため、Lambdaを構築する際にLambdaレイヤーの情報をテンプレート外から取得することになったのですが、Outputsで対応した際にバージョンまで取得することができず、躓いてしまいました。# 解決方法
デプロイをGitHubActionsを活用していたため、バージ
Node.jsランタイムでSJISのcsvファイルを出力するLambda
# 一覧データをcsv出力
データベースにはUTF-8で保管されているものの、
「ファイルの文字コードは **Shift-JIS** で(Excelでそのまま開きたいから)」
という要件があったとします。今回は **AWS Lambda(Node.jsランタイム)** で構築したアプリケーションだったので、その例です。
ポイントは以下2点です。
1. UTF-8からShift-JISへのエンコード
1. Lambdaペイロード制限を考慮してS3署名付きURLを利用## まずはcsvデータを生成
csv形式へのパースには[Papa Parse](https://www.papaparse.com/)を、エンコードには[encoding.js](https://github.com/polygonplanet/encoding.js)を使うことにしました。
“`npm install“`しておきます。DBから取得したデータ配列を渡して、csv形式&SJISエンコードした文字列を返す処理です。
“`javascript
const Papa = require(‘papa
【Nuxt 3とLambdaでTypeScriptの型を共有】:🔰エンジニアが感じたモノレポ構造の威力
## はじめに
こんにちは。入社2年目、実務経験約半年の駆け出しフロントエンドエンジニアです。日々の業務では主にNuxt、Vue、AWS、TypeScriptを使って開発を行っています。今回は、最近の開発で採用した「モノレポ構造」を通じて、型の共有がどのように役立つかについてお話しします。駆け出しのエンジニアの方にとって、少しでも参考になる情報をお届けできれば嬉しいです。
## 現在の開発環境
私の現在の開発環境は以下の通りです:– フロントエンド: Nuxt 3
– バックエンド: AWS Lambda (Node.js)
– 共通言語: TypeScript## 直面していた悩み
フロントとバックで別々のリポジトリに分かれていると、同じ型を使いたいのに、変更があるたびに手作業で同期しなければならず、とても面倒だなあと思っていました。
結果として、型の不一致が原因でエラーが発生したりして、開発スピードが落ちることもありました。## 型共有の課題とモノレポ構造との出会い
フロントエンドとバックエンドで型を共有する一般的な方法としては、以下のようなものがあります:1
API GatewayでLambdaを呼び出してCORS対応する方法
# はじめに
こんにちは、もちもちMAXです。
今回はAPI Gatewayでプロキシ統合したLambdaを呼び出す時にCORS対応する方法を説明します。作成するのはREST APIで適当なパラメータをbodyに格納してPOSTできるところまでをやっています。# 手順
ざっくりとした手順は下記の通りです。
1.API GatewayでLambda関数を紐づけたREST APIを構築
2.Lambda関数にCORS対応を追加
3.CORS対応確認# Lambda関数の作成
各手順の説明の前に、今回呼び出すAPIの実体であるLambda関数を作成します。
![image (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463753/97bb1fea-bbf5-6d0b-9f3c-f46a575f60f2.png)Lambda関数のコードは下記の通りです。
“`Python
import jsondef lambda_handler(event, context):
# OPT