- 1. Appsheet API を Lambda で送信する方法
- 2. S3 から Google Drive へ Lambda を使ってファイルアップロード
- 3. 【個人開発】草生えてないと怒ってくれるBOTを作った
- 4. AWS SAMでPrismaを使ったAWS Lambdaを動かす
- 5. SQSにLambdaトリガーを設定してみた
- 6. Lambda環境でのJavaのstaticについて
- 7. Terraformでlambdaプロキシ統合のAPIを作成する際の注意点
- 8. LambdaからのLambda呼び出し、Instanaでどう見える?
- 9. DynamoDBをグローバルテーブル構成にしたうえで、DynamoDB StreamsによるLambdaトリガーを実行してみた
- 10. ソラカメを使ったデモアプリを作ってみた②後編 Rekognitionによる魚検知
- 11. LambdaでExcelファイルをエクスポートすると文字化けしてしまう
- 12. SAMでAPI Gateway AuthorizerをプリフライトリクエストのOPTIONSメソッド時に除外する方法
- 13. [Golang]Lambda+APIGatewayでミドルウェアを作るには?
- 14. Amazon Bedrockに画像生成のプロンプトを作ってもらうPythonコードを書く
- 15. Alexa × ChatGPT で楽しくおしゃべりしてみる
- 16. Alexa-hostedで lambdaからS3にファイルアップロードをする方法
- 17. [AWS] Lambda@Edgeでレスポンスボディの一部分を書き換える(付け足す)
- 18. LINEからのBedrockエージェント呼び出し② 音声で答えてもらう
- 19. serverless frameworkで作ったLambda Function についてnodejs16.x以下のバージョンをnodejs18.xに上げるためのメモ書き
- 20. (axiosで)叩いて(corsで)弾いてボタンクリック!!
Appsheet API を Lambda で送信する方法
## はじめに
AppSheetは、ユーザーがコーディング知識なしでカスタムモバイルアプリを作成できるプラットフォームです。
AppSheet APIを使ってAWS Lambda関数からデータを操作する方法について解説します。
この記事では、AppSheetのAPIを使って、AWS Lambda経由でデータを操作する方法に焦点を当てています。
API Keyの取得方法からLambda関数の作成、APIの利用方法までを順を追って説明します。## もくじ
1. [AppSheet API Key を取得する](#AppSheet-API-Key-を取得する)
2. [Lambda](#Lambda)
– [Lambda Layer を作成する](#Lambda-Layer-を作成する)
– [Lambda 関数を作成する](#Lambda-関数を作成する)
3. [参考](#参考)## AppSheet API Key を取得する
AppSheet APIを使うには、API Keyを取得する必要があります。
以下の手順でAPI Keyを取得してください。
S3 から Google Drive へ Lambda を使ってファイルアップロード
# はじめに
この記事では、AWSのLambdaを使用してAmazon S3からGoogle Driveにファイルをアップロードする方法を紹介します。
Google Drive APIを活用することで、プログラム的にドライブ内のファイル操作が可能になります。# S3 から Google Drive へ Lambda を使ってファイルアップロード
## Google プロジェクトの作成
画面を見ながら操作したい方は、[こちら](https://qiita.com/w2or3w/items/b66a4a8e45e6001a9c46)を参考して作業を進めて下さい。
1. **Google Drive API を有効にする**
– Google Cloud Platformで新しいプロジェクトを作成し、Google Drive APIを有効にします。2. **Google Cloud でサービスアカウントを作成する**
– Google Cloud Platformでサービスアカウントを作成し、必要な権限を付与します。3. **サービスアカウントの秘密鍵を作
【個人開発】草生えてないと怒ってくれるBOTを作った
明けましておめでとうございます。
新年早々少し個人で開発したのでそのアウトプットとして投稿させていただきます。
全てのツールを無料枠で抑えて作ることができるので、個人で開発してデプロイまでしてみたいと思っている人に参考になれば良いなと思います。
## 作ったもの
草(commit)がされていない場合にはその日の夕方に通知を送ってくれるLineのBOTを作りました。
**Githubリンク**
https://github.com/yuta-2001/go-no-commit-notify
## 作成動機
– 新たな年が始まって、より成長できる年にしたく継続を促せるようなものを作りたかった。
– これまで触れていないものを使って何か作ろう、自分の技術の幅を広げようと思ったから。(Goも含めて全て開発で使ったことはなかったです。)## 使用技術・構成
– AWS Event Bridge (cron)
– AWS Lambda
– Line Notify
– Github GraphQL
– Golang(コンテナ化(Docker)は図に乗っていますが、現在進行
AWS SAMでPrismaを使ったAWS Lambdaを動かす
## AWS SAMでLambdaを作成する
まずは、AWS SAM CLIを用いてテンプレート環境を作成します。事前に、AWS SAM CLIのインストールを[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/install-sam-cli.html)に従って行なってください。
準備が完了したら、テンプレートを作成します。
“`sh
sam init
“`
質問には以下のように答えます。
![スクリーンショット 2023-12-26 16.30.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/591069/9a528524-63f0-1fd4-374f-f5478d718feb.png)
以下のようにアプリケーションが生成されたら準備完了です。
![スクリーンショット 2023-12-26 16.30.36.png](https://qiita-image
SQSにLambdaトリガーを設定してみた
## はじめに
SQSにLambdaトリガーを設定して、SQSがメッセージを受信した時、自動でLambda関数が発火する仕組みを試してみました。見なくていいですが、気分は前回記事の続き?です。
https://qiita.com/suiwave/items/149822a70b02daa25bd3
## 挙動まとめ
こんな感じの挙動が確認できました。#### ①正常系
![cap_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/4db3e7f2-f025-635a-815e-344f7917eb6d.png)キューはメッセージ受信後、メッセージをeventに含めながらlambdaを実行します。
可視性タイムアウト時間内にlambdaが正常終了すると、キューからメッセージが削除されます。#### ②異常系
![cap_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3654730/
Lambda環境でのJavaのstaticについて
## 前提
pythonのコードでは関数外のコードは一度しか実行されないという記事を目にしたのでJavaのStaticについても同じ挙動なのか気になり検証した## 検証
“` java
public class Cache {
private static Integer number = null;public Cache(){}
public int get(){
if(number != null){
number++;
return number;
} else {
number = 0;
return number;
}
}
}var cache = new Cache();
logger.info(“1回目の呼び出し cacheの番号: ” + cache.get());
logger.info(“2回目の呼び出し cacheの番号: ” + cache.get());
“`
上記の
Terraformでlambdaプロキシ統合のAPIを作成する際の注意点
# はじめに
Terraform初心者のため、間違いなどあればコメントで指摘していただけると助かります。# 結論
API Gatewayとlambdaを組み合わせたAPIを作成するときは、GET APiの場合でもaws_api_gateway_integrationのintegration_http_methodをPOSTとしよう。“` api.tf
resource “aws_api_gateway_integration” “get_section” {
rest_api_id = aws_api_gateway_rest_api.main.id
resource_id = aws_api_gateway_resource.get_section.id
http_method = aws_api_gateway_method.get_section.http_method
#Lambdaプロキシ統合を使用する場合は、GETメソッド作成時もaws_api_gateway_integration中のintegration_http_methodをPOSTにする必要がある。
i
LambdaからのLambda呼び出し、Instanaでどう見える?
# はじめに
以前、こちらの記事を投稿しましたが、その後さらにLambdaから別のLambdaを呼び出した際、どの様にInstana側で見えるのか?ちゃんとトレースは追えるのか?を検証する機会があったので記事に起こしました。
https://qiita.com/LgmQue/items/a1e847b9198ffe33846f
:::note warn
前回はPythonでしたが、今回はNode.js(14.x)で試しています。
:::では早速いきましょう
# 子となるLambdaの準備
## Lambdaの作成
関数名を任意のもの、ランタイムを `Node.js 14.x` に設定し、[関数の作成]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118463/0b8a1ba2-0d3e-ae55-5d57-e3d5340fde9c.png)このLambdaが呼び出されるたびランダムに正常/異常のレスポンスおよびログ出力を行うように上書きします。
DynamoDBをグローバルテーブル構成にしたうえで、DynamoDB StreamsによるLambdaトリガーを実行してみた
# 疑問と検証結果
__疑問:グローバルテーブル構成かつ、DynamoDBトリガーを有効にした場合、更新が同期・伝搬されるリージョン側でもトリガーが作動するのか?____結果:更新が同期・伝搬されるリージョン側でもトリガーが作動した。__
# 検証環境の構成
![構成図①.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429161/08a95c12-ac4f-9f26-6c9e-0f6e5c1819a3.png)__構成概要__
* DynamoDBを更新するためにAPI Gateway + LambdaでAPIを作成
* DynamoDBはグローバルテーブル構成にして、東京リージョンとバージニア北部リージョンで同期
* それぞれのリージョンのDynamoDBの更新をトリガーに実行されるLambda関数を作成__確認観点__
* 片方のリージョンからのAPI実行(データ更新)で複数のリージョンのDynamoDBトリガーが実行されるか
* 複数リージョンに作成したAPIからのデータ更新が、そ
ソラカメを使ったデモアプリを作ってみた②後編 Rekognitionによる魚検知
やったこと
環境や全体アーキテクチャについては[前編](“https://qiita.com/ys-betis/items/ad56ae5a5560877fd38c”)を参照。
ソラカメを使ったお魚検知デモアプリにおける、魚の検知部分について記載する。![スクリーンショット 2023-12-30 14.17.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68086/32727262-ba79-00da-b72d-c60d6b5a9bc9.png)
画像からAWS Rekognitionのラベル検知にて魚を検知させる
S3に保存したソラカメの画像に魚が何匹いるかを数えるため、以下のようなフローを当初検討した。
ただRekognitionのカスタムラベルを使うためにモデルを作る時間もリソースもなかったので、とりあえずRekognitionのデフォルトのラベル検知機能に水槽画像を食わせてみたところ、割といい感じに魚(Fishラベル)が出てきていたので、そのまま使うことにした。
LambdaでExcelファイルをエクスポートすると文字化けしてしまう
## はじめに
バックエンドにLambdaを使用しているのですが、Excelファイルをそのまま返却しようとすると文字化けしてしまうエラーが発生しましたので、解消方法を記載しておきます。## 対象者
この記事は下記のような人を対象にしています。– PythonのopenpyxlでExcelファイルを作成している
– Lambdaを使用している## 結論
Base64エンコードを使用します。【サーバー側】
“`python:excel.py
import openpyxl
import base64
import tempfile
import jsondef export_excel():
wb = openpyxl.Workbook()
# ここでシートにデータを書き込むwith tempfile.NamedTemporaryFile(delete=False, suffix=”.xlsx”) as tmpfile:
wb.save(tmpfile.name)
with open(tmpfile.name, “
SAMでAPI Gateway AuthorizerをプリフライトリクエストのOPTIONSメソッド時に除外する方法
## はじめに
LambdaのトリガーとしてAPI Gatewayを指定し、すべてのリソースに一括でAuthorizerを設定したところ、OPTIONSリクエストにもAuthorizerが設定されてしまい、通信に失敗してしまいました。日本語で解説記事がなかったため執筆することにしました。## 対象者
この記事は下記のような人を対象にしています。– APIをSAMを使ってLambdaにデプロイしようとしている人
– Lambda Authorizerを使用してAPI Gatewayに認証をかけたい人## 前提知識
– [SAM](https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/what-is-sam.html)
– [Preflight request](https://developer.mozilla.org/ja/docs/Glossary/Preflight_request)## 結論
下記の通り、 `AddDefaultAuthorizerT
[Golang]Lambda+APIGatewayでミドルウェアを作るには?
ここ最近はあまりAPIGateway+LambdaのRestAPIを作ることはありませんでしたが昨年からGolangに仕事の言語が切り替わったこともあり、改めて作ってみることにしました。
そこで今回はミドルウェアを作ります。
ECSなどでやるのであればGinなどのWebフレームワークのミドルウェアを作れば良いのですが今回はそうはいかないので自分で作って見ます。
## なぜミドルウェアを作るのか?
Lamdbaに限らず、Webアプリではほぼ全てのAPIに使う共通的な処理があります。
例えばハンドラーのところの実行前に認証をしたり、入口と出口のロギングなどですね。
他の開発同様に共通処理の部分を作れるように2つのミドルウェアを用意します。
## 固定の共通処理の場合
速度測定のロギングなどやエラーハンドリング、認証で使うことが多いです。
“`golang
func middleware(next func(context.Context, events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, er
Amazon Bedrockに画像生成のプロンプトを作ってもらうPythonコードを書く
## はじめに
Amazon Bedrock(以下Bedrock)使って画像生成するアプリを作ろうとしてます。(画像生成AI好きなので趣味として)
以前「Stable Diffusion XL 1.0のAPIを叩く->作成された画像をS3に格納する」部分をAWS Lambda(以下Lambda)で作ったので、今回は与えたキーワードをもとにプロンプトを生成する部分のコードを書きたいと思います。
前回の記事はこちら
[Amazon Bedrockで画像生成&S3保存するPythonコードを書く](https://qiita.com/Pretzelisa/items/61c4d3838bb6ac7ff561)## 1. 構成
今回はキーワードからTitan Text G1 – Expressに画像生成用のプロンプトを作ってもらいます。返却されたプロンプトを引数に、Stable Diffusion XL 1.0のAPIを叩くLambdaを呼び出します。今Amazon API Gateway – Lambda間の連携はしていませんが、イメージとしてはこんな感じです。
![Bedr
Alexa × ChatGPT で楽しくおしゃべりしてみる
# 目次
* きっかけ
* 導入
* 詰まった点
* コード
* 使ってみる
* 最後に# 1. きっかけ
#### 念願の!!
某インターシップに参加した際に、コンペの景品としてAmazon Echo Popをいただきました!!
実はずっと欲しかった!!!!!どうやら[Alexa developer console](https://developer.amazon.com/ja-JP/alexa)を使ってAlexaで遊べちゃうらしい…
でも既にある程度の会話は出来るし….
そうだ!ChatGPTモードを勝手に作っちゃおう!!!
# 2. 構成図
構成図は以下のようになっています。
![Alexa構成図.png](https://qiita-image-store.s3.ap-northea
Alexa-hostedで lambdaからS3にファイルアップロードをする方法
# 目次
* きっかけ
* 事前準備
* コード# 1. きっかけ
Alexa-hostedは独自のAWS環境を用意することなく、スキル開発を進めることが可能です。
また、テンプレートやVScodeの拡張機能も用意されているみたいです。
エンドポイント等も設定せずとも使えるため、複雑なスキル作成には向いていませんが、
簡単なスキル作成にはもってこいですね!!!lambdaだけでなく、S3,Dynamodbも利用できるみたいです。
AlexaSkillsKitで用意されたS3環境にlambdaがアップロードするやり方が全然乗っていなかったので、
**lambdaからS3に対してアップロードする** 方法、コードを提供します。今回は、Alexaと会話終了と共にS3に会話内容を保存するコードを共有します。
# 2. 事前準備
以下のS3 Storageを押します。![スクリーンショット 2023-12-29 午後7.09.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/193673
[AWS] Lambda@Edgeでレスポンスボディの一部分を書き換える(付け足す)
Lambda,CloudFrontの細かい説明は省きます。
## Lambda@Edgeとは
Lambda\@Edgeについてまず簡単に。
公式↓
https://aws.amazon.com/jp/lambda/edge/CloudFrontのエッジロケーションからコードを実行するLambda関数のことで、
ユーザに近い場所でコードが実行されるので高速なコンテンツ配信が可能になる仕組み。
コードをLambdaにアップロードするだけで自動的にコードの実行やスケーリングが行われる。最大のメリットは**コンテンツがオリジンから返されたときにキャッシュされる可能性を高めたり、既にキャッシュされたコンテンツの利便性を高め、キャッシュヒット率を向上させること。**
らしい。## トリガーとレスポンスボディ
本記事ではこのLambda@Edgeで受け取ったレスポンスボディの一部を書き換えてクライアントに返すことをやる。
まず、Lambda@Edgeは上述した通り、CloudFrontとセットで使用する。具体的には、CloudFrontのイベントをトリガーとして
1. ビ
LINEからのBedrockエージェント呼び出し② 音声で答えてもらう
前回作った以下のAgentアプリケーションについて、せっかくなので回答内容を音声でしゃべってもらい、偽クサっぽくしてみます。
https://qiita.com/cyberBOSE/items/4a09d4593b44bb5ac49f
乗換案内だけをしゃべらせるのもアレなので、今日のニュースも読み上げられるようにしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3573242/e304b63f-383e-0129-4763-a268246a84fe.png)
Agentにニュースを取得するAction groupを追加します。
Agentの生成結果をPollyに渡し音声を生成してmp3ファイルを生成、S3 Express One Zoneに書き込んで署名付きURLを発行してLINEに返却します。以下のテキストを音声に変更する感じです。
これが
serverless frameworkで作ったLambda Function についてnodejs16.x以下のバージョンをnodejs18.xに上げるためのメモ書き# 概要
AWS Lambdaのruntime `nodejs16.x` のサポートが来年6月で切れまーす!
みなさまのお手元にはこの震えるようなAWS(またはクラスメソッドさん)からのメールは届いていますか?つまりそれは、nodejs12.x,14.xから16.xと逃げ回って遂に18.xへの対応をやらなければならないときが来ましたということです、年貢の納めどきです。
具体的にはライブラリのバージョンを上げたり、過去の互換を捨てたものは変更したり、ソースコードをなおしたりとやることはめんどくさく、作業は泥臭いものになります。
それでも先に進むというみなさま、覚悟はいいですか?
・・・では進みましょう。
# ざっくりやることのリスト
これが全てではないと思いますが、移行を主眼として必ずやらないといけないことを列挙します。
## 1. serverless.{yml|ts} の変更
runtimeを変更しました。
16から20…
これで2年+αくらいは追い回されずにすむはずです。![image.png](https://qiita-image-store.s3.
(axiosで)叩いて(corsで)弾いてボタンクリック!!
# はじめに
フロントからaxiosでバックエンドの処理を実行させたかったが、何度クリックしてもcorsエラーでふせがれてしまった# システム構成
Lambda × serverless構成
フロントからaxiosを叩くことでバックエンドのハンドラーが実行される仕組み# 原因と解決
“`
Provisional headers are shown
“`開発者ツールのネットワークタブを確認すると見たことない表示が…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2889192/ae6e6428-2c22-a7aa-81db-dcebc24cb99f.png)
結論として、serverless.ymlに記載しているパス名が間違っており、Request URLが間違っていることが原因でした。
“`yml
get_hoge:
handler: get_hoge.handler.main
layers:
– Ref: PythonRequi