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

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

Lambdaでindex.handler is undefined or not exportedが出た時の対処法

## 問題

Lambda実行時に以下のエラーが発生した

“`bash
index.handler is undefined or not exported
“`

## 対処法

以下の2つを実施した。

### ファイル名の変更

SAMでサンプルアプリケーションを作成したが、ファイル名がapp.jsとなっていたので以下を変更した。

– ファイル名変更
– app.js -> index.js
– package.jsonの変更

“`
“main”: “app.js”,
“`

“`
“main”: “index.js”,
“`

### ランタイム設定の見直し

アップロードしたファイル構造と、ランタイム設定が一致していることを確認する。

例えば、以下の構造の場合

“`
|–src
|–index.js
“`

Lambdaの以下のようにランタイム設定のハンドラ部分をsrc/index.handlerとすれば良い

![markdown-linter – Lambda 2022-04-17 08-56-00.png](https:

元記事を表示

AWS LambdaでPython基礎

2022/4/6(水)に行われたAPNパートナー限定セミナー「Pythonの基礎から学ぶ!サーバーレス開発はじめの一歩」で学んだLambda部分の復習。

AWS Lambdaと Amazon Translate を使ってテキスト翻訳するアプリケーションを作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/e23bb7ce-521c-da78-714d-d6f9589b28e0.png)

# 1.Lambda 関数を実行する

## 1-1. Lambda 関数の作成

マネジメントコンソールで Lambda を開き「関数の作成」をクリックする。
– 「一から作成」を選択する。
– 関数名:適当な名前を付ける。目的がわかるようにしたいので今回は`translate_lambda`とした。
– ランタイム:python3.9

その他項目はデフォルト値のまま「関数の作成」をクリックする。
![image.png](https://qiita-image-store.

元記事を表示

AWS Lambda function URLsを手軽に実行

# 世間の方々よりも少し遅いけど、AWS Lambda function URLs を試してみよう

– ドキュメント
– https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html

## AWS マネジメントコンソール Lambda から

– マネジメントコンソールで操作
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/6a9ecc1c-598a-982b-429e-f58e5bc4f419.png)

– 「関数の作成」ボタンを押す
– 作成された内容を確認 ,URLが払い出しされて紐づいている
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1482752/2c2b3c50-6420-daab-8f78-f68fd38bfa29.png)

作成された URL:https://ej2mqhfzpd45oaz

元記事を表示

Firebase Authenticationを使ってAPI Gatewayに認証機能を付与する

# 概要
Firebase Authenticationに登録されているユーザーだけがAPIを使えるようにするため、
エンドポイントであるAPI Gatewayにオーソライザーを設定します。

処理の流れは以下の通りです。
1. **Firebase Authentication SDK**を使用し**IDトークン**を取得する
2. 取得したIDトークンをヘッダーに付与し、APIGatewayのエンドポイントへリクエストを送る
2. API Gatewayの**オーソライザー**が**Firebase Admin SDK**を使用しIDトークンを検証する
2. 認証できた場合、Lambda関数を実行する

# 対象読者
Firebase Authenticationの機能が分かる方
API GatewayとLambdaでAPIを作成

元記事を表示

Nuxt SSR を AWS Lambdaにデプロイする方法 (Typescript)

# 背景
既存のSPAのサイトにおいて、画面を動的に組み立てると同時にSEO効果を上げるために、
SSR化にすると決めました。

# やり方
いろいろ情報を調べましたが、aws-serverless-expressの情報がほとんとでした。
ただ、aws-serverless-expressは既に廃止され、その後を受け継いだのは@vendia/serverless-expressです。
今回は@vendia/serverless-expressを使って、nuxtのSSRをaws lambdaにデプロイします。

## プロジェクト全体像
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/150479/43060cab-6a3d-6618-a5bd-25d98d4f38d3.png)

## Nuxt
Nuxtのサンプルプロジェクトを作成して、ssrをtrue、targetをserverにして、
`nuxt build`を実行すれば.nuxtフォルダにserverサイトとclientサイドのファ

元記事を表示

リソースベースポリシーで Lambda function URLs のアクセスを制御する

## はじめに
2022/4/6 から利用可能になった Lambda function URLs (関数 URL) はリクエストの認証タイプに `AWS_IAM` を選択できます。AWS_IAM では IAM エンティティのポリシーと AWS Lambda のリソースベースポリシーに基づいてリクエストが認証されます。

https://docs.aws.amazon.com/lambda/latest/dg/urls-auth.html

リソースベースポリシーによる制御パターンについていくつか検証してみました。

## 結論
### できたこと
* クロスアカウントの呼び出しを許可するポリシーステートメントの設定
* PrincipalOrgID を指定した、組織内からの呼び出しを許可するポリシーステートメントの設定
* コンソールからは設定できないため、AWS CLI/SDK での AddPermission API の実行が必要

### できなかったこと
* [AWS グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/la

元記事を表示

serverlessFWにこんにちは serverlessでローカル上でAWS Lambdaを起動・呼び出してみる

## はじめに
[AWS SAMを使ってLambda(GO)のCICDをGitHub Actionsで構築](https://qiita.com/yuta-katayama-23/items/d5c786aaa2a439a3cb17)でサーバーレスアプリケーションを構築するフレームワークとして[AWS SAM](https://aws.amazon.com/jp/serverless/sam/)は触った事があったが、[serverless](https://www.serverless.com/)は触った事がなかったので、serverlessでHello World(Node.js)をやってみたので備忘録を残す。

やってみた事としては、以下の3つ。

– cli上で`severless`コマンドからHello World的なLambda関数を作成するseverless.ymlの作成
– ローカル環境でそのLambda関数を実行し、Lambdaを呼び出し
– 【おまけ】実際にAWS環境にDeploy

ソースコード全体は以下。

https://github.com/yuta-kata

元記事を表示

AWS Lambda Function URLs で API Gateway 設定なしで直接呼び出してみる

AWS Lambda Function URLs (関数URL) が発表されましたね。

https://aws.amazon.com/jp/blogs/aws/announcing-aws-lambda-function-urls-built-in-https-endpoints-for-single-function-microservices/

AWS Lambda 関数用の組み込みHTTPSエンドポイントで、API Gateway 無しでサクっと Lambda 関数を呼び出せます。ちょっと動作確認する際などに便利。上記ブログをざっくり訳して、動作を試してみたので、メモとして残しておきます。

# さっくり翻訳

AWS Lambda を使用したマイクロサービスアーキテクチャを採用して、復元力がありスケーラブルなアプリケーションを開発しましょう。これらのアプリケーションは、ビジネスロジックを実装する複数のサーバーレス機能で構成されています。各機能は、Amazon API Gateway や Application Load Balancer などのサービスを用いて、API エン

元記事を表示

LambdaFunctionURLsを使って30s越えのリクエストを検証する

# まえがき
前回のLambda エフェメラルストレージのアップデートに引き続き、今度はAPIGateway無くてもAPI経由でLambdaが起動できるようになりました。(2022.4.5)
このアップデートによりWebhookの接続先を直接指定できたり、ExpressやFlaskなどのバックエンドframeworkをLambda上に立て、Proxyさせるなどが簡単にできるようになります。
今までもAPIGatewayのProxy機能を利用したり、ALBからLambdaを呼び出すことも可能ではありましたが、よりシンプルにできるにようになりました。

# 概要
既にServerlessFrameworkでも対応されているのですが、ServerlessFrameworkのブログに、それぞれの役割が載っており、とても分かりやすかったです。

[AWS Lambda Function URLs with Serverless Framework 抜粋](https://www.serverless.com/blog/aws-lambda-function-urls-with-serverles

元記事を表示

AWS Lambda 同時実行数、エイリアス、環境変数とか実際の現場で使える機能を勉強してみる

# 概要

AWS認定試験資格取得に向けて実際にAWSを利用してみるシリーズの投稿です。
今回はAWS Lambdaをちょっとしっかり勉強してみようという中級編です。
気が付いたらLambdaがかなり進化をしていて、久しぶりに本を購入して勉強したのでその内容をまとめた投稿になっています。

私が初めてLambdaを使い始めた時の制限、コールドスタート問題の解決(同時実行数)や、実際の現場で使えるLambdaの切り戻し(エイリアス)、環境ごと異なる設定(環境変数)など、実運用で使える機能がたくさんあったのでその内容を投稿します。

認定試験勉強的にはAWS Lambdaの少しコアな部分を掴める内容になっています。
インフラに依存せずサクッとプログラミングができるLambdaを使ってみたい人、興味がある方は読んでみて下さい。

資格試験の勉強法は記事は以下を参照。

[AWS初心者がAWS 認定ソリューションアーキテクト – アソシエイト資格試験に合格した時の勉強法](https://qiita.com/fkooo/items/e5284a4ed3c3466ffd41 “AWS初心者がAW

元記事を表示

IoT リアルタイムデータを Lambda タンブリングウィンドウで集計してみた その2 Lambda 編

# はじめに

この記事は、[前回](https://qiita.com/sugimount-a/items/66e5cbbbf678f9960555)の続きです。

IoT Core の準備が出来たので、実際に Kinesis Data Streams と Lambda タンブリングウィンドウを連携してみましょう。

# システム構成

今回の作業範囲を明記した、システム構成図を載せます。画像右側のデータ集計の本体部分です。

![image-20220411000225976.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/0dda90af-3fb6-47a1-c44c-092776c49021.png)

# Lambda タンブリングウィンドウがデータをどのように集計するのか

今回の構成では、30秒おきに Lambda タンブリングウィンドウをつかってデータ集計をしていきます。30秒の間に複数の Lambda Function がリレーのバトンのように `state`

元記事を表示

【Python】ビットコイン自動売買BotをAWS Lambdaで動かす

# 自動売買ロジックの実装
実装の流れとしては
1. BTCの価格取得
1. 移動平均を計算
1. クロスで取引実行

https://github.com/SohMitian/btc_trade

## CryptowatchからBTCFXの価格データを取得
CryptowatchのAPIを叩いて、BTCFXの価格データを引っ張ります。

“`python
def get_price(min, before=0, after=0):
# Cryptowatchのparamはbefore, after, period
# before: int Unix timstamp
# after: int Unix timstamp
# period: array Example: 60,180,108000

price = []
# 何分単位かを設定
params = {“periods” : min }
# ローソク足取得期間が初期値0以外の時の処理
if before != 0:
params[“before”] = bef

元記事を表示

IoT リアルタイムデータを Lambda タンブリングウィンドウで集計してみた その1 IoT Core 準備編

# はじめに

刻々と数が変化する IoT データや、SNS に投稿されたデータなど、リアルタイムなデータを集めて、集計を行うのは一般的に重労働な作業と言われています。従来のシステムでは集計処理は夜間に行うことがありますが、次のような課題があります。

– リアルタイムなデータではデータ量が多いため、夜間のバッチ処理で終わらない
– 1日1回の集計のため、翌日にならないとデータを活用できない

こういった課題を解決するために、AWS ではデータをリアルタイムに処理するための機能があります。すべてを網羅するわけではありませんが、次のような実現方法があります。

– Kinesis Data Streams と Lambda のタンブリングウィンドウ (Tumbling Window)
– Kinesis Data Analytics

今回は、Lambda のタンブリングウィンドウを使った集計機能を紹介していきます。タンブリングウィンドウとは、データストリームを一定時間周期で集計を行うときに使われます。イメージ図を載せます。リアルタイムなデータを5分おきに集計するような使い方を想

元記事を表示

Lambda function URLsをTerraformでお手軽構築する

# はじめに
4/7に突如登場したLambda function URLs。
ついにAPI GatewayやALBを介さずにLambdaが直接HTTPサーバの機能を持ったので、お手軽に利用する幅が拡がることだろう。
今回は、実際どれだけお手軽になったか、どんなことが制約になり得るかを実際に構築しながら考察をしてみたい。

なお、事前知識としては以下を想定している。

– TerraformでLambda Functionを作成した経験がある
– Lambda Permissionsに関する知識が多少ある

Lambda関数の実装にはGolangを使っているが、基本的なことしかやっていないためそれほど重要ではない。

# 構成図
今回は以下の構成で作成をする。

![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111314/0d20ee3b-7998-c96d-05cf-a48660a19370.png)

– ServerとProxyのLambdaそれぞれにfunction URLsを設定する

元記事を表示

Lambdaまとめ

# はじめに

Lambdaについて軽くまとめてみました〜。
個人的メモです

#### Lambdaメリット

(1)保守・運用に手間がかからない
・マネージドサービス。OSなどの保守を必要としない

(2)高負荷に耐えられる
・Lambdaによるプログラムの実行は、必要に応じてスケーリングする。

(3)コスト削減
・Lambdaは実行時間nに対する課金。稼働中はずっとコストが生じるEC2インスタンスでの運用に比べて、コスト削減可能

#### Lambdaの制限

(1)前回の状態を保持しない
・Lambdaは、実行が終わったときに環境が破棄される、ステートレスな実行環境のもとで実行される

(2)最大稼働時間は5分
・ずっと実行しなければならないプログラムを、lambdaで構成することができない

#### イベントドリブン型のプログラミング
Lambdaはイベントの発生によって、実行が開始、イベントになりうるのは、AWSの様々なサービス。例えば「アラームよって一定時間が経過した」「S3にファイルがアップロードされた」など。また API Gatewayと組み合わせると

元記事を表示

ec2のリストを取得する

# はじめに
ec2のリストを取得します。lambdaで取得したリストをs3に出力します。
# 内容

## s3バケットの準備
ファイルを作成するためのs3バケットを作成します。“`my-resource-list“`としました。

## lambda関数の設定
lambda関数に下記のポリシーをアタッチします。
* “`AmazonEC2ReadOnlyAccess“` ec2を参照するため
* “`my-resource-list“`バケットへの“`s3:PutObject“` ファイルを出力するため

また、タイムアウト時間をデフォルトの3秒から10秒にしました。これは“`ec2.describe_instances“`の実行時間が3秒を超えたためです。

## lambda関数を作る
pythonでboto3を利用してec2情報を取得します。関数“`ec2.describe_instances()“`で取得したdictから必要な情報をcsvにして保管するようにしました。

“`python:
import json
import boto3

BUC

元記事を表示

【Rust】AWS LambdaでWebSocketクライアントにメッセージ送信

AWS LambdaをRustで実装する際のサンプルコードが少なすぎるのでメモ

# 内容

LambdaからAPI Gateway経由でWebSocketクライアントにメッセージを送信する。
送信先クライアントのコネクションIDは入力イベントやDBで動的に取得することが多いだろうが、ここでは簡易化のため固定とする。

# コード

“`toml:Cargo.toml
[package]
name = “sample”
version = “0.1.0”
edition = “2021”

[dependencies]
aws-config = “0.9.0”
aws-sdk-apigatewaymanagement = “0.9.0”
aws-types = “0.9.0”
http = “0.2.6”
lambda_runtime = “0.5.1”
serde_json = “1.0.79”
tokio = “1.17.0”
“`

“`rust:main.rs
use aws_config::meta::region::RegionProviderChain;
use

元記事を表示

【Rust】AWS LambdaでDynamoDB検索

AWS LambdaをRustで実装する際のサンプルコードが少なすぎるのでメモ

# 内容

DynamoDBの検索(スキャン)
例として、とある学校の生徒管理テーブルから指定した部活に所属する生徒の氏名一覧で取得することを考える。

– テーブル名:students_table
– 項目1:name(氏名)
– 項目2:club(部活)

# コード

“`toml:Cargo.toml
[package]
name = “sample”
version = “0.1.0”
edition = “2021”

[dependencies]
aws-config = “0.9.0”
aws-types = “0.9.0”
aws-sdk-dynamodb = “0.9.0”
lambda_runtime = “0.5.1”
serde_json = “1.0.79”
tokio = “1.17.0”
“`

“`rust:main.rs
use aws_config::meta::region::RegionProviderChain;
use aws_sdk_

元記事を表示

[AWS SAM] Lambda関数でOPTIONメソッドを作り「CORSの複数origin対応」を攻略する①(概要説明)

# この記事で解説することを3stepで

– **① CORS許可設定で「Access-Control-Allow-Origin」を「*」にせず、複数originを許可するOPTIONSメソッドをLambda関数で定義する。**
– **② その際にAWSコンソールを弄ってしまったらせっかくSAMで構築している意味が激減する(?)と思っているので絶対に弄らない。**
– いちいちPreflight用のOPTIONメソッドをコンソールからいじるのは面倒だし、SAMと後々競合とかしそうで怖い
– (確認はコンソールを見るのが手っ取り早いので見ます)
– **③ その他CORSに関する説明も交える**

# 記事の構成
– [AWS SAM] Lambda関数でOPTIONメソッドを作り「CORSの複数origin対応」を攻略する①(概要説明)
– 本記事
– [[AWS SAM] Lambda関数でOPTIONメソッドを作り「CORSの複数origin対応」を攻略する②(シンプルな代案の説明)](https://qiita.com/sawa-akabee/ite

元記事を表示

AWS Lambdaの関数URL(Function URLs)のユースケースを真面目に考える

AWS Lambdaに新機能 **Function URLs** が追加されました。

https://aws.amazon.com/jp/about-aws/whats-new/2022/04/aws-lambda-function-urls-built-in-https-endpoints/

https://aws.amazon.com/jp/blogs/aws/announcing-aws-lambda-function-urls-built-in-https-endpoints-for-single-function-microservices/

簡単にいうとAPI Gatewayなしに、HTTPSでのリクエストを受け付けられるようになるものです。

**API Gatewayなしで簡単になったよ!わーい!!** ではなく、今までできなかった何ができるようになったのかを真面目に考えてみました。

# Function URLsの認証

Function URLの認証は`IAM認証あり`と`認証なし`(パブリックアクセス)の二通りがあります。

IAM認証が使える環境であれば

元記事を表示

OTHERカテゴリの最新記事