Lambda関連のことを調べてみた

Lambda関連のことを調べてみた
目次

Error: You must sign in or use a license key with Serverless Framework V.4 and later versions. Please use “serverless login”.の解決方法

Serverless Frameworkをv3系からv4系にアップグレードしたところ、デプロイワークフローで以下のエラーが出たので、解消時の手順を記載します。

“`
$ nest build && sls deploy

✖ Error: You must sign in or use a license key with Serverless Framework V.4 and later versions. Please use “serverless login”.
at Authentication.getAuthenticatedData (file:///home/runner/.serverless/releases/4.4.3/package/dist/sf-core.js:647:10535)
at async Authentication.resolverAuthenticate (file:///home/runner/.serverless/releases/4.4.3/package/dist/sf-core.js:649:20575)

元記事を表示

Generated Blog Post

初めてのblogの内容

blog自動生成の構成について一連の流れを作成いたします。

元記事を表示

AWS_LAMBDA_SECURITY_NOTIFICATION への対応

# はじめに

もう少し皆さんも興味が湧くような内容を紹介していきたいと日々考えている [@\_\_\_nix___](https://twitter.com/___nix___) です。

今回もAWSからの通知でお悩みの方向けの記事です。

# 背景

AWSからの通知例

これは、2024 年 7 月 4 日の Lambda GetFunction API 認可の変更についてのご連絡のフォローアップで、お客様の対応が必要となる場合があります。この変更の実施は、以前にお知らせした 2024 年 7 月 27 日から 2024 年 10 月 2 日に延期されました。また、お客様に確認と必要な変更の時間を設けるため、お客様のアカウントを 2024 年 XX 月 XX 日まで例外リストに追加しました。 以前は、ListTags API を明示的に使用する場合にのみ ListTags に対する権限が必要でした。しかし、GetFunction API 権限を持つプリンシパルは、ListTags API が明示的に拒否されている場合でも、G

元記事を表示

【AWS】localhost:3000とAPI Gatewayでやりとりするために必要な設定

どうもこんにちは。

今回は、ローカル環境で動かしているアプリケーションとAPI Gatewayでやりとりするための方法をメモとして残しておきたいと思います。

# 環境

今回使用する環境はこちらです。

– ローカル環境
– Next.js([`Vercel V0`](https://qiita.com/PDC-Kurashinak/items/bc25e63ba406c0e24eef)で作成したアプリケーションを元にしています。)
– AWSサービス
– API Gateway
– Lambda(python3.12)

`Vercel V0`については、以下の記事で紹介しています。

https://qiita.com/PDC-Kurashinak/items/bc25e63ba406c0e24eef

# 前提

今回は、ローカル環境のアプリケーションと`Lambda`関数の作成は省略します。

# API GatewayでAPIを作成

## 1. APIの作成

## 1-1. 作成画面へ

API一覧画面の右上にある「APIの作成」ボタンをクリッ

元記事を表示

ExcelのLAMBDA関数を極める:独自の関数を作成するための完全ガイド

## はじめに

Excelの新機能「LAMBDA関数」について、詳しく解説していきます。この革新的な機能により、Excelの数式言語がより強力になり、ユーザーが独自の関数を定義できるようになりました。以下、15章に分けて、LAMBDAの基礎から応用まで、コード例を交えながら丁寧に説明していきます。

## 第1章:LAMBDA関数の基本

LAMBDA関数は、Excelユーザーが独自の関数を作成できる画期的な機能です。これにより、複雑な計算や繰り返しの多い作業を簡単に行えるようになりました。LAMBDA関数の基本的な構文は以下の通りです:

“`
=LAMBDA(パラメータ1, パラメータ2, …, 計算式)
“`

例えば、2つの数値を足し算する簡単な関数を作成してみましょう:

“`
=LAMBDA(x, y, x + y)
“`

この関数を使用するには、セルに直接入力するか、名前付き関数として定義します。LAMBDA関数を使うことで、Excelの標準関数では実現できなかった複雑な計算も可能になり、作業効率が大幅に向上します。

## 第2章:名前付き関数の作成

元記事を表示

特定のLambdaを指定した時刻に実行する(Node.js)

Lambdaで、自分自身を1分後に呼び出せるようにしてみました。

## 要約
– EventBridge Schedulerを使用
– 2種類のロールを用意する必要がある
1. 実行ロール
1. EventBridgeのスケジュールに付与するロール
– 作成しようとしているスケジュールと同名のスケジュールがあるとエラーになるので、先に削除が必要

## IAMロールの用意
### 1. 実行ロール
Lambdaで実行する場合、Lambdaの実行ロールに下記を含める
“`json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “Statement1”,
“Effect”: “Allow”,
“Action”: [
“scheduler:CreateSchedule”,
“scheduler:DeleteSchedule”,

元記事を表示

「Lambda GetFunction API 認証の変更に関するフォローアップ」に慌てて調べたら原因はAWS管理ポリシーだった

今回は時事ネタというか。。

# Problem

2024/09/29にAWSから次のようなタイトルの警告メールが届きました:

> __[要対応] Lambda GetFunction API 認証の変更__ に関するフォローアップ | [Action Required] Follow up on changes to Lambda GetFunction API authorization [AWS Account: XXXX] [XX-XXXX-X]

本文には以下のようにあって・・・

> ListTags API を明示的に使用する場合にのみ ListTags に対する権限が必要でした。しかし、GetFunction API 権限を持つプリンシパルは、ListTags API が明示的に拒否されている場合でも、GetFunction 呼び出しによって出力されたタグ情報にアクセスできました。 __2024 年 10 月 2 日以降、Lambda は GetFunction API を呼び出すプリンシパルに ListTags API に対する明示的な許可権限が設定されたポリシー

元記事を表示

Pythonで湧き水APIを触ってみる+LambdaでAPIを自作してみる

# はじめに
インターネット上でデータをやり取りする際、APIは非常に便利なツールです。
APIを利用することで、さまざまなデータにアクセスしたり、サービスを実行したりすることができます。
しかし、「APIを自分で使うにはどうすればいいの?」と疑問を持つ方も多いかもしれません。

本記事では、APIの基本的な概念から始め、自分でAPIを実行し、その応答を確認する方法を紹介します。

前半でAPIとは何かを説明した上で、Pythonを使って実際にAPIを呼び出し、データを取得する体験をしてみましょう。
そして後半では、AWS Lambdaを使用して自分で関数(API)を作成しLambda上でのテストとVScodeを使用してPythonで自作API呼び出しまでを行います。

この記事は以下のような人におすすめです。

– APIを実行する方法が知りたい
– AWS Lambdaを使用した関数作成の方法が知りたい

# 記事の構成

**【前半】**
APIとは何か?というところから湧き水APIを呼び出して応答を確認するところまでを行います。
1. APIって何?
1. 湧き水A

元記事を表示

LambdaからLex インテントのサンプル発話を更新しビルドする

# はじめに
本記事では、AWS Lambda のスクリプトからLex Bot のサンプル発話を更新し、DRAFTバージョンをビルドする処理を実装していきます。

# 環境
– Python:3.12
– Lex:v2

# ゴール
Lambda関数から下記の2点を実行する
– Lex Botのサンプル発話の内容を更新する
– Lex BotのDRAFTバージョンをビルドする

LambdaからLexのビルドについては下記の記事に実装しています。

https://qiita.com/enumura1/items/2e1564871f861f2578ac

# Lex
本記事では下記のように6つのインテントのあるLex Botを想定しています。
“`:インテント(初期)
・intent0001(サンプル発話:あああ)
・intent0002(サンプル発話:いいい)
・intent0003(サンプル発話:ううう)
・intent0004(サンプル発話:えええ)
・intent0005(サンプル発話:おおお)
・FallbackIntent
“`
これらLex インテント 6つのう

元記事を表示

「AWS Hands-on for Beginners Serverless #3 AWS Lambda と AWS AI Services を組み合わせて作る音声文字起こし & 感情分析パイプライン」をAWS CLIでやってみる

https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Serverless-3-2022-reg-event.html?trk=aws_introduction_page

上記、「AWS Hands-on for Beginners Serverless #3 AWS Lambda と AWS AI Services を組み合わせて作る音声文字起こし & 感情分析パイプライン」 をAWS CLIでやってみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3297641/de799de6-3293-eb51-4710-8764f7f12825.png)
ハンズオンから引用

# 03 S3 トリガーで Lambda ファンクションを起動する
## S3バケット作成
### 変数
“`bash:コマンド
# バケット名
date_var=$(date +%Y%m%d) \
&& echo ${date_var}

元記事を表示

AWS Lambdaを単体で動かしてみた

## 参考にしたハンズオン
公式で公開されている以下のハンズオンを見ながら自分でやってみました。

https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Serverless-1-2022-confirmation_422.html

このハンズオンのゴールは以下の構成ですが、本記事ではAWS Lambdaを単体で動かしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3848705/a0ef753a-a545-9764-d3df-99f68a0ec025.png)

## やってみる
マネジメントコンソールにアクセスし、Lambdaのページにアクセスします。
「関数の作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3848705/c905d830-ab7f-25c1-710e-f2

元記事を表示

AWS Lambdaでなんちゃってオートスケーリング

現在運用中のELB配下にあるEC2インスタンスの負荷が高くなってきたため、負荷の高い時間帯のみEC2インスタンスを追加してELBに登録させるという処理をLambdaを使って行った際の備忘録です。

※運用中のELBはNLBですが、ALBでもだいたい同じだと思います。

・負荷の高い時間帯になったら:EC2インスタンスの起動>ELBへの登録
・負荷の低い時間帯になったら:ELBから削除>EC2インスタンスの停止

## 1. ポリシーの作成(EC2インスタンスの起動・停止用)
「IAM > ポリシー > ポリシーの作成」に進みます。

サービスからEC2を選択して下記アクションを許可します。
“`
ec2:Describe
ec2:Start
ec2:Stop
“`

“`
ポリシー名:Auto_EC2-Policy
“`
※分かりやすい適当な名前を入力して保存

## 2. ポリシーの作成(ELBへの登録・削除用)
再度「IAM > ポリシー > ポリシーの作成」に進みます。

サービスからELB v2を選択して下記アクションを許可します。
“`
RegisterTarget

元記事を表示

AWS NLBを活用した自動メンテナンスモードの実装: EC2インスタンスの停止時にSorryページを表示する仕組み

## はじめに
本記事では、AWSのNetwork Load Balancer (NLB)を使用して、2台のEC2インスタンスが稼働するサービスにおいて、両方のインスタンスが停止した際に自動的にメンテナンス用の「Sorryページ」を表示する仕組みを解説します。

また、1台でもインスタンスが復旧した際に通常サービスに戻る自動化構成についても紹介します。

このシステムは可用性とメンテナンス性を向上させるために有効ですが、現在は検証を行っていないため、今後自分の環境で実施していく予定です。

## フロー全体の流れ
### 通常時のトラフィックフロー

“`css
クライアント

NLB

通常のターゲットグループ

稼働中のEC2インスタンス (通常サービス)
“`

:::note
**クライアント → NLB**
ユーザーがサービスにアクセスすると、リクエストはNLB(Network Load Balancer)に送信されます。

**NLB → 通常時のターゲットグループ**
NLBは正常に稼働中のEC2インスタンス(通常のターゲットグループ)にト

元記事を表示

Lambdaを使ってDiscordBot(Python)の実行

## はじめに
今回作成したDiscordBot(Python)は、Discordのチャンネルに対してメッセージを書き込むものを作成しました。
また、毎日0:00に書き込んでほしいので、EventBridgeからLambdaを起動して書き込む仕組みにしました。

用途としては、FiveMのガソリンスタンドを経営しており、ガソリンの価格を日々変更したく、一定の範囲のランダム値を投稿するのと、ゲーム内でのX(ツイッター)でポストするためのテンプレート文章をDiscordのチャンネルに投稿するものを作成しました。

## 構成イメージ

EventBridgeからLambdaを起動して、Discrodのチェンネルにメッセージを書き込みます。
【全体の概要構成】
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3868301/d03f1b86-7eea-e78d-2707-51147cf2ef6b.png)

【EventBridgeとLambdaの構成】
![image.png](https:

元記事を表示

AWSによる自動メンテナンスページ表示の実現: NLBとLambdaを活用した可用性向上の構成案

## はじめに
実務において、ネットワーク負荷分散(NLB)を利用した構成で、システムが停止した際に自動でメンテナンスページ(Sorryページ)を表示させる必要がありました。

特に、EC2インスタンスが停止した際に、その状態を監視して自動的にSorryページへ切り替えるフローの構築が求められ、EventBridgeやLambdaを利用した動的な制御が必要でした。

今回の記事では、この動作を実現するために行った構成案について、考えましたので、検証前の自分への備忘録として整理していきます。

## 前提知識
基本的なAWSに関する知識は以下になります。

:::note
**NLB (Network Load Balancer):**
通常時、クライアントのリクエストはヘルシーなEC2インスタンスへルーティングされます。

**EC2インスタンス:**
ヘルシーな状態であれば、通常のサービスを提供します。

**EventBridge:**
EC2インスタンスの状態(Unhealthyかどうか)を監視します。すべてのインスタンスがUnhealthyになると、イベントを発生させます。

元記事を表示

cargo-lambda + cargo-lambda-cdkでRustで書いたLambdaをAWSにデプロイするハンズオン記事

## はじめに

LambdaをRustで書く機会がありました。
LambdaはRustを標準でサポートしているわけではないので、通常であればカスタムランタイムを使うことになると思います。
一見大変そう…と感じるかもしれませんが、cargo-lambdaとcargo-lambda-cdkを用いることによって、快適に開発を進められました。

今回の記事では簡単なAPIをハンズオンで実装することでそのtipsをお伝えできればと思っています。
本記事では,POSTすることでDynamoDBにレコード追加をするLambda,
GETすることで作成したレコードの一覧を返すLambdaの2つをcargo-lambda, cargo-lambda-cdkを用いて定義・デプロイしたいと思います。

## cargo-lambda, cargo-lambda-cdkとは?

### cargo-lambdaとは

https://github.com/cargo-lambda/cargo-lambda

ひとことで言ってしまえばRust + Lambda開発のためのcargoのサブコマンドです。

元記事を表示

メール送信LambdaをAmplifyで作成

## メール送信LambdaをAmplifyで作成

Amplify で構築した環境で、DynamoDB の特定のテーブルにレコードが追加された際、Amazon SES を利用してメールを送信するLambda Trigger を作成しました。

### Lambda Triggerを作成する
![a2e5ac8e-02b5-4c74-914f-6839ee7b5cc5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1781492/19dbb63c-19d1-0397-3b1b-405b95912062.png)

`amplify add function` を使ってLambda Trigger を作成します。Cloudformation のテンプレートで、対象のテーブルへの権限は自動生成されます。

“`
“PolicyDocument”: {
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”

元記事を表示

EC2インスタンス停止時にALBをSorryページに切り替える設定手順

## はじめに
AWSで単一のEC2インスタンスを使用している場合、もしそのインスタンスが停止した際には、ALB(Application Load Balancer)の固定レスポンス機能を利用して「Sorryページ」を表示し、起動している場合には通常のページを表示する仕組みを作ることができます。

今回は、Amazon EventBridge、Lambda、ALBを組み合わせて、この自動化を行う手順をご紹介します。

## 1. IAMロールの作成
Lambda関数がELBのリスナールールの変更を行うために必要なIAMロールを設定します。

**手順:**
・AWSマネジメントコンソールにログインします。
・IAMに移動し、ロールの作成をクリックします。
・Lambdaサービス用のロールを作成します。

以下のポリシーをアタッチします。
“`json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [

元記事を表示

2台のEC2インスタンスの状態を自動検知し、ALBのレスポンスを切り替える手順

## はじめに
AWS環境において、2台のEC2インスタンスが停止した際に、ALB(Application Load Balancer)の固定レスポンス機能を使って「Sorryページ」を表示し、1台でも起動している場合は通常のページを表示する仕組みを構築します。

このプロセスでは、Amazon EventBridge、Lambda、ALBを組み合わせて自動化します。

## 1. Amazon EventBridge で EC2 インスタンスの状態を検知
まず、EC2インスタンスが停止したことを検知するために、EventBridgeルールを設定します。

ここでは、「i-0458be1d8c980e8ec」と「i-0b27db6a9b067f345」という2台のEC2インスタンスを監視対象とします。

以下のJSONルールを使って、これらのインスタンスが停止状態に入った時点でEventBridgeがトリガーされるように設定します。

“`json
{
“source”: [“aws.ec2”],
“detail-type”: [“EC2 Instance State-cha

元記事を表示

AWS Step Functionsの実行結果をSlackへ通知する

# はじめに

AWS Step Functionsの実行結果をSlackへ通知する手順について、以下の記事では、Step Functionsの実行結果を取得し、Slackに通知する方法を紹介します。この記事では、SNS(Simple Notification Service)とAWS Lambdaを使ってStep Functionsの実行結果をトリガーし、Slackに通知を送信する流れを説明します。

# 構成
![Untitled Diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1065841/9b1ef79f-827b-10b4-3062-575ed7ba49fa.png)

# 目次

1. [SlackのWebhookURLを取得](#SlackのWebhookURLを取得)
1. [SNSトピックの作成](#SNSトピックの作成)
1. [StepFunctionsの実行結果をSNSへ通知する設定

元記事を表示

OTHERカテゴリの最新記事