- 1. akippaの予約CSVからGoogleカレンダーに転記するLambda関数 #2
- 2. AWS Lambdaで翻訳APIを作成するハンズオンをやってみた
- 3. 「RDSデータを長期的に格納」RDSからS3にスナップショットを自動的に輸出
- 4. Backlog Gitリポジトリの更新をトリガーに、Amazon S3にコンテンツを自動でアップロードする
- 5. AWS CDKでCloudfront – Lambda FunctionURLsのOACを定義する
- 6. VPCを設定したLambdaからインターネットにアクセスしたい
- 7. Autonomous Database:S3にファイルがアップロードされたらすぐに表にロードし、ロード完了後にS3上のファイルを削除する
- 8. 【AWS SAM】入門してみた dockerで環境構築 ruby
- 9. Python lambdaで一行関数を書く時のコツ
- 10. Lambda関数で日本語ファイルを処理する際にエラーが出た
- 11. Lambda関数でAWS CLIを使用する
- 12. AWS CDKを用いてRemixアプリケーションをLambdaにデプロイする
- 13. akippaの予約CSVからGoogleカレンダーに転記するLambda関数 #1
- 14. Lambda関数を定期的に実行するEventBridge SchedulerをTerraformで作る
- 15. AWSにおける脆弱性対策に便利そうなサービス Amazon Inspector についてざっくりまとめる
- 16. S3にファイルがアップロードされたらLambdaからAutonomous DatabaseのPL/SQLプロシージャを実行してObject Storageにファイルをコピーする
- 17. AWS Lambdaにレイヤーを追加する
- 18. Lambda で Prisma 使って Migrate する
- 19. GmailトリガーでAWSのLambdaを起動する
- 20. AWS Textractを使用したS3アップロードトリガーの自動テキスト抽出
akippaの予約CSVからGoogleカレンダーに転記するLambda関数 #2
バックオフィスが生成AIでがんばるシリーズです。今回はプライベートで利用している[akippa](https://www.akippa.com/)の予約情報取得からGoogleカレンダー転記の自動化についてやっていきます。
1回目は[こちら](https://qiita.com/norifumiishii/items/c618547e49d7e97a1bde)
# Lambdaにレイヤーを準備する
今回GoogleカレンダーAPIを使用するのにあたり、Google系のライブラリをレイヤーで使用します。
ちなみに私LambdaでPythonを使用する際にライブラリはレイヤー機能で使用するというのを初めて知りました。
Windows11でPowershellを使用してレイヤーに使用するzipファイルを作成していきます。
1. 作業用ディレクトリを作成します
“`shell
mkdir lambda_project
cd lambda_project
“`
1. 仮想環境を作成して有効化する
“`sh
python -m venv ven
AWS Lambdaで翻訳APIを作成するハンズオンをやってみた
# はじめに
SAAの勉強で知ったサービスを実際に触って学習内容の定着を図りたいという目的でハンズオンをやってみました。
参考にしたハンズオンの動画、資料は大変わかりやすかったのですが、動画が作成された段階でのコンソール画面と2024年8月時点でのコンソールが若干違っていたため少しわかりづらかったです…。
作業メモとしてこちらの記事を作成してみました。以下のリンクから日本語でのAWSハンズオンや資料一覧を確認できます。
https://aws-samples.github.io/jp-contents-hub/# AWS Lambda ハンズオン
今回参考にしたハンズオンはこちらです。
https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Serverless-1-2022-reg-event.html?trk=aws_introduction_page# 使用するAWSのサービス
今回使用するAWSのサービスは以下の通りです
– [AWS Lambda](https://aws.amazo
「RDSデータを長期的に格納」RDSからS3にスナップショットを自動的に輸出
RDSでスナップショットが最大35日間保存できます。長期間保存するためには、S3にエクスポートする必要があります。ただし、これはAWSコンソールでの手動機能に制限されています。この記事では、自動エクスポート方法について説明します。
# 1.前提
事前に以下のサービスを用意しておきます。
* Mysqlインスタントが立ち上がる(DBエンジンが任意)
* S3バケットが立ち上がる(デフォルト設定)本記事で“`rds-snapshot-archive-test“`というS3バケットを用意ました。
# 2.構築・流れ
![Screenshot 2024-08-02 at 11.29.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703979/45379411-114a-281b-d063-cde8a0cacc88.png)
1. RDS自体でスナップショットを撮影した時にSNSトピックにイベント送信
2. SNSはラムダ処理にトリガー
3. ラムダはRDSでS3輸出処理コマンド
Backlog Gitリポジトリの更新をトリガーに、Amazon S3にコンテンツを自動でアップロードする
# はじめに
## この記事の概要
この記事では、タスク管理ツールBacklogのGitリポジトリとAmazon S3(以下、S3)との連携方法についてまとめています。
流れとしては、Backlog GitリポジトリのWebフックを使用して、リポジトリの更新をトリガーにLambda関数が実行されるようにします。そして、Lambda関数がS3にファイルアップロード処理を行います。
この一連の流れの具体的な構築方法や注意点をまとめています。## BacklogのGit機能について
[Backlog](https://backlog.com/)はタスク管理ツールです。そして、その機能の一つにGit機能があります。
ソースコード管理といえば、IT業界全体では、おそらくGitHubを使用しているチーム(人)が多いと思いますが、タスク管理にBacklogを使用しているケースでは、タスクとソースコードの紐付けが行いやすかったり、タスク管理とソースコード管理(他にもWiki機能もあるのでドキュメント管理なども)を一元化できるなどのメリットがあります。このGit機能は基本的には特に不自由な
AWS CDKでCloudfront – Lambda FunctionURLsのOACを定義する
## 以前の記事
https://qiita.com/Kanahiro/items/85573c9ae724df435a6a
## TL;DR
“`typescript
import * as iam from ‘aws-cdk-lib/aws-iam’;
import * as cloudfront from ‘aws-cdk-lib/aws-cloudfront’;
import * as lambda from ‘aws-cdk-lib/aws-lambda’;// 以下のようなリソースが定義されているとして(当然このままでは動かない)
const distribution = new cloudfront.Distribution({hoge:fuga});
const lambdaFunc = new lambda.DockerImageFunction({{hoge:fuga}};
const funcUrl = lambdaFunc.addFunctionUrl({
authType: lambda.FunctionUrlAuthType.AWS_IA
VPCを設定したLambdaからインターネットにアクセスしたい
# 要約
① NATゲートウェイを設置したパブリックサブネットを用意する
② NATゲートウェイにルーティングさせるルートテーブルを設定したプライベートサブネットを用意する
③ Lmabdaに②で作成したプライベートサブネットを指定する# 図解
![lamba-nat.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/676792/8c9a4293-ef95-5d5d-5291-03e449645f42.png)Lambdaは、デフォルトの設定ではAWSが自動で設定したVPCに設置され、自由にインターネットへのアクセスができます。
ただし、なんらかの事情で(例えばVPC内のリソースにLambdaからアクセスしたい時など)自分のVPCにLambdaを設置したい場合は、
図のようにNATゲートウェイを経由してインターネットにアクセスする必要があります。
# なぜNATを経由する必要があるのか
例えば、以下のようにパブリックサブネットに直接Lambdaを設置してインターネットにアクセス
Autonomous Database:S3にファイルがアップロードされたらすぐに表にロードし、ロード完了後にS3上のファイルを削除する
# はじめに
[こちらの記事](https://qiita.com/500InternalServerError/items/fac9e8d5d7638a4a4020)の応用編として、Amazon S3バケットにファイルがアップロードされたら、それをトリガーにしてLambdaファンクションが起動、起動したLambdaファンクションがAutonomous Databaseに接続してアップロードされたファイルを表にロードし、ロード後にロードしたファイルをAmazon S3から削除する仕組みを構築してみました。
処理の流れのイメージは以下のようになります。
1. Amazon S3のバケットにファイルをアップロード
2. Amazon S3バケットのオブジェクト作成イベントをLambdaに通知
3. LambdaからAutonomous Databaseにアクセス
4. Amazon S3にアップロードされたファイルを表にロードし、ロード後にファイルを削除するPL/SQLプロシージャをLambdaから実行
5. PL/SQLプロシージャによって、Amazon S3にアップロード
【AWS SAM】入門してみた dockerで環境構築 ruby
# はじめに
今までserverless frame workを使用して、lambdaのデプロイを行ってきたのですが、serverless frame work V4から有料化ということを受けてSAMへ移行したいと思いました。https://dev.classmethod.jp/articles/sls-migrate-cdk-or-sam/
# 環境構築
dockerで行いました。
* ruby3.3.4
* node 20.16.0
* aws-sam-cliをzipで公式ページから取得しインストールhttps://github.com/yuuki4135/sam-test-app
“`dockerfile
FROM ruby:3.3.4-slim-bookwormRUN useradd -u 1000 developper \
&& apt-get update -qq && apt-get install -qq –no-install-recommends \
curl awscli unzip wget git vimRUN wget h
Python lambdaで一行関数を書く時のコツ
## はじめに
Pythonのlambda式は、簡潔で読みやすい一行関数を作成するための強力なツールです。本記事では、lambdaを使って効果的な一行関数を書くためのコツをいくつか紹介します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/be7e42f0-cc6a-90cd-ff99-8d61e3050277.png)
## 1. シンプルさを保つ
lambdaは単純な操作に最適です。複雑な処理は通常の関数で行いましょう。
“`python
# Good
square = lambda x: x**2
print(square(5)) # 出力: 25# Not so good (複雑すぎる)
complicated = lambda x, y: [i for i in range(x) if i % y == 0]
print(complicated(10, 3)) # 出力: [0, 3, 6, 9]
“`## 2. 読みやすさを優先する
Lambda関数で日本語ファイルを処理する際にエラーが出た
# はじめに
Lambda関数でAWS CLIコマンドを使用して、日本語ファイル名のファイルをS3にアップロードしようとしたところ、エラーが出ました。
“`
‘utf-8’ codec can’t encode characters in …
“`Lambda関数のランタイムは `Node.js20.x (OS: Amazon Linux 2023)` です。
# エラーの原因
まずは、環境変数設定で `LANG` に `ja_JP.utf8` を設定してみますが、結果は変わらず。
![スクリーンショット 2024-07-29 15.15.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3687813/fc945b3b-4e9d-94cd-144c-6edab6db41ab.png)
Amazon Linux 2023のDockerコンテナを起動して確認してみると、そもそもデフォルトで日本語のロケールデータが存在していませんでした。
“`bash
$ docker run
Lambda関数でAWS CLIを使用する
# はじめに
この記事では、AWS LambdaでAWS CLIを使用する手順についてまとめています。
# 対応方法
AWS Lambdaでは、ファイル書き込みが許可されているのは `/tmp` 配下のみです。
これはつまり、AWS Lambdaで実行するプログラムからはパッケージのインストールは行えないということを意味します。そのため、対応方法としては、デプロイパッケージにまとめてしまうか、Lambdaレイヤーを使用するかになるかと思います。
今回の私のケースでは、AWS CLIは他の関数でも使用する可能性があることなどを踏まえて、Lambdaレイヤーを使用することにしました。
Lambdaレイヤーについての詳細な説明は、[AWS公式ドキュメント](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/chapter-layers.html)に譲ります。# 対応手順
全体の流れとしては、Lambda関数で使用するOSのDockerコンテナでAWS CLIのzipファイルを作成し、そのzipファイルでLambdaレイヤー
AWS CDKを用いてRemixアプリケーションをLambdaにデプロイする
## はじめに
この記事は[こちらの記事](https://qiita.com/monjara/items/9aad76d22a70557a8a6a)の内容をAWS CDKに置き換えたものです。
cdkプロジェクトはTypeScriptで作成しています。完成品はこちらのリポジトリにあります。
https://github.com/monjara/remix-cdk-lambda-example
## 必要なもの
– CDK CLI
– Node.js
– Docker## 階層構造
以下のような階層でプロジェクトを作成します。
“`sh
.
├── remix-app/ # Remixのアプリケーション
│ ├── (Remixのファイル群)
│ ├── Dockerfile # buildしたアプリケーションを実行するためのDockerfile
│ └── run.sh # remix-serveを実行するスクリプト
└── cdk/ # CDKのプロジェクト
“`## Remixプロジェクトのセットアップ
“`sh
npx create-r
akippaの予約CSVからGoogleカレンダーに転記するLambda関数 #1
バックオフィスが生成AIでがんばるシリーズですが、今回はプライベートで利用しているサービスの自動化についてやっていきます。
# やりたいこと
[akippa(アキッパ)](https://www.akippa.com/)の駐車場予約情報CSVをオーナーサイトからダウンロードして予約情報をGoogleカレンダーに転記します。# 方針
以下の処理を行うAWSのLambda関数を作成して実現させます。
1. akippaのオーナーサイトにログインします
1. 予約一覧のページにあるCSVダウンロードのリンクから予約一覧CSVをダウンロードします
1. CSVから1行ごとの予約情報をパースして、Googleカレンダーに Google calendar API を使用して転記しますなおコードをクリーンにするため、akippaオーナーサイトのログイン情報(ID/Pass)及びGoogleカレンダーIDやAPIのトークン(JSON)はLambda関数の環境変数に保存します。
今回コードはChatGPT 4o に作成させ、テストしながらデバッグしていきました。
# Googleカレンダーの準備
Lambda関数を定期的に実行するEventBridge SchedulerをTerraformで作る
# 概要
最近はEventBridgeではなくSchedulerのほうが推奨されているらしいので、やってみました。参考URL -> https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_Amazon-EventBridge-Scheduler_0930_v1.pdf (P.9参照)
# 環境
– Terraform 1.9.1
– Terraform AWS Provider 5.36.0# コード
“`terraform
# Lambda関数
resource “aws_lambda_function” “sample” {
# 省略
}# EventBridge Scheduler使用するIAMロール
resource “aws_iam_role” “sample_scheduler” {
name = “sample-scheduler-role”
assume_role_policy = jsonencode({
Version = “2012-10-17”,
AWSにおける脆弱性対策に便利そうなサービス Amazon Inspector についてざっくりまとめる
## この記事について
この記事は、Amazon Inspectorの利用を検討する上で調べた内容のまとめです。
## Amazon Inspector とは?
Amazon Inspectorは、以下のAWSリソースを自動的に検出し、既知のソフトウェアの脆弱性や意図しないネットワークへの露出がないかスキャンするサービスです。
– Amazon EC2インスタンス
– Amazon ECR内のコンテナイメージ
– AWS Lambda関数継続的なスキャンにより、潜在的なセキュリティリスクを早期に発見し、対策を講じることが可能になります。
**EC2, ECR, Lambdaの脆弱性対策について検討している人には、一考の価値があるサービスかと思います。**## 主な機能
### 1. ハイブリッドスキャンモード
Amazon Inspectorを新規に有効化した場合、デフォルトでハイブリッドスキャンモードが有効になります。
– SSMエージェントがインストールされているインスタンス:エージェントベースのスキャン
– SSMエージェントがインストールされていないインス
S3にファイルがアップロードされたらLambdaからAutonomous DatabaseのPL/SQLプロシージャを実行してObject Storageにファイルをコピーする
# はじめに
自己学習を兼ねて、Amazon S3にファルがアップロードされたら、それをトリガーにしてLambdaファンクションが起動し、LambdaファンクションがAutonomous Databaseに接続してアップロードされたファイルをAmazon S3からOCI Object Storageに移動するPL/SQLプロシージャを実行するという仕組みを構築してみました。
処理の流れのイメージは以下のようになります。
1. Amazon S3のバケットにファイルをアップロード
2. Amazon S3バケットのオブジェクト作成イベントをLambdaに通知
3. LambdaからAutonomous Databaseにアクセス
4. Amazon S3にアップロードされたファイルをOCI Object Storageに移動するPL/SQLプロシージャをLambdaから実行
5. PL/SQLプロシージャによって、Amazon S3にアップロードされたファイルがOCI Object Storageに移動される
※なお、Python、Lambdaに関して初心者ですので、最低
AWS Lambdaにレイヤーを追加する
## やること
– ローカル環境でlambda関数で使用するライブラリをインストール
– ライブラリをzip化
– lambda関数にレイヤーを設定## 環境
– lambda
– Python
– Windows(WSL,ubuntu)## ライブラリを用意
##### lambda関数で使用するライブラリをインストールする。ここではsqlalchemyとしておく。
ローカル環境でvenv仮想環境を構築して、sqlalchemyをインストール。
“`shell
python -m venv venv
source venv/bin/activate
pip install sqlalchemy
deactivate
“`ライブラリをzip化
“`shell
# 適当なディレクトリにpythonディレクトを作成
mkdir /home/hoge/tmp/python
# 仮想環境でインストールしたライブラリをコピー
cp -r venv/lib /home/hoge/tmp/python/
# zip化
cd /home/hoge/tmp
zip -r lay
Lambda で Prisma 使って Migrate する
## やりたいこと
AWS で RDS 作ったけど、テーブル作ったりするのどうしよー
という事で、今回は [Prisma](https://www.prisma.io/) を AWS Lambda に入れて、migrate を実行してみました。1. ローカルで `prisma migrate dev` を実行して migration ファイルを作成
2. AWS Lambda で `prisma migrate deploy` を実行して Amazon RDS に適応ということをやろうと思います。こうすることで、
– AWS 上にサーバーを立てることなく DB のテーブル作成が可能
– Prisma の migration ファイルを管理することで、複数人での開発や、他環境への適応も楽になるはず。
ちなみに、私は Amplify を使って Lambda を作成しました。## Lambda のコード
RDS のユーザ名、パスワードは Secrets Manager にある前提です。
以下の環境変数の設定が必要です。– DATABASE_SECRET_ARN: S
GmailトリガーでAWSのLambdaを起動する
非エンジニアのバックオフィスが頑張るシリーズです。
今回は会社に関係なく個人的なニーズでやってます。今どき個人でもLambda関数のひとつやふたつ、もっているのが常識ですよね🙃
届いたメールでLambdaが起動したらきっと便利なはず!
# やりたいこと
Gmailで特定条件のメールが来たら、Lambdaを起動したい
# 具体的な方針
1. Gmailで特定条件のフィルタを作成しラベルをつける
1. GASでGmail API を叩いてラベルのついたメールがあったらAWS API Gateway を叩く
1. API Gateway から Lambda を起動する
# 作成編
今回は既に問題なく動く Lambda関数があって、デプロイ・テスト完了しているものとします。
## Gmailのフィルタ設定
まずGmailで特定のラベルをつけるフィルタを設定します。(説明割愛)
## API Gateway の準備
今回は単純にAPIを叩くだけで、パラメータ等の引き渡しはしませんので、簡単に作成します。
## API Gateway 作成
「APIを作成」ボタンを押下します。
![image.
AWS Textractを使用したS3アップロードトリガーの自動テキスト抽出
この記事では、AWS SAMを使用してS3バケットにファイルがアップロードされた際に自動的にAWS Textractを利用してテキストを抽出するLambda関数を作成する方法を説明します。
このテンプレートは以下のリソースを作成します。S3バケット: ファイルのアップロードをトリガーするための入力バケットです。
バケット名は{AccountId}-{Region}-input-bucketという形式で生成されます。Lambda関数: S3バケットにファイルがアップロードされるとトリガーされる関数です。
この関数はPython 3.11で動作し、Textractを使用してアップロードされたファイルからテキストを抽出します。IAMロール: Lambda関数が適切な権限を持つためのロールです。
このロールには、Lambdaの基本実行権限、S3へのフルアクセス権限、Textractへのフルアクセス権限が含まれます。このテンプレートの構成と実装方法を解説し、最後に、実際に動作確認を行い、S3バケットにファイルをアップロードしてTextractによるテキスト抽出が成功することを