Lambda関連のことを調べてみた2023年07月27日

Lambda関連のことを調べてみた2023年07月27日
目次

AWS SAM超入門 – 準備からLambda関数のデプロイまで

## 概要
今までLambdaコンソールから手動で関数を書き換えたり設定値を変更してデプロイを行なっていました。
手動作業が多くて危険だったのでAWS SAMを試すことにしました。
動作の理解として超簡単な入門コードでSAMを試してみたので残します。

## 前提
対象AWSアカウントのプロファイルをconfigに設定していること
Node.js 18.x でタイムアウトが3分のLambdaをデプロイしてみます

## 全体図
[![Image from Gyazo](https://i.gyazo.com/2585b8aec1dbaa99787b5e4d76c54b72.png)](https://gyazo.com/2585b8aec1dbaa99787b5e4d76c54b72)

## SAMについて
– Lambda関数コードだけじゃなく、タイムアウト値やトリガーといった設定までテンプレート(SAMファイル)で管理できる
– デプロイパッケージをS3にアップロードしてCloudFormationがLambdaに展開させる

## SAMのインストール
“`terminal

元記事を表示

【ナレッジ】AWS Parameters and Secrets Lambda Extension は、ハンドラー関数内から呼び出さないと400Errorになる

# 0. 要約
タイトルの通りですが、
**[AWS Parameters and Secrets Lambda Extension](https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/retrieving-secrets_lambda.html) は、ハンドラー関数”外”から呼び出しをすると HTTP 400 Error が出てしまいます。**
そのため、ハンドラー関数”**内**”から呼び出しましょう!

# 1. はじめに…
[2022年10月に、AWS Parameters and Secrets Lambda Extension が発表されました。](https://aws.amazon.com/jp/about-aws

元記事を表示

AWS ECRのイメージタグ付けを簡単に行う方法

# はじめに
ECRのイメージタグ付けを、Lambdaで簡単に行う手順です。

ECRのイメージタグは、マネジメントコンソールから編集できず、不便な場合があります。
CLIで設定出来るのですが、お手軽に設定できるようにしました。

# やりたいこと

### ECRのリポジトリ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155165/65b6756c-2cbc-5785-9c67-9de5330184bd.png)
このようにリリースしてみたが、前のバージョンに戻したい、releaseタグを前のバージョンに付け替えたいときなどに、本ツールが使えます。

これは一例で、後からタグをつけたい場合や、タグを整理したい場合などにも使えます。

# 準備
Lambda関数を準備します。詳細は割愛します。Lambdaのスペックは最弱でOKです。
## IAMポリシー
“`json
{
“Version”: “2012-10-17”,
“Statement”: [

元記事を表示

【DX】ChatGPTを社内Slackから使えるようにしてみた

# ChatGPT使ってみた

皆さんの会社でもChatGPT活用されていますでしょうか
今回はChatGPTの活用促進に向けて社内で取り組んだ事例の紹介になります。

::: note
今回の事例はWeb画面からのChatGPTにおいてAI学習への活用可否Optionスイッチが実装されておらず、API経由でのGPT利用しか選択肢が無かった時点での事例となります
:::

### 導入背景
ChatGPTはその登場から非常に注目され、色々な利用事例があがっており、弊社としても活用していきたいと考えています。しかし、事業会社のシステム部門としては業務利用にあたって情報漏洩がやはり気になるところです。
そんな中、4月頃にOpenAI社よりAPIが公開され、API経由であればAIの学習目的利用をせず、30日間でデータ削除する事を選択できる(≒情報漏洩リスクを軽減できると考えられる)事から、APIを介してChatGPTを業務活用する為の機能開発ができないか。という議論がスタートしました

### Slack連携を選んだ理由
社内でChatGPTを利用するにあたって「いかに社員が使いやすいイン

元記事を表示

Pythin 3.10 の pip にアップグレード & request ライブラリの Lambda レイヤーを作成する方法

Lambda で requests を使いたかったので、Lambda レイヤーを作成する時に Pything 3.10 の pip に切り替えて requests の zip ファイルパッケージを作ったときのメモ書き

MacOS の Homebrew での作業です。

“`
$ brew install python@3.10
# python3.10 -m pip install –upgrade pip
“`

“`
$ pip –version
pip 23.2.1 from /usr/local/lib/python3.10/site-packages/pip (python 3.10)
“`

“`
$ mkdir python
$ pip install -t python requests==2.28.2
$ zip -r9 layer.zip python
“`

– Lambda Layer を追加
– Lambda 関数に Layer を紐付け

参考
https://stackoverflow.com/questions/54409696

元記事を表示

【AWS Lambda】複数のLambda関数を1つのコンテナイメージにまとめる

## やりたいこと・背景
Lambdaをコンテナから作成する場合、Lambda関数が複数ある場合は関数ごとにイメージをビルドしなければならないのか?という単純な疑問が出てきた。その場合、イメージの管理が複雑になりそうなので、1つのイメージで複数のLabda関数を管理できないかと考えた。

## 結論
ランタイムイメージをビルドする際、各Lambda関数ごとに`ディレクトリを分け`、関数作成時に`ENTRYPOINT` を指定することで実現可能。

同一ディレクトリに main関数 を持つバイナリが複数存在すると、実行時にどの main関数 を呼び出すべきかが不明瞭になり、うまく動作しない。そのため、各Lambda関数は独自のディレクトリに配置される必要がある。

ランタイムイメージで関数ごとにディレクトリを分けることで、各Lambda関数が独立して実行されるようになる。

## 概要図
![複数のLambda関数を1つのイメージで管理 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341210

元記事を表示

NestJSをAPI Gateway + AWS Lambdaで構成する(その3)- Controllersコントローラー

#
– [その1 NestJSやLambdaでのnode.jsの話し](https://qiita.com/ssugimoto/items/988320d34022555401fb)
– [その2 NestJSのサンプルを動かす、Hello World.](https://qiita.com/ssugimoto/items/557e7a7cce5111bf5de7)
– その3 コントローラーを追加する

# Controllers(コントローラー)
## 公式
https://8-0-0–docs-nestjs.netlify.app/controllers

## コントロールはざっくり
– サーバー側としてHttp リクエストを処理する起点となるところ
– リクエストされるURLの部分と処理するclassを紐付けるのはNestJSのフレームワーク側でやってくれる

`aws-node-typescript-nest/src/app.controller.ts`をみてみると、

“`aws-node-typescript-nest/src/app.controller.ts

元記事を表示

API Gateway→Lambda→DynamoDBとデータを受け渡す

# 背景
最近業務外でサーバレス系サービスに触れる機会が増えました。せっかくなので理解を深めようと考え、タイトルの3サービスを触ったのでそれについての備忘です。サクッと作成できるので、興味がある方はぜひお手元の環境でお試しください。なお、DynamoDBとLambdaの構築は慣れている方が多いので構築手順は省いています。本記事の内容は以下のUdemy講座を参考にしています。

https://www.udemy.com/course/aws-vlfc/

# 構築する内容
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/08d48572-2f8b-3843-c50c-6a6fcff12134.png)
# DynamoDBの用意
テーブル名は`users`として、パーティションキー`id`、`文字列`のみ設定します。
# Lambdaの用意
この後作成するAPI GWからデータを受け取り、DynamoDBに格納するコードです。
ランタイムは`Python 3.9`で、Lam

元記事を表示

署名付きアップロード・ダウンロードの構成をterraformで作る。

# はじめに
[前回](https://qiita.com/sakai00kou/items/ba5618f0a67064355752)、[AWSブログ](https://aws.amazon.com/jp/blogs/news/large-size-files-transferring-by-serverless-s3presignedurl-and-clientside-javascript/)で公開されていた署名付きアップロード・ダウンロードの構成をAWSマネジメントコンソール画面から構築しましたが、色々と使えそうなので、terraformの勉強も兼ねてterraform化したので公開しようと思います。

– 【前】[API Gateway、Cognito、Lambda、S3を使って署名付きアップロード・ダウンロードを実装する。](https://qiita.com/sakai00kou/items/ba5618f0a67064355752)

**元のブログ記事**
– [AWS のサーバーレスと Amazon S3 署名付き URL、クライアントサイド JavaScript

元記事を表示

初心者がAWSでWebサイトを公開するまで

# やりたいこと
AWSでWebサービスを公開するまでの流れをまとめました。
公式が用意しているサンプルWebサービスを使ってWebサイトの環境構築を学びます。

参考にした公式チュートリアルはこちらです。
https://aws.amazon.com/jp/getting-started/hands-on/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/

# サンプルWebサービスの説明
まずサンプルWebサービスがどんなものかをざっくりと説明します。

![いらすとやユニコーン](https://2.bp.blogspot.com/-kwlzIOtHvuM/XOPXUYPc19I/AAAAAAABS7k/YyQ6OZTB2O4Wg4HSlYMgfOKkOy5E99uUgCLcBGAs/s800/yumekawa_animal_unicorn.png)
シチュエーションは以下です。
> あなた(の会社)はユコニーンを世界各地に派遣する能力を持っています。
そこで世界中の人がユニコーンをタクシーのように乗り

元記事を表示

bundle install先に ‘vendor/bundle’を指定しないとLambdaでInit error when loading handlerになる

# はじめに
Rubyを使用しているプロジェクトで3.2にバージョンアップする対応を進めていたのですが、その際に発生したエラーに沼ってしまい、参考記事も見つけることができなかったのでまとめることにします。

# 環境
– Ruby2.7.5→3.2
– Rails5.2→7.0
– Docker image public.ecr.aws/lambda/ruby:2.7→3.2
– serverless 3.33.0

# 状況
Ruby on Railsアプリケーションをサーバレスデプロイしているプロジェクトでバージョンアップ対応を行っていました。具体的にLambdaのランタイムイメージとGemfileをRuby2.7から3.2にバージョンアップし、デプロイを行ったのですがページにアクセスできなくなりました。

Cloud Watchでログを確認すると以下のエラーが発生していました。

“`
“Could not find net-pop-0.1.2, net-smtp-0.3.3, rake-13.0.6 in locally installed gems”
“`

![imag

元記事を表示

2023年のAWSアップデート追いかけてみる(6月後半編)

どうも、若松です。

前回の記事に引き続き6月後半のアップデートを追いかけます。

(追記)一覧にまとめました

https://qiita.com/t_wkm2/items/2b0fcf742b94c2eacea2

# AWSアップデート2023年6月後半編
#### [Amazon CloudWatch がダッシュボード変数のサポートを開始](https://aws.amazon.com/jp/about-aws/whats-new/2023/06/amazon-cloudwatch-dashboard-variables/)
ダッシュボードに変数が加わりました。
変数を変更するとそれに応じてグラフに表示される値が変化するというもののようです。
ディメンジョンごとにビューを作成するのではなく、変数でディメンジョンを切り替えられるのはすっきり見えていいですね。

#### [Mountpoint for Amazon S3 が新しいファイルの作成のサポートを追加](https://aws.amazon.com/jp/about-aws/whats-new/2023/06/mount

元記事を表示

2023年のAWSアップデート追いかけてみる(7月前半編)

どうも、気づいたら2個もAWS資格を失効してた若松です。

AWSのアップデートってre:Inventのときだけ必死に追いかけるのに年明けになるとサボっちゃうの何なんですかね?
ご多分に漏れず、私も2023年のアップデートを全然追いかけられていません。
当然ながら、AWSは年中アップデートを続けているわけで、その数も年々多くなってきて追いかけるのが大変です。
そこで、2023年分のアップデートを一気に舐めて、個人的に熱いと思ったものをピックアップしていきます。
※現時点で翻訳記事が出ていないものはGoogle翻訳で日本語化したタイトルにしています。

(追記)一覧にまとめました

https://qiita.com/t_wkm2/items/2b0fcf742b94c2eacea2

# AWSアップデート2023年7月前半編
#### [Meta の Llama 2 基礎モデルが Amazon SageMaker JumpStart で利用可能になりました](https://aws.amazon.com/about-aws/whats-new/2023/07/llama-2-foun

元記事を表示

【AWS Lamba】コンテナイメージから Lambda関数を作成する

## ローカル環境の準備
– Golangインストール
https://go.dev/dl/

– Dockerfile作成
“`dockerfile:Dockerfile
FROM golang:1.17-buster as builder
WORKDIR /go/src/lambda
COPY go.mod go.sum ./
RUN go mod download
COPY ./ .
RUN go build -a -o /main .

FROM debian:buster as runner
WORKDIR /app/
COPY –from=builder /main /main
ENTRYPOINT [ “/main” ]
“`

– main.go作成
“`golang:main.go
package main

import (
“fmt”
“context”
“github.com/aws/aws-lambda-go/lambda”
)

type MyEvent struct {
Name stri

元記事を表示

API Gatewayのリクエストバリデーション機能でLambdaのリソース消費を抑制する

# 課題

AWS SAM (Serverless Application Model)は、サーバーレスアプリケーションを簡単に作成、デプロイするためのフレームワークです。
私たちのプロジェクトでは、API Gateway, Lambda, DynamoDBを組み合わせたサーバーレスアーキテクチャを採用しており、AWS SAMを用いてデプロイを管理しています。

しかし、その際に直面した課題があります。
それは、リクエストのバリデーションをLambda関数内で行っていたため、不適切なリクエストがLambdaまで到達してしまい、リソースの無駄遣いにつながっていました。

# 考えた方法

この課題に対して考えた解決策は、API Gatewayでリクエストのバリデーションを行うことです。
AWS SAMのテンプレートを修正して、API Gatewayにリクエストの定義を追加し、リクエストが定義に合致しているかどうかをチェックする設定を加えることで、リソースの無駄遣いを防ぐことが可能になります。

# 今日の目標

今日の目標は、AWS SAMのテンプレートを修正し、API Gatewayで

元記事を表示

「お前らの AWS Lambda エイリアスは間違っている」と言われた気がしたので備忘録

# はじめに

こんなこと言われてないです。ごめんなさい。

AWS Lambda のエイリアス機能について先日思ったことなんです。

インターネットでよく見かける紹介は、

**開発環境は dev エイリアス、本番環境は prod エイリアスを利用して、環境を分けることができます!**

って感じではないでしょうか?でも**↑これ、無理じゃないですか?**

いや、やろうと思えばできますよ。

でも、運用上怖い点があるし、何より IaC(ここでは CDK を念頭に置きます)との相性悪すぎじゃない?と思ったので、思ったことを書いてみます。[^1]

# 前提知識

いくつか前提知識を整理しておきます。AWS Lambda についてある程度利用経験がある方はスキップいただいてOKだと思います。

## AWS Lambda

https://aws.amazon.com/jp/lambda/

何かしらのイベントをトリガーにコードを実行できる AWS のサーバーレスコンピューティングサービスです。

いくつか提供されているランタイムがあり、例えば Node.js で動くアプリケーションを

元記事を表示

lambda + RDS proxy + Aurora serverless v2でまぁまぁ請求された話し

# はじめに
医療系クラウドサービスを提供しているレイヤードという会社で働いています。

新サービスを開発中で、社内リソースの問題から外注に開発してもらっていました。
まだ **本番稼働していないにも関わらず、2023年6月25日時点でaws費用が$915、月末予測が$1,200にもなっており** 、調査依頼してもはっきりとした回答が無かったので、横槍ですが原因調査した内容の共有です。

調査は弊社エンジニアの采本さんがほとんどやってくれました。
いつもありがとう、頼りにしてます。

[![Image from Gyazo](https://i.gyazo.com/934ab01b3a63566353cc56015cdf65ff.png)](https://gyazo.com/934ab01b3a63566353cc56015cdf65ff)

# アーキテクチャ構成
アプリケーションの構成は以下のとおり。

言語:TypeScript
フロント:Vue.js
バックエンド:Node.js on lambda
データベース:RDS proxy + Aurora serverless v

元記事を表示

Amazon Connectからエイリアス版Lambda関数を呼び出す方法 [小ネタ]

### はじめに

ARI コンタクトセンター最適化支援チームのbayashiです。

Amazon Connect インスタンスのコンソール画面から登録できるLambda関数は、通常の方法だとエイリアス(特定関数のバージョンに対するポインタ)がない最新の関数を指定することになります。
・問い合わせフロー > AWS Lambdaから関数の追加
![ac-lambda1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2605350/8db9f284-5b12-db8b-b7f5-6bd3bfa81a42.png)

「lambda add-permission」コマンド登録後に、フローの「AWS Lambda 関数を呼び出す」ブロックでLambdaエイリアスのARN値を直接記載する方法もありますが、今回は「AWS Lambda 関数を呼び出す」ブロックの一覧リストから関数を選択できる方法を共有します。(AWSサポートから対応方法を回答いただきました。)
既にご存じの方もいるとは思いますが、Web検索して

元記事を表示

EventBridgeからLambda起動

# はじめに
2年目に突入したエンジニアでございます。

今回はAWSを少し触れることがあったので忘れないためにここに備忘録として記載しておきます。

# 今回の内容:EventBridgeからLambdaを起動する。

[1. Lambda関数の用意](#1-Lambda関数の用意)
[2. EventBridgeルールの作成](#2-sEventBridgeルールの作成)
[3. 結果の確認](#3-結果の確認)

## 1. Lambda関数の用意

まずは今回実行するLambda関数を用意します。

https://qiita.com/Hamoto/items/bd486937de142a589f8f

上記の記事を参考にしましたが、今回EventBridgeからLambdaを起動するだけの構成を予定しているため、
メッセージを返すのではなくS3にファイル出力するようなコードにしてみました。

### コードの修正

“`python:lambda_function.py
import boto3

def lambda_handler(event, context):

元記事を表示

Lambdaでコンテナイメージから関数を作成する

# 目的
Lambdaの関数を作成する際、3つのケースから選択できます。
– 一から作成
– 設計図の使用
– コンテナイメージ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621838/df642e70-7f56-a11c-6d31-64492721ca18.png)

今回はこの「コンテナイメージ」から関数の作成を行う方法について、AWSベースイメージを使う場合と代替イメージを使う場合に分けて示します。

公式サイトは以下↓
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/images-create.html

# コンテナを使用するメリット
– カスタムランタイムの使用:
– 従来のLambdaでサポートされている実行環境に依存することなく、好みの言語、フレームワーク、ライブラリを選択し、独自の実行環境を構築できる
– バージョン管理:
– コンテナのイメージはイメージレジストリであるECRで管理されるため、

元記事を表示

OTHERカテゴリの最新記事