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

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

【aws】クロスアカウントでのS3取得

# 実現したいこと
– account1にあるLambdaからaccount2にあるS3内のファイルを取得する
– S3の取得には何かしらの制限をかける必要がある
![スクリーンショット 2023-08-28 17.59.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2363249/c91467dd-ecab-d502-93d0-7610f7d75153.png)

# [NG] LambdaのIPを固定してS3にIP制限をかける
### AWS構成
![スクリーンショット 2023-08-28 18.03.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2363249/346d00df-f10b-9914-765a-84ae647db6b3.png)

– LambdaのIPを固定

https://repost.aws/ja/knowledge-center/lambda-static-ip

– S3に

元記事を表示

AWS Lambda 実用チュートリアル

# はじめに
 AWSのLambdaはサーバーレスでコードを実行できる仕組みです。Lambdaはとても小規模なコードならばブラウザでコーディングが完結する手軽さがあります。ですが、実際にLambdaで実行した処理はそこそこ重たい処理のケースが多いです。特に、信号処理のように特定のライブラリに依存するような処理は、ブラウザだけで完結させることが難しく、Lambdaレイヤーや、コンテナを使用した方法を採用しなければなりません。
 Lambdaレイヤーや、コンテナを使用したLambdaは開発するのがちょっと大変です。インターネットで情報を探すと、誰かが完成させたものはたくさんあるのですが、完成させる過程に関する資料が少ないのが気になりました。
 そこで、今回は私が開発者ならばどういうアプローチをするか、を記事にしようと思います。

※ここで作成したLambdaより大規模になるならば、大人しくSAMなどの利用をした方が良いかもしれません。

# 作成するLambda
 今回作成するLambdaは次の通りの仕様とします。
– S3バケットへのファイルの設置をトリガーとする
— ファイルはmp3

元記事を表示

ある日突然 LINE ボットの定期通知が来なくなった

# 現象

以前毎日2時間置き(1:00, 3:00, 5:00, … 23:00)に LINE のボットチャネルに送信されるように設定していたある通知が、気づいたら来なくなっていた。おかしなことに、来なくなった日が数日続いたかと思えばまた突如再開し、さらにまた数日して来なくなり、、を何回か繰り返しているような状態が続いた。
この LINE ボットは2年ほど前から稼働させており、過去にこのようなことはなかった。
そこで、(この通知がなくてもさして困ることはないが)気になったので原因を調べてみたので、その時の手順をメモしたいと思う。

# 前提

## 何の通知か?

– 最新の仮想通貨(暗号資産)のレート(1コインあたり何円か)を LINE のボットチャネルに通知してくれるもの。
– 対象の仮想通貨はビットコイン(BTC), イーサリアム(ETH), ビットコインキャッシュ(BCH), リップル(XRP) の4種である。

## アーキテクチャ

![arch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c

元記事を表示

NestJS をシンプルに初期構築から試す(その2 API Gateway + AWS Lambdaとしてデプロイ)

このページは、その2(その1のつづき)です。
– [その1](https://qiita.com/ssugimoto/items/210c21ec18b3c5c3383f)は、NestJSのWebフレームワークとしてローカル環境として動かす初期構築まで
– その2では、Amazon API Gateway + AWS Lambdaへデプロイを行います
– [その3では、AWS App Runner として動かす(仮)](https://qiita.com/ssugimoto/items/3db0616186ac545339e5)

|記事 |ブランチ |内容|
|—|—|—|
|[その1](https://github.com/ssugimoto/serverless-framework-nestjs-example/tree/feature/example-step1)|feature/example-step1 |nest cli |
|[その2](https://github.com/ssugimoto/serverless-framework-nestjs-exam

元記事を表示

LINE Botの自動返信メソッドをLambdaで作る

## 概要
– AWS LambdaとDynamoDBを使ってLINE Botを作ったので、その備忘録の1つです。
– この記事では、LINE Botの自動返信メソッドをLambdaで作る手順を説明します。

## 環境
macOS: 13.5.1
Homebrew: 4.1.4
Node.js: v18.14.1
aws-cli: aws-cli/2.13.7 Python/3.11.4 Darwin/22.6.0 source/arm64 prompt/off

## 前提条件
– [AWS CLI](https://aws.amazon.com/jp/cli/)のダウンロード・インストール済み
– CLI操作用のIAMユーザーを作成済み。
– IAMユーザーの作成方法は [以前書いた別の記事(CLI&コンソール作業用のAWS IAMユーザーを作成する)](https://qiita.com/zono345/items/d1934a812c88b655364a) を参照のこと。

## サマリー(全体の流れ)
1. DynamoDBの作成
1. Lambda用のIAMロール

元記事を表示

LINE BotのWebHookのためのAPI Gateway作成方法

## 概要
– AWS LambdaとDynamoDBを使ってLINE Botを作ったので、その備忘録の1つです。
– この記事では、LINE BotのWebHookのためのAPI Gatewayの作成・設定方法を説明します。

## 環境
– コンソールでの作業のため、環境構築なし。

## API Gatewayの作成方法
– AWSへログインし、API Gateway -> `APIを作成`をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1834744/b16d3762-25cc-bdef-eda3-67ee339e7b63.png)

– APIタイプを選択 -> REST API -> `構築`をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1834744/f67dd709-4426-4eb7-d9a9-b8e0970eb6f2.png)

– `You

元記事を表示

AWS SAM で関数とレイヤーを別々に管理(Python)

# 概要
現在 AWS Lambda で複数の関数を運用しているが、共通するライブラリやコードが存在しているため、[Lambda レイヤー](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/chapter-layers.html)で共通部分をくくり出したい
Lambda 関数については [AWS SAM](https://aws.amazon.com/jp/serverless/sam/) で実装しているため、レイヤーも同様に実装・管理を行いたい
ただしレイヤーはどの関数も参照するため、どこかの関数と一緒にするよりも独立させ、個別に管理やデプロイを行いたい

このような要望があり、色々調べたのだが、まとまった方法が見つからなかったため、ここにまとめる

# 環境
* Python 3.11.1
* aws-cli/2.13.12
* SAM CLI, version 1.95.0

# 結論
いきなり結論から書くが、以下のような形で実装した

## ファイル構成(レイヤー)
“`
.
├─ python
| ├─ __init_

元記事を表示

TerraformでAWS Lambdaをデプロイする方法

# やりたいこと
・TerraformでAWS Lambdaをデプロイしたい
・ローカルでlambdaソースを編集したらAWSへ連動できるか検証したい

# 前提
・AWSアカウント作成済み
・AWS IAMユーザーを作成し、access_keyとsecret_keyを発行済み
・Terraformインストール済み
・AWS CLIインストール済み
・VSCODEインストール済み
 (お好みのエディターで大丈夫)
・Pythonインストール済み
 (今回はpython3.9でlambadaを作ってみたいですが、極簡単なソースコードなのでバージョンどうてもいいかと思う)

# 環境
“`
$ terraform -v
Terraform v1.5.5
on windows_amd64
+ provider registry.terraform.io/hashicorp/aws v5.13.1

$ python -V
Python 3.9.13
“`
# 構築リソース
・AWS Lambda function
・AWS IAM role
・AWS IAM policy

# ディレ

元記事を表示

[ネタ]AWS Step Functionsはローコードなのか?

こんにちは。Kaneyasuです。

先日、広島のこちらのイベントでLTさせていただきました。

https://it-deep-talk.connpass.com/event/292746/

本記事はこの時のLTをブログ化したものです。

# このネタを思いついた背景

私はAWSを使ったお仕事をさせていただいていて、最近はAWS Step Functionsをよく使います。
とても便利なサービスだと思うのですが、前々からちょっと気になっていることがありました。

https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-StepFunctions-2022-reg-event.html

このように、AWS Step Functionsがローコードの仲間として扱われていることです。
ローコードには厳密な定義はなく、AWSなりの基準でこれがローコードならば、納得せざるを得ないのですが、個人的に少々違和感を感じたので、ゆっくり考えてみたら、危機感を覚えたというのが本記事のお話です。

このお話は、疑問を投げかける

元記事を表示

【Python】GitHub ActionsとOpenID Connectを使ってLambdaを自動デプロイしよう!

## 概要
GitHub Actionsを使ってPythonの必要なパッケージとソースコードをzipファイルに圧縮してLambdaに自動デプロイする方法について解説します
また、今回はOpenID Connectを使ってデプロイするのでIAMロールの設定等についても解説します

## 前提
– 言語・パッケージはPythonを使用
– Pythonのパッケージ管理にPoetryを使用
– GitHub ActionsおよびLambdaに関する基本的な知識を有していること

## ディレクトリ構成
ファイル構成は以下のとおりです
“`
❯ tree
.
├── .github
│ └── workflows
│ └── lambda-deploy.yml
└── application
├── lambda_function.py
├── poetry.lock
└── pyproject.toml
“`

## OpenID Connect
OpenID Connectを使用することでAWSの
– シークレットキー
– アクセスキー

を使わ

元記事を表示

AWS Lambda + Quarkusで、AuroraにアクセスするAPIを作成する

# はじめに
当記事では、別記事「[AWS Lambda + QuarkusでのREST API作成](https://qiita.com/hisato_imanishi/items/487f6914ab9a1c9fc692)」で作成したAPIに対して、Amazon Aurora(PostgreSQL)にアクセスする機能を追加する手順を示します。

手順にはAuroraのプロビジョニングを含みます。また、LambdaからAuroraへのアクセスは、RDS Proxyを間に置く構成とします。

# 前提環境
当記事では以下を前提とします(ツールのバージョンは一致しなくても実施は可能)。

– 別記事「[AWS Lambda + QuarkusでのREST API作成](https://qiita.com/hisato_imanishi/items/487f6914ab9a1c9fc692)」記載の内容の実施が完了していること
– Quarkus CLI 3.2.3 Final
– Maven 3.8.7
– AWS CLI 2.13.10

# 実施手順
Aurora(PostgreSQ

元記事を表示

AWS Lambda + QuarkusでのREST API作成

# はじめに
QuarkusはコンテナファーストのJavaフレームワークですが、AWS Lambdaにも対応しています。当記事では、AWS Lambda上で、QuarkusベースのREST APIを作成・動作させる手順を説明します。

# 前提環境
当記事では以下を前提とします(ツールのバージョンは一致しなくても実施は可能)。

– AWSアカウントを保有していること
– Quarkus CLI 3.2.3 Final
– Maven 3.8.7
– AWS CLI 2.13.10

# 実施手順
基本的には、[Quarkusのドキュメント](https://ja.quarkus.io/guides/amazon-lambda)をベースに進めていきます。

## Mavenプロジェクトの作成
まず、Mavenでプロジェクトを作成します。

“`bash
mvn archetype:generate \
-DarchetypeGroupId=io.quarkus \
-DarchetypeArtifactId=quarkus-amazon-lambda-a

元記事を表示

aws-lambda-power-tuningのS3payloadを利用する

## 背景
Lambda Power Tuningの設定には、`input` フィールドにテストケースを含めることができますが、制約としてテストケースのサイズは262144バイト以下である必要があります。そのため、base64エンコードされた画像データをそのまま含めることは難しいかもしれません。

この制約を回避するためには、input` フィールドに **payloadS3** というパラメータを利用します。

## 設定すべき項目
1.**Lambda Power Tuning**をデプロイする時、アプリケーションの **payloadS3Bucket** パラメータに **バケット名**(eg.your-bucket) を設定します。Lambda Power Tuning アプリケーションの設定には、S3 バケットの情報が含まれているはずです。もしこのパラメータが誤っている場合、アプリケーションは正しいバケットにアクセスできません。

2.ステートマシンのロールに、S3バケットにアクセスする権限を与えます。

3.`input` フィールドを設定します。
“`
{
“l

元記事を表示

【serverlessフレームワーク】eventsを設定したのにエンドポイント設定されない

# はじめに
プログラミング学習中の[@kat_log](https://twitter.com/kat__log “Twitter”)と申します。

serverless flameworkの学習にて起きた問題の解決メモになります?
`serverless-api-gateway-throttling`を使用し、
serverless.ymlに、AWSのLambdaのAPIをインターネットに公開するeventsを記載したのに、npx serverless deployにてデプロイしてもエンドポイントが作られない問題が発生し、解決しました?
(超凡ミスでした…)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1455073/99b4d609-b9d1-40e6-bef0-0958469511c1.png)

# 結論
serverless.ymlのインデント設定ミスでした…

## 誤
“`serverless.yml
hello:
handler: src/hello

元記事を表示

AWS CloudFormation: 06. Lambda関数を作成して、S3/EventBridge/SQS から呼び出す

# 本記事について

– AWS CloudFormationを用いて、色々なアーキテクチャを構築していきます。テンプレートのコピペ元としてご活用いただければ幸いです
– [01. 仮想ネットワークの構築](https://qiita.com/iwatake2222/items/d19bd983391a292345af)
– [02. アプリケーションサーバーの構築と踏み台サーバー経由でのアクセス方法](https://qiita.com/iwatake2222/items/45822e5ef9b56df42069)
– [03. S3バケットの作成とポリシー・アクセス許可の設定](https://qiita.com/iwatake2222/items/d9c977e740ec1ee16b9c)
– [04. S3 (+ CloudFront + OAC) による静的ウェブサイトのホスティング](https://qiita.com/iwatake2222/items/ac4392c11f83af2f320a)
– [05. S3 + CloudFront + Cog

元記事を表示

Pythonでラムダ式を使う

Pythonでラムダ式の使い方をまとめました
※ラムダ式は英語で”lambda”と表記されますが、AWSのLambdaとは異なります

Pythonのラムダ式は無名関数で、通常はdefで関数名を定義しますが
ラムダ式は引数と式などで構成されます

具体的にコードの違いを見てみましょう

defの場合
“`python
def add_function(x, y):
return x + y
“`

ラムダ式の場合
“`python
add_value = lambda x, y: x + y
“`

# メリット
+ シンプル
1行で処理が記載できるので簡潔にコードを書けます
filter()などの高階関数(関数を引数として受け取る関数)と組み合わせるとよりコードが短く書けます

+ 関数(メソッド)が減らせる
先ほど示したようにdefで定義してメソッド化する手間が減ります

# 高階関数を使用したラムダ式
+ filter
配列の数字の中から偶数の数字を抽出する処理
“`python
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9,

元記事を表示

【serverlessフレームワーク】イベントを設定したのに反映されない

# はじめに
プログラミング学習中の[@kat_log](https://twitter.com/kat__log “Twitter”)と申します。

serverless flameworkの学習にて起きた問題の解決メモになります?
serverless.ymlに、AWSのLambdaを定期実行するcronを記載したのに、npx serverless deployにてデプロイしてもLambdaの関数にトリガーが設定されていない問題が発生し、解決しました?
(超凡ミスでした…)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1455073/c24d41be-6afe-535b-9052-7d7a2472ca7d.png)

# 結論
eventsと記載すべきところを、eventと単数形を記載していました…

## 誤
“`serverless.yml
costNotifier:
handler: src/costNotifier.handler
event: #

元記事を表示

[AWS Lambda + Python + NHK番組表API]自分好みの番組リストをSlackメッセージで受け取るものを作った

# はじめに

カジキはテレビはほぼNHKしか見ませんが、テレビ視聴に関してはわがままです。
まず、

– **自分が興味のある番組は見逃したくないわ…**

と思うものの、番組表をじっくり眺めて絞り込む時間はあまりありません。また、他にやるべきことがある時は、

– この時間は集中したいから、**むしろ面白そうな番組がやってることは知りたくないわ**…

ということを思って、特定の日や時間帯についてはテレビを敢えて見ないようにしている時もあります。
そんな超絶わがままな現代カジキは、テレビと仲良く賢く付き合うために、今回、

– 自分が見る番組の候補を絞り込むアプリケーション

を作成してみました。

# どういうものができますか?

こんな感じの、`カスタム番組リスト`が毎日投稿されます。後述する抽出加工を実施し、

– `特定の時間帯`の、
– `特定のジャンル`の番組
– 自分の場合、ジャンルは`ドキュメンタリー`、`動物`、`紀行`などで絞っています

のみがリストアップされて投稿されます。
![Untitled.png](https://qiita-image-st

元記事を表示

Serverless FrameworkとDockerでLambda環境を構築する

## 概要
Lambdaを今まであまり使ってこなかったので勉強ついでにローカル実行とデプロイまで一通りできる環境を構築したいと思います。

## 前提条件
– Dockerがインストール済みであること
– Awsアカウントを作成済みでアクセスキー、シークレットキーを発行済みであること

## コンソールから関数を作ってみる
まずはどんなものかコンソールから関数を作ってみる。

### 1. 関数の作成
Lambda > 関数に遷移 > 関数の作成

![スクリーンショット 2023-08-15 20.35.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/254217/9fe51b47-f20d-ac97-80b3-125b5979d8c1.png)

ランタイム: Node.js 18.x
アーキテクチャ: arm64

で作成しました。

### 2. コード作成

“`javascript
export const handler = async (event) => {
// TODO

元記事を表示

WebページのSorryページをALBとLambdaのみで自動切替できるようにしてみた

目的

– ALB配下のEC2が全停止したらSorryページを表示

上記を実装するにあたり色々調べたが一か所に集約されていなかったため
記事にまとめてみようと思う。

前提

– 既に運用中のWebサイトがある
– WebサイトをAWSで構築している

利用するサービス

– ALB
– Lambda
– CloudWatch

実装方法

– ALB

まずALBのリスナールールに通常のWebサイトを
ターゲットとするルールに加えて、メンテナンスページ用のルールを
追加する。

①リスナールールの作成
 →条件に「パス」=「*」
 →「固定レスポンスを返す」を選択
 →レスポンスコード:503
 →メッセージの形式:text/html
 →レスポンス本文:以下参照

“`html


Sorry Page

Webサイト名を入力

現在、メンテナンス中です。以下の時間帯ではサービスがご利用いただけません

元記事を表示

OTHERカテゴリの最新記事