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

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

AWS CleanRoomsのクエリを定期的に実行するLambda関数

## 記事の目的
AWS CleanRoomsのコラボレーションによるデータ共有は、共有する側/される側でCleanRoomsでクエリを実行できるレベルの知識やクエリ実行する手間が必要となるため、非エンジニアにデータ共有したいといった要件の場合は運用面でのハードルがある。
自動で定期的にクエリを実行するようにして、S3に保存されている結果ファイルだけを共有するようにしたいと思ったが、調べた限りCleanRooms自体にはクエリを自動的に定期実行する仕組みがない模様。
ということで、CleanRoomsのクエリを定期実行するLambda関数を作ってみた。

## 前提
### ローカル
– mac(Windowsの場合はコマンド等を適宜読み替え)
– Node.js バージョン20.x がインストール済みであること
– AWSの認証情報が設定済みであること

### AWS
– CleanRoomsのコラボレーションが作成済みであること
– 実行するクエリの分析テンプレートを登録済みであること
– 記事内のAWSマネコンのリンク東京リージョン


## ソースコード
htt

元記事を表示

Lambda コンソール上での SAM テンプレート

## はじめに

Lambda コンソール上でSAM テンプレートを生成出来るようになったみたいです。

– Application Composer にエクスポート
– ダウンロード

上記のどちらかできるみたいです。

## ダイアグラム/テンプレートの切り替え
それぞれの切り替えについて記載します。

## ダイアグラム
元々はこのダイアグラムだけでした。
こちらは、Lambdaを中心にコンポーネントの関連付けを視覚的に表示したものとなります。
– API Gateway
– Layers
など

![スクリーンショット 2023-11-15 15.30.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415982/aa8b61a5-46f8-e43a-b7d9-a3f179915b0e.png)

## テンプレート

対象のLambdaを SAM テンプレートで表示することができるようになりました。

![スクリーンショット 2023-11-15 15.31.31.png](https

元記事を表示

Tableau Webhook APIを利用してTableau Server間のダッシュボード同期を実現してみた

こんにちは。今回は、社内向けと社外向けに分けたTableau Server間でダッシュボードを同期する方法について紹介したいと思います。

![DALL·E 2023-11-15 02.02.30 – An image illustrating the concept of connecting an ‘Internal Tableau Server’ with an ‘External Tableau Server’ using Webhook API for data synchronizat.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3621177/44c4e8c2-204d-9c54-cf31-e4b2e74baace.png)
※生成AI(DALL-E)使ったイメージ画像 正確に文字を表示するのが難しい。。

## 背景
私たちは、社内向けのTableau Serverを運用しています。このサーバーでは、様々なデータソースからデータを抽出し、分析やレポーティングを行っています。しかし、社外

元記事を表示

サーバーレス構成をCloudFormationで構築

## はじめに
簡単なサーバーレス環境の構築をCloudFormationを使って構築してみました。

背景として、よくある構成だと思うので、プロジェクトなどでちょっとした検証をするときに参考になるかと思い整理しました。

## 構成
– EventBridge
– EventBridgeを起点にStep Functionsを実行する
– Step Functions
– Lambdaのワークフロー
– Lambda
– アップロード or 削除
– S3

![template.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415982/4b411e31-c73e-a05b-d218-b10a52e1827a.png)

## テンプレート
“`yaml:template.yaml
AWSTemplateFormatVersion: 2010-09-09

Parameters:
BucketName:
Type: String

PutLambdaIma

元記事を表示

DockerコンテナでLambdaをデプロイする

## はじめに
Docker イメージを ECR リポジトリ にプッシュし、
Lambdaを ECR リポジトリから ビルドする手順を試してみたので、
その手順を記載しています。

## 事前準備
– Docker Desktop
– AWS CLI
– ECR リポジトリの作成(pushするため)

## 手順
### ディレクトリ
“`
docker-lambda-app/
├── Dockerfile
├── app.py
└── template.yaml
“`

### Dockerfile
“`Dockerfile:Dockerfile
FROM public.ecr.aws/lambda/python:3.10
COPY app.py ./
CMD [“app.handler”]
“`

### Python
“`python:app.py
import json

def handler(event, context):
return {
“statusCode”: 200,
“body”: json.dump

元記事を表示

AWS lambdaでprivate subnetにあるRDS(MySQL)のdumpをする

## やりたいこと
VPCを跨いでRDSのデータをコピーしたいというモチベーションがあり、RDSをprivate subnetに配置しながらdb dump/restoreを行うためにlambdaから実行していきました。
dump結果はS3に配置しています。

lambdaの開発は不慣れなところがあるのでもっとこうしたほうがいいなどのコメントがありましたらいただけるととてもありがたいです。

※ lambdaにはタイムアウトが15分までという制約があるので、大規模なデータがある場合は今回の手段は適当ではありません。

## 対応の全体像
* DB Dump用のlambdaを用意。VPCのprivate subnetにアタッチしてdump結果をS3にアップロードする
* lambdaからmysqldumpを動かせるようにlambda layerを用意
* Nodejsのランタイムからdb dumpを実行
* 結果をS3にアップロードする
* DB Restore用のlambdaを用意。VPCのprivate subnetにアタッチしてS3からダウンロードしたdump

元記事を表示

Amplify×lambda×SESでメールを送信する

## Amplifyとは

AWS Amplifyは、Webおよびモバイルアプリケーションの開発を効率的に行うための開発フレームワークおよびツールチェーンです。バックエンドサービスの作成と管理、フロントエンドコードの生成、アプリケーションのデプロイとホスティングを助けます。これにより、開発者はアプリケーションの構築とテストに集中することができます。

↓ 詳細については公式サイトを参照ください
https://aws.amazon.com/jp/amplify/

## 行いたいこと
AppsyncのGraphQL経由でDynamoDBにデータが登録された際、データ内のメールアドレスに向けてメールを送信したいです。今回は予約システムの想定で、予約情報が追加された際に別のテーブルからユーザー情報を取ってきて、メールを送信するような形にしてみました。
![](https://storage.googleapis.com/zenn-user-upload/26f291248047-20231109.png)

## 前提
・ReactとTypescriptを使用してフロントエンドの実装を行う

元記事を表示

LambdaでS3上のJSON形式の設定ファイルを一括更新する

LambdaでS3上に保管したJSON形式の設定ファイルを一括更新する手順の覚え書きです。

## 要件

– ロボットの設定ファイルを一括更新する
– 設定ファイルの要素は全ファイル同じ
– 要素の増減について、バージョン管理するものとする
– 処理は手動実行のため、コンソールでログが見られれば問題ない

### イメージ

イメージは以下の通り
Version 1.0.0のCountry要素の後ろにRegion要素を空白で追加し、Version 1.1.0に更新する場合

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356958/0c18dc9c-91b9-2b14-26ec-0db5da808afa.png)

## 手順

### 1. S3バケットとフォルダの作成

まず、S3設定ファイルを保管するバケットとフォルダ(厳密にはオブジェクト)を作成します。

S3バケットの構成は以下の通りで、settingsフォルダ下に設定ファイルを配置する構成。同階層にbackupフ

元記事を表示

React + API Gateway + Lambda + DynamoDBでTodoアプリ

# React
フロントエンドはReactで適当にTodoアプリを作っておきました。
`process.env.REACT_APP_BASE_URL` にはこの後作成するAPI Gatewayのエンドポイントが入ります。
“`javascript:App.js
import { useEffect, useState } from ‘react’;
import Todo from ‘./components/Todo’;
import AddForm from ‘./components/AddForm’;
import axios from ‘axios’;

const App = () => {
const [todos, setTodos] = useState([])

const getTodos = () => {
axios.get(`${process.env.REACT_APP_BASE_URL}/todo`
).then(res => {
setTodos(res.data)
}).catch(e => {

元記事を表示

Python Lambda – コンテナ上でのローカルデバッグ環境構築(AWSサービス(RDS)のモック化)

# 内容

– [Python Lambda – コンテナ上でのローカルデバッグ環境構築](https://qiita.com/takmot/items/648f35c04e0717a4a6fe)
– [Python Lambda – コンテナ上でのローカルデバッグ環境構築(AWSサービス(S3)のモック化)](https://qiita.com/takmot/items/7f244baa8a56f5cd1f63)

上記過去記事の続き

CDKで実装した Python Lambda のローカルデバッグ環境構築する
Lambdaの実行環境と合わせるため、Lambdaと同環境のコンテナを用意し、
Remote Developmentでコンテナに入りデバッグを行う
LocalStackでAWSサービス(S3)のモック化を行う

上記を前回までで実施したので、以下対応を行う

– PostgreSQLサーバー用コンテナでAWSサービス(RDS)のモック化を行う

LocalStackでRDSは有料サービスのため別途PostgreSQLサーバー用にコンテナを立ち上げる

元記事を表示

【AWS】Amazon S3 Object Lambdaを検証!

## はじめに

この記事では「この前リリースされた機能って実際に動かすとどんな感じなんだろう」とか「もしかしたら内容次第では使えるかも??」などAWSサービスの中でも特定の機能にフォーカスして検証していく記事です。主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど)
誤りなどがあれば書き直していく予定です。

今回はAmazon S3(以下、S3)が機能として提供しているAmazon S3 Object Lambdaを検証してみます。

参考:[Amazon S3 Object Lambda を使用して、取得時に画像に動的にウォーターマークを付ける](https://aws.amazon.com/jp/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/)

## Amazon S3 Object Lambdaとは

簡単に説明するとデータを取り出す時に取り出したデータを加工できる機能です。

> S3 Object Lambda を使用すると、S3

元記事を表示

AtCoder Calendar

# AtCoder Calendarについて
AtCoderの予定をGoogle Calendarにまとめて追加できるアプリケーションを作りました。今回はAtCoderのAPIが公開されていなかったため、対象のURL(https://atcoder.jp/contests/)
からスクレイピングをしてデータを取得しています。
フロントエンドのコードはGitHub(https://github.com/Akito08/atcoder-calendar)
にのせているので合わせてご確認ください。

# アプリケーションの使用例
・Googleアカウントを使って、アプリにログインします。
・ユーザーの方はコンテストの開催年と月をベースにコンテストを検索します。
・「Google Calendarに予定を追加」というボタンを押すと、チェックボックスにチェックの入った予定がユーザーの方のGoogle Calendarに追加されます。

![スクリーンショット 2023-11-13 21.42.02.png](https://qiita-image-store.s3.ap-northeast-1

元記事を表示

NextJS を Lambda にデプロイするツールを試してみた

## モチベーション

弊社の場合BFFとして、AWS AppSync を使って GraphQL の API を立てて、その後段の DynamoDB への操作をしています。

![ざっくりアーキテクチャ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3517555/499798d4-a80d-58df-e435-2177a066fa25.png)

管理画面や CMS として、 kintone を使っているのですが、 DynamoDB と kintone 内部のストアでデータをそれぞれ持った状態で同期させ続けているのですが、これがだんだん辛くなってきました。

そこで、直接 AppSync 経由で DynamoDB の中身を CRUD 出来る管理画面を作りたいです。

しかし、現在、AppSync の認証はフロントエンドからはOIDC、バックエンドはIAMという設定にしており、ビジネス担当者側が求めるデータの確認や処理を安全に実現することが難しそうです。

そこで、「Lambdaで管理画面を動かしてし

元記事を表示

Lambda(node18)でplaywrightを動作させるコードをtypescriptで書いたメモ

## 概要
aws lambdaでPlaywrightを動作させた。
ローカルで動作させる場合と異なり、Lambdaにはブラウザがない。
ヘッドレスブラウザを含んだLayerを利用することにした。

[ソースコード](https://github.com/hibohiboo/aws-cdk-v2/tree/1ac55c10ca4bacc90088dba3dacf7fc92c8ad343)

## ソース

“`ts:cdk/lib/playwright-stack.ts
import { Aspects, Duration, Stack, StackProps, Tag } from ‘aws-cdk-lib’;
import { LayerVersion, Runtime } from ‘aws-cdk-lib/aws-lambda’;
import { NodejsFunction } from ‘aws-cdk-lib/aws-lambda-nodejs’;
import { Construct } from ‘constructs’;

export class PlayWr

元記事を表示

LocalStackを試してみた

## はじめに
AWS を勉強のために触りたいが、課金が怖くてなかなか試せない。
そういった方向けに、ローカル開発環境でAWSサービスを実行できるのが、LocalStack です。

今回は、LocalStackを使って簡単なAPIをデプロイしてみようと思います。

## 前提条件
docker(docker compose コマンドを実行できること)を使用できる状態にしておいてください。

## 下準備
### AWS CLIのインストール
“`
$ sudo apt install awscli
“`

### プロファイルの設定
“`
$ aws configure –profile localstack

AWS Access Key ID [None]: dummy
AWS Secret Access Key [None]: dummy
Default region name [None]: us-east-1
Default output format [None]: json
“`

### LocalStackのclone
“`
$ git clone

元記事を表示

Python Lambda – コンテナ上でのローカルデバッグ環境構築(AWSサービス(S3)のモック化)

# 内容

[前回記事](https://qiita.com/takmot/items/648f35c04e0717a4a6fe)の続き

CDKで実装した Python Lambda のローカルデバッグ環境構築する
Lambdaの実行環境と合わせるため、Lambdaと同環境のコンテナを用意し、
Remote Developmentでコンテナに入りデバッグを行う

上記を[前回記事](https://qiita.com/takmot/items/648f35c04e0717a4a6fe)で実施したので、
LocalStackでAWSサービス(S3)のモック化を行う

以下は別記事で対応する

– [Amazon RDSを別途PostgreSQLサーバー用コンテナで対応する](https://qiita.com/takmot/items/257c4448a4ca9b9df9f8)

# フォルダ構成

基本は[前回記事](https://qiita.com/takmot/items/648f35c04e0717a4a6fe#%E3%83%95%E3%82%A9%E3%

元記事を表示

[AWS, GCP]Lambda経由でS3バケット内のディレクトリ,ファイルを構成そのままでGCSバケットへコピー

# 1. 概要
「AWSのS3バケットにファイルとかフォルダがアップロードされたら、GCPの2つのプロジェクトのGCSバケットへ自動で上書きアップロードするシステム」を構築したときのお話。

**前提**
– Macで作業(チップはM2, Docker Desktop for Mac インストール済み)
– Lambdaコードの記述言語はPython3
– 2つのGCPプロジェクトに対する操作は、別のプロジェクトのサービスアカウントを介して行う。
– LambdaからGCS操作する際の認証はWorkload Identityを利用

# 2. システム構成図
![s3からgcsへコピー.drawio (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/59542/a8e19c32-4cf7-c26a-2958-828a63d69685.png)

破線は紐づき関係。

# 3. 構築
https://blog.g-gen.co.jp/entry/aws-lambda-to-cloud-storag

元記事を表示

Python Lambda – コンテナ上でのローカルデバッグ環境構築

# 内容

CDKで実装した Python Lambda のローカルデバッグ環境構築する
Lambdaの実行環境と合わせるため、Lambdaと同環境のコンテナを用意し、
Remote Developmentでコンテナに入りデバッグを行う
本記事で一旦ここまでを実施する

以下は別記事で対応する

– [AWSサービス(S3)はLocalStackでモック化する](https://qiita.com/takmot/items/7f244baa8a56f5cd1f63)
– [Amazon RDSを別途PostgreSQLサーバー用コンテナで対応する](https://qiita.com/takmot/items/257c4448a4ca9b9df9f8)

# フォルダ構成

今回以下のようにLambdaごとに外部パッケージをインストールしているが、
Lambdaのサイズ上限も考慮すると、EFS上に外部パッケージをインストールしてLambdaにアタッチする([参考](https://valmore.work/aws-labmda-pytorch/))ほうが良さそう

元記事を表示

【学習メモ】API Gateway Lambda オーソライザーとは

# Lambda オーソライザーとは
・Lambda 関数を使用して、API へのアクセスを制御する API Gateway の機能
(クライアントが認可された人か確認するってこと)

クライアントがリクエストをAPI Gatewayへ送信

API GatewayがLambda オーソライザーを呼び出し

Lambda オーソライザーが認可戦略を使用して、「この人はOK」か確認

OKの場合、IAM ポリシーを出力として返す

# Lambda オーソライザーの種類
## トークンベース の Lambda オーソライザー
・TOKEN オーソライザーのこと
・JSON ウェブトークン (JWT) や OAuth トークンなどのベアラートークンで発信者 ID を受け取る

## リクエストパラメータベースの Lambda オーソライザー
・REQUEST オーソライザーのこと
・ヘッダー、クエリ文字列パラメータ、stageVariables、および $context 変数の組み合わせで発信者 ID を受け取る
・WebSocket API では、リクエストパラメータのみ使える

元記事を表示

【AWS】CloudWatchのカスタムウィジェットからリソースを操作する(EC2開始/停止)

## はじめに

Lambdaで実装できるならCloudWatchのダッシュボード上で色々な操作ができそうなので、
EC2を開始/停止するLambda関数を書いてカスタムウィジェットに設定し、CloudWatchのダッシュボードからEC2の開始/停止をしてみる。
(Lambda書いてまでCloudWatchからEC2を操作する必要性は置いておいて)

### Lambda
サーバレスでコードを実行できるサービス。今回は[AWS SDK for Python(Boto3)](https://aws.amazon.com/jp/sdk-for-python/)を使う。

### CloudWatch
ダッシュボードに追加するウィジェットは折れ線グラフだったり円グラフだったり色々種類がある。その中にカスタムウィジェットというものがあり、Lambdaを実行し、実行結果を表示することができる。

:::note warn
カスタムウィジェット自体には料金は掛からないが、Lambda関数は実行した分従量課金される。
:::

## 1. Lambda関数を実装
以下2つを実装する。
* パラメー

元記事を表示

OTHERカテゴリの最新記事