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

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

Serverless Frameworkでコンテナイメージを作ってLambdaを動かす

:::note info
これは [ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) カレンダー1の10日目の記事です。
:::

# はじめに
AWS Lambdaでは各言語のランタイムが提供されており、ランタイムのサポートがある言語に関しては実行したいコードをアップロードするだけで簡単にクラウド上で実行することができます。
このようにクラウド上で実行できる一方、ランタイムのサポート期限が切れる前にバージョンアップ対応が必要であったり、コードをアップロードするためのコンパイルやライブラリのダウンロードといった事前処理に時間がかかってしまうケースもあります。

そこで今回はLambdaにアップロードするコードをコンテナイメージ化し、Lambda上で実行できるまでを紹介します。

# 前提条件
今回は以下の環境でLambdaへコンテナイメージをデプロイできるようにします。

– 言語: Python3.9
– パッケージ管理ツール: Poetry
– Serverless Framework v

元記事を表示

AWS-SDKでAWS APIのリクエスト数制限で悩まされた

# はじめに
どうも、Webエンジニアの大西です。

StepFunctionのMapの中でLambdaInvokeタスクを作成し、その中で`aws-sdk.EC2.runInstances()`を呼び出したところ、下記のようなエラーが返ってきました。
“`txt
Error: RequestLimitExceeded: Request limit exceeded.
“`

調べを進めたところ、AWSのAPIには同時リクエスト数に制限があることがわかりました。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/APIReference/throttling.html#throttling-limits

今回は、リクエスト数制限(=リクエストスロットリング)に関する話と回避方法について書きます。

# リクエストスロットリングとは?
詳しい話は[AWS公式の記事](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/APIReference/throttling.html#throttli

元記事を表示

AWS Appsymc Lambdaの練習(チュートリアル)

こんにちは。
SARAH FoodDataBankの沈(シム)です。
弊社のFoodDataBankはAWSのAppsync + Lambdaの組み合わせてサービスを提供しているので、勉強のため、改めてAppsync + Lambdaの組み合わせを実施してみました。

役に立つ対象

既存のREST APIまたはAPI Gatewayを用いてAPIを実装していた方
AppsyncでAPIを実装したい方

システム図

![スクリーンショット 2022-12-08 14.02.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2342115/9d0e13e1-3ae6-199d-4dae-a5e581347a9e.png)

必要なAWSリソース

– Appsync
– Lambda
– DynamoDB
– IAM Role(Lambda用、AppSync用)
– SAM

AppSync作成

まず、AppSyncを作成します。
AWS Consoleで「API 作成」ボタ

元記事を表示

LambdaのランタイムVerUp(Node.js 16.x → Node.js 18.x)の課題と移行アプローチについて

# はじめに

本来はNode.js 16はLTSで2024/4までサポート期間がありましたが、OpenSSL 1.1.1のサポート終了に合わせて7ヶ月繰り上げられています。

https://nodejs.org/ar/blog/announcements/nodejs16-eol/

Lambdaを利用したサービスを相当数開発しており、2024年までは安定稼働させられると考えていた矢先に、早々(2023/09)にNode.jsのバージョンアップを検討しないといけないようです。

https://aws.amazon.com/jp/blogs/compute/node-js-18-x-runtime-now-available-in-aws-lambda/

幸い、Node.js 18のサポートは開始されいる。

移行に当たって、どれ位、コード修正なしで動作するか検証した所、多大な修正が必要だったので、バージョンアップは計画的に!という注意喚起と、誰かの参考になればという事でメモ書きします。

# バージョンアップ検証において分かった課題

+ バンドルされる「AWS SDK」のバー

元記事を表示

サーバーレス環境で構築する最新人気楽曲速報【spotipy】

この記事は、Craft Eggアドベントカレンダー2022、9日目の記事です。
# ■はじめに
Spotifyのレコメンド機能は優秀だなと感じているデータアナリストの落合(@takumining)です。
今回は、Spotifyがレコメンドで使用しているデータを調べつつ人気が急上昇している楽曲をSlackに通知する仕組みを作ってみました。取得できるデータがとても面白いので、今後活用の余地も含めて備忘録として残したいと思います。

# ■今回の内容
1) SpotifyAPIで毎日更新されているSpotify公式プレイリストを取得する。
2) 取得したデータをSpreadsheetに書き残す。
3) GASでスプレッドシートのデータを見て急上昇している楽曲があればSlackに通知する。

※Lambdaだけで完結できる内容ですが、中間に非エンジニアでもデータ操作をしやすい目的でスプレッドシートをデータベースのように活用します。
(完成イメージ)
AppConfigにデプロイされたときに設定内容をslackに通知する

この記事は[モチベーションクラウドシリーズ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/mcs) 9日目の投稿です。

# はじめに

AWSにはAppConfigというアプリケーションの設定などを管理するサービスがあり、さらに今年の3月に機能フラグとしての利用に特化した機能もリリースされました。

https://docs.aws.amazon.com/ja_jp/appconfig/latest/userguide/what-is-appconfig.html

https://aws.amazon.com/jp/about-aws/whats-new/2022/03/aws-appconfig-feature-flags/

機能フラグ(Feature Flag)についてはこちらを参考にしてください。

https://www.atlassian.com/ja/continuous-delivery/principles/feature-flags

弊社サービスにおいてもAppConfigを機能フラグ

元記事を表示

Lambdaを大量に使うETLジョブを運用してきて発生した問題と対策を挙げていく

## ジョブの概要
受け取ったファイルの情報を加工して、DynamoDB、RDS、S3に必要な情報をロードしていくジョブで、StepFunctionsのMapステートを用いて、受け取ったファイル単位にLambdaを並列に実行していきます。
このファイルが50件、Map処理の中のLambdaの数が10くらい。さらにこのStepFunctions自体が並列に10個くらい動く状態です。また、各Lambdaの実行状態をEFSで管理しているため、LambdaからEFSヘのアクセスが頻繁にあります。
![top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/432063/acd861ed-dbc1-c1f3-4e7b-ca5fc195c17b.png)

## Lambda.Unknown
“Task timed out after 900.10 seconds”
普段は2~3分で終わるような処理で処理が終わらずタイムアウトが発生したのでAWSに問い合わせたところ、”お客様が確認されたタイムアウトエラーは当該 L

元記事を表示

【AWS】EvetBridgeとSNSの連携で、送信されるメール本文をカスタマイズする方法

# 1.はじめに
どうも、ARIの名古屋支社に勤務している愛知県民こと、
新藏(にいくら)と申します♪
(/・ω・)/

以前、AmazonConnectでNGワードが検知された際にアラートメールを送信する方法
について記事にしました。

https://qiita.com/Aichi_Lover/items/b819846033b7b02956ba

デフォルトだと以下の様なメールが届き、内容が少々分かりにくいです。

|![400_メールが届く.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372071/bb083a9c-ce95-0580-4a27-8bdd2b7610be.png)|
|:–|

AmazonConnect → EvetBridge → SNS
という順番で連携していましたが、SNS送信用のLambdaを作成し

AmazonConnect → EvetBridge → Lambda → SNS
という順番で連携させることでメールの本文をカスタマイズできました。

そこで今回

元記事を表示

IdentityStoreのdescribe_user()がLambdaで正常実行できない問題を解決する

## 課題

2022年12月8日現在、[boto3のIdentityStore](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/identitystore.html)(AWS IAM Identity Centerのうち、ユーザーアイデンティティー情報を取り扱うAPI)で`describe_user()`を実行しようとすると、期待した戻り値が返らない。具体的には、UserNameとUserIdしか返ってこない。

Azure ADからIdentity CenterにSCIMで連携されたユーザー属性情報を元にQuickSightのAPIを呼びたかったのだが、この状態では何の処理もできない。

## 原因

[GitHub](https://github.com/boto/boto3/issues/3436)で報告され、boto3側では既にFixされているのだが(boto3-1.24.64)、[Lambda側のランタイム](https://docs.aws.amazon.com/ja_

元記事を表示

SAM Local実行時にタイムアウトしてしまう問題への対策

# はじめに
みなさま,こんにちは.
[株式会社オプティマインド](http://www.optimind.tech)にて,GISエンジニアをしている@tkmbnです.

この記事は,株式会社オプティマインドの[2022アドベントカレンダー](https://qiita.com/advent-calendar/2022/optimind-locationtech)へのエントリー記事8日目として書いております.

# 概要
SAMを用いたLambdaアプリケーション構築時に,template.yamlからタイムアウト値設定をしていますが,
その秒数ではローカルテスト時(pytest)ではタイムアウトになってしまう問題がありました.
クラウド上での実行時のタイムアウト値とローカル実行時でのタイムアウト値を変化させたいと思い,
対処法をいろいろと探っていたところ,良さそうな対処法を見つけたので,ご紹介いたします.

# 本題
## 現状の環境
– SAM テンプレートの内容
– API Gateway
– Lambda (複数)
– 複数Lambda内

元記事を表示

【Inspector】Lambda関数の脆弱性スキャン結果をSlackへ通知させてみた

この記事は、「[Relic Advent Calendar 2022](https://qiita.com/advent-calendar/2022/relic)」の8日目の記事です!

# はじめに
re:Inventでリリースされたサービスを試してみる第3弾はセキュリティで有効化必須の「**InspectorによるLambdaの脆弱性スキャン**」になります。設定的にはコンソールをクリックして機能を有効化するだけ完了するもので、それだけですと物足りないので実際に脆弱性スキャンさせてSlackへ通知させるところまで確認してみようと思います。

第1弾はこちら→[【re:Invent】Amazon EventBridge Pipesの検証と今後について](https://qiita.com/hedgehog051/items/3479d4fec43d01fd30f1)
第2弾はこちら→[【完全に】統合型DevOpsサービス「Amazon CodeCatalyst」【理解した】](https://qiita.com/hedgehog051/items/4a8cc0e03e0252e008

元記事を表示

CDK-CfnXXX系のLambda作成方法について

### まず初めに

主にjavaとPHPをメインにプログラミングをしている一般人です。
自身初めてCDKを用いて設計・実装しています。(勉強中の為誤っている場合は教えていただきますと幸いです。)
少しでも誰かの役に立てば幸いです。

### 対象者
– AWSを学び始めた人
– CDKを学び始めた人
– CDKを用いてLambdaを利用したい人

### まず最初にCDKとは?
> AWS Cloud Development Kit (AWS CDK) は、使い慣れたプログラミング言語を使用してクラウドアプリケーションリソースを定義するためのオープンソースのソフトウェア開発フレームワークです。

とあるように、JavaScript、TypeScript、Python、Java、C#等で記述することが可能です。
開発環境の複製も簡単にできるというメリットもあります。

[詳しくはこちら](https://aws.amazon.com/jp/cdk/faqs/)

### この記事で説明すること
– CfnFunctionを使用したLambda設定方法
– policyDocumen

元記事を表示

Chart.jsのグラフを画像ファイルに出力するAWS Lambda関数をコンテナイメージで構築する

## はじめに
こんにちは。READYFORでプロダクトエンジニアをやっておりますtoyocです。
この記事は「[READYFOR Advent Calendar 2022](https://qiita.com/advent-calendar/2022/readyfor)」の7日目の記事です。

## 概要
AWS Lambda x [Chart.js](https://www.chartjs.org/) で画像ファイル出力する際に、コンテナイメージベースでデプロイすることで、めちゃくちゃめんどくさかった構築が、まぁまぁめんどくさいぐらいで済むようになったというお話です。
Chart.jsでグラフを書いたり、実際に画像出力する部分のコードは割愛します。

## あらすじ
> 「いい感じのグラフをこのページに作ってほしい!」
「じゃあ[Chart.js](https://www.chartjs.org/)でいい感じのを作ろう。…ほいできた。」
「いいね!ページに載せるのはこれでいいんだけど、ページのサムネとかにも使いたいからこのグラフ画像化してくれる?」
「毎日データが変わるページだから

元記事を表示

LambdaのPythonライブラリ追加にEFSを使ったときのメモ

AWSのLambdaでPythonのライブラリを読み込みたいときに、一番簡単な方法として、ライブラリをzipにしてレイヤーにアップロードするという方法があります。
ただしこれには制限があって、解凍後に500MBまでのファイルしかアップロードできません。
その解決策としては、
1. EFS(Elastic File System)を使う。
2. LamdaをDockerにする。

という方法があります。
ここでは、より簡単な、EFSを使う方法をとった時のメモを残したいと思います(自分がやった時のメモなので、より良い方法があるかもしれません)。

まず、インバウンドルールをタイプ:NFS、ポート範囲:2049にしたセキュリティグループを作ります。
![スクリーンショット 2022-12-07 6.53.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3025503/4780f6ad-b871-f3a4-4517-adaf0c1dbc40.png)
使用するEFSを用意します。
EFSの管理画面にアクセス

元記事を表示

AWS FinchでAmazon LinuxのJupyterLab環境を作ってみた。Lambdaレイヤー作成用にも使える!

# はじめに

FinchでJupyterLab環境作ります。
さらにLambdaレイヤー作成用にも使ってみます。

# 開発環境
– MacBookPro 2018

# Amazon LinuxのJupyterLab環境を作成
1.[Finch-v0.1.0-x86_64.pkg](https://github.com/runfinch/finch/releases)をインストール

2.finchを初期化

$ finch vm init

~~~
INFO[0000] Using default values due to missing config file at “/Users/user/.finch/finch.yaml”
INFO[0000] “/Users/user/.finch” directory doesn’t exist, attempting to create it
INFO[0000] binaries directory doesn’t exist
INFO[0000] Requesting root access t

元記事を表示

non-pure-Pythonの外部モジュールをLambda上で扱うのに苦労した話

# はじめに
こんにちは、GxPの@ttanaka-gxpです。
この記事はグロースエクスパートナーズ Advent Calendar 2022の7日目です。

Serverless Frameworkを使ってnon-pure-Pythonの外部モジュールを含んだPythonアプリをデプロイした際に苦労した話です。
ハマりどころがあるというのは認識していたので覚悟はしていたのですが、思った以上に時間を取られてしまいました…
その分、勉強にはなったので自分の中での整理も兼ね、今回記事にさせて頂きます。

# やりたかったこと
RDS for SQL Serverに保存している基幹データに対し、関連システム向けに参照用途でのデータ連携の仕組みを構築したいというのが要件としてあり、API Gateway+Lambda+RDSの構成でデータ参照のAPIをPoCとして構築することになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/942766/0907b6cb-c0ea-6ccc-552

元記事を表示

[AWS CDK]SSMのパラメータストアに登録したデータを環境変数にセットする方法

## はじめに
この記事は、[ミロゴス Advent Calendar 2022](https://qiita.com/advent-calendar/2022/milogos) 7日目の記事です。

LINEのチャネルシークレットとアクセストークンをSSMパラメータストアから取得してlambda環境変数にセットした方法をまとめました。

## AWS Systems Manager(SSM)とは
> AWS Systems Manager は、AWS クラウド で実行されるアプリケーションとインフラストラクチャの管理に役立つ一連の機能です。Systems Manager により、アプリケーションとリソースの管理が簡略化され、オペレーション上の問題の検出と解決にかかる時間が短縮されるほか、AWS リソースを大規模かつ安全に管理できるようになります。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/what-is-systems-manager.html

## AWS Systems Manager

元記事を表示

Google AnalyticsのレポートをLambda&Pythonで取得しSlackに投稿する

## まえがき
### やること
Google Analyticsで集計したデータ(ここでは1昨日の投稿ごとのページビュー)をPythonで取得してレポートを作成し、Slackに投稿してみたいと思います。
PythonはLambdaで動かします。

### 書くきっかけ
毎日、Google Analyticsで投稿ごとのページビューを確認しています。
スマホアプリで開いて確認したり、WEBで確認したりしています。
これをプログラムで行うことができないかと考え始め、[Google Analytics Data API](https://developers.google.com/analytics/devguides/reporting/data/v1)というものがあることを知り、挑戦してみることにしました。

### 構成図
今回作成するものを構成図にすると、以下のようになると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252459/0d916d83-ebb7-d85e-5

元記事を表示

AWS CDK + LocalStackでAWSサーバーレス環境をローカルに構築してみた

# はじめに

昨年度書いた[こちらの記事](https://qiita.com/yasomaru/items/fa708a1f21a79e637868)のLocalStackが2022年7月に正式リリースされたということで、今年のアドベントカレンダーもLocalStackについて書きます。
今回はAWS CDK (AWS Cloud Development Kit)を使用し、LocalStack上にサーバレスアプリケーションを構築します。

https://localstack.cloud/

# 環境構築

:::note warn
LocalStackの環境構築については、[こちら](https://docs.localstack.cloud/getting-started/installation/#installation)を参照してください。
:::

## LocalStackの起動

LocalStackの起動方法はいくつかありますが、今回は以下のコマンドでLocalStackを起動します。

“`sh
localstack start
“`

元記事を表示

AWS SAM について初心者なりに見えてきたこと

# 背景
一か月ほど、AWS Lambda 周りに取り組んできたので、ここらで一度振り返ってまとめてみよう

想像力とは知識の再構築であることから、自分の理解しているものをまとめるのは役立つので

新しいことを学ぶときは、自身の理解していることを書き留めることは大切なはず、だって忘れるんですもの :hamster:

# sam command
`sam init` でプロジェクト名でフォルダを作成しつつ初期化
`sam build` で構築して
`sam deploy` でクラウドへ

`sam sync` で、高速デプロイ

https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-sync.html

https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/serverless-sam-cli-c

元記事を表示

OTHERカテゴリの最新記事