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

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

LamdaとCloudWatch Eventsでnode.js 18を定期実行する

# 目的

API連携をしてみたくて何作るかchatGPTと話していたら、
いつの間にか今日はLamdaとCloudWatch Eventsでnode.js 18を定期実行してみることになりました。
AWSとnode.jsはどっちも初めてなので勉強しながら備忘録!

# 今回やること

今回の目標は以下の2つ。
1. Lamdaでnode.jsのコードを実行してみる
1. CloudWatch Eventsで定期実行する

# 環境
* windows 10
* node.js 18
* リージョン 東京

# いざ出陣

### AWSアカウントの発行

ここからAWSアカウントを作成します。

https://portal.aws.amazon.com/billing/signup#/start/email

英語ですが画面見ながら手順に進めると作成できました。
英語で住所書くときの順番が覚えられないのですが、chatGPTに

> 「自分の住所」を英語で書きたい。
> Address、City、State, Province, or Region、Postal Codeに分

元記事を表示

LambdaでTeamsのチャットボットを実装する方法 (所要時間5分)

# できたこと

[Microsoft Teams](https://www.microsoft.com/ja-jp/microsoft-teams/group-chat-software) にオウムがえしチャットボットを実装しました
[AWS Lambda](https://aws.amazon.com/jp/lambda/) を利用しました

:::note info
手順さえわかっていれば、所要時間 5分 です
:::

# 手順

## 1. Lambda関数を用意する

1-1. [AWSマネジメントコンソール](https://aws.amazon.com/jp/console/)を開き、Lambda関数を新規作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102797/b1eb7a5a-2616-a673-3b46-3a42a72e0677.png)

1-2. 関数名は適当に決める。ランタイムは `Node.js 18.x` にする
![image.png](ht

元記事を表示

AWS CloudFormationを使用し、API GatewayとLambdaでTTS(Text To Speech) APIを作成する

この記事では、CloudFormationテンプレートを使用して、Amazon API GatewayとAWS Lambdaを作成する方法について説明します。このテンプレートでは、クエリ文字列で指定されたテキストをAmazon Pollyを使って音声に変換し、mp3形式で出力するAPIを作成します。

## テンプレートの概要

このテンプレートでは、以下のAWSリソースを作成します。

1. IAM Role
2. Lambda Function
3. API Gateway REST API

### 1. IAM Role

IAMロールは、Lambda関数がAmazon Pollyサービスを使用できるようにするために必要です。次の記述でIAMロールを作成し、polly:SynthesizeSpeech アクションを許可するポリシーをアタッチします。

“`yaml
LambdaExecutionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Ve

元記事を表示

LambdaでAWSリソースをいろいろ操作する

学生時代はC言語やJavaをやっていたが、就職してからはインフラ分野だったので、アプリケーションに絡むところはゼロではないが、あまりなくなってしまった。やったとしてもリーダーとかちょっとした改修の要件定義ぐらい。

ただ、Lambdaがあることでプログラムを書く機会が作れたのは良い。いまやChatGPTがすべてやるとも言われるが、ChatGPTにお願いするにしても、指示が明確でないとできないわけで(今後、あいまいな指示でもプログラムは作ってくれるようになるかもしれないけれど)。

個人的なLambda、Pythonのメモ。特に学習して作ったわけではない、我流コードなので、あまり参考にしてはいけない(むしろJavaっぽい感じ)。

# 基本
まずはこのドキュメントを読む。
– Boto3 documentation
https://boto3.amazonaws.com/v1/documentation/api/latest/index.html

> Boto3ドキュメント
AWS SDK for Python(Boto3)を使用して、Amazon Elastic Compute Cl

元記事を表示

AWS Lambda+API GatewayでJSONパーサーAPIを作ってみる。

# はじめに

[naritomo](https://twitter.com/naritomo08)と申します。

本職はインフラエンジニアを行っています。

これまで作成していたJSONパーサーAPIを、AWSのLambda+APIGatewayを使用して立ち上げみました。

いろいろアドバイスいただけると嬉しいです。

## 開発概要

以下の仕様とします。

* API稼働フレームワークはLambda(Python)+API Gatewaayを使用する。
* API入力は、以下のものを入力する。
– URLにクエリでJSONキーを指定する。(?key=key1)
– POSTボディーにJSONデータを入れる。
* API出力は以下のものとする。
– クエリで指定したJSONキーに対応した値をプレーンテキストで出力する。

## 事前準備

AWSアカウントを作成していること。

*本システムでしたらかかっても1日あたり0.01ドルですみます。

## API構築方法

### Lambda関数作成

AWSのメニューからLanbdaコンソールに入る。

関数の作成をク

元記事を表示

Slackアプリへのメンションを契機にYes/Noボタンを返信して処理を分岐させる

## 概要
メンションを元に外部APIを叩き、取得した情報を元にDBを更新するSlackアプリを作成しました。
[![Image from Gyazo](https://i.gyazo.com/c91da3569bb0ddadd7c40f768c0e4eea.gif)](https://gyazo.com/c91da3569bb0ddadd7c40f768c0e4eea)

## Lambdaの準備
Node.jsでLambdaを作成しています。

“`javascript
const axios = require(‘axios’);

const SLACK_BOT_TOKEN = process.env.SLACK_BOT_TOKEN;

exports.handler = async (event) => {
console.log(`Event: ${JSON.stringify(event)}`);
let body = “”;
if (event.isBase64Encoded) {
// ボタンを押された時のblock_actionsペイロードはb

元記事を表示

Lambda@Edge で動的にセキュリティヘッダーを付与する

春の陽気を感じられる良い季節になりました。天気の良い日に鴨川で日向ぼっこをしたい、そんな今日この頃。

どうも、Novelworks でエンジニアをやっております RikiyaOta です。

今回は、業務の中で検証した[AWS Lambda@Edge](https://aws.amazon.com/jp/lambda/edge/)を使って動的にセキュリティヘッダーを付与する機能についてまとめてみようと思います。

# この記事で伝えたいこと

– S3+CloudFront の構成で Lambda@Edge でセキュリティヘッダーを付与する方法
– Lambda@Edge を実際に動かすときの注意点

# 課題意識と設定

自社サイトが[クリックジャッキング](https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_9.html)による攻撃を受けないようにしたいという課題意識で、対策を考えてみたいと思います。

以下のようなケースを考えることとします:

– システム構成
– 自社で公開しているウェブサイト[^1]

元記事を表示

日報のフィードバックをChat GPTにやらせてみる

## はじめに
近年、AI技術の進化により、様々な業務プロセスが効率化されています。
特に、自然言語処理(NLP)技術を活用することで、文章の解析や生成が可能となっており、これらの技術を業務に取り入れることで、生産性の向上が期待されています。

この記事では、私たちの会社で実際に取り組んでいる、日報のフィードバックプロセスにChat GPTを導入する試みについて紹介します。
日報のフィードバックは、従業員の成長やコミュニケーションの向上に大きく寄与するものですが、手作業で行うと時間と労力がかかります。
そこで、Chat GPTを活用して、日報のフィードバックプロセスを効率化し、従業員と管理職の負担を軽減することを目指します。

具体的には、日報に対するフィードバックを自動生成し、適切な指導やアドバイスを提供する仕組みを開発します。
この取り組みによって、従業員がより効果的なフィードバックを受け取ることができるだけでなく、管理職もフィードバックの時間を短縮し、
他の重要な業務に集中することができます。

この記事では、Chat GPTを導入する目的や背景、具体的な実装方法、そして実際の効

元記事を表示

リモート会議の議事録の記入を自動化したい その2 – 動画ファイルから音声を抽出編(ffmpeg)

https://qiita.com/ShinyaNakayama/items/1e43bbdb8150c0d8f88c

その1↑の続きです。
今回は構成で言うと下記の部分を実装します。
数字だと1~3の部分です。
![スクリーンショット 2023-04-02 8.41.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2778864/f01742b5-62e8-27fa-9691-ec12e1e407f8.png)
1. PCからS3に手動で動画をアップロード
1. S3への動画ファイルのアップロードをトリガーにLambdaを実行
1. Lambdaで動画ファイルを音声ファイルに変換してS3の別のバケットに保存
1. S3への音声ファイルのアップロードをトリガーにTranscribeを実行
1. Transcribeで音声ファイルをテキストファイルに変換してS3の別のバケットに保存
1. S3へのテキストファイルのアップロードをトリガーに別のAIツールを用いてテキストファイルを要約する(予定)

元記事を表示

[AWS Q&A 365][Lambda]AWSのよくある問題の毎日5選 #20

# 1. AWS Lambdaにおける並行性とは何ですか?
回答:AWS Lambdaにおける並行性とは、関数が同時に処理できるリクエストの数です。

# 2. AWS Lambdaにおける予約済み並行性とは何ですか?
回答:予約済み並行性とは、特定の関数に予約された同時実行数のことです。これにより、関数の最大同時実行数が保証され、利用可能な並行性のプールがサブセットに分割されます。

# 3. AWS Lambdaにおけるプロビジョニング済み並行性とは何ですか?
回答:プロビジョニング済み並行性は、実行環境のリクエスト数をリクエストされた数だけ初期化し、関数の呼び出しに即座に応答できるようにするものです。これにより、すべてのリクエストが初期化されたインスタンスによって低遅延で処理され、一貫した起動レイテンシで実行されます。

# 4. AWS LambdaにおけるSnapStartとプロビジョニング済み並行性の違いは何ですか?
回答:SnapStartは、遅延に敏感なアプリケーションの起動パフォーマンスを最大10倍向上させるパフォーマンス最適化ですが、追加費用はかかりません。プロビジ

元記事を表示

[AWS Q&A 365][Lambda]Daily Five Common Questions #20

# 1. What is concurrency in AWS Lambda?
Answer: Concurrency in AWS Lambda is the number of requests that a function can handle at the same time.

# 2. What is reserved concurrency in AWS Lambda?
Answer: Reserved concurrency is the number of concurrent executions that are reserved for a specific function. It guarantees the maximum number of concurrent instances for the function and splits the pool of available concurrency into subsets.

# 3. What is provisioned concurrency in AWS Lambda?
Ans

元記事を表示

“Lambda API”と”Serverless Framework”を使ってLambda上にサーバーレスAPIを構築する

## 前置き

APIの構築というジャンルでは[AWS Lambda](https://aws.amazon.com/jp/lambda/) + [AWS API GateWay](https://aws.amazon.com/jp/api-gateway/)という組み合わせは鉄板ではないでしょうか。メンテナンスが不要でコストが低く、サーバ運用の悩みを抱えなくて済むので気に入っています。

ですがLambdaと出会った頃の私は「Lambdaにどんなソースコードを書いたらいいのかわからない」となっていました。
そして少しの時が経ち、最近の私はAPIの処理を[Lambda API](https://github.com/jeremydaly/lambda-api)で実装し、それを[Serverless Framework](https://www.serverless.com/)によって展開するのがかなりイケてるのではと思うようになりました。この記事ではこの構成について解説します。

名称がとてもわかりにくいのですが、Lambda APIもServerless Frameworkもフレーム

元記事を表示

Ruby を利用して Aws lambda function からS3にあるJsonファイルを読込

やりたいこと

Ruby を利用して Aws lambda function からS3にあるJsonファイルを読込したい。

手順

1. S3の該当なDirにJsonファイルを用意します。
2. LambdaFunctionを作成する。
![スクリーンショット 2023-03-29 11.01.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989503/98a8100b-a82b-6055-7715-ee81517f554a.png)

Rubyコード

“`
require ‘aws-sdk’
require ‘time’

def lambda_handler(event:, context:)

# Set region
region = ‘us-east-1’

# API client for S3
s3 = Aws::S3::Client.new(region: region)
##### 引数を格納

元記事を表示

Lambdaの意外な罠?勝手にリトライされる問題に遭遇

AWS Lambdaの関数でタイムアウトエラーが発生し、意図しないリトライが行われる問題に遭遇しました。
CloudWatchで確認してみると、関数が3回実行されていました。

リトライするような設定は特にしていなかったので、この現象は「クラウド破産」という文脈でちょっと怖い事態。

## 調べる

調べてみると、以下が見つかりました。

> Lambda manages the function’s asynchronous event queue and attempts to retry on errors. If the function returns an error, Lambda attempts to run it two more times, with a one-minute wait between the first two attempts, and two minutes between the second and third attempts. Function errors include errors returned by the functi

元記事を表示

【kintone】ルックアップ先を自動更新する方法を紹介

## はじめに
kintoneのルックアップ機能はルックアップ元のデータを更新しても自動でルックアップ先のデータは更新されません。更新するにはルックアップ先で、取得ボタンからデータを更新する必要があります。データの更新が頻繁に発生する場合、毎度取得ボタンからデータ更新するのは手間なので、自動更新する方法について考えました:point_up_tone1:

FormBridgeというkintoneとの連携ツールからデータを更新するケースがあったため、AWS Lambdaを用意して実装を行いました。
ルックアップ項目の自動更新のプラグインもあるようですが、条件が満たないため自作しました。

## アプリの構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700107/f8e35a72-fb0b-6df5-4c7e-dc80cd9f94c0.png)
案件情報で使用するユーザー情報をユーザーマスタからルックアップにて取得します。

## 準備
### AWS Lambdaの環境の作成
こちら

元記事を表示

ChatGPT APIを利用したChatBotを作ってみた【Ruby】

2023年3月1日(日本時間3月2日)遂にChatGPT APIが公開されました。
それ以前にも「ChatGPTを使った〜〜」みたいなサービスが続々と出ていましたが、基本的には本家のChatGPT以外は「OpenAIのAPIを使ったAIサービス」でしかありませんでした。
ここからは各サービスが、ChatGPTを利用しているサービスとして胸を張っていけますね。

というわけで今回は、[以前に作ったChatBot](https://qiita.com/maabow/items/3beba230dd3bdec8cbaa)を改良して流行りのChatGPT APIを使ったChatBotに進化させていきます。ChatBot自体の作り方に関しては[前回の記事](https://qiita.com/maabow/items/3beba230dd3bdec8cbaa)を参考にして作ってください!

## 実装していく
### いきなり寄り道
開発に取り掛かる前に、本家ChatGPTにこの記事を書くことについてどう思うか聞いてみました。
![スクリーンショット 2023-03-30 17.27.51.pn

元記事を表示

【データ基盤構築/AWS】RDSのスナップショットをLambdaを使ってS3に定期的にエクスポートする仕組みを作る

# 今回の課題
下記の記事を参考にしながら、EC2にてRDSを連携させたRailsのアプリを動かすことができたため、
今回は、AWS Lambdaを使用して、RDS内のデータのスナップショットをS3に定期的にエクスポートする機能を作る。

S3にエクスポートしたデータは、今後Snowflakeにしたいと考えている。

https://zenn.dev/ito110/scraps/81b8dd657a5c6b

# RDSスナップショットをS3にエクスポートする機能を実装していく
## 実装手順
### 1)S3にてバケットを作成
RDSのスナップショットをエクスポートするためのS3バケットを作成しておく。

### 2)RDSのスナップショットを作成
`DBスナップショットの取得`ページの、
`DBインスタンス`でスナップショットを取得したいRDS内のDBを指定し、
`スナップショット名`でDBスナップショットの識別子を指定しておく。

※DBスナップショットの識別子は、スナップショットを復元する時などに使用するもので、今回の記事では使用しない。

![image.png](ht

元記事を表示

AWS Lambda Layersで共通関数活用

Lambda Layerということは、複数のLambda関数でライブラリを共有できる仕組みです。
複数のLambda関数は処理を行う前に、Lambda Layerのライブラリを呼び出してから、処理を実行することはできます。
現在、サーバーレス開発が進んでおり、CloudWatch Logsへログを出力していますが、出力する際の規定は無い為、既存の監視システムで処理するのは大変で、既存監視システムの仕様を踏まえてCloudWatch Logsへ出力する共通モジュールを作成し、各業務Lambda処理結果を出力してもらう形で対応することを想定しています。

■構成図
![kannsiイル.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2600067/599d56f1-a63a-13cd-7e30-ded18b998fe1.png)

■設計
① 業務バッチLambda毎に、CloudWatch Logs書込み共通処理をレイヤーを参照し、レイヤー関数経由にてCloudWatch Logsへ業務バッチ処理結果を出

元記事を表示

ChatGPTと会話するSlack botを最速で実装する

## 概要

ChatGPTと会話できるSlack botを実装しました。SlackからすぐにChatGPTに質問することができるようになり、またSlack内でプロンプトの共有や回答内容の検索ができるようになり便利です。

Slack Bolt SDKとOpenAI SDKを活用し、AWS Lambdaにデプロイすることでスピーディに実装することができます。この記事ではその実装方法をステップバイステップでご紹介します。

## botの機能

実装したSlack botには以下の機能があります。

– メンションされた内容に対してスレッドでChatGPTが返信
– スレッド内でさらにメンションされるとそれまでの会話の内容を踏まえて回答

![スクリーンショット 2023-03-30 11.50.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458395/7e657fd1-85ed-57cb-b15c-8da9390451bd.png)

## Slack APIアプリケーションの作成

まずはSl

元記事を表示

【初心者向け】AWS Lambda Layerの作成方法をわかりやすく解説【Python3.9】

AWS Lambdaの開発をしてみようと思うんだけど、Layerって何?Lambdaにどうやったらpip installするの?と思って固まってしまった・・・そう、それは1年前の私。

この記事は、そんなクラウドど初心者の(1年前の)私でも分かるように、AWS Lambda Layerを簡単に作成する方法を解説する備忘録です。

## 1. Lambda Layerとは

まずは、Lambda Layer(”Lambda”はラムダ、”Layer”はレイヤーと読みます)とは何?という話から。

**AWS公式サイトより**

> Lambda レイヤーは、追加のコードまたはデータを含むことができる .zip ファイルアーカイブです。レイヤーには、ライブラリ、カスタムランタイム、データ、または設定ファイルを含めることができます。レイヤーを使用して、デプロイパッケージのサイズを減らし、コードの共有と責任の分離を促進することで、ビジネスロジックの記述をより迅速に繰り返すことができます。(出典:[https://docs.aws.amazon.com/ja_jp/lambda/latest/dg

元記事を表示

OTHERカテゴリの最新記事