Lambda関連のことを調べてみた

Lambda関連のことを調べてみた

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

元記事を表示

ServerlessFrameworkを使って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 ./

元記事を表示

LambdaでPandasとMatplotlibを使う時の注意点

# はじめに

LambdaでPandasとMatplotlib(外部ライブラリ)を使おうとしたときにハマったので、備忘録として残しています。

# Lambdaの『250MB制限』の壁
>デプロイパッケージ (.zip ファイルアーカイブ) のサイズ
>50 MB (zip 圧縮済み、直接アップロード)
>250 MB (解凍後)
>このクォータは、レイヤーやカスタムランタイムなど、アップロードするすべてのファイルに適用されます。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-limits.html

# 外部ライブラリは『Layer』を用意する
**Pandas**
– AWSレイヤー(AWS が提供するレイヤー)
– ARN指定(arn:aws:lambda:ap-northeast-1:770693421928:layer:Klayers-p39-pandas:22)

**Matplotlib**
– ARN指定(arn:aws:lambda:ap-northeast-1:77069342

元記事を表示

AWS Lambdaのコールドスタートとウォームスタートの挙動

::: note
この記事はMIERUNEの朝LT会で発表した内容を公開しているものです
:::

# はじめに

https://aws.amazon.com/jp/builders-flash/202402/lambda-container-runtime/?awsf.filter-name=*all

– AWS Lambdaでコンテナを動かす記事が公開されました。いつもLambdaを深堀しています

# Lambda=サーバーレス

– Lambdaはサーバーレス実行環境です。基本的に、処理の実行時にサーバーリソースが充当されます
– =関数を実行しない限りは、サーバーリソースを必要としない
– このサーバーリソースの充当を行うケースを「コールドスタート」と呼びます。ある程度の時間がかかります(数秒はザラにかかる)
– ただし、一度コールドスタートしていると、二回目の関数実行時にはコールドスタートは必要ありません(=ウォームスタート)
– ウォームスタートの有効時間は明言されていない

# ウォームスタート時の挙動

– ウォームスタート時は:

元記事を表示

【2023/10アップデート】Amazon EventBridgeのワイルドカードフィルターについての検証

# はじめに
今回は2023/10/3アップデートの【Amazon EventBridgeがルールでのワイルドカードフィルターのサポートを開始した件】についての検証結果をご紹介いたします。

# 目次
・検証するアップデート内容について
 ・prefix・suffixとの違い
 ・簡単な図解
・利用サービスと準備するもの
・検証方法
・環境構築
・検証結果
・注意
・おわりに
・参考

# 検証するアップデート内容について
**Amazon EventBridgeのルールにおいて、** アップデート前まではワイルドカードが使用できなかったが、今回のリリースにより**ワイルドカードフィルターがサポートされるようになった**というのがアップデートの内容です。

https://aws.amazon.com/jp/about-aws/whats-new/2023/10/amazon-eventbridge-wildcard-filters-rules/

# prefix・suffixとの違い
今回のアップデートの以前から、EventBridgeのルールでは、「prefix」「suffix」

元記事を表示

【AWS】S3-APIGateway-Lambda間リクエスト・レスポンス確認方法

## はじめに
CORSエラーなどが解消せず、
リクエスト/レスポンス情報を見たい経験はありませんか?

対応方法やエラー発生時の切り分けをまとめた備忘になります。

## 直面した問題
静的ホスティングしているS3からAPIGateway経由でLambdaを呼び出そうとした時に、
CORS関連のエラーが発生
> CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.

## 結論
APIGatewayでCORS設定に必要な設定項目が不足していたためエラーが発生

## 確認方法
### ブラウザ開発者ツールによるリクエスト確認
1. F12を押下してブラウザに備わっている開発者ツールを表示
2. Networkを選択すると各リ

元記事を表示

Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your functionに遭遇した

### 起こったこと

“`bash

│ Error: putting CloudWatch Logs Subscription Filter (subscription-filter): InvalidParameterException: Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your function.

│ with aws_cloudwatch_log_subscription_filter.this,
│ on main.tf line 34, in resource “aws_cloudwatch_log_subscription_filter” “this”:
│ 34: resource “aws_cloudwatch_log_subscription_filter” “this” {

“`

CloudwatchLogsのロググループにサブスクリプションフィルターを通してL

元記事を表示

【実務で使えるLambda】describe_instancesで色々やってみる

# はじめに
実際に実務で扱ったLambdaの汎用的なコードを備忘録として残しています。
(※機密情報は載せてないのでご安心ください)

# インスタンスIDをリストで取得してみる
とりあえずこれをコピペすればOK
“`python
import boto3

client = boto3.client(‘ec2′, region_name=’ap-northeast-1’) # リージョンは任意

instances = client.describe_instances()

instance_ids = [] # 空のリストを用意

for reservation in instances[‘Reservations’]:
for instance in reservation[‘Instances’]:
instance_id = instance[‘InstanceId’]
instance_ids.append(instance_id)
“`

# インスタンスに付いているタグ名をリストで取得してみる
さっき取得した`ins

元記事を表示

AWS Lambdaで日本時間を扱う

AWS Lambdaの関数内で、日本時間をUNIX時間に変換する処理を実装した時に、9時間足されたUNIX時間に変換されてしまいました。
コードは下記の感じ。
“`csharp
if (DateTimeOffset.TryParse(input, out DateTimeOffset dateTimeOffset))
{
DateTime dateTime = dateTimeOffset.DateTime;

long unixTimestamp = ((DateTimeOffset)dateTime).ToUnixTimeSeconds();
return unixTimestamp.ToString();
}
else
{
return string.Empty;
}
“`
`input`に日本時間(フォーマット:`2024-01-01T00:00:00+09:00`)の文字列が入ります。
上にコードを示しましたが、このコードには特に問題はありません。

# 解決方法
Lambdaの環境変数を追加する。
– キー:`TZ`
– 値:`Asia/

元記事を表示

コスト効率向上!「WakeOnLambda」CDK Constructが登場

## 背景

Amazon EC2インスタンスの常時起動にはコストがかかります。サービスが必要ない時間帯でもインスタンスが動いていると、無駄なコストが発生してしまいます。今回は、WebサービスにアクセスするだけでEC2インスタンスを起動できる「WakeOnLambda」CDK Constructを開発し、その利点について紹介します。

## コンストラクトの概要

「WakeOnLambda」は、AWS CDKを使用して、特定のURLにアクセスすることでEC2インスタンスを起動するLambda関数を簡単に構築できるConstructです。これにより、ユーザーは手動での操作なしに、Webサービスへのアクセスを通じてインスタンスをスタートできます。Construct Hub のリンクはこちら

[![View on Construct Hub](https://constructs.dev/badge?package=wake-on-lambda)](https://constructs.dev/packages/wake-on-lambda)

Construct Hubへの登録は以下の

元記事を表示

Step FunctionでのループをCDKで試したメモ

## 概要
Step Functionの理解を深める。
[Lambda を使用してループを反復する](https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/tutorial-create-iterate-pattern-section.html)をCDKで書いてみた。

## callbackとreturnの書き換え
例では戻り値をcallbackに渡しているが、冗長なのでreturnで返す形に書き換えた。
([Node.js の AWS Lambda 関数ハンドラー](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/nodejs-handler.html))

[ソースコード](https://github.com/hibohiboo/aws-cdk-v2/blob/2046e79638a2000e1f791b8aaf98c669379be79e/cdk/lib/step-functions-stack.ts)

以下の2つのソースは等価となる。
“`js
exp

元記事を表示

Amazon bedrockのSample serverless-pdf-chatを日本リージョンで動かしてみた

## はじめに
部内のナレッジをRAGで活用しようと思い、まずはRAGの理解深耕とBedrockがGAされたこともありaws sampleから試してみました。
今回は下記を用いて実施しています。
https://github.com/aws-samples/serverless-pdf-chat

FrontendはClientPCで動作させるので下記のようなイメージになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922657/dd716d4a-7f82-30be-85e0-e90789a7d84f.png)

## リージョンをap-northeast-1にする
GitのREADMEに以下のように記載があるので、従って修正します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922657/552f96db-75f0-76ff-389f-fe9d345aca84.png)

元記事を表示

OTHERカテゴリの最新記事