Lambda関連のことを調べてみた2022年10月17日

Lambda関連のことを調べてみた2022年10月17日
目次

画像を任意のフォーマット&サイズに変換するLambda関数を作成する

任意のBase64にエンコードされた画像をリクエストで送るだけで、フォーマットとサイズを変換してレスポンスで返してくれるLambda関数を作成する方法です。

こういう汎用的なAPIが欲しくなる場面って割とあると思うので、すぐに作成できるように手順を残します。

## 例

変換前
![3ce943ff-a81f-45bd-ab74-6560e0d33faf.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227791/dada9250-3380-4a0f-315a-85dc1e4efd58.jpeg)

変換後(100×100に収まるように設定)
![4f3654ed-8706-4854-8d5d-255548a126b3.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227791/2131673c-0a38-04fd-de63-34da1e831f50.jpeg)

## ユースケース

– 画像形式もサイズも

元記事を表示

JavaプロジェクトからSQSにキューを送信してlambdaをキックする

# 前提
業務でこんな処理を実装する気がするので、簡単に予習してみます。
今回は動くか検証のみなので、ローカルで起動したJavaアプリケーション(Spring Boot)からSQSにメッセージを送信してみます。

本当はlambdaからrdsへ登録・更新する処理を実装したかったのですが、それはまた別の機会に。(なのでSQSやlambdaの名前がmergeXXXXみたいになってます。)

![lambda-sqs.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2433961/3a229f2f-f2b9-d425-1c1e-6ec78dd46b8e.png)

# 環境
– macOS: 12.6
– IntelliJ IDEA: 2022.2.3 (Community Edition)
– Gradle: 7.5
– Java: temurin 17.0.3

# 手順

## プロジェクトの作成

#### spring initializrでプロジェクト作成
[https://start

元記事を表示

Lambda (Node.js) から SNS 経由で IOSデバイス にプッシュ通知

# はじめに
LambdaからSNS経由でアプリをインストールしたIOSデバイスにプッシュ通知する方法についてまとめました。

# 事前構築
– プッシュ通知用証明書(p12)は、発行済とする
– IOSデバイスのデバイストークンは、取得済みとする
– 参考記事
– https://kahoo.blog/howto-aws-sns-ios-push-notification/

# SNS作成
SNSでプッシュ通知の設定をします。
## プラットフォームアプリケーションの作成
`プラットフォームアプリケーションの作成`をクリックします。
![スクリーンショット 2022-10-14 16.00.24.png](https://qiita-image-store.s3.ap-northeast-1.amazon

元記事を表示

then-request モジュールを用いて、Lambdaで HTTPリクエスト を同期処理

# はじめに
Lambdaが同期処理でAPIを叩くために、モジュールを探すと、sync-requestがありましたが、商用では非推奨で、then-requesを推奨されておりました。

`then-request`は、非同期処理ですが、`await`を使えば、同期処理できますので、Lambdaで`then-request`を使い、同期処理でAPIを叩き、結果を返す方法をまとめます。

同期的に WebページやAPIの取得をしたい場合に参考になるかと思います。

# then-requestモジュール

`then-request`モジュールを使用するため、ローカルで`then-request`モジュールをインストールします。
“`terminal
$ mkdir nodejs
$ cd nodejs
$ npm init -y
$ ls
package.json

$ npm install then-request

$ touch index.js

$ tree
.nodejs
├── index.js
├── node_modules
├── package-lock.jso

元記事を表示

CloudFormationでAuroraとLambdaを構築。LambdaでLOAD DATA FROM S3コマンドを実行しS3のCSVファイルをAuroraにインポートする。

# 本記事の内容

– AWSが提供するCloudFormationサービスを利用し、以下を行う。
– データベースの一つであるAurora(MySQLエンジンタイプ)をシングルインスタンスで建てる。
– サーバレスアプリケーションであるLambdaを建てる。
– 構築したAuroraに対してテーブル作成とデータ投入(LOAD DATA FROM S3)をLambdaを使って実行する。

本記事の手順で以下のような構成のクラウド環境を作成します。
![aws_lambda_direct_aurora.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2017667/d835cb9c-b08e-58b3-8afa-c6d0a769980e.png)
※AWSの操作画面はサービスリリースと共に更新されていくため、本記事をご覧いただくタイミングによっては、現在の画面と異なる場合があります。ご了承ください。本記事内の画面キャプチャーは2022年10月時点。

DBへのテーブル作成・データ投入の方法

元記事を表示

AWS Lambdaで動かすStable Diffusion(ネガティブプロンプト対応 Diffusers v0.4.2)

# はじめに
先日(2022/10/7)、Diffusers v0.4.0がリリースされました。
9月にリリースされたv0.3.0ではONNXがサポートされてCPUでの実行がやりやすくなり、今回のv0.4.0ではポジティブプロンプトとネガティブプロンプトの両方を指定できるようになるなどの機能が追加されています。
これまでCPUでStable Diffusionを使用する場合はopenvino版を使用していましたが、本記事ではこれらの追加された機能を活用し、openvinoを使わずにAWS Lambdaにて動作確認をしてみたいと思います。

:::note alert
費用に関する注意、および、免責事項
– 注意事項
本記事ではLambda関数に設定可能なメモリ上限の割り当てを行います。
また、画像の作成には1枚に数分程度かかるなど費用が高額になる可能性があるため内容を検証する場合は十分ご注意ください。
– 免責事項
当方はこの記事を使用して生成されたコンテンツについて責任を負うものではなく、また、このプロジェクトを違法、有害、攻撃的なコンテンツの作成に使用しないでください。
:::

元記事を表示

kintone Webhook用のAPI をLambdaオーソライザーで保護する方法について

API GatewayとLambdaを利用する時のAPIの保護の方法についての記事です。
kintone Webhookの利用に限ると、リクエストベースのLambdaオーソライザー(リクエストオーソライザー)が良かったので紹介します。

# リクエストオーソライザーを選択する理由

2022-10現在、kintone Webhookではヘッダーを付けることができない。
使えるとすればリクエストパラメーターだけ。
なのでリクエストオーソライザーが合っている。(と個人的に思います)

# 環境

* macOS
* AWS SAM CLI, version 1.58.0
* Node v16.13.1
* kintone

# API Gateway と Lambdaを作成する

SAMを利用してテンプレートから環境を作ります。

“`bash
$ sam init
Which template source would you like to use?
1 – AWS Quick Start Templates
What package type would you like to

元記事を表示

Lambda(Go)とAuroraを接続するときにDataAPIとRDS Proxyがよくわからなかったのでまとめる

# はじめに

Lambda(Go)をServerlessFrameworkでデプロイして、次にAuroraを利用してデータ取得をしようとしたとき色々知識がなかったので苦戦しました

そこで、知識面で参考になりそうなことをまとめていきます

# なぜDataAPIかRDSProxyが必要なのか

まず最初に思ったのはなぜDataAPIまたはRDSProxyを経由してDBにアクセスしないといけないのかというのでした
Auroraにはエンドポイントがあるのでそれで直接アクセスでよいのではと考えました
しかし、Lambdaからやる場合は直接ではなく、どちらかを仲介したほうが良いです。

使う理由は「DBへの接続数が多くなってしまうのを防ぐため」です。接続プーリングをうまいことやってくれるようでした

【徹底解説】RDS Proxyとは?

# 2つの違い

>Q. RDS Proxy と DataAPIの違いは何でしょうか?
A. RDS Proxy はデータベースへの接続をプールすることでバックエンドのRDSの負荷を軽減しつつ、コネクシ

元記事を表示

【Python/AWS】第2回 LambdaとS3を利用してデータ取得を自動化する【データ分析】

# 1. はじめに
本記事は【Python/AWS】の第2回として前回に引き続き、
AWSのサービスを利用した一連のデータ分析の続きとなります。

**▼前回の記事はこちら▼**

https://qiita.com/kawanago_py/items/68999167adb87001764c

私自身、AWSのサービスを触るのは初めてなので、
細かい説明など不足する点はあるかと思いますが、
大まかな流れをこちらで解説していきたいと思います。

本分析の全体像は以下のようになります。
![AWSアーキテクチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512226/d133ea0b-b9fa-39ee-c70c-e7c9c94e9e65.png)
全体の分析目的は以前の分析から継続/発展して、
**「Splatoon3」におけるコンテンツのユーザー満足度調査** です。

収集したデータから項目ご

元記事を表示

【Python/AWS】第1回 LambdaとOpenWeatherMapで天気予報を自動ツイートする【データ分析】

# 1. はじめに
本記事は【Python/AWS】の第1回として、
AWSのサービスを利用した一連のデータ分析の初回となります。

私自身、AWSのサービスを触るのは初めてなので、
細かい説明など不足する点はあるかと思いますが、
大まかな流れをこちらで解説していきたいと思います。

5回ほどに分けて投稿していく予定ですが、
分析の全体像は以下のようになります。
![AWSアーキテクチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2512226/dfc7f859-8e02-ce11-59ed-5cfa4efd8315.png)
全体の分析目的は前回の分析から継続/発展して、
**「Splatoon3」におけるコンテンツのユーザー満足度調査** です。

収集したデータから項目ごとに感情分析を行い、
ポジティブ/ネガティブの値を可視化することが最終目的です。

**▼前回の記事はこちら▼**

htt

元記事を表示

Amazon ComprehendとLambdaを利用した感情分析APIを作成する

# はじめに

AWSを利用してのテキスト分析が何か出来ないか?と思い、調べていたところ、**Amazon Comprehend**なるものを知りました。
POSTリクエストで「特定の文書」を送ると、文書内の感情分析を行うAPIを作成してみたので、ご紹介します!
※とりあえずAPIを作って動かしてみたい方向けの記事です。

## 感情分析とは?

Amazon Comprehendではドキュメントの感情を4つの値から判断します。
「Positive(肯定的)」「Negative(否定的)」「Mixed(混合)」「Neutral(ニュートラル)」の4つの値が結果として返ってきます。

例えばAmazon Comprehendのコンソール上からInput textに適当な値を入れて「Analyze」を押すと…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411902/6b9e58d2-86cd-c52a-9993-04edd124721b.png)

`Sentiment`として以下

元記事を表示

【AWS】S3に格納したExcelファイルをLambdaで読み込んでEC2にタグ付けする

# はじめに
久しぶりにコードを書く機会があったのでそこで使用したコードの一部をテンプレートっぽく記事として残そうと思います。
エクセルファイルを読み込んで、その他のサービス(SystemsManagerやEventBridgeなど)に対して処理を行う場合のコードとかも
別のタイミングで記事として残そうと思っていますので興味がある方は読んでみてください。

今回の検証では以下のサービスを使用します。
* S3
* EC2
* Lambda(python3.9)

# 目次

1. [処理の概要](#処理の概要)
1. [インプットデータを作成する](#インプットデータを作成する)
1. [IAMロールを作成する](#iamロールを作成する)
1. [Lambda関数を作成する](#lambda関数を作成する)
1. [Iamロールを作成する](#iamロールを作成する)
1. [Lambdaを実行する](#lambdaを実行する)
1. [タグの確認](#タグの確認)
1. [さいごに](#さいごに)

# 処理の概要
S3に格納したエクセ

元記事を表示

HTTPエンドポイントからAWSのデータベース(Timestreamなど)にデータを書き込むシンプルな方法

[Amazon Timestream](https://docs.aws.amazon.com/timestream/index.html) は、AWSの時系列データベースサービスで、IoTなどのデータシンクとしてよく利用されるようです。
今回、[InfluxDB](https://www.influxdata.com/) で運用しているデータシンクを [Amazon Timestream] に置き換えるため、HTTP(S)のエンドポイントを介して Amazon Timestream に最も簡単に書き込む方法を検討しました。その中でもっとも簡単そうな構成である、[AWS Lambda] の [Function URL] を利用する方法ついて情報を共有します。

[Function URL]:https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html
[AWS Lambda]:https://docs.aws.amazon.com/lambda/index.html
[Amazon Timestream]:https://d

元記事を表示

AWS Elemental MediaConvertを利用して、動画の拡張子をmp4に自動変換する構築

# はじめに
AWS Elemental MediaConvertを利用して、様々な拡張子の動画をmp4に変換する構築についてまとめます。
下記が変換フローになります。

1. アップロード用S3に動画・画像をアップロードする
1. Lambdaにイベント通知する
3. 画像の場合、視聴用S3にコピーする
3. 動画の場合、MediaConvertを使い、拡張子をmp4に変換
1. ユーザーが動画・画像にアクセスし視聴する
1. Media Convert で動画をS3にアップロードする前に、アクセスされた場合、オリジンフェールオーバーし、オリジン先がアップロード用S3に変更

6.に関して、Media Convertが実行完了する時間が長い場合、S3にアップロードされる前にリクエストされる可能性があります。
その際に、表示されるよう、オリジンフェールオーバーを利用しています。

![スクリーンショット 2022-10-04 17.28.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/98874

元記事を表示

ServerlessFrameworkでLambdaをVPCの中にいれようとしたらEC2の権限エラーがでる

# はじめに

ServerlessFrameworkで作成したLambdaにRDS通信を設定する作業を行っていたときに、VPC設定でつまづいたのでまとめます
設定の参考になる記事はあったのですが、説明が不足していたようだったので解決方法をまとめます

# 問題

ServerlessFrameworkでVPCの設定を行います
そこで以下の記事を参考に、IAMにEC2の権限を付与しました

“`yml:serverless.yml
iamRoleStatements:
– Effect: “Allow”
Action:
– “ec2:CreateNetworkInterface”
– “ec2:DescribeNetworkInterfaces”
– “ec2:DeleteNetworkInterface”
Resource:
– “*”
“`

しかし、実行コマンドを叩くと以下のエラーが発生します

“`
ApiLambdaFunction (AWS::Lambda::Funct

元記事を表示

AWS自主学習 ハンズオン コンテナ・SQS・Lambda・S3

AWSのお勉強。EC2、SQS、Lambda、S3をハンズオンで使ってみる。

やりたいこと
1. 自PC→コンテナ(docker on EC2)にテキストデータを送信
自PCでcurlをたたいてテキストデータを送信、
docker on EC2の自作goプログラムでデータ受信

2. コンテナ→SQS
コンテナ(自作goプログラム)からSQS標準キューにテキストデータを連携。

3. SQS→Lambda
SQSをイベントソースにしてLambdaをキック。

4. Lambda→S3
LambdaからS3にテキストファイルを作成。

## チャレンジその1
まずは簡単な構成で作ってみる。
![HandsOn.drawio (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651099/f36ae2cc-b7d8-b472-21a6-b07b19bde9b3.png)

## チャレンジその2
もう少し現実的な構成にしてみる。
何でもパブリックサブネットはやめてALBだけとし、
docker

元記事を表示

S3更新時、CloudFrontのキャッシュを削除するLambdaをイベント通知で実行

# はじめに
S3とCloudFrontで静的サイトを構築した状態で、オリジンのS3が更新されたらCloudFrontのキャッシュを削除するLambdaを実装します。
キャッシュの削除は、`全てのキャッシュを削除する`パターンと、`更新したファイルのキャッシュのみを削除`するパターンの2パターンのコードを作成します。

![スクリーンショット 2022-10-02 17.04.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/b670f6b6-e98e-5a72-3bec-a7c11b558dee.png)

# S3を作成
S3を作成します。
設定は以下の通りです。
![スクリーンショット 2022-10-02 16.02.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/df16f6d5-4f44-9714-b59b-c189243884ac.png)

# Cloudfront作成

元記事を表示

コンテナイメージを利用した簡単なLambdaを作成する

コンテナイメージを使用したLambdaを作る必要があったので、pythonで簡単なHello worldを表示させるだけのLambdaの作り方をメモ。

# 0.作成手順
1.各ファイルの準備
2.ECRリポジトリの作成
3.ECRへイメージをプッシュ
4.Lambda関数の作成
5.Lambda関数のテスト

# 1.各ファイルの準備
Dockerfileとpython処理を記述したapp.pyを準備して同じディレクトリに置く。

app.pyにはHello worldを返すだけの処理を記述。
“`python:app.py
def handler(event, context):
return ‘Hello world!’
“`

Dockerfileはドキュメント:[Lambda コンテナイメージの作成](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images-create.html#images-create-1)を参考に作成。
“`Dockerfile:Dockerfile
FROM public.ec

元記事を表示

Lambda でコンテナを実行する

# イメージを作成する

以下のドキュメントを参考に Dockerfile を作成します。

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images-create.html#images-create-from-base

“`Dockerfile:Dockerfile
FROM public.ecr.aws/lambda/python:3.8

# Copy function code
COPY app.py ${LAMBDA_TASK_ROOT}

# Install the function’s dependencies using file requirements.txt
# from your project folder.

COPY requirements.txt .
RUN pip3 install -r requirements.txt –target “${LAMBDA_TASK_ROOT}”

# Set the CMD to your handler (could also be done

元記事を表示

AWS日記47(API Gateway – CORS)

# はじめに
今回はREST API リソースの CORS サポートを有効にします
[REST API リソースの CORS を有効にする](https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/how-to-cors.html)を参考に、POST メソッドリクエストに対する設定を行います

# 準備

### CloudFormation
“`yaml
AWSTemplateFormatVersion: “2010-09-09”
Transform: AWS::Serverless-2016-10-31
Description: SampleJsonResponse Page

Parameters:
ApplicationName:
Type: String
Default: ‘SampleJsonResponsePage’

Resources:
FrontPageApi:
Type: AWS::Serverless::Api
Properties:

元記事を表示

OTHERカテゴリの最新記事