- 1. AWS CloudFormationでLambdaを構築してみる
- 2. AWS LambdaとGoogle Drive APIを使用したファイル転送の自動化
- 3. Cloud9でLambda(Python)を作り始めるメモ
- 4. ServerlessFrameworkを使ってKindleの価格を通知するLINE Botを作ってみた
- 5. 【AWS】AWS Lambdaで既存のLambdaを複製して作成する方法
- 6. AWS S3, Lambda, EFS でお財布に優しい個人開発はじめました
- 7. Lambda で OpenAI APIを実行する
- 8. LambdaでPandasとMatplotlibを使う時の注意点
- 9. AWS Lambdaのコールドスタートとウォームスタートの挙動
- 10. 【2023/10アップデート】Amazon EventBridgeのワイルドカードフィルターについての検証
- 11. 【AWS】S3-APIGateway-Lambda間リクエスト・レスポンス確認方法
- 12. Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your functionに遭遇した
- 13. 【実務で使えるLambda】describe_instancesで色々やってみる
- 14. AWS Lambdaで日本時間を扱う
- 15. コスト効率向上!「WakeOnLambda」CDK Constructが登場
- 16. Step FunctionでのループをCDKで試したメモ
- 17. Amazon bedrockのSample serverless-pdf-chatを日本リージョンで動かしてみた
- 18. go-awslambda
- 19. AWS LambdaとEventbridgeを使って毎朝7時に気象庁天気予報をLINEに通知
- 20. 【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part5
AWS CloudFormationでLambdaを構築してみる
# はじめに
CloudFormationを用いて、AWS Lambda構築していきたいと思います。
今回はLambdaを構築するところまで実施していきます。
また、Lambda@EdgeとしてCloudFrontと連携して利用するところは次回以降に記載予定です。
AWS Lambda@EdgeはCloudFront が配信するコンテンツをカスタマイズする関数を実行できるコンピューティングサービスです。# 目次
・Lambdaの設定項目
・CloudFormation作成
・最後に
・参考# Lambdaの設定項目
今回はnodejs.18.xを利用し、コードについてはS3から取得してくるようにします。
Lambda@Edgeはバージニア北部にのみ作成可能なため取得してくるS3もバージニア北部であるひつようがあります。また、今回作成するLambdaもバージニア北部に作成するので注意してください
また、IAMロールとCloudFrontへのアクセスを許可するためのポリシーステートメントを作成します上記以外の項目についてはCloudFormationの設定を見てご確認ください
AWS LambdaとGoogle Drive APIを使用したファイル転送の自動化
# AWS LambdaとGoogle Drive APIを使用したファイル転送の自動化
## はじめに
この記事では、AWS Lambda関数を使ってS3バケットからファイルを取得し、Google Driveにアップロードする方法について説明します。
Pythonを使用し、boto3とGoogle Drive APIを活用することで、ファイルの自動転送を実現します。クラウドサービスを使用することで、ファイルの自動化された管理が可能となります。
AWS Lambdaはサーバーレスのコンピューティングサービスであり、Google Drive APIを使用することでファイルのアップロードや管理が簡単にできます。
この組み合わせにより、効率的なファイル管理システムを構築することができます。## フロー
以下のシーケンス図は、AWS Lambdaを使用してAmazon S3からファイルを取得し、Google Driveにアップロードするプロセスを示しています。
1. **Lambda から S3 へ**: ファイルダウンロード要求
2. **S3 から Lambda へ**:
Cloud9でLambda(Python)を作り始めるメモ
AWS Cloud9でLambda開発の環境構築に多少作業が必要だったのでまとめておきます。
既にあちこちでまとめられているけど自分用に。AWS初心者です。## 前提
– OS:Amazon Linux 2023
– インスタンスタイプ:t2.micro(無料枠)
– 接続:AWS Systems Manager(SSM)## 導入作業
### pyenvの追加とPythonバージョン変更
まずはPythonバージョンを確認。
“`bash
$ python –version
Python 3.9.16
“`
サポート期限まで約1年半(2024/2時点)か~~~となったのでバージョン変更できるようにしておきます。まずはpyenvの導入から。
個人的な好みとしては.bash_profileではなく.bashrcに書き込めばよかった…と反省。
“`bash
$ sudo yum -y update
$ sudo yum -y install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sql
ServerlessFrameworkを使ってKindleの価格を通知するLINE Botを作ってみた
# 概要
Amazonのほしい物リストをスクレイピングし、その情報を通知するLINE Botを作成しました。
特に **_Kindle_** 向けに最適化されています。Amazon EventBridgeによる定期実行、もしくはメッセージに対する応答として、Kindle版と紙の本の価格やポイントを通知するLINE Botです。
![kindle-wishlist-to-line.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458297/668d0c63-e0b4-1ed3-d9e4-71cb8161882e.jpeg)# プロジェクトの目的と動機
Kindleの値下げを見逃さないために開発しました。
Kindleの価格はセール時に大きく下がることがありますが、AmazonのスマホアプリではKindleの価格を確認できず、値下げを逃すことがしばしばありました。
その課題を解決するために、このLINE Botを作りました。# 技術スタック
技術スタックは以下のようになっています。![
【AWS】AWS Lambdaで既存のLambdaを複製して作成する方法
## 背景
– [AWS Lambda](https://aws.amazon.com/jp/lambda/)はサーバーレスにプログラムを実行できるサービスです。
– `Lmabda`を使用していると既存の`Lambda`を複製して新しい`Lambda`を作成したいことがあると思います。
– この記事では
1. AWSコンソールで複製する方法
2. `AWS CLI`を一部活用する方法
の2つをご紹介します。
– ※本方法は`python`かつ`zip`デブロイによって作成された`Lambda`でのみ検証した方法です。`python`以外の言語や`zip`デブロイ以外で作成された`Lambda`で使用できる方法かは不明です。## 目標
– 既存の`Lmabda`を複製した新しい`Lmabda`を作成できるようになる。## 1.AWSコンソールで複製する方法
### 既存の`Lambda`の`code`の`copy`方法
– 複製したい`Lambda`のコンソール画面を開きます。
– 「関数の概要」セクションの真横にある「ダウンロード」をクリックします。
AWS S3, Lambda, EFS でお財布に優しい個人開発はじめました
## 開発の動機
個人的に欲しかったサービスを年末年始の時間を利用して開発してみようと考えていたのがきっかけで、なぜこのアーキテクチャにしたかというと、AWSのサービスを使いながら運用コストを抑えた開発をしたいという思いが、まず一番にありました。それと前から気になっていたサーバレスのLambdaを採用したかったのと、Frontの技術を個人開発しながら身につけたいという思いで、比較的コスパの良いアーキテクチャと思ったS3, Lambda, EFSという構成でスモールスタートしてみようと考えました。## どれぐらいお財布に優しくなったのか
直近の実績ベースで1日の運用コストは約0.5USDでした。1ヶ月30.5日で考えると15.25USD/Mで、仮に1USD=150円で計算すると、1ヶ月2,287.5円程度になります。ちなみに無料利用枠は使っていないので、アカウント今から作る人ならもっとお安くなるのではと思っています。個人的な比較対象として同じAWSのサービスでECSとRDBの構成だとこの倍の請求だったので、個人的には継続課金しても良いと思えるレベルまでコスト抑えられたと思います。
Lambda で OpenAI APIを実行する
Lambdaを使用しChatGPTで知られるOpenAIを実行してみました
## Lambdaの作成
#### 1. Lambda > 関数にアクセス。関数の作成ボタンから作成を始めます
![スクリーンショット 2024-01-12 11.43.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276326/9662e6df-d058-ec21-4126-82302728b985.png)
#### 2. OpenAI API キーを環境変数に登録
環境変数をして使えるようにするための設定です
設定>環境変数 の編集、環境変数の追加から追加します
CHAT_GPT_KEYという名前で登録しました
#### 3.レイヤーを作成
OpenAIのモジュールを読ませるためにモジュールをzip化しレイヤーに登録するのが一番良さそうです
Pythonをインストールしている環境で以下のコマンドで実行し、zipを作成します
“`
$ python3 -m pip install -t ./
LambdaでPandasとMatplotlibを使う時の注意点
# はじめに
LambdaでPandasとMatplotlib(外部ライブラリ)を使おうとしたときにハマったので、備忘録として残しています。
# Lambdaの『250MB制限』の壁
>デプロイパッケージ (.zip ファイルアーカイブ) のサイズ
>50 MB (zip 圧縮済み、直接アップロード)
>250 MB (解凍後)
>このクォータは、レイヤーやカスタムランタイムなど、アップロードするすべてのファイルに適用されます。https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-limits.html
# 外部ライブラリは『Layer』を用意する
**Pandas**
– AWSレイヤー(AWS が提供するレイヤー)
– ARN指定(arn:aws:lambda:ap-northeast-1:770693421928:layer:Klayers-p39-pandas:22)**Matplotlib**
– ARN指定(arn:aws:lambda:ap-northeast-1:77069342
AWS Lambdaのコールドスタートとウォームスタートの挙動
::: note
この記事はMIERUNEの朝LT会で発表した内容を公開しているものです
:::# はじめに
https://aws.amazon.com/jp/builders-flash/202402/lambda-container-runtime/?awsf.filter-name=*all
– AWS Lambdaでコンテナを動かす記事が公開されました。いつもLambdaを深堀しています
# Lambda=サーバーレス
– Lambdaはサーバーレス実行環境です。基本的に、処理の実行時にサーバーリソースが充当されます
– =関数を実行しない限りは、サーバーリソースを必要としない
– このサーバーリソースの充当を行うケースを「コールドスタート」と呼びます。ある程度の時間がかかります(数秒はザラにかかる)
– ただし、一度コールドスタートしていると、二回目の関数実行時にはコールドスタートは必要ありません(=ウォームスタート)
– ウォームスタートの有効時間は明言されていない# ウォームスタート時の挙動
– ウォームスタート時は:
【2023/10アップデート】Amazon EventBridgeのワイルドカードフィルターについての検証
# はじめに
今回は2023/10/3アップデートの【Amazon EventBridgeがルールでのワイルドカードフィルターのサポートを開始した件】についての検証結果をご紹介いたします。# 目次
・検証するアップデート内容について
・prefix・suffixとの違い
・簡単な図解
・利用サービスと準備するもの
・検証方法
・環境構築
・検証結果
・注意
・おわりに
・参考# 検証するアップデート内容について
**Amazon EventBridgeのルールにおいて、** アップデート前まではワイルドカードが使用できなかったが、今回のリリースにより**ワイルドカードフィルターがサポートされるようになった**というのがアップデートの内容です。https://aws.amazon.com/jp/about-aws/whats-new/2023/10/amazon-eventbridge-wildcard-filters-rules/
# prefix・suffixとの違い
今回のアップデートの以前から、EventBridgeのルールでは、「prefix」「suffix」
【AWS】S3-APIGateway-Lambda間リクエスト・レスポンス確認方法
## はじめに
CORSエラーなどが解消せず、
リクエスト/レスポンス情報を見たい経験はありませんか?対応方法やエラー発生時の切り分けをまとめた備忘になります。
## 直面した問題
静的ホスティングしているS3からAPIGateway経由でLambdaを呼び出そうとした時に、
CORS関連のエラーが発生
> CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.## 結論
APIGatewayでCORS設定に必要な設定項目が不足していたためエラーが発生## 確認方法
### ブラウザ開発者ツールによるリクエスト確認
1. F12を押下してブラウザに備わっている開発者ツールを表示
2. Networkを選択すると各リ
Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your functionに遭遇した
### 起こったこと
“`bash
╷
│ Error: putting CloudWatch Logs Subscription Filter (subscription-filter): InvalidParameterException: Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your function.
│
│ with aws_cloudwatch_log_subscription_filter.this,
│ on main.tf line 34, in resource “aws_cloudwatch_log_subscription_filter” “this”:
│ 34: resource “aws_cloudwatch_log_subscription_filter” “this” {
│
“`CloudwatchLogsのロググループにサブスクリプションフィルターを通してL
【実務で使えるLambda】describe_instancesで色々やってみる
# はじめに
実際に実務で扱ったLambdaの汎用的なコードを備忘録として残しています。
(※機密情報は載せてないのでご安心ください)# インスタンスIDをリストで取得してみる
とりあえずこれをコピペすればOK
“`python
import boto3client = boto3.client(‘ec2′, region_name=’ap-northeast-1’) # リージョンは任意
instances = client.describe_instances()
instance_ids = [] # 空のリストを用意
for reservation in instances[‘Reservations’]:
for instance in reservation[‘Instances’]:
instance_id = instance[‘InstanceId’]
instance_ids.append(instance_id)
“`# インスタンスに付いているタグ名をリストで取得してみる
さっき取得した`ins
AWS Lambdaで日本時間を扱う
AWS Lambdaの関数内で、日本時間をUNIX時間に変換する処理を実装した時に、9時間足されたUNIX時間に変換されてしまいました。
コードは下記の感じ。
“`csharp
if (DateTimeOffset.TryParse(input, out DateTimeOffset dateTimeOffset))
{
DateTime dateTime = dateTimeOffset.DateTime;long unixTimestamp = ((DateTimeOffset)dateTime).ToUnixTimeSeconds();
return unixTimestamp.ToString();
}
else
{
return string.Empty;
}
“`
`input`に日本時間(フォーマット:`2024-01-01T00:00:00+09:00`)の文字列が入ります。
上にコードを示しましたが、このコードには特に問題はありません。# 解決方法
Lambdaの環境変数を追加する。
– キー:`TZ`
– 値:`Asia/
コスト効率向上!「WakeOnLambda」CDK Constructが登場
## 背景
Amazon EC2インスタンスの常時起動にはコストがかかります。サービスが必要ない時間帯でもインスタンスが動いていると、無駄なコストが発生してしまいます。今回は、WebサービスにアクセスするだけでEC2インスタンスを起動できる「WakeOnLambda」CDK Constructを開発し、その利点について紹介します。
## コンストラクトの概要
「WakeOnLambda」は、AWS CDKを使用して、特定のURLにアクセスすることでEC2インスタンスを起動するLambda関数を簡単に構築できるConstructです。これにより、ユーザーは手動での操作なしに、Webサービスへのアクセスを通じてインスタンスをスタートできます。Construct Hub のリンクはこちら
[![View on Construct Hub](https://constructs.dev/badge?package=wake-on-lambda)](https://constructs.dev/packages/wake-on-lambda)
Construct Hubへの登録は以下の
Step FunctionでのループをCDKで試したメモ
## 概要
Step Functionの理解を深める。
[Lambda を使用してループを反復する](https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/tutorial-create-iterate-pattern-section.html)をCDKで書いてみた。## callbackとreturnの書き換え
例では戻り値をcallbackに渡しているが、冗長なのでreturnで返す形に書き換えた。
([Node.js の AWS Lambda 関数ハンドラー](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/nodejs-handler.html))[ソースコード](https://github.com/hibohiboo/aws-cdk-v2/blob/2046e79638a2000e1f791b8aaf98c669379be79e/cdk/lib/step-functions-stack.ts)
以下の2つのソースは等価となる。
“`js
exp
Amazon bedrockのSample serverless-pdf-chatを日本リージョンで動かしてみた
## はじめに
部内のナレッジをRAGで活用しようと思い、まずはRAGの理解深耕とBedrockがGAされたこともありaws sampleから試してみました。
今回は下記を用いて実施しています。
https://github.com/aws-samples/serverless-pdf-chatFrontendはClientPCで動作させるので下記のようなイメージになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922657/dd716d4a-7f82-30be-85e0-e90789a7d84f.png)## リージョンをap-northeast-1にする
GitのREADMEに以下のように記載があるので、従って修正します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922657/552f96db-75f0-76ff-389f-fe9d345aca84.png)
go-awslambda
“`text
— FAIL: TestSlogtest (0.03s)
\zapslog\logger.go:130: message
\zapslog\logger.go:130: INFO message {“k”: “v”}
\zapslog\logger.go:130: msg {“a”: “b”, “c”: “d”}
\zapslog\logger.go:130: INFO msg {“k”: “v”}
\zapslog\logger.go:130: msg {“a”: “b”, “k”: “v”}
\zapslog\logger.go:130: msg {“a”: “b”, “G”: {“c”: “d”}, “e”: “f”}
\zapslog\logger.go:130: msg {“a”: “b”, “e”: “f”}
\zapslog\logger.go:130: msg {“a”: “b”, “c”: “d”, “e”: “f”}
\zapslog\logger.go:130
AWS LambdaとEventbridgeを使って毎朝7時に気象庁天気予報をLINEに通知
## 概要
気象庁から天気予報データを取得、必要情報を抽出してLINEに通知するLambdaを作成して、Eventbridgeで毎朝7時に起動するよう設定しました。## 準備
– 事前にLINE Notifyのアクセストークンを取得
– エリアコードの確認
https://www.jma.go.jp/bosai/common/const/area.json
東京地方は130000です。## 作成
– Lambda作成
Lambda作成方法は他の有志の方の記事または公式を参照ください。
なお、PythonのRequestsモジュールをLambdaで使用するためにはLayerの追加の必要があります。
– エリアコードは東京地方の天気を対象としています
– 抽出データは、時間、天気、6時間ごとの降水確率と最高気温です
– 【LINE Notifyアクセストークン】を取得したアクセストークンに置き換えてください“`python.py
import requests
import json
import iodef lambda_ha
【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part5
# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。
前回までの内容は以下をご覧ください!
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1](https://qiita.com/mcen/items/24f20be7a3094dfef6a0)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part2](https://qiita.com/mcen/items/7d978203ef22412309f2)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part3](https://qiita.com/mcen/items/e66e77743963084a3d7b)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part4](https://qiita.com/mcen/items/802a43a28358303125f6)# 今回の実施内容
前回Part4の内容を行いました。今回は