- 1. AWS LambdaでRubyのGemをレイヤーを使って利用する方法
- 2. 【メモ】SAMのLambdaの記述
- 3. クロスアカウントでのECR参照
- 4. AWS CleanRoomsのクエリを定期的に実行するLambda関数
- 5. Lambda コンソール上での SAM テンプレート
- 6. Tableau Webhook APIを利用してTableau Server間のダッシュボード同期を実現してみた
- 7. サーバーレス構成をCloudFormationで構築
- 8. DockerコンテナでLambdaをデプロイする
- 9. AWS lambdaでprivate subnetにあるRDS(MySQL)のdumpをする
- 10. Amplify×lambda×SESでメールを送信する
- 11. LambdaでS3上のJSON形式の設定ファイルを一括更新する
- 12. React + API Gateway + Lambda + DynamoDBでTodoアプリ
- 13. Python Lambda – コンテナ上でのローカルデバッグ環境構築(AWSサービス(RDS)のモック化)
- 14. 【AWS】Amazon S3 Object Lambdaを検証!
- 15. AtCoder Calendar
- 16. NextJS を Lambda にデプロイするツールを試してみた
- 17. Lambda(node18)でplaywrightを動作させるコードをtypescriptで書いたメモ
- 18. LocalStackを試してみた
- 19. Python Lambda – コンテナ上でのローカルデバッグ環境構築(AWSサービス(S3)のモック化)
- 20. [AWS, GCP]Lambda経由でS3バケット内のディレクトリ,ファイルを構成そのままでGCSバケットへコピー
AWS LambdaでRubyのGemをレイヤーを使って利用する方法
# 概要
“`ruby:lambda_function.rb
def lambda_handler(event:, context:)
p “”.blank?
end
“`
AWS Lambdaで上記の関数を実行しようとすると、active_supportのGemがないので、undefined method blank?と怒られてしまいます。
上記のような関数も実行できるように、AWS LambdaでGemを使う方法をまとめてみました。# ローカル環境での準備
Gemfileに `gem ‘activesupport’` を追加し `bundle install` します。
`bundle install`によってインストールしたファイルはこの後レイヤーにアップロードするので
`–path .` のオプションをつけてカレントディレクトリにインストールされるようにします。
“`
touch Gemfile
“`
“`:Gemfile
source ‘https://rubygems.org’
gem ‘activesupport’
“`
“`
bundle i –
【メモ】SAMのLambdaの記述
# 前提
Runtimeはpythonを指定。
今回使用したキー情報のみを記述。## 記述例
“`yaml
AWSTemplateFormatVersion: ‘2010-09-09’
Transform: AWS::Serverless-2016-10-31
Resources:
# S3 Buckets
BucketName:
Type: AWS::S3::Bucket# Lambda Functions
FunctionName:
Type: AWS::Serverless::Function # Serverless::FunctionがLambdaのこと
Properties:
Handler: app.handler #ここはファイル名.メソッド名で記述する。pythonの場合、app.pyのhandler関数を呼び出すということになる
Runtime: python3.11
CodeUri:
クロスアカウントでのECR参照
ECSやLambdaで自作のImageを参照する際、クロスアカウントでECRリポジトリを参照したい場合のメモ。
結局、どちらもECR側にPermissionを設定するだけで可能。
重要な注意点は、**リージョンを跨いでクロスアカウント参照することは不可能**という点です。# Lambda
公式手順: https://aws.amazon.com/jp/blogs/compute/introducing-cross-account-amazon-ecr-access-for-aws-lambda/
## ECRのPermission
今回のLambdaが置いてあるアカウントのIDを222222222222とした際の例。
“`json
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “CrossAccountPermission”,
“Effect”: “Allow”,
“Principal”: {
“AWS”: “arn:aws:iam::2222222
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-09Parameters:
BucketName:
Type: StringPutLambdaIma
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 jsondef 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 localstackAWS 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