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

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

絶対に止めれないシステムの作り方

# 絶対に止めれないシステムとは
もちろん銀行システムとかのクリティカルなシステムもそうなのですが、今回は、そこまでではないのですが、データ連携上一部のapiは止めれないシステムを指します。
僕は直面したのが、Lineでのユーザー登録によるwebhookを受け取るって奴です。
昔のキャリアのユーザー登録であれば、止まっていた時には別途データが飛んできてまとめて処理とかも出来ましたが、Lineさんのはありません。ユーザー登録時のwebhookを取りこぼすと2度と受信出来ないのです。
同様にSNS等で登録時にwebhookが来て、対応する必要があるシステムもあると思います。

# どうすれば良いか?
先ず思うのは、AWSでLambdaで受け取って処理すれば良いと思うでしょう。
これでも良いのですが、Lambdaがエラー処理で落ちたりすることもあります。
## 最初の構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/9d838c57-4857-540e-c8ee-7d5dec19

元記事を表示

DynamoDBにデータを追加する際、「エラー」が出てこない問題に対する解決策

# はじめに
Lambdaを使ってDynamoDBにデータを追加する簡易システムを作っていた際、エラーログすら出力されない問題に当たったので、ここではその知見共有をしたいと思います。

# 1. 今回使用するDynamoDBの構成
### order_infoテーブル

今回は、order_infoテーブルにレコードが追加されるたびにプライマリーキーであるid属性を連番設定し、数を1ずつ増やしていきます。
|id|created_at|host|name|price|quantity|
|:—|:——-| :–|:–|:—–| :——|
|number|number|string|string|number|string|

### id_sequenceテーブル
order_infoテーブルのid属性の連番を管理するためのテーブルです。
※DynamoDBには、オートインクリメントの機能がないため、Lambdaでコードを読み込むと数字をインクリメントするという処理にします。
|target_tabele|sequence|
|:—|:——-|

元記事を表示

AWS CDKのILocalBundlingでLambda FunctionとLayerを構築する

# 概要

AWS CDKを使ってLambda FunctionとLayerを構築する。
やりたいこととしては、

– FunctionのソースはTypeScriptで書く
– Functionにはnpmモジュールを含めない
– Layerはnpmモジュールのみ含める
– 開発中は `node_modules` を参照/解決できるようにする
– 事前準備のためのスクリプトを用意したくない
– 設定ファイルでパスをゴニョゴニョしたくない
– AWS CDK標準の仕組みを使う(FunctionとLayerへのバンドリングの話)

やってないこと/考慮してないことは、

– Layerにユーザー定義のモジュールを含める
– `sam local invoke` で動作すること
– `bash` の動かない環境でのローカルバンドリング

# ファイル構成

最終的にこのようなファイル構成になった(主要なファイルのみ)。
`project/package.json` の `devDependencies` には型定義やら開発時に必要なものが色々入っている。
`project/src/lambda

元記事を表示

AWS Lambdaの関数URLとコールドスタートの付き合い方について

この記事は、[Supershipグループ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/supership) の4日目の記事になります。

## はじめに
Supership株式会社の [@masahito-suzuki](https://github.com/masahito1977) です。
最近ではAWSやDatabricksに関する管理を中心にコストレポート・見える化などをAWS Lambdaを中心に作成しています。
今回Lambdaを久しぶりに利用していると見慣れない機能「関数URL」と言うものがあり、これについて調べてみると、なるほど「今までより簡単にWebアプリが作れる」ようで、更に深掘りして調べた結果を記載しまとめてみました。

serverless関連に興味のある方は是非見ていただければと思います。

## 関数URLとは
2022/04/05 より AWS Lambdaアップデートで新機能 `関数URL` が登場しました。
これまで`API Gateway`を使って、Lamdaを実行する形で

元記事を表示

【AWS】VSCode Remote-SSH+EC2な開発環境を安く安全に作る〜3. スポットリクエスト作成〜

[前回](https://qiita.com/soujiroy/items/7798448fdc71a07005c6)で作成した起動テンプレートを使い実際にスポットリクエストを作成していきたいと思います。今回実施するのは以下の内容です。

1. スポットリクエストの作成
1. (オプション)スポットリクエスト起動用のLambda作成

# スポットリクエストの作成
[この画面](https://ap-northeast-1.console.aws.amazon.com/ec2/home?region=ap-northeast-1#SpotInstancesLaunch:)からスポットリクエストの作成を行います。以下の値以外はデフォルト値で大丈夫です。

* 起動パラメータ
* 起動テンプレートを選択し、前回作成した起動テンプレートを選択
* ネットワーク
* 前提条件で作成済みのVPCを選択
* アベイラビリティーゾーンは前回データ保存用EBSなどを作成したアベイラビリティーゾーンを選択
* インスタンスタイプの要件
* 選択したAMIや開発環境の

元記事を表示

Lambda SnapStart を実現する MicroVM Snapshots の論文を読み解く

# 概要

本記事は、[aws Advent Calendar 2022](https://qiita.com/advent-calendar/2022/aws) の 3日目の記事となります。

* 今回は、先日(2022/11/28)発表された Lambda SnapStart を実現する MicroVM Snapshots について書かれた論文「Restoring Uniqueness in MicroVM Snapshots」を読み解いていくという内容になります。

https://aws.amazon.com/jp/blogs/aws/new-accelerate-your-lambda-functions-with-lambda-snapstart/

## Lambda SnapStart とは

* 一言でこの機能を表すのであれば、Lambda のコールドスタート、初期化処理によるレイテンシーを大幅に削減する仕組みです。

### 機能
#### Lambda の実行環境について

* Lambda は関数の実行が行われた場合、下記の図のような動きを行う。

1: S3バ

元記事を表示

denoとapi gateway with websocketを使ったリアルタイムチャットを作ってみる(fresh, appRunnerも)

api gatewayがwebsocket向けに利用できるという事を知ったのと、個人的にwebsocketの知識が足りていないのと、denoのFreshというFWを触ってみたかったのとあって、やってみることにしました。あと使った事なかったのでApp Runnerも使っておきます。

# 使いたいサービス、技術

– Lambda
– api gateway
– deno
– Fresh
– sam cli
– App Runner
– Docker
– DynamoDB

だいたいこんなところでしょうか。

# 事前準備

このあたりを参考にして進めてみます。

https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/websocket-api-chat-app.html

これをベースにしつつFreshでチャットを作ってみようかと思います。

で、

> このチュートリアルの完了には約 30 分かかります。

とありまして、ボリューミーなんだろうなと思うのでこのへんは要点だけ残しておくことにします。

##

元記事を表示

社内向けチャットボット プログラム説明

# 目次
– [1.はじめに](#1はじめに)
– [2.チャットボットの動き](#2チャットボットの動き)
– [3.処理の流れ](#3処理の流れ)
– [4.入力内容の確認](#4入力内容の確認)
– [4-1.データの取り出し](#4-1データの取り出し)
– [4-2.返答内容の決定](#4-2返答内容の決定)
– [5.メッセージの作成](#5メッセージの作成)
– [5-1.質問・回答文の作成](#5-1質問回答文の作成)
– [5-2.選択肢の作成](#5-2選択肢の作成)
– [6.まとめ](#6まとめ)

# 1.はじめに
昨年作成した、Amazon lexとSlackを使った社内向けチャットボットのプログラムについて
自社のチーム内で説明、共有する機会がありました。
その際に自分の作成したプログラムを他者に分かりやすく説明することが難しいと実感し、
今回このQiitaの記事にそのプログラムについて、簡単な説明を備忘録も兼ねて投稿しようと思います。

昨年作成したチャットボットについての記事は以下になります。
https://qiita.co

元記事を表示

Lambda で MedliaLive の稼働状況を監視して Slack に通知するようにした話

:::note
AWS LambdaとServerless Advent Calendar 2022 2日目の記事です?
:::

## はじめに
みなさん、おはようございます!リバネス開発チームのトミー(@tomyf)です?

弊社では、自社サービス向けのライブ配信システム(以降、ライブ配信システムと表記します)で AWS Elemental MedliaLive を活用しています。
ライブ配信システムを簡単に説明しますと、リバネスが運営する [超異分野学会](https://hic.lne.st) や [テックプランター](https://techplanter.com/) 、ウェビナーなどの配信を、リバネスIDを持つユーザ限定で視聴できるプラットフォームです。

現在はライブ配信が必要なイベントごとに、専用のチャンネルを作成してライブ配信システムに紐付けており、イベント担当者がライブ配信システムからチャンネルの起動/停止を行っています。
皆さんご存知かもしれませんが AWS Elemental MedliaLive は実際の映像のアップストリームとは別に、チャンネルが起動している

元記事を表示

SAMを利用したLambda(Function URLs)デプロイ

## はじめに

[フューチャーAdvent Calendar 2022](https://qiita.com/advent-calendar/2022/future) の2日目です。
この記事は今年2022年4月にリリースされた「Lambda Function URLs」を実務で利用したところ非常に簡単だったので、そのやり方を紹介する記事です。
SAM初心者の方向けの内容になります。

こんにちは、Future CSIG所属の二瓶賢です。
今年から[FutureVuls](https://vuls.biz/)という脆弱性管理サービスの開発チームで働いています。

さて、FutureVulsでは決済サービスにStripeや、メール送信サービスにSendgridといったwebサービスを利用しています。
そういったサービスではwebhookで異常を通知するケースが多いかと思いますが、それらwebhook受信用エンドポイントを都度用意するのが面倒という気持ちもあるかと思います。(私はそうです、特にサービスの検証段階だと猶更です。)

そこで、この記事では[AWS Lambda Funct

元記事を表示

【AWS】EventBridge SchedulerでEC2の自動起動・自動停止

EC2を使用していると、料金を抑えるために使用する時間帯以外は停止する運用をよくします。
その際今までは、手動だと停止し忘れが発生するので、EventBridge + Lambdaで自動化していました。

しかし、2022/11/10にEventBridge Schedulerが発表されたことにより、この機能のみで様々なリソースの自動停止が実現できるようになりました!
EC2を例にして、機能の特徴と作成方法を説明します。
![event_bridge_scheduler.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1166959/81cf816a-0bbc-5cd7-ddc2-531bc72f142f.png)

# ターゲット

– AWSの最新機能を学たい
– EC2, RDS等を自動停止/起動したい
– すでにEventBridge + Lambdaで運用しているが、もっと簡略化したい

# EventBridge Schedulerのいいところ

EventBridge Sche

元記事を表示

Hello AWS SAM World!!

# はじめに
この記事は [アイレット株式会社 22新卒 Advent Calendar 2022](https://qiita.com/advent-calendar/2022/iret-22) 2日目の記事になります。

# AWS SAMとは
AWS SAMとは、AWS サーバーレスアプリケーションモデル (Serverless Application Model)の略で、サーバーレスアプリケーションを構築するためのオープンソースフレームワークです。

![sam君.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269896/9835c4e0-807f-35a2-3fa7-0fc72f632b16.png)
サムくん(勝手に呼んでる)かわいいよね。

# AWS SAMでHello World!
今回は、AWS Lambda上でHello Worldする関数を作成します。

自宅のPCはWindowsなので[Windows用のドキュメント](https://docs.aws.amazon.com

元記事を表示

SalesforceとSlackの連携をゴリゴリカスタマイズしてみる(Salesforceライセンスの節約術)

# はじめに
SalesforceとSlackを連携させて業務の効率化を行っている現場は多いと思います。
ここ数年でSalesforceとSlack間の連携機能はどんどん追加されていき、「SalesforceからSlackに通知する」という要件程度だと、フローを使えば、ほとんど実現できる状態になっています。

ただ、現時点(2022/12月)だと、SlackからSalesforce上のレコードを更新する場合には、若干かゆいところに手が届かないという状態でもあるので、今回はカスタマイズ開発するとこんなこともできます。というご紹介をしたいと思います。

# カスタマイズ開発の概要
今回はSalesforceのレコード詳細に配置したLWCのボタンを押すと、Slackにレコード情報がエスカレーションされ、Slack上のボタンを押して、更新内容を入力するとSalesfoce上のレコードが更新される。というカスタマイズを実装します。

ポイントとしては、Slack上に表示するモーダルからのSalesfoceレコード更新は、**Salesfoceユーザではなくても実行が可能なので、使い方によってはラ

元記事を表示

AWS Lambda における バースト耐性

皆様 こんにちは。 AWS の [kensh](https://twitter.com/_kensh) です。いかがお過ごしでしょうか? 毎年 Serverless Advent Calendar をhostしていまして、多くの方にたくさんの良記事を投稿をいただき、また多くの方に読んでいただけて嬉しく思います。

さて、世間では [AWS re:Invent 2022](https://reinvent.awsevents.com/) と [World Cup 2022](https://www.fifa.com/fifaplus/en/tournaments/mens/worldcup/qatar2022) で盛り上がっていますが、この記事はそれらとほとんど無関係な記事になっています。(一部 re:Invent アップデートも記載)

本稿では、AWSサービスのうち特に AWS Lambdaのバースト耐性について考えてみたいと思います。どのように バースト耐性を実装するか、その手がかりに本稿がなれれば幸いです。

### token bucket algorithm

token b

元記事を表示

AWS CDKに入門してみた。

# はじめに
この記事は[NEアドベントカレンダー2022](https://qiita.com/advent-calendar/2022/ne)(2)の2日目の記事です。
AWS CDKに入門してみたよと言う記事です。

日頃の業務でもAWSに関わる機会が増えてきたので、個人的にAWSには触れるようにしています。
ただ、LambdaとEventBridgeで定期的に何かをするくらいのことしかやったことがなかったので、
今回は最近気になっていたAWS CDKを触ってみました。

# [AWS CDK (AWS Cloud Development Kit)](https://aws.amazon.com/jp/cdk/)
AWSが提供している、 AWS CloudFormationというサービスを我々になじみがあるプログラミング言語で使えるようにしたものという認識でいいと思います。
もっと具体的に説明するとAWSの提供するリソースである、LambdaやVPC、S3などと言ったリソースを、Pythonなどで定義し、デプロイまでできるツールキットです。

AWS CDKのワークショップをやる

元記事を表示

40代おっさんREST API サーバーレスを学ぶ②


## 本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

## 前回

## Lambda関数

AWS Lambdaを開く

一から作成を選ぶ

![Lambdapost.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/14a46127-3bd8-fd09-c882-44cb2bf0b293.png)

関数名を入れる(users-post-function)
ランタイムをpython 3.9

![Lambdaロール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/85d8b7fc-1455-7a4f-4927-8c1b837ab718.

元記事を表示

re:Invent 2022 Lambda の Inspector 対応を検証してみた

# 概要
AWS re:Invent 2022 で AWS Lambda に対して、 Amazon Inspector によるスキャンが対応したため、その機能を検証しました。

https://aws.amazon.com/jp/blogs/aws/amazon-inspector-now-scans-aws-lambda-functions-for-vulnerabilities/

# 結論
本機能は、他サービス向けの Inspector と同様に『既知の脆弱性』を検知するサービスとなります。

よって、以下のようなサービス分類となります。

| リスク | サービス | 備考 |
|—|—|—|
| ライブラリの既知の脆弱性 | Amazon Inspector (本機能) | 主に CVE ベースの検知 |
| コードの不備やバグ | Amazon CodeGuru Reviewer | プログラムミスの検知 |
| プログラムの乗っ取りなど | Prisma Cloud など | ワークロードセキュリティ製品の利用 |

# Amazon Inspector によ

元記事を表示

AWS Lambda / AWS Fargate / AWS App Runner における同時実行の考え方

# 概要

* 今では PC でもスマホでも、あるアプリケーションを実行した際に、マルチプロセスで動作するのが当たり前ですが、例えば MS-DOS などの古い OS では一度に1つのプロセスしか動作させられないシングルプロセスという時代がありました。
* そのため、ユーザは1つのことしか処理できないため「シングルタスク」などとも呼ばれていました。
* これが現在だと、OSで同時に複数処理が行えるマルチタスクとなり、1つのタスクを複数のプロセスで実現しているよう動作となります。
* 例えば、あるサービスを公開したときに、そのサービスを利用するユーザは複数人いると思います。
* そうすると下記のようにサービスが稼働するサーバは多数のユーザから同時に要求され一度に処理する必要がある場合が発生する可能性があります。[(画像引用元)](https://nathanpeck.com/concurrency-compared-lambda-fargate-app-runner/)
* AWS などのクラウドで提供されるコンピュートリソースでは、この同時実行を捌くための仕組みがあります。
* 今回は、

元記事を表示

Slack + Lambda + NewRelicでコーヒー摂取量を記録・可視化できるコマンドを作ってみた

[新卒エンジニアによる全部俺カレンダー2022](https://qiita.com/advent-calendar/2022/arie_onlyme2022) 1日目投稿記事です。

## 概要

作業に集中する時やリラックスする時によく飲むコーヒー・・。
頭が冴えてスッキリするのですが、ついつい飲み過ぎてカフェイン依存症にならないか健康面的に心配になってきました。

そこで自分がどのくらいコーヒーを飲んだか可視化してみようと思い、Slackコマンドを作成してみました。

## 使用技術

Slack API
AWS Lambda + API Gateway
NewRelic

## 用意するもの
– Slackのアカウント / ワークスペース
– AWSアカウント
– NewRelicのアカウント(無料版でOK)

## Slack APIでの設定

Command: 好きなコマンド名(英字)

Request URL: API Gatewayのエンドポイントを設定

![スクリーンショット 2022-11-23 11.01.54.png](https://qiita-image

元記事を表示

【Lambda functions URL】IP制限をかける方法(Python)

# はじめに

Lambda functions URL を使っていて IP 制限をかけたいと思って IAM ポリシーで色々試してみたもののできませんでした。

無理くり Lambda 内で実装したので、その方法を共有したいと思います。

# 環境変数

環境変数に“`IP_RANGE“`=“`'[‘111.111.111.111’, ‘222.222.222.222’]’“`を設定する。

# ソースコード

“`python
import json
import os
import ast

# IPアドレスチェック
def check_ip(IP_ADDRESS, IP_RANGE):
valid_ip = False
if not valid_ip and IP_ADDRESS in IP_RANGE:
valid_ip = True

return valid_ip

def lambda_handler(event, context):
IP_ADDRESS = event[“requestContext”][

元記事を表示

OTHERカテゴリの最新記事