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

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

【AWS】Lambdaで署名付きURLを作成する実装例【署名付きURL】

## はじめに
以前APIGatewayとLambdaの連携についての記事を投稿しましたが、この構成の使用例として、Lambda関数でのS3ファイルの署名付きURLを生成して返す実装について投稿します。

[APIGateWayとLambdaの連携についての記事]
https://qiita.com/Nana_777/items/0ce03f59045aa04401bc

## 署名付きURLを利用するメリット
### 一時的なアクセス制御
署名付きURLは有効期限を持ち、期限が切れるとアクセスが拒否されます。これにより、一時的にアクセスが必要な場合に、不要にアクセス権を与え続けることを避けることができます。

### 簡単なアクセス管理
署名付きURLを使用することで、AWS Identity and Access Management (IAM) ポリシーの設定が簡略化されます。特定のS3オブジェクトに対するアクセス許可を一時的に発行でき、必要がなくなれば署名付きURLを無効にできます。

### 安全なデータ転送
署名付きURLはHTTPSプロトコルを使用して生成され、データの転

元記事を表示

AWS Lambda

AWS Lambda では、Amazon EventBridgeによってイベントスケジュールに沿ったLambda関数を設定する。

他のAWSリソースと連携するLambdaファンクションを作成する際は、**IAMによる実行ロールをLambda関数に設定**してアクセス権限を付与することが必要。
デフォルトのタイムアウトは3秒で、AWS Lambdaのリクエストあたりの最大実行時間は900秒である。

予測分析処理アプリケーションは外部の画像識別APIを利用して構成され、処理するデータ容量も大きくない。そのため、画像識別APIを呼び出して解析を実行するLambda関数を作成することで、EC2インスタンスなどのサーバーを用いることなく、コスト効率が良いアプリケーションを構築することが可能である。

## S3との組み合わせ
Amazon S3 イベント通知機能を使用して、S3 バケットで特定のイベントが発生したときに通知を受け取ることができる。S3イベント通知からLambda を起動して、ファイルを処理することができる。Amazon S3 は、オブジェクトを作成または削除するときに、

元記事を表示

Rust・AxumのDockerイメージをAWS Lambdaにサクッとデプロイする(Lambda Web Adapter)

先日こんな記事を書きました!

https://qiita.com/nokonoko_1203/items/57fbbdddbf7975a1d803

Rustの「Axum」というWebAPI用のフレームワークを利用して、レイヤードアーキテクチャでTodoアプリを作る記事になります。

その過程でちょっとこだわってDockerfileを作成したので、せっかくなのでこれをAWSのLambdaを使ってサクッとデプロイしてみようと思います!

Lambda Web Adapterという比較的最近リリースされた機能を利用すると、Dockerイメージをほんの数分でデプロイできるので、今回はこちらを利用していきます!

– 参考記事
– [Lambda Web Adapter でウェブアプリを (ほぼ) そのままサーバーレス化する](https://aws.amazon.com/jp/builders-flash/202301/lambda-web-adapter/)

## Dockerfileを作成

僕の書いた記事でも紹介していますが、今回はこちらのリポジトリを使っていきます。

h

元記事を表示

AWS SAMを使ってローカルでLambdaを実装、AWSにデプロイしてみた

## 概要
AWS SAMを使用することでサーバーレスアプリケーションを簡単に実装〜デプロイまですることができたので共有したいと思います。

## 対象者
– AWS SAMに興味がある方
– サーバーレスアプリケーションに興味がある方
– Lambda関数を簡単に実装〜デプロイしたい方

## 環境
– M1 Mac
– VScode
– Docker Desktop

## 目次
– 前提
– やってみた
– 最後に

## 前提
– awsアカウントの発行
– aws cliをインストール
– aws configureでアクセスキーとシークレットキーを設定

## やってみた
簡単なLambda関数を作成し、`sam build`して`sam deploy`していきます。

### AWS SAMの準備
SAMをインストールしていきます

[AWS SAM CLI のインストール – AWS Serverless Application Model ](https://docs.aws.amazon.com/ja_jp/serverless-application-

元記事を表示

[Lambda][FCM]LambdaからFlutterアプリに向けたPush通知を実行する

FCM経由でFlutterアプリにPush通知を送るにあたり、Lambda(それもPython)を使った記事が少ないと感じたので投稿します。

## はじめに

FCMコンソール側の設定・Flutterアプリ側の実装は世の中にHowToが溢れているので割愛します。

https://firebase.google.com/docs/cloud-messaging?hl=ja

https://firebase.google.com/docs/cloud-messaging/flutter/client?hl=ja

LambdaでFirebase Admin SDKを使用した、Push通知送信リクエスト実行方法のみ記載したいと思います。
なんでわざわざLambdaなのかと言われると、単にAWSで他のサービスを利用しているため選択肢に挙がったまでです。

![スクリーンショット 2024-01-05 16.55.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3661825/d7be1d85-b85

元記事を表示

EventBridge スケジュールでLambdaを定期実行する

# 目次
1. はじめに
1. CloudWatch ロググループ作成
1. Lambdaを用意する
1. ポリシー、ロールの作成
1. Lambdaの作成
1. EventBridge スケジュールの設定
1. ポリシー、ロールの作成
1. スケジュールの作成
1. 動作確認
1. 最後に

# はじめに
最近、知識をアウトプットできていなかったので、今年からちょこちょこやっていきます!
手始めに簡単なところからということで、最近触れているAWS関連の記事です。
ほかに同じような内容の記事があるかもしれませんが、できるだけ差別化できるように努力しますので、ご容赦ください。

# CloudWatch ロググループ作成
ではでは、早速やっていきましょう。
まずは、Lambdaの動作確認のために、CloudWatch ロググループを作成していきます。
設定は以下です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209767/92d1aafe-7daf

元記事を表示

Appsheet API を Lambda で送信する方法

## はじめに

AppSheetは、ユーザーがコーディング知識なしでカスタムモバイルアプリを作成できるプラットフォームです。

AppSheet APIを使ってAWS Lambda関数からデータを操作する方法について解説します。
この記事では、AppSheetのAPIを使って、AWS Lambda経由でデータを操作する方法に焦点を当てています。
API Keyの取得方法からLambda関数の作成、APIの利用方法までを順を追って説明します。

## もくじ

1. [AppSheet API Key を取得する](#AppSheet-API-Key-を取得する)
2. [Lambda](#Lambda)
– [Lambda Layer を作成する](#Lambda-Layer-を作成する)
– [Lambda 関数を作成する](#Lambda-関数を作成する)
3. [参考](#参考)

## AppSheet API Key を取得する

AppSheet APIを使うには、API Keyを取得する必要があります。
以下の手順でAPI Keyを取得してください。

元記事を表示

S3 から Google Drive へ Lambda を使ってファイルアップロード

# はじめに

この記事では、AWSのLambdaを使用してAmazon S3からGoogle Driveにファイルをアップロードする方法を紹介します。
Google Drive APIを活用することで、プログラム的にドライブ内のファイル操作が可能になります。

# S3 から Google Drive へ Lambda を使ってファイルアップロード

## Google プロジェクトの作成

画面を見ながら操作したい方は、[こちら](https://qiita.com/w2or3w/items/b66a4a8e45e6001a9c46)を参考して作業を進めて下さい。

1. **Google Drive API を有効にする**
– Google Cloud Platformで新しいプロジェクトを作成し、Google Drive APIを有効にします。

2. **Google Cloud でサービスアカウントを作成する**
– Google Cloud Platformでサービスアカウントを作成し、必要な権限を付与します。

3. **サービスアカウントの秘密鍵を作

元記事を表示

【個人開発】草生えてないと怒ってくれるBOTを作った

明けましておめでとうございます。

新年早々少し個人で開発したのでそのアウトプットとして投稿させていただきます。

全てのツールを無料枠で抑えて作ることができるので、個人で開発してデプロイまでしてみたいと思っている人に参考になれば良いなと思います。

## 作ったもの

草(commit)がされていない場合にはその日の夕方に通知を送ってくれるLineのBOTを作りました。

**Githubリンク**

https://github.com/yuta-2001/go-no-commit-notify

## 作成動機

– 新たな年が始まって、より成長できる年にしたく継続を促せるようなものを作りたかった。
– これまで触れていないものを使って何か作ろう、自分の技術の幅を広げようと思ったから。(Goも含めて全て開発で使ったことはなかったです。)

## 使用技術・構成

– AWS Event Bridge (cron)
– AWS Lambda
– Line Notify
– Github GraphQL
– Golang

(コンテナ化(Docker)は図に乗っていますが、現在進行

元記事を表示

AWS SAMでPrismaを使ったAWS Lambdaを動かす

## AWS SAMでLambdaを作成する
まずは、AWS SAM CLIを用いてテンプレート環境を作成します。事前に、AWS SAM CLIのインストールを[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/install-sam-cli.html)に従って行なってください。
準備が完了したら、テンプレートを作成します。
“`sh
sam init
“`
質問には以下のように答えます。
![スクリーンショット 2023-12-26 16.30.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/591069/9a528524-63f0-1fd4-374f-f5478d718feb.png)
以下のようにアプリケーションが生成されたら準備完了です。
![スクリーンショット 2023-12-26 16.30.36.png](https://qiita-image

元記事を表示

SQSにLambdaトリガーを設定してみた

## はじめに
SQSにLambdaトリガーを設定して、SQSがメッセージを受信した時、自動でLambda関数が発火する仕組みを試してみました。

見なくていいですが、気分は前回記事の続き?です。

https://qiita.com/suiwave/items/149822a70b02daa25bd3

## 挙動まとめ
こんな感じの挙動が確認できました。

#### ①正常系
![cap_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/4db3e7f2-f025-635a-815e-344f7917eb6d.png)

キューはメッセージ受信後、メッセージをeventに含めながらlambdaを実行します。
可視性タイムアウト時間内にlambdaが正常終了すると、キューからメッセージが削除されます。

#### ②異常系
![cap_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/

元記事を表示

Lambda環境でのJavaのstaticについて

## 前提
pythonのコードでは関数外のコードは一度しか実行されないという記事を目にしたのでJavaのStaticについても同じ挙動なのか気になり検証した

## 検証
“` java
public class Cache {
private static Integer number = null;

public Cache(){}

public int get(){
if(number != null){
number++;
return number;
} else {
number = 0;
return number;
}
}
}

var cache = new Cache();
logger.info(“1回目の呼び出し cacheの番号: ” + cache.get());
logger.info(“2回目の呼び出し cacheの番号: ” + cache.get());
“`
上記の

元記事を表示

Terraformでlambdaプロキシ統合のAPIを作成する際の注意点

# はじめに
Terraform初心者のため、間違いなどあればコメントで指摘していただけると助かります。

# 結論
API Gatewayとlambdaを組み合わせたAPIを作成するときは、GET APiの場合でもaws_api_gateway_integrationのintegration_http_methodをPOSTとしよう。

“` api.tf
resource “aws_api_gateway_integration” “get_section” {
rest_api_id = aws_api_gateway_rest_api.main.id
resource_id = aws_api_gateway_resource.get_section.id
http_method = aws_api_gateway_method.get_section.http_method
#Lambdaプロキシ統合を使用する場合は、GETメソッド作成時もaws_api_gateway_integration中のintegration_http_methodをPOSTにする必要がある。
i

元記事を表示

LambdaからのLambda呼び出し、Instanaでどう見える?

# はじめに

以前、こちらの記事を投稿しましたが、その後さらにLambdaから別のLambdaを呼び出した際、どの様にInstana側で見えるのか?ちゃんとトレースは追えるのか?を検証する機会があったので記事に起こしました。

https://qiita.com/LgmQue/items/a1e847b9198ffe33846f

:::note warn
前回はPythonでしたが、今回はNode.js(14.x)で試しています。
:::

では早速いきましょう

# 子となるLambdaの準備

## Lambdaの作成

関数名を任意のもの、ランタイムを `Node.js 14.x` に設定し、[関数の作成]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118463/0b8a1ba2-0d3e-ae55-5d57-e3d5340fde9c.png)

このLambdaが呼び出されるたびランダムに正常/異常のレスポンスおよびログ出力を行うように上書きします。

元記事を表示

DynamoDBをグローバルテーブル構成にしたうえで、DynamoDB StreamsによるLambdaトリガーを実行してみた

# 疑問と検証結果
__疑問:グローバルテーブル構成かつ、DynamoDBトリガーを有効にした場合、更新が同期・伝搬されるリージョン側でもトリガーが作動するのか?__

__結果:更新が同期・伝搬されるリージョン側でもトリガーが作動した。__

# 検証環境の構成
![構成図①.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429161/08a95c12-ac4f-9f26-6c9e-0f6e5c1819a3.png)

__構成概要__
* DynamoDBを更新するためにAPI Gateway + LambdaでAPIを作成
* DynamoDBはグローバルテーブル構成にして、東京リージョンとバージニア北部リージョンで同期
* それぞれのリージョンのDynamoDBの更新をトリガーに実行されるLambda関数を作成

__確認観点__
* 片方のリージョンからのAPI実行(データ更新)で複数のリージョンのDynamoDBトリガーが実行されるか
* 複数リージョンに作成したAPIからのデータ更新が、そ

元記事を表示

ソラカメを使ったデモアプリを作ってみた②後編 Rekognitionによる魚検知

やったこと

環境や全体アーキテクチャについては[前編](“https://qiita.com/ys-betis/items/ad56ae5a5560877fd38c”)を参照。
ソラカメを使ったお魚検知デモアプリにおける、魚の検知部分について記載する。

![スクリーンショット 2023-12-30 14.17.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68086/32727262-ba79-00da-b72d-c60d6b5a9bc9.png)

画像からAWS Rekognitionのラベル検知にて魚を検知させる

S3に保存したソラカメの画像に魚が何匹いるかを数えるため、以下のようなフローを当初検討した。
ただRekognitionのカスタムラベルを使うためにモデルを作る時間もリソースもなかったので、とりあえずRekognitionのデフォルトのラベル検知機能に水槽画像を食わせてみたところ、割といい感じに魚(Fishラベル)が出てきていたので、そのまま使うことにした。

元記事を表示

LambdaでExcelファイルをエクスポートすると文字化けしてしまう

## はじめに
バックエンドにLambdaを使用しているのですが、Excelファイルをそのまま返却しようとすると文字化けしてしまうエラーが発生しましたので、解消方法を記載しておきます。

## 対象者
この記事は下記のような人を対象にしています。

– PythonのopenpyxlでExcelファイルを作成している
– Lambdaを使用している

## 結論
Base64エンコードを使用します。

【サーバー側】
“`python:excel.py
import openpyxl
import base64
import tempfile
import json

def export_excel():
wb = openpyxl.Workbook()
# ここでシートにデータを書き込む

with tempfile.NamedTemporaryFile(delete=False, suffix=”.xlsx”) as tmpfile:
wb.save(tmpfile.name)
with open(tmpfile.name, “

元記事を表示

SAMでAPI Gateway AuthorizerをプリフライトリクエストのOPTIONSメソッド時に除外する方法

## はじめに
LambdaのトリガーとしてAPI Gatewayを指定し、すべてのリソースに一括でAuthorizerを設定したところ、OPTIONSリクエストにもAuthorizerが設定されてしまい、通信に失敗してしまいました。日本語で解説記事がなかったため執筆することにしました。

## 対象者
この記事は下記のような人を対象にしています。

– APIをSAMを使ってLambdaにデプロイしようとしている人
– Lambda Authorizerを使用してAPI Gatewayに認証をかけたい人

## 前提知識
– [SAM](https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/what-is-sam.html)
– [Preflight request](https://developer.mozilla.org/ja/docs/Glossary/Preflight_request)

## 結論
下記の通り、 `AddDefaultAuthorizerT

元記事を表示

[Golang]Lambda+APIGatewayでミドルウェアを作るには?

ここ最近はあまりAPIGateway+LambdaのRestAPIを作ることはありませんでしたが昨年からGolangに仕事の言語が切り替わったこともあり、改めて作ってみることにしました。

そこで今回はミドルウェアを作ります。

ECSなどでやるのであればGinなどのWebフレームワークのミドルウェアを作れば良いのですが今回はそうはいかないので自分で作って見ます。

## なぜミドルウェアを作るのか?

Lamdbaに限らず、Webアプリではほぼ全てのAPIに使う共通的な処理があります。

例えばハンドラーのところの実行前に認証をしたり、入口と出口のロギングなどですね。

他の開発同様に共通処理の部分を作れるように2つのミドルウェアを用意します。

## 固定の共通処理の場合

速度測定のロギングなどやエラーハンドリング、認証で使うことが多いです。

“`golang
func middleware(next func(context.Context, events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, er

元記事を表示

Amazon Bedrockに画像生成のプロンプトを作ってもらうPythonコードを書く

## はじめに

Amazon Bedrock(以下Bedrock)使って画像生成するアプリを作ろうとしてます。(画像生成AI好きなので趣味として)

以前「Stable Diffusion XL 1.0のAPIを叩く->作成された画像をS3に格納する」部分をAWS Lambda(以下Lambda)で作ったので、今回は与えたキーワードをもとにプロンプトを生成する部分のコードを書きたいと思います。

前回の記事はこちら
[Amazon Bedrockで画像生成&S3保存するPythonコードを書く](https://qiita.com/Pretzelisa/items/61c4d3838bb6ac7ff561)

## 1. 構成
今回はキーワードからTitan Text G1 – Expressに画像生成用のプロンプトを作ってもらいます。返却されたプロンプトを引数に、Stable Diffusion XL 1.0のAPIを叩くLambdaを呼び出します。

今Amazon API Gateway – Lambda間の連携はしていませんが、イメージとしてはこんな感じです。
![Bedr

元記事を表示

OTHERカテゴリの最新記事