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

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

Firehoseのレコード出力の設定をCDKで構築する(改行の区切り文字/動的パーティショニング)

# 背景
Firehoseでは、1行1レコードとして出力したり、Lambdaで1レコードごとに処理するためには、追加での設定が必要です。
画面からだと簡単に設定できますが、CloudFormationおよびCDKでは、設定方法が直感的とは言い難いです。

この記事では、CDKのみを使用して、こちらの画像の状態にする方法を紹介します。

![スクリーンショット 2024-01-18 8.52.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3468968/31379ea2-7606-ab85-f8e2-dc3593f89f88.png)

## 設定項目解説
### New line delimiter/改行の区切り文字
設定することで、各レコードが1行ごとに出力されます。

“`json
{“id”:1}
{“id”:2}
“`
JSONL形式になるため、後続の処理でS3から取り出した時に処理しやすくなります。

#### 設定しない場合に困ること
これを設定しないと、いわゆるJSONL形式では

元記事を表示

Windowsで作成したLambdaレイヤーで”Unable to import module”エラーが発生した場合の対処(の一つ)

ローカルのWindows環境で外部ライブラリの動作確認をした後に、`pip install -t`してLambdaレイヤーを作成したらLambdaで以下のエラーが発生した際の調査メモ。
※他の原因(循環参照)でも同じエラーが発生するようなのでどちらが原因かは適宜判断

`[ERROR] Runtime.ImportModuleError: Unable to import module’lambda_function’: cannot import name ‘xxx’ from partially initialized module ‘xxx’ (most likely due to a circular import)
`

# 環境
– ローカル環境:Windows
– Lambda:Python

# 原因
そのまま書いてありました。
要はライブラリにバイナリを含む場合は、インストール時の環境(Windows)とLambda実行環境(Amazon Linux)の差異でエラーになるようです。

> NumPy や pandas などのコンパイル済みコードを含む Python パ

元記事を表示

【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part3

# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。
前回までの内容は以下をご覧ください!
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1](https://qiita.com/mcen/items/24f20be7a3094dfef6a0)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part2](https://qiita.com/mcen/items/7d978203ef22412309f2)

# 今回の実施内容
前回Part2の内容を行いました。今回はGlueの設定を行います。
* Part1
* JSONのダミーデータの作成
* S3バケットの作成
* Part2
* Lambda作成
* S3イベントとLambdaの連動
* Part3
* Glueの設定
* Part4
* Athenaの設定
* Part5
* Quicksightでの可視化

## AWS Glueとは?
AW

元記事を表示

【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part2

# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。
前回までの内容は以下をご覧ください!
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1](https://qiita.com/mcen/items/24f20be7a3094dfef6a0)

# 今回の実施内容
前回Part1の内容を行いました。今回はLambda関連の設定を行います。
* Part1
* JSONのダミーデータの作成
* S3バケットの作成
* Part2
* Lambda作成
* S3イベントとLambdaの連動
* Part3
* Glueの設定
* Part4
* Athenaの設定
* Part5
* Quicksightでの可視化

## Lambda作成
S3バケット「**transbucket-2024**」のinputフォルダにアップロードしたjsonファイルを
csvファイルに加工後、outputフォルダに格納するLambdaを作成していきます。

元記事を表示

【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1

# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。

# はじめまして!
AWS認定DASの資格学習として出題サービスを使用した構成を組んでみようと思い
初投稿をしてみました。
私自身の経歴はインフラエンジニアとして2年半設計構築に携わってます。
SAAの資格学習時(昨年取得出来ました!)に実際に携わったことのあるサービスに関しては理解度が格段に上がることを実感したためこのような取り組みを行っております。

# 実現したい構成
早速ですが実現したい構成は以下です。
作成リージョンはap-northeast-1とします。
構成図

>①JSONファイルをS3(inputフォルダ)にアップロード
②S3にJSONファイルがアップロードされたことをトリガーにLamb

元記事を表示

【AWS】CloudWatchLogs→Lambda→SQS連携方法

## はじめに

本記事は Lambda を使ったことが無い自分の備忘として、
Lambda 構築までの流れをメモした記事となります。

## 構成

「CloudwatchLogs」→「Lambda」→「SQS」のシンプルな構成とします。
■処理フロー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1764568/e8d2b446-752d-f000-6fe7-d478245d3f19.png)

## 実装してみた

### Amazon SQS 作成

今回の構成で SQS は Lambda からのメッセージをキューに保持するだけなので、
以下 CLI コマンドで簡易的に作成。

“`bash
aws sqs create-queue –queue-name
# 例:aws sqs create-queue –queue-name testqueue
“`

### AWS Lambda 作成

今回は AWSCLI を利用して Lambda の作成を行う。

元記事を表示

AWSLambdaを使用してRDSからCSVを取得してメール送信

# 1.はじめに
はじめまして!株式会社TechoesインフラチームのYです!
今年の4月で2年目を迎える初心者のクラウドエンジニアです。
今回からTechoesの採用強化、学習内容のアウトプットを目的としてQiitaで技術ブログを書いていこうと思います。
第1回目として最近学習したAWSLambdaを使ってRDSからCSVを取得してメール送信する手順を投稿します。

# 2.前提
– 言語:Python 3.10
– ライブラリ:pymysql
※layerとしてS3に保管
– RDS:Aurora MySQL
– RDSの認証情報はSecretManagerから取得
– メール送信にはSESを使用
# 3. CFNテンプレート
Lambda関数を作成・管理するテンプレートです。

レイヤーはあらかじめS3に保管しておいたものを使用します。
“`yaml:lambda.yaml
Resources:
LambdaRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:

元記事を表示

【AWS CDK / SQS+Lambda】SQSからのLambda呼び出しについて検証してみた

# はじめに
SQSトリガーのLambda実行について、色々と検証してみたくなったので試してみた。

## 対象とする読者
* SQSの基本は知ってるけど、細かい動作まで知りたい人
* SQSトリガーのLambda実行環境をcdkで構築したい人

# 結論)わかったこと

* SQSのキューがFIFOの場合、紐づくデッドレターキュー(DLQ)も強制FIFO
* LambdaのOnSuccess/OnFailureに紐づけるキューはFIFO不可
* LambdaのDLQもFIFO不可
* 最大受信回数到達時、Lambdaエラー→可視性タイムアウト→DLQへ送信の順番
* SQSからのLambda実行は非同期呼び出しではない
→ LambdaのOnSuccess/OnFailure送信先やDLQは効かない

# 検証環境構築

以下の環境を構築する。

元記事を表示

AWS Lambda(Python)からOpenAIのGPT4のAPIを呼び出してみた

[Supership](https://supership.jp/)の名畑です。[スナックバス江](https://snackbasue.com/)は肩の力を抜いて見られるのでいいですね。年齢を重ねる毎にこういう作品が好きになっていきます。

## はじめに

[AWS(Amazon Web Services)](https://aws.amazon.com/jp/)でWebアプリを作ることがあるのですが、その過程で触れてきたものについて、せっかくなので要点だけを抽出して残しておくことにしました。

特に目新しい内容はありませんが、**AWS**や**OpenAI**のアカウント作成も含めて一通りの流れを残すので、いい具合の備忘になればと。

今回は[Lambda](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html)を経由して[OpenAI](https://openai.com/)の**API**を叩くまでをまとめます。

## Lambdaとは

> AWS Lambda は、サーバーをプロビジョニングま

元記事を表示

【AWS CDK入門】AWS CDKでAPI Gateway + Lambdaを構築してみた

# はじめに
AWS CDKってドキュメント見てもよくわからん…ってなったので、実際に動かしてみた。
すると、CDKすげええええぇってなったので、その感動を共有したくて記事を書いてみた。

### 対象とする読者
* AWS CDKとはなんぞやって人
* AWS CDKをお金をかけずに動かしてみたい人

# AWS CDK のこれだけ知っておけばOK

AWSのIaC (コードでインフラを管理)といえば、CloudFormation!
→ しかし、以下の課題が・・・
* YAML/JSONなので、ループや条件分岐などを用いたリソース定義が書けない
* 大規模なインフラだと、一から十まで書くの大変

これらを解決するのが、AWS CDK!
→ CloudFormation用のテンプレートをプログラム言語から生成しちゃおう

:::note
* TypeScriptやPythonなどでリソースを定義するのでループなど自由自在
* ライブラリでリソースが抽象化されているので記述量が大幅減
(抽象化 = REST APIを作るといったパターンが用意されている)
:::

# AWS CD

元記事を表示

CloudFront + Lambda@Edgeを利用して、user-agentに応じて異なるwebページを表示させる

CloudFront + S3でウェブページを表示する仕組みは以前作ったことがありますが、
「**AWS上の仕組みを使ってスマートフォンとPCからのアクセスで、異なるwebページを表示させることってできるのかな?**」と思ったので、実践してみました。

## 目標
・スマートフォンからのアクセス時は「スマートフォン専用サイト」
・PCからのアクセス時は「PC専用サイト」を表示させる

## 条件
・user-agentに「iPhone」「Android」が含まれている場合にスマートフォン、含まれていない場合はPCからのアクセスと判断する
・表示させるのはS3に配置したhtmlファイル

## 構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2969669/018162c8-072d-e62e-0585-2ab732d79111.png)

## 流れ
①S3に2つのhtmlファイルを配置する
②Lambda@Edgeを作成する
③CloudFrontのディストリビューションを作成する

元記事を表示

AWS LambdaでECRのコンテナイメージを指定したら、エラーが出た。

こんにちは、ユーゴです。今回は、私がコンテナイメージからLambdaを作ろうとした時に遭遇したエラーと解決策を紹介します。
難易度は、初歩レベルです。

# 問題
以下のようなエラーが出る
![スクリーンショット 2024-01-21 15.44.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/9f3108ea-4f10-fccc-bd2c-22b0f44d2666.png)

> Source image xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/xxxxxxxx is not valid. Provide a valid source image.

# 原因
リポジトリ自体のURIを指定してた
![スクリーンショット 2024-01-21 15.45.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/8349e5bc-a

元記事を表示

LangChainをAPI化するLangServeをLambda上で動作させるのはめちゃ簡単デス

少し前にLangChain開発元から新しいツールとしてLangServeというものがリリースされています。

https://blog.langchain.dev/introducing-langserve/

> LangServe is the easiest and best way to deploy any any LangChain chain/agent/runnable.

生成系AIを使ったAPIを簡単に作成し利用できる仕組みで、プロダクション環境でどんどんLangChainを使ってねというメッセージと捉えました。

イメージとしてはこんな仕組みです。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/63dc3abd-a710-3717-b6b0-ffc45585644e.png)

FastAPI上で動作し、API仕様が定められている感じです。

* Invoke API
単一の入力で処理を実行する
* Batch API
複数の入力で処理を実行する
*

元記事を表示

【Ruby】Procの基礎を理解する

# Procクラス
https://docs.ruby-lang.org/ja/latest/class/Proc.html

– ブロックをオブジェクトとして扱いたい時に使用するクラス
– ブロック
– メソッドの引数として渡すことが出来る処理のまとまり
– `do .. end`, `{ .. }`
– Procは、クロージャに相当する

“`rb
i = 100
pr = Proc.new { i += 1000 } # proc { i += 1000 } も同様

p pr.call #=> 1100
p i #=> 1100

p pr.call #=> 2100
p i #=> 2100
“`

# クロージャとは

>[手続きをオブジェクトとして扱う機能があります。このオブジェクト化された手続きのことをクロージャと呼びます。](https://docs.ruby-lang.org/ja/latest/doc/spec=2fintro.html#:~:text=%E5%88%B6%E5%BE%A1%E6%A7%8B%E9%80%A0%E3%81%

元記事を表示

Lambda Node.js 16 EOL 対応とは / AWS

# Node.js よりも前に自分が EOL

気が付けば2024年になりました。

昨年は途中で気持ちが折れたものの現役ビジネスマンとして
有効期限が切れないように今年もよろしくお願いいたします。

# Lambda のランタイムを探る

今更次郎さんではありますが
現在新規に作成する Node.js は v20 が初期設定になっているみたい

かつて環境構築時に最新であった Node.js 16 は
気持ちに含まれる OpenSSL1.1.1 が 2023年9月11日にEOL で完了。

ただやさしい AWSでは気にせずサポートを継続してくれておりました
ただ気が付けば 2024年6月12日が廃止日。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3136487/f7038555-3dca-97bc-b28f-75ff53fa834f.png)
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-runtimes.ht

元記事を表示

Misskeyに定期投稿するbotをAWS LabmdaとEventBridgeで作る

# はじめに
サクッと作れます。
「イベント開催時までのカウントダウンをしてMisskeyを盛り上げたい」などにお役立てください。

## 技術
Python
AWS lambda
AWS EventBridge
## 作業手順

1. misskeyでAPIキーを取得する
1. Lambdaにアップロードするファイルを作る
1. Lambdaの実行環境を整える
1. EventBridgeで定期実行設定
1. Lambdaにファイルをアップロードして動作確認

# 制作
## 1. misskeyでAPIキーを取得

1. 設定 > API >アクセストークンの発行を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/505609/6280c2db-292b-7e68-f3c9-fc3ce45f2fe2.png)

2. 全部許可しちゃう(適宜必要なものを許可すれば良い)
![image.png](https://qiita-image-store.s3.ap-northeas

元記事を表示

未来のレジ:AWS Rekognitionと画像分析の力

# はじめに

日本の人口減少とAIの進化が目まぐるしい昨今ですが、単純作業は無人化されていくだろうという推論のもと、未来レジについて考察してみた!

# やりたいこと

Amazon Rekognitionを用いて、画像認識した商品を、データベースにある価格表と照らし合わせて商品の価格を表示する。
これを構成図で書くとこんな感じ。

![構成図.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2840619/a4cc4730-7f4d-af56-249b-a591886fc8a6.jpeg)

# やってみた

さて、数々の困難を乗り越えほぼ完成したのですが
膨大な構築作業となるので需要がありそうでしたら続きをまた書きます。

続きが気になる方は、いいね、コメントいただけますと幸いです

元記事を表示

ネットに繋がっていないはずのVPC Lambdaをどうして呼び出せちゃうんですか

# はじめに
VPC Lambdaをプライベートサブネットに配置し、手元のPCのターミナルからaws lambda invokeコマンドを実行すると呼び出すことができます。Lambdaがネットに繋がってないのになんで叩けるんや…と思ったので少し調べて見ました。

# VPC Lambdaの構造

VPC Lambdaとは言いつつ、Lambdaが実行されるのは**ユーザーが作成したVPC内ではありません**。
AWS Lambda Service VPC というLambda Service管理のVPCがあり、そこにLambdaが配置されています。かわりにユーザーが作成したVPCにはENIが作成されます。LambdaはENIを経由して、ユーザーが用意したVPC内のリソースにアクセスします。
このENIのことをHyperplane ENIと言うそうです(なんかかっこいいですね)。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2703223/51eb67a6-0a13-0379-1184

元記事を表示

災害ボランティア情報クローラーを作ってLambdaで更新差分チェックをした

今後も似たようなことをやりたくなることはありそうなので、備忘録的にもここに記載
クローラーや差分チェックの話ではなくLambdaの定期実行の話

# やったこと

災害ボランティアの更新情報があると良いなぁと思ったため、その情報を取得するための定期的な情報取得で更新があるかを確認しようというものです。

https://docs.google.com/spreadsheets/d/1ToG7uRymeSZbEJbecd-wvBb3XtXP6t2iXsBAfrwhtd4/

こちらにあるリンク集のURLで、更新があったかどうかを確認を行います。
更新があったか、なので更新前の状態を取っておく必要があります。
更新前の状態と結果のファイルが生成されます。

結果のファイルから見られるようにしたサイトが下記になります。

https://miyawa-tarou.com/lab/volunteer_links.php

# コード

https://github.com/miyawa-tarou/volunteer_crawler

言語はPython
URLリストは公開しているSprea

元記事を表示

terraform-aws-modules/lambda/awsとPoetryを使ってLambda Layerを作成

### 課題

Terraformの `terraform-aws-modules/lambda/aws` と `poetry` を利用してLambda Layerを作成したい場合の方法です。

基本はドキュメントの例にあるように `create_layer = true` を設定すれば良いのですが、そのままドキュメント通りに実装すると、`Unable to import module` となります。

https://registry.terraform.io/modules/terraform-aws-modules/lambda/aws/latest

これは、こちらに記載のある `python` ディレクトリ配下にモジュールをインストールする構造を実現できません。

https://docs.aws.amazon.com/lambda/latest/dg/packaging-layers.html

### 実現方法

`poetry_install` と一緒に、`prefix_in_zip = “python”` とするとLambda Layerとして以下のように定

元記事を表示

OTHERカテゴリの最新記事