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

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

API Gatewayで/{proxy+}メソッドを活用する方法

## はじめに
こんにちは、開発部の天津炒飯です。

CloudFormationのLambda Functionでパスごと、Eventsを一つずつ書くことで苦労した経験があるかもしれません。
API Gatewayの “ /{proxy+} “ メソッドを使用すると、異なるパスに対するルーティングを簡単に実現できますが、意外と日本語の情報が少ないです。
私はPythonのWebフレームワークであるFastAPIを使用したので、この記事ではFastAPIを使用してAPI Gatewayの “ /{proxy+} “ メソッドを活用する方法に焦点を当てます。

## 1. /{proxy+}メソッドとは
“ /{proxy+} “ メソッドは、ワイルドカードパスを表すもので、異なるパス構造のリクエストを同じAPIエンドポイントにルーティングするのに役立ちます。
例えば、 “ /products/{proxy+} “ は “ /products/item1 “ や “ /products/category1/item2 “ など、様々なパスに対応できます。

##

元記事を表示

【Kotlin】lambda関数の書き方

こんにちは、GxPのチョウキです。
こちらはグロースエクスパートナーズ Advent Calendar 2023の3日目の記事です。

現在、私はアプリ開発に携わっており、その過程でKotlinを使用しています。別のプロジェクトではJavaを用いていましたが、JavaからKotlinへの移行にはいくつか困難が伴います。JavaとKotlinは100%互換性があるとされていますが、一方で似ている部分と大きく異なる部分が存在します。特に、よく使われているLambda関数の観点から、Kotlinの書き方を紹介したいと思います。Lambda関数を使用する際、初見では意味が分かりにくいことがしばしばあり、それを難しく感じることがあります。そのため、この知識をまとめることにしました。

## JavaとKotlinにおけるLambda関数と高階関数の使用
Lambda関数に入る前に、高階関数から説明します。
高階関数とは、簡単に言うと、関数型をパラメータや戻り値に持つ関数を指します。
### Javaでのメソッドの扱い
Javaでは、一つのメソッド内で別のメソッドを呼び出すことは一般的です。

`

元記事を表示

“The Five-Factor Serverless“ AWS Lambda の9年を振り返りつつ、これからを考える。

re:Invent 2023の Werner Vogels のセッションスライドを振り返りつつ。
![IMG_1515.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6088/0b1e7504-e6d2-85fd-dc9f-39101c7618fb.jpeg)

[AWS Lambda は、2014年にGAしました。](https://aws.amazon.com/jp/about-aws/whats-new/2014/11/13/introducing-aws-lambda/)
Lambda 以外にこの年は Auroraや Codeシリーズなども発表されており、大変盛り上がった re:Inventになったことを記憶している人も多いのではないでしょうか。
![IMG_1517.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6088/b9de0f4b-94a0-2ec3-41ac-7e629ebafa17.jpeg)

元記事を表示

AlexaでBedrockに質問をするスキル開発

# はじめに
こちらは
– [Alexa×BedrockでAWS最新ニュースキャッチアップアプリ コンセプト・設計](https://qiita.com/SawaShuya/private/a22645e54d75667c5148)
– [AWS Lambdaで自作RSSリーダー開発](https://qiita.com/SawaShuya/private/aa007d310bfd12c751af)
– [Self hosted AWS LambdaによるAlexaスキル開発](https://qiita.com/SawaShuya/private/2395a08f57c8988f3163)
– **AlexaでBedrockに質問をするスキル開発 (本記事)**

の連載記事です。前段の項目が完了していることを前提として書かれております。
本記事では以下のアーキテクチャの作成を目指して解説をしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/918398/59c74b9a-a

元記事を表示

Self hosted AWS LambdaによるAlexaスキル開発

# はじめに
本記事は
– [Alexa×BedrockでAWS最新ニュースキャッチアップアプリ コンセプト・設計](https://qiita.com/SawaShuya/private/a22645e54d75667c5148)
– [AWS Lambdaで自作RSSリーダー開発](https://qiita.com/SawaShuya/private/aa007d310bfd12c751af)
– **Self hosted AWS LambdaによるAlexaスキル開発 (本記事)**
– [AlexaでBedrockに質問をするスキル開発](https://qiita.com/SawaShuya/private/46c47068dd2573359c8b)

の連載記事です。前段の項目が完了していることを前提として書かれております。
本記事では以下のアーキテクチャの作成を目指して解説をしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/918398/2062f960-3

元記事を表示

AWS Lambdaで自作RSSリーダー開発

# はじめに
こちらは

– [Alexa×BedrockでAWS最新ニュースキャッチアップアプリ コンセプト・設計](https://qiita.com/SawaShuya/private/a22645e54d75667c5148)
– **AWS Lambdaで自作RSSリーダー開発 (本記事)**
– [Self hosted AWS LambdaによるAlexaスキル開発](https://qiita.com/SawaShuya/private/2395a08f57c8988f3163)
– [AlexaでBedrockに質問をするスキル開発](https://qiita.com/SawaShuya/private/46c47068dd2573359c8b)

の連載記事です。本記事では以下のアーキテクチャの作成を目指して解説をしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/918398/bca51a92-e2aa-7dc0-f93f-f5daed47ba18.pn

元記事を表示

Amazon Managed GrafanaからRDSの時系列データをリアルタイムに表示してみる

# はじめに

Amazon Managed Grafanaを使った時系列データのクエリの実装例が少なかったので記事を書いてみました。

– 以前、Grafanaは少しだけ記事にしました。
– https://qiita.com/jnit/items/49f4954f8a7667e4a440#%E6%89%80%E6%84%9F

– 最近OpenSearchがニューラル検索に対応し、「リアルタイム可視化」という点でGrafanaとOpenSearchの棲み分けの方向性が明確になってきたように思います。
– https://aws.amazon.com/jp/about-aws/whats-new/2023/11/amazon-opensearch-neural-search/
– 個人的には単純なリアルタイム可視化であればGrafanaがよいのではと思います。

## 構成

各サービスのデータ連携は、すべてVPC内でセキュアに通信するようにしてみます。

![image.png](https://qiita-image-store.s3.ap-northea

元記事を表示

Alexa×BedrockでAWS最新ニュースキャッチアップアプリ開発

# はじめに
**2023 Japan AWS Jr. Championsアドベントカレンダー**:christmas_tree: 記念すべき1日目の投稿です

AlexaやBedrockを活用してAWS最新ニュースキャッチアップができないかと考え、アプリ開発をしてみました!
その時に使用した技術について以下の記事にまとめていきたいと思います。
アプリを作る中で、必要となる知識を適宜盛り込んで解説をしてます。

– **コンセプト・設計 (本記事)**
– [AWS Lambdaで自作RSSリーダー開発](https://qiita.com/SawaShuya/private/aa007d310bfd12c751af)
– [Self hosted AWS LambdaによるAlexaスキル開発](https://qiita.com/SawaShuya/private/2395a08f57c8988f3163)
– [AlexaでBedrockに質問をするスキル開発](https://qiita.com/SawaShuya/privat

元記事を表示

Lambdaでko!

## これは何?

これは [MEGAZONE 株式会社](https://www.megazonejapan.jp/) のテック陣「MEGAZONEのゆかいな仲間たち」がおくる、[Megazone Japan Advent Calendar 2023](https://qiita.com/advent-calendar/2023/megazonejapan) の一日目のエントリーです。

## はじめに

いやー、あっという間に12月ですね。今年は秋っぽい空気を楽しむチャンスがほとんどない天候のまま冬がやってきましたが、皆さんも「え?もう Advent Calendar の季節?どうしようエントリーしたけどまだ書いてないよ?まじやばいよー」なんて慌ててませんか?えぇ、私がまさにその状態です。

まともに Advent Calendar を書くなんて何年ぶりだろう?と記憶を掘り起してみると、実に6年ぶりぐらいのエントリーとなります。Private Cloud 界隈では 2012 年ごろから 2017 年ぐらいにかけて Advent Calendar が盛んでしたが、その後は Priva

元記事を表示

Dockerイメージから作成したLambdaで画像リサイズ処理を行う

# やりたいこと
Lambda関数でlibvipsで画像をリサイズする
Lambda関数はRubyで動かす
画像はS3から取得する
ローカル環境で動作確認もしたい

# Dockerfileの用意
libvipsを使う場合そもそもlibvips本体をインストールしないといけません。
今回は、libvipsをインストールしたDockerイメージからLambdaを作成することにしてみました。

“`:Dockerfile
FROM amazon/aws-lambda-ruby:latest

# EPELリポジトリを追加
RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

# remiレポジトリを追加
RUN yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm

# libvipsとlibvipsを使うために必要なパッケージをインストール
RUN yum install

元記事を表示

FastAPIのLambdaからAWS外のサービスでキャッシュとDB構築! + Github Actions

# 概要
FastAPI、Pythonに詳しい方はご存じの方も多いかもしれません。
AWSのLambda関数と組み合わせるとどんな感じになるんだろう?と思って触り始めました。
色々学べたので、この機会に記事にしました!

**こういったアーキテクチャが実現できるかな**?という部分に焦点をおいています。また、可能な範囲でコストも抑える方針で進めました!

### 主な目次
– パート1:アプリケーション作成
– インフラ構築(CDK Typescript)
– Lambda関数(FastAPIのアプリケーション)の作成
– DBやcacheの構築の前に
– supabaseによるDB構築
– upstashによるcache構築
– パート2:GitHub Actionsと各ツールの利用
– GitHub Actionsのworkflowは作ったが・・・
– Ruffの利用(Linterツール)
– actの利用(ローカルでGitHub Actions)
– stepciの利用(APIのテスト)
– ふりかえりとgi

元記事を表示

【Security Hub】全開放インバウンドルールの自動削除の仕組みを検討する

# 記事の目的
この記事では、セキュリティグループ(SG)のインバウンドルールを適切に管理し、全開放のルールが設定された場合にそれを自動的に削除する仕組みを検討します。
セキュリティグループの管理はクラウドインフラストラクチャのセキュリティにおいて極めて重要であり、この仕組みを導入することでセキュリティの向上と誤った設定による問題の最小化を目指します。

# 背景
近年、クラウド環境においてセキュリティの適切な管理がますます重要となっています。
ある日、私の配属先PJで、パブリックサブネットに配置されたプロキシ用EC2インスタンスを介して複数のシステムに接続する際、予期せぬ問題が発生しました。
システムへの接続ができなくなったため、問題の切り分けを行うために、プロキシ用EC2のセキュリティグループ(SG)のインバウンドルールを変更しました。
具体的には、全ポートからのアクセスを全ソースから許可する設定を行いました。

問題はその後解決し、システムへの接続が復旧しましたが、セキュリティグループのインバウンドルールを元の設定に戻す作業が行われませんでした。
これにより、外部からのアクセスが

元記事を表示

AWS SESバウンスメール監視・通知仕組み

最近は、AWSから「Amazon SES Bounce Review Period for AWS Account 」の通知が来ていますが、SESを使って送信するソースメールアドレスは、メーリングリストで未達のメールがあっても、通知が来ません。
従って、バウンスメールの閾値超えているか、そもそも未達のメールはどのメールアドレスか判断が付きにくい状況になっています。

SESより送っているメールのメトリクスは二つがあります(Bounce RateとComplaint Rate)。前者はアドレスが実在しないか、メールのドメインが実在しないか、あるいは受信者のサーバーがメールを拒否した、などが原因となります。

Bounce Rateはある程度を超えたら、AWSより通知が送られて、対応依頼が来ていますが、ほっとくと、閾値を超えて送信は禁止されてしまいます。特にサーバー監視メール等は、送信できないことになってしまうと、運用に大きく影響があるので、そのようなことがないよう監視・通知・調査できる環境を作るのは実務となります。

■設計
以下のように考えています。
・調査ができるようにSESバウンス

元記事を表示

[AWS Lambda]Line bot作成でつまづいた、zip内のフォルダ構成

# 概要
AWS Lambdaを使用したオウム返しline botをつくった。
するとオウム返しどころか、全く動作しなかった。
ログを見ていくと”lambda_function”が見つからないらしい。
zip直下に”lambda_function”などのファイルを置くことで解決した。

# 参考にしていた手順
https://qiita.com/i3no29/items/6329f0e114dad1b6a525

これの通りやったのに、できなかった

# エラーの内容
#### ① API endpointのURLを踏むと”Internal Server Error”

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1741372/9f7b5863-6c6e-8fe4-53db-5cc9b6501c07.png)
ここを踏むと
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1741372

元記事を表示

AWS CodeBuild でコンピューティングに AWS Lambda を利用

# 内容

従来は EC2 上でコンテナイメージが実行されていたが、CodeBuild でコンピューティングに Lambda を使用してビルドやテストを実行できるようになった。

Lambda はほぼ瞬時に起動するため、より高速なビルドが可能な点が利点かと思います。

Lambda でコンピューティングを実行すると、1 秒あたりの使用量に対して課金されるため、コストを最適化できる点もあげられていますが、個人的にはよっぽどな環境ではない限り、差ほどのコスト減はないのかと思っています。

https://aws.amazon.com/jp/about-aws/whats-new/2023/11/aws-codebuild-lambda-compute/

# サポートされているツール、ランタイム

AWS CLI v2、AWS SAM CLI、git、go、Java、Node.js、Python、pip、Ruby、.NET

# 制限事項

– バッチビルド
– ビルド間のキャッシュ
– タイムアウトによるランタイムの分単位の制限
– ルートユーザーの許可を必要とするツール

その他に

元記事を表示

【pytest】AWS IoT メッセージを Publish する Lambda 関数をローカルでテストしたい

# 1. 前書き
AWS IoT メッセージを Publish をする Lambda 関数と関数を呼び出すための API Gateway を CDK で作成しました。
構成は以下のようになっています。

“`
sample/
├ bin/
└ sample.ts
├ lib/
└ sample-stack.ts
├ iot/
└ publish.py

…以下略
“`

CDK で使用した言語は TypeScript 、Lambda 関数で使用している言語は python です。

“`python: publish.py
# coding: utf-8
import os
import json
import logging
import boto3

# 環境変数から取得
REGION = os.environ.get(‘REGION’)

# AWS IoT Dataオブジェクトを取得
iot = boto3.client(‘iot-data’, region_name=REGION)

# トピック名
TOPIC_NAME = ‘sa

元記事を表示

Kinesis Lambdaにおける処理順序の保障

## Kinesisのシャード

Kinesis clientは挿入する各レコードに、partition keyを指定する。
Kinesisは、このpartition keyをハッシュ値を元に、どのシャードにレコードを入れるかを決定する。
シャード内では、レコードの読み取り順序が書き込み順序と同じになることが保証される。

## kinesis Lambdaの並行性について

Pararellizatino Factor は、1 Kinesis shardあたりにいくつのLambdaが張り付くかを意味する。
以下で設定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534442/15a7467d-c883-bb22-418d-9854730ec8e3.png)

### デフォルトは、Parallelization Factor = 1

デフォルトで、1 Lambda per 1 Kineiss shard。
結果として、シャード内のレコードの処理順序は、書き込み時の順序と一致

元記事を表示

サーバーレスはなぜ人気なのか

サーバーレスアーキテクチャが近年人気を集めているのには、いくつかの大きな理由があります。

## 管理の簡素化

サーバーレスは、サーバーやOS、ミドルウェアなどの提供や管理をクラウド提供事業者が行うため、開発者はコードの作成に集中できます。
これにより、アプリケーションの開発とデプロイのプロセスが簡素化されます

## 課金方式の柔軟性

サーバーレスは利用単位で課金され、処理のリクエスト数と実行時間に応じて料金が決まります。
これにより、サービスの利用頻度に応じてコストを削減できる可能性があります

## スケーラビリティ

サーバーレスアーキテクチャは需要に応じて自動的にリソースがスケールするため、トラフィックの急増にも迅速に対応できます

## 用途の多様性

サーバーレスは動的なWebサイトやモバイルアプリのバックエンド、簡単なデータ処理、新規サービスのスタートアップ、マイクロサービスアーキテクチャの実現など、さまざまな用途に適用可能です

## 注意点

ただし、サーバーレス単体ではプログラムの実行しかできず、データベースやストレージなどの他のサービスとの組み合わせが必

元記事を表示

【AWS】S3に必要なファイルが全てアップロードされたことを確認してステートマシンを動かす実装例【Lambda】

## 初めに
前回の記事ではS3にファイルがアップロードされたことを契機にEventBridge経由でステートマシンを実行する方法を投稿した。
しかしステートマシンを動かすために必要なファイルが複数ある場合、S3のファイルアップロード契機だけだと1ファイルごとにステートマシンが実行されてしまい、不必要な実行がされてしまったり、誤った結果が保存されてしまう危険がある。
そのため、今回の記事ではステートマシンが必要とするS3のファイルが複数の場合で、それら全てのファイルが処理実行日に作成されたものか(昨日作成されたものをステートマシンで処理しようとしていないかどうか)を確認した後でステートマシンを実行する実装例を記載した。
※前回の記事
https://qiita.com/Nana_777/items/8dc23b9fc331ba7a7905

## 使うAWSサービス
・Amazon EventBridge
・Amazon S3
・AWS Lambda
・AWS StepFunctions

## アーキテクチャ図
![S3イベントplusLambda.png](https://qiit

元記事を表示

AWS CDK for Goを使用して、Go言語で書かれたLambda関数を定期実行する

## はじめに

AWS CDK(Cloud Development Kit)は、クラウドリソースをコードで定義し、デプロイするためのオープンソースのソフトウェア開発フレームワークです。この記事では、AWS CDK for Goを使用してGo言語で書かれたLambda関数を定期的に実行するスケジュールを設定する方法を説明します。

## 前提条件

– AWSアカウントがすでに設定されていること。
– AWS CDKを操作するCLIがインストールされていること。

CDKのCLIのインストールについては[こちら](https://docs.aws.amazon.com/ja_jp/cdk/v2/guide/cli.html)をご覧ください

## 環境

– Go 1.20

## プロジェクトの初期化

新しいディレクトリを作成し、その中に移動します。

“`bash
mkdir go-lambda-cdk
cd go-lambda-cdk
“`

以下のコマンドを実行して新しいCDKプロジェクトを初期化します。

“`bash
cdk init app –language=

元記事を表示

OTHERカテゴリの最新記事