Lambda関連のことを調べてみた2023年02月13日

Lambda関連のことを調べてみた2023年02月13日
目次

multipart/form-dataで、日本語ファイル名が文字化けする(API Gateway, Lambda構成)

### はじめに

API Gateway, AWS Lambda構成で、multipart/form-dataを使ってファイル送信をした際に、日本語ファイルが文字化けする事象に遭遇しました。その対応方法についてまとめます。

### 対象となる読者

multipart/form-dataを使って日本語ファイルを送信したが、ファイルが文字化けして困っている方

### Lambda実行環境

– Node.js 18.x
– multipart/form-dataで送信したデータのバックエンド処置には [nachomazzara/parse-multipart-data](https://github.com/nachomazzara/parse-multipart-data)を使用

### 結論
最初に結論だけ述べると、フロント側でファイル名をエンコードして、データ送信することで文字化けを回避することが出来ました。
バックエンドでの処理を模索しましたが、解決出来なかったため、もし解決方法ご存知の方がいらっしゃれば、コメントいただけると嬉しいです。

元記事を表示

【Lambda Typescript】技術のトレンドを追うために簡単なアプリケーションをつくりました

## これはなに?
Qiitaのトレンドを取得するLambda関数を作成したのでそのメモを兼ねた記事です。
TypescriptでLambdaを書いています。

## 開発環境
### バックバックエンド
TypeScript@4.9.5
– @types/node
– axios
– nodemailer

### クラウド
AWS
– Lambda
– Eventbrige

## 何がしたかったのか?
– 朝通勤する時間など隙間時間で技術記事に触れる習慣を作りたいと思った。
– TypeScriptをバックエンドで使って練習したい。
– Lambdaを使った開発をやってみたかった。

## 作成した機能の概要

### TypeScript側
[Qiitaトレンドを取得できるAPI](https://qiita.com/HelloRusk/items/803f9599cde72810f1a8)(リンク先の記事で紹介されているもの)からJSONを取得し、記事のタイトルとURLを取得する。メールで送信するために成形する。nodemailerを利用してgmailで送信する。

###

元記事を表示

LINE Messaging APIとOpenAI APIを連携させる

# やったこと
最近はやってるOpenAI・ChatGPTにLINE経由で質問して回答を受け取れるようにしました!
接続イメージは以下の通り。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820066/1a882039-2c7c-3d7f-61d1-ae5ba32f5dad.png)

# LINE Messaging APIとOpenAIの準備
### LINE Messaging API
[公式のガイド](https://developers.line.biz/ja/docs/messaging-api/getting-started/)に沿って、[LINE Developer Consle](https://developers.line.biz/console/)上でMessaging APIを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820066/cb2c4

元記事を表示

【React】Webアプリケーションの関連付け

React axiosとAWS Lambdaを用いて、webページからwebアプリを実行する方法を紹介する。

## フロントエンド(React)の作成
1. axiosをインストールする
“`
npm install axios –save
“`
1. axiosをimportして、webアプリのURLへPOSTする
“`react
import React from ‘react’
import axios from ‘axios’

const Breadcrumbs = () => {
const [responseData, setResponseData] = React.useState(null)
const handleSubmission = async (event) => {
try {
await axios
.post(
‘https://***********************

元記事を表示

AWS Lambdaを使ってメール整形してみた

## ◆はじめに
今回、とあるプロジェクトでCloudWatch Alarmから(正確にはAWS SNSですが) 出るアラームの
メール整形をLambdaを使用してやってみました。

使った言語はPythonです。

## ◆構成
簡単にですが構成の説明です。
単純な構成ですが、何しかしらの理由で発報したCloudWatch Alarmが、
SNSを使用してLambdaに飛ばしLambdaを使用してアラームの中身を整形。
LambdaがSNSを使用して任意のメールアドレスにアラームを
送信という流れです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/689346/f1af5301-8919-5977-78e2-0a24a1a050b2.png)

## ◆注意
今回は、Lambdaのコードの説明のみ行いますので、実際のLambdaの設定やCloudWatch及び
SNSの設定方法は省略しますのでご了承して頂ければと思います (すみません…)

## ◆Py

元記事を表示

AWS Step Functions と lambda を使用しアプリケーションエラーに対処する(AWSハンズオン)

AWS Lambdaに記述するエラー処理コードの量を減らすために、AWS Step Functions を使用して関数のエラー処理をサポートするサーバーレスワークフローを作成していきます。
Lambdaの言語はPythonです。
ちなみに今回はAWSの公式にあるハンズオンを実施したものになります。

# 目次

  1. StepFunctionで呼び出すLambdaの作成
  2. Stepfunctionの作成
  3. 実行結果

1.StepFunctionで呼び出すLambdaの作成

まずはLambdaの作成をクリックしてLambdaを作成していきます。
今回は自前のコードを入力するので「一から作成」をクリックして関数名とランタイムを選択していきます。

元記事を表示

[AWS SAM]LambdaでScrapyクローラーを定期実行させる

[AWS SAM(AWS サーバーレスアプリケーションモデル)](https://aws.amazon.com/jp/serverless/sam/)を使ってサーバーレスなクローラーを作り、定期実行させて結果をS3に保存することができたので、やり方をまとめておきます。
なお、Lambdaは最大でも15分の処理しか実行できないため、小さめなクローラーを想定しています。

以下の3ステップで実装します。

1. [SAMのHello Worldチュートリアル](https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-getting-started-hello-world.html)をやる
1. `template.yaml`, `requirements.txt`などを修正する
1. `app.py`にクローラーを実装する

## SAMのHello Worldチュートリアルをやる

ここは公式チュートリアルで詳細に説明されているので省略します。
これをや

元記事を表示

Configルールに準拠していないと、自動で修正する関数を2つ作成してみた

## はじめに
Lambdaの勉強もかねて、表題のような自動化を試してみました。
作成した処理は以下となります。

①特定のタグがアタッチされていないと、自動でそのタグをアタッチする処理
➁特定のIAMロールがアタッチされていないと、自動でそのIAMロールをアタッチする処理

## 手順
本処理のフローとしては
①Configでルール検知
➁SSM AutomationでLambdaに処理を渡す
③Lambdaで処理を実施

となります。
順番に設定していきます。
※ConfigとSSM Automationについては概要レベルの説明になります。

## configの設定
まずConfigの設定をしていきます。
今回はセットアップが終わっている前提で話を進めます。

##### ルールの設定
Configには、AWSマネージドルールが存在し、今回はそちらを使用することになります。
※下はタグ付けのルールを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666121/7c5a1a3

元記事を表示

AWS SAMのLambdaでS3へのPut権限をつける

AWS SAMでLambdaの構築が便利になったものの、`Hello World Example`で作成されるテンプレにはS3の権限がついていません。

https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-getting-started-hello-world.html

なので、S3にオブジェクトを読み書きさせたいときには、下のように`template.yaml`を編集して権限をつける必要があります。

“`diff_yaml
Globals:
Function:
Timeout: 3
MemorySize: 1000

+Parameters:
+ S3BucketName:
+ Type: String
+ Default: “アクセスしたいバケット名”

Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Pro

元記事を表示

エンジニアインターン14日目

今日はlambdaのfunction urlを使ってDBから条件に当てはまる情報を取得する仕組みを構築した。lambda_handleの関数を構築する際に、sql文のミスが目立ってしまった。サニタイズの仕方も間違っていて、時間をかけてしまった。sql = “select * from list where id = (%)”% id と入力したら直った。しかも先輩エンジニアがエラーの場所のヒントをくれたおかげだった。時間をかけすぎて自分が情けなかった…まだまだ成長できる!がんばろ!

元記事を表示

AWS Lambda Layer の作り方 – Python編

## Install python libraries
“`shell
mkdir python
pip install -t python yahoo_fin stockstats
zip -r9 layer.zip python
“`

## Create Lambda layer and upload zip file
“`
aws lambda publish-layer-version \
–layer-name python-layer \
–license-info “MIT” \
–zip-file fileb://layer.zip \
–compatible-runtimes python3.7 python3.8
“`

元記事を表示

AWS S3のobject createを感知してlambda関数を実行する(EventBridge使用)

# 概要

– S3の特定のバケットにオブジェクトがアップロード(create)されたことを感知して、そのオブジェクトの内容をconsole.logに出力するlambda関数を実行する方法をEventBridgeを使い実装してみる。

# 注意

– 本作業を実施することでAWSにて料金が発生する可能性があります。
– 料金アラートなどを予め設定し高額請求にはくれぐれもご注意ください。
– 筆者は一切の責任を負いかねます。

# 前提

– 下記記事の内容は実施済みのものとして話をすすめる。

https://qiita.com/miriwo/items/4ab4dd1ca49bfa7c9387

– 条件は上記の記事と全く同じで任意のバケット(筆者の場合miriwo-testバケット)にinフォルダを作成し、そこにファイルアップロードイベントが発生した場合lamba関数でキャッチし、ログに出力する。

# 準備

– IAMロール、S3、lambdaはすでに前提の記事で設定済みのものを使用する。

| 項目 | 内容 | 備考 |
| — | — | —

元記事を表示

AWS S3のobject createを感知してlambda関数を実行する(EventBridge不使用)

# 概要

– S3の特定のバケットにオブジェクトがアップロード(create)されたことを感知して、そのオブジェクトの内容をconsole.logに出力するlambda関数を実行する方法をEventBridgeを使わず実装してみる。

# 注意

– 本作業を実施することでAWSにて料金が発生する可能性があります。
– 料金アラートなどを予め設定し高額請求にはくれぐれもご注意ください。
– 筆者は一切の責任を負いかねます。

# 準備

## IAMロール

1. 下記の情報でIAMロールを作成する。

| 項目 | 内容 | 備考 |
| — | — | — |
| 信頼されたエンティティタイプ | AWSのサービス | |
| ユースケース | Lambda | |
| 許可ポリシー | AWSLambdaBasicExecutionRole
AWSXRayDaemonWriteAccess
AmazonS3FullAccess | |
| ロール名 | get-s3-object-lambda-ro

元記事を表示

BentoMLのAWSへのデプロイ

# はじめに
最近Model ServingのOSSとして[BentoML](https://github.com/bentoml/BentoML)に注目しています。BenteMLではクラウド環境へのデプロイをサポートする[bentoctl](https://github.com/bentoml/bentoctl)というOSSも合わせて公開しています。

https://github.com/bentoml/bentoctl

現在サポートされているデプロイ先のクラウドは以下になります。
– AWS Lambda
– AWS SageMaker
– AWS EC2
– Google Cloud Run
– Google Compute Engine
– Azure Container Instances
– Heroku

今回はAWSのLambdaとSageMakerへのデプロイを試してみました。

# 前提
## 環境
クラウドはAWSを利用します。操作するローカルPCは以下のような環境です。
– OS: Ubuntu 20.04(Windows WSL2)
– Docker 20

元記事を表示

【SSTことはじめ】SST(Serverless Stack)のLive Lambda Devで、ローカルでも動作確認できるAWS Lambda開発を体感してみる

## SST(Serverless Stack)ってなに?

SST(Serverless Stack)は、モダンなフルスタックアプリケーションをAWSにデプロイする便利なフレームワークだよ。SSTには2つの側面があって、

1. CDKを内包しており、CDKを上回る簡潔さでAWSのインフラをコードで定義できるIaCツールとしての側面
2. Live Lambda DevやSSTコンソールによる開発支援ツールとしての側面

の2つの機能を有しているんだ。

https://github.com/serverless-stack/sst

今回は後者の `Live Lambda DevやSSTコンソールによる開発支援ツールとしての側面` を体験すべく、SSTの雛形アプリを動かしてみるよ。

## 筆者プロフィール

Kenpal株式会社でITエンジニアとして色々いじってる faable01 です。

https://www.kenpalinc.com/

ものづくりが好きで、学生時代から創作仲間と小説を書いたりして楽しんでいたのですが、当時はその後自分がIT技術者になるとはつゆ程も思って

元記事を表示

【AWS CDK】AWS CDKを触ってみる with TypeScript。Part1: API Gateway & Lambda

## 環境情報
* 作業環境はAWS Cloud9を利用
* cdk versionは2.63.2

## 作成イメージ
AWS CDKを利用してAmazon API Gateway経由でコールできるLambdaサービスのデモを作成していきたいと思います。作成するデモイメージは以下です。
![hello-arch.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484097/b7005fea-515a-a3d7-7e41-a02a8b342742.png)
では早速手を動かしていきましょう。

## CDK新規プロジェクトの作成
今回の作業環境はAWS Cloud9を利用しています。タイトルにもある通り、今回はTypeScriptでプロジェクトを作成していきます。
まずは今回使用していくプロジェクト用のディレクトリを作成します。
“`
mkdir cdk-workshop && cd cdk-workshop
“`
TypeScriptのCDKプロジェクトを作成します。(ちょっと時間かか

元記事を表示

【Amazon Connect】初心者がLambdaとの連携でひっかかったこと

みなさんこんにちは!
早いものでそろそろ社会人一年目になろうとしている新卒エンジニアです。

現在の部署に配属されてはじめに行ったのがAmazon ConnectとLambdaの連携だったのですが当初は思ったようにいかないことが多く、
近い未来で自分が後輩に教える立場になったときに過去の自分がどこで躓いていたかを記録したいと思い今回この記事を作成することにしました。

使い慣れている方にとっては当たり前の内容ばかりになるとは思いますが、これからLambdaを触ってみたい方、同じような躓きをしている方の参考になれば幸いです。

ちなみに、Lambdaを初めて触った時点での私のスペックを簡単に紹介します。
– AWS自体入社後の新人研修で初めて触ったレベルの初心者
– Amazon Connectは研修で一度簡単なコールセンターを作成した経験あり
– Python歴は独学で3年程度、主に機械学習などの目的で使用していた
– Python3エンジニア認定基礎試験取得済(別記事に合格体験記があります)

上記の理由から今回Lambdaの記述にはある程度使い慣れているPythonを使用すること

元記事を表示

【Amazon Lex】トリガーとなる質問なしでインテントを呼び出す

# やりたいこと
* Amazon Connectの問い合わせフローでAmazon Lexを呼び出し、名前を質問する
* 質問自体はAmazon Connectのプロンプトで再生する
* 初めから聞く内容が決まっているため、Lex上で「ご用件はなんですか?」「予約をしたいです」というような最初の質問を必要としない
![会話例_トリミング.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728375/45e4464d-9d29-262b-df13-f6e8ba99906e.jpeg)
# ①Amazon Lex
インテント名は**CheckName**に設定しました。

#### スロット
![01_スロット.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2728375/3d34b528-c309-3ae1-30f0-0708c9a04fbb.jpeg)
今回このプロンプトは再生されませんが必須項目のため仮の文章を入力して

元記事を表示

Amplifyを使用してReact(Figma)とLambdaアプリケーションを爆速で作る

# 事前準備
1. AWS CLIのインストール
– [【Windows/Mac/Linux(Ubuntu)】AWS CLIインストール方法](https://qiita.com/ryome/items/efd37c3a49b54859ba68)
2. AWS IAMアカウントの作成とaws configureの設定
– [AWS IAMアカウントの作成とaws configureの設定](https://qiita.com/ryome/items/ff2804be600cd5dcd61a)
3. AWS CodeCommit の HTTPS Git 認証情報を生成
– [AWS CodeCommit の HTTPS Git 認証情報を生成](https://qiita.com/ryome/items/066d2deea3e6fbe577ad)
4. Linuxコマンドが使用できる環境構築
– [wsl2にUbuntu環境を構築する【windows】](https://qiita.com/ryome/items/240f36923f5cb989da27)

元記事を表示

エンジニアインターン13日目

lambdaの関数urlを使ってDBから一定の情報だけを取って配列に渡す機能を実装しようとした。apiの知識も食い込んできて難しかった。先輩エンジニアが何回も優しく説明していただきとても助かった。しかし、完成まではいかなかった…また次チャレンジだ!エンジニアインターンも約1ヶ月の期間が過ぎた。1ヶ月間で学んだことはエラーの解決法やwordpress,awsなどの新しい技術をたくさん学ぶことができた。まだまだできないことだらけだが、自分に新しい技術を任せていただき、課題にぶつかりながら成長できる環境だと思う。毎日感謝を忘れずに一生懸命にやっていきたい。

元記事を表示

OTHERカテゴリの最新記事