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

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

スクショで安心プチハンズオン 〜駆け足でServerless Framework × Lambdaプチハンズオンを雑にまとめてみた〜

## はじめに
ここ最近、AWS周りをコツコツ勉強しております。奥田と申します。

これからAWSを学び始める人やAWSに苦手意識を持っている初学者の人向けに、
ファーストステップとしてのハンズオンとして、手軽に取り組めて且つ便利そうなものはないかなと思い、
今回は『Serverless Framework × Lambdaプチハンズオン』をゆる〜く書いてみることにしました。

取り組みハードルを超下げたかったので、大体5分~30分くらいでできるような感じにまとめました。

※エラー想定など万全の解説文ではないので、必要があればググっていただけると幸いです。?
※暇な時に、随時アップデートしようと考えています。

## このハンズオンでできるようになること
Lambda関数は、マネジメントコンソールでぽちぽち手作業で作成/管理等もできますが、関数が増えてくると手入れが大変ですよね。

![ScreenShot 2022-12-15 9.59.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27487

元記事を表示

DynamoDBエクストリームで動くLambdaの起きがちなエラーの対処

# 概要
この記事では、DynamoDBエクストリームで動くLambdaの起きがちなエラーの対処方法を紹介します。

# エラー
まずはじめに、起こるエラーを紹介します。
“`
[ERROR] KeyError: ‘OldImage’
Traceback (most recent call last):
  File “/var/task/lambda_function.py”, line 7, in lambda_handler
    old = event[‘Records’][0][‘dynamodb’][‘OldImage’]
“`
変更前のデータが取得できないエラーです。

# 設定内容

Lambda関数のコードは下記のとおりです。

“`python:lambda_function.py
import json

def lambda_handler(event, context):
print(event)

new = event[‘Records’][0][‘dynamodb’][‘NewImage’]
old = event

元記事を表示

AWS Comprehend + Lambda + NewRelicで毎日のツイートの感情分析を可視化してみた

## 概要
AWSのComprehendを使って自分のツイートの感情分析を行い、分析結果の数値をNewRelicに送信してダッシュボードを作ります。

## 完成図

こんな感じに毎日のツイートのポジティブ・ネガティブを可視化させます。

![スクリーンショット 2022-12-14 20.32.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/689205/52c09bec-0910-a846-a4ea-6161446ecb2c.png)

## 用意するもの

– NewRelicのライセンスキー
– Twitter APIのキー
– Lambda関数

Twitter APIキーの発行やNewRelicの使い方詳細の説明は割愛します。

## Lambdaで関数作成

コードの全体像としてはこんな感じです

“`python
import tweepy
import boto3
import os
import datetime as dt
import json
import reques

元記事を表示

LambdaにRubyのソースファイルをアップロードする方法

## 概要
LambdaでRubyがかけるようになったのですが、画面上のコードをいじるより実際は手元の環境で動かしてそれをデプロイすることのほうが多いと思います。
そこで今回はLambdaに手元のrubyファイルをアップロードする方法を紹介します。
(今回はGemを使わないものを紹介します。Gemを使うものはまた次回記載予定です。)

## 既存の関数のエクスポート
まず、現在のLambda関数を手元の環境に持ってきましょう。
Lambdaの変更したい関数のページに行き、上の方のアクションボタンから「関数のエクスポート」を選択
![スクリーンショット 2022-12-14 23.07.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83409/6af000af-90ec-442e-961f-31d289f2c526.png)
ダイアログの「デプロイパッケージのダウンロード」を選択
![スクリーンショット 2022-12-14 23.07.13.png](https://qiita-image-sto

元記事を表示

Slack APIでLambda(Node.js)でランダムで絵文字のリアクションをする(reactions.add)

furikaeruという、1日の振り返りを簡単に楽しくできるSlack botを作りました。こちらがその記事です。

https://qiita.com/kakudaisuke/items/18681418cebc3bee93b5

この中で、メッセージに対してLambda(Node.js)を利用して、botで絵文字のリアクションをするという実装をしたのですが、シンプルそうなのにで、あまりサンプルコードにありつけず、ちょいと手こずってしまったのでメモを。

ランタイム: Node.js 14.x

Slack APIの`reactions.add`を使います。
必須パラメータはtoken, channel, name, timestamp。

https://api.slack.com/methods/reactions.add

“`js:index.js
const AWS = require(‘aws-sdk’);

exports.handler = async (event) => {
const eventBody = JSON.parse(event.body);

元記事を表示

[2022年版]Lambda+API GateWayでAPIを爆速構築

## 概要
今までなにかAPIを作るときはレンタルサーバーを借りていたりしたのですが、もう時代はとっくにサーバレスに進んでいるなと思いまして、今更ながらこのような基礎的なことをしてみようと思いました。

## 作るもの
最終的にはタイトルにあるようにLambdaとAPI GateWayを用いてAPIを構築していこうと思います。

## 実践
### Lambda
まず、Lambdaの方で関数を用意します。
下記のLambdaのページから「関数の作成」を選択しまして
![スクリーンショット 2022-12-14 5.15.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83409/89bb8a94-d16a-f858-f149-fa530caafba6.png)
関数名と言語を決めて「関数の作成」を選択します。
自分はRubyが好きなので言語をRubyにしてますがNodeが初期選択されてるので一般的な気がしてます
![スクリーンショット 2022-12-14 5.16.21.png](https://

元記事を表示

社員同士を趣味でマッチング!?社内のコミュニケーション活性化ツールを新卒1年目のチームで開発しました

## はじめに
こんにちは。推薦基盤ブロックの新卒1年目の関口です。
この記事は [ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) カレンダーVol.7の14日目の記事です。
先月から社内で利用開始されましたコミュニケーションの活性化を目的とした**社員マッチングツール**について簡単にご紹介します。

## 背景
リモートワークが普及し、社員同士が顔を合わせる機会がなくなってませんか、、、。
働いていくなかで社内の仲間との連携を強くしていくにはコミュニケーションの促進が必要です!でもオンライン上で気軽に社内の人と話せる機会って意外とそんなに多くありませんよね。
そんなこともあり、**社内で他部署や普段関わらない社員との関わりを求める声**が多いです。

そこで社内でコミュニケーション活性化させるため**社員マッチングツール**の開発を新卒1年目のチームで行いました。

## 詳細内容

開発したサービスは、

**共通の興味・関心を持つ社員同士をMLモデルを使ってマッチングします!

元記事を表示

Serverless Framework を用いて Step Functions Distributed Map による Lambda の大規模並列処理を実現する

# Step Functions Distributed Map が発表されましたね!

先日の AWS re:Invent にて、**Step Functions Distributed Map** が発表(GA)されました!
(Distributed Map の公式リリースは以下。日本語でリリース内容を知りたい方は[DevelopersIOによる速報](https://dev.classmethod.jp/articles/new-feature-step-functions-distributed-map-reinvent2022/)を参照)

https://aws.amazon.com/jp/blogs/aws/step-functions-distributed-map-a-serverless-solution-for-large-scale-parallel-data-processing/

上のリンクの通り、公式リリースでは手動でAWSコンソール上から実現する手順が記載されています。
しかしながら、実際に商用で利用する場合には、AWS CDK や Serverles

元記事を表示

LambdaでDynamoDBのトランザクション処理をおこなう(Python)

# 概要
DynamoDBへのトランザクション処理をPythonで書く方法を紹介します。

# 前提条件
– DynamoDBのテーブルが用意されていること

# 環境
– Lambda
– ランタイム:Python3.9
– リージョン:ap-northeast-1

# コード
“`python
import boto3

dynamoDB = boto3.resource(“dynamodb”)
table_name =
table = dynamoDB.Table(table_name)
client = boto3.client(‘dynamodb’, region_name=’ap-northeast-1′)

def lambda_handler(event, context):
id1 = <更新するデータの主キー>
id2 = <更新するデータの主キー>
column1 = <更新する値のカラム名>
column2 = <更新する値のカラム名>
data1 = <更

元記事を表示

シフト自動化をサーバーレスアーキテクチャと遺伝的アルゴリズムで作成した話

# 概要
シフト作成の自動化を行ったのでそのやり方について共有します。
今回は遺伝的アルゴリズム x サーバーレスアプリケーションで作成したのでなるべく費用を抑えながら、比較的簡単に複雑なシフトの自動作成アプリケーションを作成出来ました。

# 遺伝的アルゴリズムとは

>遺伝的アルゴリズム(G.A.:Genetic Algorithm)とは簡単にいうと、生物の進化の仕組みを模した、最適化のためのアルゴリズムのことです。
生物の進化の過程で起きる「環境に適応し、より強い個体が生き残り、環境に適応できない弱い個体は淘汰される」という現象からヒントを得て、プログラム上で優秀な個体を次世代へと受け継ぐ仕組みが遺伝的アルゴリズムです。

優秀な遺伝子を掛け合わせていくとより優秀になっていくという原理を様々な問題解決の方法としてプログラミンで模倣するということです。

基本的に遺伝的アルゴリズムは最適化問題で使用されるロジックで、タイムスケジューリング問題や巡回セールスマン問題などが代表的な例として挙げられます。
最適化問題の解を見つける方法として数理最適化という方法もあるんですけど、調べる中で

元記事を表示

Amplify CLIで作ったAppSyncエンドポイントからLambdaを起動する

# この記事について

この記事は [AWS AmplifyとAWS×フロントエンド Advent Calendar 2022](https://qiita.com/advent-calendar/2022/amplify) に向けて書かれた記事です。

AmplifyにはAmplify CLIというものがあり、それを使って簡潔なコードを元にAppSyncのエンドポイントやDynamo DBのテーブルといったバックエンドを作成することができます。 Amplify CLIの詳細が気になる方は [公式ドキュメント](https://docs.amplify.aws/cli/) へどうぞ。

公式ドキュメントにも記載されているように、AppSyncのエンドポイントからLambdaを呼び出すことができます。Lambdaを使うと、バックエンドのビジネスロジックを作成することも可能です。
この記事では例を交えながら、Lambdaを使ってバックエンドを作成する方法を紹介します。

# 例題

Spotifyのような音楽ストリーミングサービスを作っているとします。
このサービスではユーザが好きな曲を選

元記事を表示

SAMでAWS Lambda(カスタムイメージ) + API Gatewayを構成するときに、できるだけ効率的なlambda関数のunit testを考える

# 概要

Lambda + API GatewayをSAMを使って構成するときに、カスタムイメージを使ったlambda関数に関する情報があまり出て来なかったので、試行錯誤した内容を残す。具体的には以下の内容。

– lambda関数をカスタムイメージで作るときに、作った関数をunit testするときのtips

# カスタムイメージを使ってlambda関数をunit testすることの難しさ
カスタムイメージを前提としたLambda + APIGatewayを構成しようとすると、大体以下のようなディレクトリ構成になる。

“`
.
├── README.md
├── __init__.py
├── lambda_function
│   ├── Dockerfile
│   ├── __init__.py
│   ├── app.py
│   └── requirements.txt
├── events
│   └── event.json
├── samconfig.toml
├── template.yaml
└── tests
├── __init__.py

元記事を表示

運用中のAPIでエラーが出たときどうやって検知してSlackに通知しよう 〜実装編〜

# はじめに
これは [KWC Advent Calendar 2022](https://qiita.com/advent-calendar/2022/kwc) の記事です。

はじめまして、KWCに新卒で入社して、バックエンドエンジニアをしているユウスケと申します。
テックブログは初めてです!

**\*紹介\***
昨日の記事で[運用中のAPIでエラーが出たときどうやって検知してSlackに通知しよう 〜概要編〜](https://qiita.com/Suzurikawa/items/cad72315337bb01bb414) の続きとなりますので、先に概要編を読むことをおすすめします!


https://qiita.com/Suzurikawa/items/cad72315337bb01bb414

# 目次
1. [概要編をサクッとおさらい](#概要編をサクッとおさらい)
1. [システムの構成](#システムの構成)
1. [いざ実装へ](#いざ実装へ)
1. [まとめ](#まとめ)

# 概要編をサクッとおさらい
今回や

元記事を表示

Lambdaを使ったPDFファイル作成とダウンロード

## 課題

Lambdaを利用したSPA(Vue)アプリケーションにおいて、ユーザーに必要な情報をPDFファイルにまとめてダウンロードさせる必要が生じました。
「Lambda」と「PDF作成」で検索すると、`chrome-aws-lambda`を利用してPDFファイル作成を行えば実現できそうなことがわかったのですが、PDFファイルを生成して直接ダウンロードさせるようなコードは見つからなかったため調査・作成することにしました。

## 準備

### chrome-aws-lambda

Puppeteer を使ってPDFファイル作成を行うため、まずは chrome-aws-lambda をLambda Layerとして登録しました。
詳細な手順は以下の記事にありましたので、それを参考に進めています。

https://dev.classmethod.jp/articles/run-headless-chrome-puppeteer-on-aws-lambda/

### 日本語フォント

デフォルトの環境だと日本語が文字化けしてしまうようです。
参考にしたコードではURL参照でロード

元記事を表示

DynamoDBのレコードを主キー以外で取得するLambda

# 概要
LambdaからDynamoDBのレコードを主キー以外で取得する方法を紹介します。

# 前提条件
– DynamoDBにテーブルが作成されており、データも登録されていること
– 必要なIAM権限が付与されていること

# 環境
– ランタイム:Python3.9
– リージョン:ap-northeast-1

# コード
“`python
import boto3
from boto3.dynamodb.conditions import Attr

dynamoDB = boto3.resource(“dynamodb”)
table_name =
table = dynamoDB.Table(table_name)

def lambda_handler(event, context):
column = <検索に使うカラム名>
data = <検索に使う値>

responce = table.sc

元記事を表示

AWS CDKでのTestを実行するときにLambdaのスタックがあると実行が途中で止まる問題の解決法

ミロゴス開発Gでは基本的にインフラにAWSを使うことが多いです。古くから存在するシステム等もあるものの、新規のシステムに関しては、なるべくサーバーレスな環境で設計するよう心がけています。

インフラ部分はAWSのIaCツールであるAWS CDKを使っています。CDK PipelinesでCI/CDも手軽に組めるので大変気に入っているのですが、Lambdaのコードのユニットテストは書いているものの、AWS CDK自体のテストは今まで避けてきました。

ちょうどこのあたりに手を付けられるタイミングだったので、いざ書いてみたものの、表題の通りLambdaのスタック作成でエラーにハマり、だいぶ時間を溶かしてしまいました。
あまり日本語でまとまった記事もなかったので、問題の詳細と解決方法をしたためておこうと思います。

– サーバーレスな弊社環境の例
![スクリーンショット 2022-11-16 14.36.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/141823/043bcdee-127c-2e8c-5

元記事を表示

API GatewayとLambdaを連携させる

# 構成図
APIGateway→Lambda→SNS
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2989225/2bbc334f-32e6-af61-149a-7f5ba0e9fe4e.png)

# 前提知識
– AWS Lambda単体ではLambda関数の実行ができない。
Lambda関数を実行させるためには、他のサービスリソースで処理を起動させるきっかけとなるトリガーが必要
Lambdaを実行するトリガー
①トリガーと同期して関数を起動するタイプ
 例)API Gateway、手動実行
②イベントが発生したことを検知して非同期で関数を実行するタイプ
 例)Amazon S3、CloudWatch Log、CloudWatch Eventsからの実行

# 流れ
・SNSトピックの作成
・Lambdaの作成(SNS連携)
・LambdaのIAM設定
・API GatewayでAPIの作成
・動作確認

# SNSトピックの作成
マネジメントコンソールのSNSの画面からトピッ

元記事を表示

Lambda+固定IP利用におけるデメリット

# Lambda+固定IP利用におけるデメリット

この記事は[AWS LambdaとServerless Advent Calendar 2022](https://qiita.com/advent-calendar/2022/lambda) の12日目の記事です。

セキュリティ要件や対向する外部システムの制約でアクセス元を制限するため、固定IP化する必要があります。
せっかく、Lambdaを使ったサーバレス構成でシステムを構築して、リソースと運用を効率化したくても、いくつも制約が生じてしまいます。

VPC Lambdaの制約は解消しつつありますが、非VPCでLambdaを利用して固定IPが利用できるようになるといいなと思い、現状の制約をまとめてみました。

なお、AWS Dev Day Japan 2022で登壇した際の資料に運用中のシステム構成、Lambda+Neptuneとの組み合わせで発生した問題などを記載しています。また、VPC Lambda + Neptune以外に、資料記載のサービスでは、VPC Lambda + RDS Proxy + Auroraの構成のシステム

元記事を表示

運用中のAPIでエラーが出たときどうやって検知してSlackに通知しよう 〜概要編〜

# はじめに
これは [KWC Advent Calendar 2022](https://qiita.com/advent-calendar/2022/kwc) の記事です。

はじめまして、(株)KDDIウェブコミュニケーションズ でバックエンドエンジニアをしています[chihiros](https://github.com/chihiros)と言います。2021年11月にKWCへ入社し、熊本や福岡などからフルリモートで日々業務を行っています。

この記事では本番稼働中のプログラムがエラーを出したときに、どうやったらエラーの存在に気づけるのかについて書いていきます。

1日目の記事、[試用期間中に会社の主力事業のAWS環境をゼロからTerraform化した](https://hikarun-sre.hatenablog.jp/entry/2022/12/08) の中にも書かれてあるように、弊社ではビジネス向けにレンタルサーバーを提供しています。その中で一部の社内システムにはAWSやAzureと言ったクラウドを使っています。

https://hikarun-sre.hatenabl

元記事を表示

[Laravel × AWS Lambda] Brefを使って、サーバレスでLaravelを実行してみた!

## まえがき

こんにちは。
[bref](https://bref.sh/docs/)を使って、AWS LambdaでLaravelを実行してみました。

そこで、この記事では、brefの簡単な紹介をしつつ、主に「使ってみて感じたメリット」を書いています。
感想のみが気になる方は、この記事の[使ってみて感じたメリット](#使ってみて感じたメリット)だけ読んでもらえると。

## brefとは?

brefは、AWS Lambda上でPHPを実行するためのランタイムを提供するパッケージです。
紹介は公式を読んでもらった方が早いです。

https://bref.sh/docs/

> PHP サーバーレスを実行する場合:
> – サーバーをセットアップする必要はありません。クラウドプロバイダーがそれを処理します.
> – 使用した分だけお支払いいただきます。
> – アプリケーションは自動的にスケーリングします。

まんまサーバレスのメリットって感じですね。

ただ、bref特有のキモは下記です。

– LambdaでのPHPのランタイムを手軽に準備できる
– Laravel・Sym

元記事を表示

OTHERカテゴリの最新記事