- 1. Flutterでスマホアプリから任意の内容をDynamoDBに保存
- 2. 21日目 Lambdaについてまとめてみる社畜S
- 3. AWS Lambda/SNSを連携し、メール通知を行ってみる[01]
- 4. API Gateway経由でLambda呼び出すときのマッピングテンプレート
- 5. LINEWORKS BOT とAmazon Bedrock(Claude 3)を接続してみた
- 6. 【AWS】Lambda⇒DynamoDBへデータを書き込んでみるハンズオン
- 7. AWS Instance Schedulerを使ってEC2インスタンスを自動起動・自動停止する
- 8. GPTsのデータ集計能力を検証してみる
- 9. CloudWatchMetricsの基本的な操作とアラーム設定方法
- 10. スマホアプリでChatGPTの口調を指定し、Alexaに喋らせる
- 11. s3へのアップロードをトリガーにECSタスクを起動する流れ
- 12. カスタムリソースを使用してS3内オブジェクトを削除
- 13. AWS Lambda 関数のランタイムを一気に更新する
- 14. Slack連携による生産性向上の施策(その3)〜AWS Lambda編〜
- 15. InstanceRestarter(インスタンスをリスタートするやーつー)
- 16. AWS Lambda用のTypeScriptコードをTerraformでデプロイする備忘録
- 17. Lambda実行時のログ出力方法(Python)
- 18. Agents for Amazon Bedrock の簡素化された作成方法を試す
- 19. custom-resource-apigw-cw-roleがnode16.xランタイムでデプロイされる件
- 20. APIを呼び出すLambdaで、リクエストヘッダーを全部送るとRuntime.MarshalErrorが起きる
Flutterでスマホアプリから任意の内容をDynamoDBに保存
# はじめに
[スマホアプリでChatGPTの口調を指定し、Alexaに喋らせる](https://qiita.com/parayan0429/items/06c5350788afe6655171)
上記で紹介したシステムのFlutter部分にフォーカスした記事です。全体像が気になった方は上記を一読ください。
※開発背景や全体像のみの短い記事のためすぐに読み終わると思います。## 補足
本記事はスマホアプリの開発初心者が拙いながらもFlutterで作ったアプリ開発の一部始終を紹介する内容になっています。そのため、Flutterのベストプラクティスとかけ離れている箇所も多々あると思いますが、ご容赦ください🙇
# 本記事の紹介範囲
1. このアプリでやっていること
1. 開発環境の紹介
1. 環境構築の手順
1. 実際のコード
1. 困ったこと# このアプリでやっていること
1. テキストフィールドの内容をDynamoDBに保存
1. チャット画面でChatGPT(OpenAI API)とやり取り## デモ画像
それぞれ以下です
### テキストフィールドの内容をDy
21日目 Lambdaについてまとめてみる社畜S
## 🎏はじめに
こんにちは、ローテが一巡して順番が回ってきました、三週間ぶりの社畜Sです。
現在、私たち社畜SMLの3人は
#### 「AWS Certified Solutions Architect – Associate(通称SAA)」
の合格を目指して勉強を続けています。
というわけで、今回のローテではSAAの学習成果のアウトプットも兼ねて
#### 「AWSのサービスを初心者目線でまとめてみた。」
をテーマに書いていこうと思います!
まずは私、社畜Sが初回を飾り **AWS Lambda** についてまとめていきます!
初心者の視点からの解説ですので、間違いなどがあればコメントで指摘していただけると幸いです。
それではやっていきましょう!—
## 🎏そもそもLambdaって何?
公式の開発者ガイドでは
>AWS Lambda はサーバーのプロビジョニングや管理をする必要がなく、コードを実行できるコンピューティングサービスです。
>>Lambda は可用性の高いコンピューティングインフラストラクチャでコードを実行し、コンピューティン
AWS Lambda/SNSを連携し、メール通知を行ってみる[01]
こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。今回はAWS LambdaとSNS(Simple Notification Service)を使ってメール通知機能を実装してみたいと思います。
# 最終的に構築するイメージ
何回かに分けて、以下の環境をつくっていきたいと考えております。
Cloud9で作ったDjango環境でS3にアップロードするようなWebページを作成。
ユーザはそれを使ってS3にデータをアップロードすると、S3がイベント通知をSQSに行い、SQSがLambdaをキック。LambdaがSNSを呼び出して登録したメールアドレスにメールを送付します。
![aws-django01-ページ6.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/426843a2-5d28-7283-96dc-22fb1cbe3e34.png)この記事ではLambdaとSNSだけ環境を構築していきます。
# 構築
## SNS
AWS管理コンソールにロ
API Gateway経由でLambda呼び出すときのマッピングテンプレート
## はじめに
BedrockにAPIリクエスト投げるLambda書いたからフロントエンドも作りたいな…と言いつつ数か月経ってしまった。
API Gatewayにリクエスト投げるシンプルなhtml書いてS3+CloudFrontのベタな構成……と思ったらAPI Gatewayにリクエスト投げるところで詰まったので、とりあえずその部分を記事化。Lambda書いたときの記事
https://qiita.com/Pretzelisa/items/61c4d3838bb6ac7ff561
https://qiita.com/Pretzelisa/items/e9f873806ed40d853e71
## 1. ハマリポイント
Lambdaに引数keywordを渡す必要がある。マネコンのLambdaのエディタからテストしたときは以下のようにJSONを手打ちして問題なく動いていた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3458266/b3f56c84-2487-1393-ce1
LINEWORKS BOT とAmazon Bedrock(Claude 3)を接続してみた
## はじめに
LINEWORKSのBOTを利用して、Claude 3と会話してみたい!と思った人向け
以前、LINEで同様なことをしてます
今回は、LINEWORKS(企業向けLINE)の記事です
個人向けLINEで、利用する場合は、下記をご覧くださいhttps://qiita.com/UniKawazoe/items/25a5587512c322e96f59
## LINEWORKSとLINEってどう違うの?
LINEWORKSとLINEの違いについて
> 「LINE WORKS」は、情報や予定を共有しあって活動する、組織・チームのためのコミュニケーションツール。
> 企業や企業内プロジェクト、特定の活動をする団体などに最適です。LINE⇒個人向け
LINEWORKS⇒企業(組織・チーム)向け
の位置づけのようです企業にフォーカスしているため、
アカウント管理やトークの監査機能など、組織として必要な機能が実装されています
また、掲示板機能なども実装されています
プラン
【AWS】Lambda⇒DynamoDBへデータを書き込んでみるハンズオン
# はじめに
Lambda⇒DynamoDBへ書き込みについて学習したのでその振り返り記事となります。
本記事はLambda⇒DynamoDBへ書き込み処理部分を実装できるようになることを目的としたハンズオン形式の記事になります。# ゴール
lambdaからdynamoDBにデータの書き込みができるようになる。# 環境
– Lambda(Node.js 16.x)
– DynamoDB# DynamoDB側の準備
DynamoDBからリソースを作成していきます。### ◆テーブルの作成
DynamoDB > テーブル > テーブルの作成 からテーブル名とパーティションキーを入力します。
入力出来たらページ下部の「テーブルの作成」ボタンをクリック。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1247619/2e8cb22d-37db-5f4d-5d2e-33d0797de2b7.png)
# Lambda側の準備
Lambdaを準備していきます。###
AWS Instance Schedulerを使ってEC2インスタンスを自動起動・自動停止する
# はじめに
AWS Instance Schedulerは、Amazon Elastic Compute Cloud (Amazon EC2) と Amazon Relational Database Service (Amazon RDS) のインスタンスの開始と停止を自動化するためのアーキテクチャです。本記事では、実際にInstance SchedulerをCloudFormationテンプレートから払い出して、最もシンプルな形でのEC2インスタンスの自動起動・自動停止を実践してみます。
# Instance Scheduler アーキテクチャ
AWSの公式からアナウンスされているInstance Schedulerのフル機能は、下記のようなアーキテクチャ図になります。![instance-scheduler-on-aws.6a76bdccb7ff3610934f86dba7d1d4678a0b9e4b.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3778694/eb8ba119-3
GPTsのデータ集計能力を検証してみる
GPTsに生データを取得できるAPIを呼び出させてその結果を集計し、回答をする仕組みを構築しようとしたところ、集計結果が不正確であることがあった。
そこで、今回はAPIから返されるデータ量が多いと集計結果の不正確さが増すのではないか、という推論を元に検証した結果を共有しようと思います。
# そもそも何をやろうとしていたのか
とある、Webサービスにおいてユーザーの行動分析データを収集しており、そのデータに基づいて回答をするGPTsを作成したかった。
データは下記のように定義されている(GPTsに設定したAPI定義)
“`json
{
“openapi”: “3.1.0”,
“info”: {
“title”: “行動データ取得”,
“description”: “記録された生の行動データを取得する”,
“version”: “v1.0.0”
},
“servers”: [
{
“url”: “https://xxx”
}
],
“paths”: {
“/api/action”: {
CloudWatchMetricsの基本的な操作とアラーム設定方法
# はじめに
CloudWatch MetricsとAlarmは運用を基礎から支える大事なサービスだと思います。
前から気になっていたので、基本的な操作を確認しました。各サービスの概念などはBlackBeltを参考にし、この記事ではマネコンでの操作をメモできればと思います。
## CloudWatch Metrics
早速CloudWatch Metricsを触ってみます。
今回はlambda関数を実行することで自動収集されるメトリクスを利用して、
関数のエラー率、処理時間のMAX,MIN,AVGなどをグラフ化してみようと思います。lambdaサンプル
“`index.js
exports.handler = async (event) => {
// 基本の2秒待機
await new Promise(resolve => setTimeout(resolve, 2500));// ランダムで最大1
スマホアプリでChatGPTの口調を指定し、Alexaに喋らせる
# はじめに
初めまして!Qiitaの記事初投稿です。
Alexa Skills、ChatGPT API、Flutterを組み合わせることで、ユーザーが質問をするとスマホアプリで設定した「任意の口調」で回答するスキルを開発しました。
何番煎じだよ、と思う方も多いと思いますが、一つ違うのは「スマホアプリでオプション(口調)が指定可能」というところです。
## 本記事について
開発のふりかえりも兼ねた、一連のアプリ紹介となります。地味に登場人物が多く、1記事にまとめると公開するのがだいぶ先になってしまうと思ったので、3部作くらいに分けて公開させていただきます。
# 本記事の紹介範囲
1. 開発背景
1. デモ動画
1. 全体の構成図# 開発背景
以下の2点が今回の開発に至った背景です。## Alexaの進化
タイマー、音楽、テレビのON/OFFくらいしか使ってないAlexaをワンランク上の存在に導きたかった。## Flutter開発
業務でWebアプリの開発しか経験がなかったので、最近話題のFlutterでスマホアプリを開発してみたかった。AlexaスキルはG
s3へのアップロードをトリガーにECSタスクを起動する流れ
### はじめに
webアプリケーションを作っていると、高負荷が予想される処理の対応には工夫が必要となります。
今回、ECSを使用している場合にタスクに対する負荷を抑える手法の例を紹介します。### ケース例
こちら自分が実際に業務で遭遇したケースですが、phpコンテナとnginxコンテナを含んだECSのwebアプリケーションを開発していた際に、ユーザーが顧客データ(数万件)が入っているcsvファイルをアップロードする場面がありました。このデータをDBに格納する際、アプリケーションに対して高負荷が予想されます。実際のCPU使用率のメトリクス:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3474661/cc448614-bd35-8ac6-187a-88426a87a467.png)
csvファイルがアップロードされたタイミングでcpu使用率が急上昇しており、webサーバに対して負荷がかかっています。### 解決策の例
ECSでcsvファイルのデータをDBに格納する処理の
カスタムリソースを使用してS3内オブジェクトを削除
下記の記事でCloudFormationのスタックを削除しても、S3にオブジェクトが存在すると削除できなかった。
カスタムリソースでLambdaを使用してオブジェクトを削除するようにする。https://qiita.com/kutinasi_hobby/items/496fe8ed149d72673b10
今回作成するLambdaはほかのCloudFormationでも使用することがあると思うので、別のyamlファイルとして作成する。
注意:上記記事で作成したyamlファイルでスタックを作成する前に下記ファイルでLambda(カスタムリソース)を作成しておく必要がある。### Lambda用yaml作成
こちらの記事を参考に作成https://qiita.com/hiyanger/items/5b00cb5ebc7128b178c0
※LambdaFunction の Runtime: python3.7 が現在 python3.12になっているので変更
“`yaml
LambdaFunction:
Type: AWS::Lambda::Functio
AWS Lambda 関数のランタイムを一気に更新する
こんにちは
沢山の AWS Lambda 関数のランタイムを更新する必要が出てきたので、今回はその内容についてお伝えします。:::note warn
**大前提**
基本的にマイナーバージョンアップであれば後方互換性があるので、問題は出にくいかもしれません。
しかし、問題が出て困るような環境(例:本番環境、利用者が多いなど)では、本仕組みを使わずに、動作確認してから個別に更新することをお勧めします。
:::## ことの発端
わたしが管理している AWS ルートユーザーのメールアドレスに、以下のようなメールが届きました。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548623/9c0590f9-6f21-4e4d-e7be-3eb4f823ba74.png)
2024 年 10 月 14 日で Python3.8 のサポートが終了になるので、それまでに更新対応してくださいね!というものです。
このアカウントは、 Python3.8 時代にたくさんの AWS Lambda
Slack連携による生産性向上の施策(その3)〜AWS Lambda編〜
# はじめに
こちらの記事は三部構成になっております。
– [Slack連携による生産性向上の施策(その1)〜Workflow Builder編〜](https://qiita.com/oc-arimura/items/ff4c194c617a9d309d9c)
– [Slack連携による生産性向上の施策(その2)〜Slack App編〜](https://qiita.com/oc-arimura/items/fdb6b1faca5ea1150b3a)
– [Slack連携による生産性向上の施策(その3)〜AWS Lambda編〜](https://qiita.com/oc-arimura/items/e9fb983b411b68fd941a)また、全ての記事の内容を含んだ動画も用意しております。
動画で確認したい方は[コチラ](https://www.youtube.com/watch?v=JE7ZVJ9yE9Q)まで。
※動画開始50分頃からの内容になります。# AWS Lambda編の概要
ここの説明になります
![スクリーンショット 2024-04-16 16.29.3
InstanceRestarter(インスタンスをリスタートするやーつー)
# 概要
必要にかられて、こんなものを作ったのでメモがてら。
1. EventBridgeから定期的に
1. Lambdaを起動して
1. 指定された名前に合致するインスタンスに対して
1. reboot(またはterminate)のリクエストを出す# 作成手順
## IAM
1. ロールを作成
1. 信頼されたエンティティを選択
1. 信頼されたエンティティタイプ → AWSのサービス
1. ユースケース → Lambda
1. 許可を追加
1. 許可ポリシー
1. (何もしなくてOK)
1. 許可の境界を設定
1. 許可の境界なしでロールを作成(デフォルト)
1. 名前、確認、および作成
1. ロールの詳細
1. ロール名 → それなりの名前(`InstanceRestarter-role`等)
1. 説明 → お好きに
1. 作成したロールを選択
1. 許可タ
AWS Lambda用のTypeScriptコードをTerraformでデプロイする備忘録
# はじめに
TypeScriptをよく使うので、TypeScriptでLambdaを書きたいなというのと、Terraformを使ってみたいなということで書きました。VSCodeのDev Containersを用いてコンテナで開発する前提で書いています。
ECRは料金がかかるため、zipファイルでデプロイする方法をとっています。# Githubリポジトリ
下記にサンプルコードを置いています。https://github.com/tanakalucky/typescript-lambda-sample
# フォルダ構成
最終的なフォルダ構成は以下になります。
“`
.
├── Dockerfile
├── README.md
├── docker-compose.yml
├── package-lock.json
├── package.json
├── src
│ └── index.ts
├── terraform
│ ├── iam.tf
│ ├── lambda.tf
│ ├── main.tf
│ ├── terraform.tfvars
│
Lambda実行時のログ出力方法(Python)
# 概要
Lambda実行時のログ出力方法を簡単に記す。
ロググループの作成や紐づけ方法は記載しない。(気が乗れば追記するやも)# 実行環境
Python3.11“`python:lambda_function.py
import logging# logger初期化
logger = logging.getLogger()
logger.setLevel(logging.INFO)def lambda_handler(event, context):
“””
– 基本的なlog出力Args:
– event: Lambda event
– context: Lambda実行コンテキスト
Return:
なし
“””
logger.info(‘INFOログ’)
logger.warn(‘WARNINGログ’)
logger.error(‘ERRORログ’)
“`
Agents for Amazon Bedrock の簡素化された作成方法を試す
## はじめに
2024/4/23 に突如降り注いできた Amazon Bedrock のアプデ祭りすごいことになっていますね。この記事では Agent for Amazon Bedrock の簡素化された作成方法についてとりあげます。https://aws.amazon.com/jp/about-aws/whats-new/2024/04/amazon-bedrock-agents-agent-creation-return-control-capability/
https://aws.amazon.com/jp/blogs/aws/agents-for-amazon-bedrock-introducing-a-simplified-creation-and-configuration-experience/
これまでは OpenAPI スキーマを用意して、Agent が呼び出すことのできる API 操作を定義する必要がありました。今回のアップデートで OpenAPI スキーマの作成が不要で、より簡単かつ迅速に Agent を構成できるようになりました。
## OpenA
custom-resource-apigw-cw-roleがnode16.xランタイムでデプロイされる件
## いきさつ
ある日AWSからnode16のサポート終了のお知らせが届きました。> …
LambdaでのNode.js 16のサポートは2024年6月12日に終了します
…自分のLambdaを眺めていると、`xxx-custom-resource-apigw-cw-role`node16ランタイムがいました。
これはServerless frameworkでデプロイしたときに自動生成されるもので、API GatewayのCloudWatch Logsのロールを作成するために使用されるらしい。
slsのバージョンを上げればいけそうだな〜と思い現在のバージョンを確認すると`3.38.0`。これは記事執筆時点での最新バージョンです。えぇ…。調べてみると以下のやりとりが:
https://github.com/serverless/serverless/issues/12307ざっくり、こんな流れでした:
– サーバーレスフレームワークを介して作成されたcustom-resource-apigw-cw-role lambdaのランタイムを変更するにはどうすれば
APIを呼び出すLambdaで、リクエストヘッダーを全部送るとRuntime.MarshalErrorが起きる
# 起こったこと
自分で開発したAPIを叩いて、戻ってきたレスポンスをそのまま返すAWS Lambdaを作っていたのですが、固定のヘッダーをつけてリクエストするときは問題なく呼び出せるのに、API Gatewayに渡されたリクエストヘッダーをそのままつけてリクエストすると、原因どころか発生箇所すらもよく分からないエラーが起きるようになりました。
“`python:lambda_function.py
import json
import urllib.requestdef lambda_handler(event, context):
headers = event.get(‘headers’)
request_body = event.get(‘body’).encode(‘utf-8’)# リクエスト送信
req = urllib.request.Request(‘https://xxxx/api/v1/yyyy’, headers=headers, method=’POST’, data=request_body)
with