Lambda関連のことを調べてみた

Lambda関連のことを調べてみた
目次

Secrets Managerをアカウント間で同期する

# はじめに
こんにちは。1年ぶりの記事です。
サボっていたわけではありません。ただ、生きている喜びを実感していただけです。
素敵やん。

今回担当案件でどうしても実現したい事象がありました。
それはSecrets Managerの値を別アカウントのSecretsManagerに同期したいというものでした。
説明下手でわかりにくい箇所等あるかと思います。ご了承ください。
備忘録程度なので雑ですみません!権限はもっと絞れるはずです!
もっと簡単な方法あるぞ!という意見お待ちしています。

# 前提
AWSアカウントAとAWSアカウントBがあり、それぞれ異なるECサイトを運用しています。
アカウントAにAuroraがあり、そのDB情報等をjsonファイルとしてSecretsManagerに格納しています。
アカウントBはアカウントAのAuroraをクロスアカウントで利用しています。
この度、お客様よりアカウントBにもアカウントAと同期されたSecretsManagerを作成してほしいとの要望がありました。

# 課題
いやいやわざわざSecrets作成しなくても下記の方法でクロスアカウント

元記事を表示

TypeScriptで書いたLambdaを、node_modulesを含めてデプロイする

# したいこと
– TypeScriptで書いたLambdaをnode_modulesを含めてDeployしたい
– 長期使用する前提で、メンテナンスの手数やメンテ時のオペミスリスクを減らしておきたい
– CodeBuildを使用してCI/CDする前提

# 結論
– Build後 dist/内に node_modules を配置した上でzipにして、Deployする形式を採用

## 処理の流れ
### 事前準備
– Lambdaの容量制限を気にして node_modulesの容量を削減するため、処理に必要なモジュール以外は `npm install -D` で devDependencies として入れる
– 処理に必要な内、例外的にaws-sdkは LambdaのNode.jsランタイム内に含まれているので devDependencies 側としてinstallする

### CodeBuildの処理
– `npm ci` で devDependencies込みでnode_modulesを入れる
– Testの実行
– TypeScriptをBuild
– (Build環境

元記事を表示

[AWS] CloudFormation で Lambda の更新が Update complete cleanup in progress から変化しなかった

## 以下の操作をしたら発生

– Control Tower 経由でアカウントを作成(以下、その新しいアカウントでの操作)
– いくつか Lambda関数を手動で作成した
– Lambda の同時実行数をコンソールで操作しようとしたら変更ができなかった
– Lambda の Concurrent executions のクオータが 10 であった
– Lambda の Concurrent executions のクオータを 1000 にするよう申請し変更された
– その後、 CDK で SQS と Lambda のリソースを新しく作成しようとした
– Update complete cleanup in progress から30分以上変化しなかった

## 確認したこと

– CloudTrailを確認するとCloudFormationの一番最後の操作は Lambda関数の同時実行数を変更する操作だった
– 既存の他のLambda関数の同時実行数を見てみると、その数値が10だったものが899などの大きな数値になっていた(原因不明)

## 対応

– 既存の他のLambda関数の

元記事を表示

AWS CloudWatchのLiveTailがLambdaデバッグに便利

最近、でもないけど半年ほど前?に追加されたLiveTailがLambdaのデバッグにめちゃ便利だった話。

## 前置き
直接環境にアクセスできるときはTailコマンドを使ってアプリケーションのログをリアルタイムで見ることはよくあります。それのクラウド版です。
ELB配下で複数台動くマシンのログをリアルタイムで確認するのに少しだけ使っていました。
これはこれで強力です。だって特定のマシンに乗り込んじゃうとロードバランスされた後でどこにログが落ちるかわからないので。
と言ってもそこまでありがたみを感じることなくあんまり使ってませんでした。

## 環境
AWS CloudWatch Logs – LiveTail
Lambda python3.12

## Lambdaのデバッグ
初期のDebugにはprintを使ってResultに表示されるログを確認しながら作業します。
VisualStudioを使ってやるという人、ごめんなさい。ローテクでお話が進みます。
ほとんどこれで事足りるぐらいの比較的軽い処理しか乗せないので大丈夫です。

![スクリーンショット 2024-02-20 1516

元記事を表示

【Node.js】LambdaからDynamoDBのデータを取得する方法

## はじめに
Lambdaを使用してDynamoDBのデータを取得する方法について紹介します:point_up_tone1:
データ取得までの流れは 画面 → API Gateway → Lambda → DynamoDB となっていますが、画面からLambdaを呼び出すところまでは割愛します。

## ソースコード
userIdを条件にして、データを取得するという例を紹介します。

“`javascript
const { DynamoDBClient } = require(‘@aws-sdk/client-dynamodb’);
const { QueryCommand, DynamoDBDocumentClient } = require(‘@aws-sdk/lib-dynamodb’);

const client = new DynamoDBClient({});
const docClient = DynamoDBDocumentClient.from(client);

exports.handler = async(event) => {
// Cloud

元記事を表示

筋トレを継続したい!(AWS Lambda × Python × ChatGPT でLINEbot作成)

# 筋肉ムキムキになりたい!!
1度くらい筋肉には憧れたことはあるだろう…
そしてトレーニングを始める人もいるだろう…
しかし、続かない…
そこで、筋トレを継続するための、**筋トレbot**を作成しました!

# 開発環境
AWS Lambda
Python 3.12

# トレーニングメニュー
トレーニングメニューを自分で考えるのは面倒ですよね。
そこで、ChatGPTにお願いして、トレーニングメニューを考えてもらおう!

![image0 (1).jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3682615/74b9ba69-6594-941d-ffde-ac88146299e2.jpeg)

いい感じのメニューを提案してくれましたね。

# 筋トレ後は褒めてもらおう
ただトレーニングをこなしていくだけだと、モチベーションが保てませんよね。
トレーニングが終わった後は、トレーニングしたことを報告して、褒めてもらおう!

![image1.jpeg](https://qiita-i

元記事を表示

AWS SAMの基本的な使い方

# AWS SAMの基本的な使い方

AWSのServerless Application Model(SAM)は、サーバーレスアプリケーションの開発とデプロイを簡単にするフレームワークです。
この記事では、SAMを使用してサーバーレスアプリケーションを開発、テスト、デプロイする基本的なコマンドを紹介します。

## はじめに

AWS SAMは、AWSのサービスを利用してサーバーレスアプリケーションを構築するためのツールです。
SAMを使用することで、Lambda関数、API Gateway、DynamoDBなどのAWSリソースを簡単に定義し、デプロイできます。

## アプリケーションの開発

### アプリケーション初期化
“`
$ sam init
“`

### アプリケーション構築
“`
$ sam build
“`

### アプリケーションをデプロイ
“`
$ sam deploy –guided
“`

### アプリケーション実行
“`
$ sam list endpoints –output json
“`

### Lambda関数とやり取

元記事を表示

gpt-4で英文添削させてWebSocketでstreamレスポンスさせる

## はじめに
– gpt-4を使って英文の添削をさせるアプリを作ったので、その内容と作成手順を記載します
– 英文添削結果はフォーマットを定義し、その通りに回答を返却させています
– AIからの回答はChat-gptと同じようにStreamレスポンスされます

Like this↓
![git_0218.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/754596/df26ea2d-0e35-77b6-525f-2a2e8bf55fbc.gif)

## 目次
1. モチベーション
1. 成果物
1. 構成
1. 作成手順

## 1.モチベーション
私は、英語の日記を毎日書きます。
ネイティブスピーカーの友人に添削してもらっていましたが、それには添削者の稼働が必要です。
一方で、添削者がいない場合は、文法の間違いやスペルミスをしていても気づけません。
なので、生成AIを活用して添削者を作ります。
これによって英語勉強のハードルを下げます。

## 2.成果物
#### アプリ概要
英語のセンテンスが入

元記事を表示

ハッカソン参加時の備忘録 ~ 第5回:【Python】AWS LambdaとAWS S3を連携させてみよう ~

こんにちは。ITエンジニアのきゅうです。
今回作成するアプリのシステム構成図です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618971/57c48beb-18ca-4f57-0562-176c1bff3ef4.png)

今までインターフェース部分としてLINEを使用しておりましたが、動かすだけであれば、LambdaにTest機能がありますので、そちらを用いて動かしたいと思います。
ですが、もちろん今までお伝えしていたLINEの設定を行えば、LINEから起動させることももちろん可能です。

# Amazon S3について
では、S3とはなんぞや?という方の為に、簡潔に説明していきましょう!

## Amazon S3について
『Amazon Simple Storage Service』を、略してS3と言います。
要するにストレージサービスのことです。
もっと簡単に言うと、ファイルサーバーですね。
(ちなみにAPサーバは、EC2です。)

勿論無料枠も御座います。
5 GB

元記事を表示

Serverless Frameworkを使ったAWS Lambdaの開発チュートリアル

# 概要
最近、LINE Botを開発しました。
そのプロジェクトで、サーバレスアーキテクチャの構築と管理を容易にするServerless Frameworkを使用しました。
Serverless Frameworkを利用することで、AWSへのデプロイや管理が簡単になり、開発プロセスがスムーズになりました。
この記事では、その設定やプロセスについて詳しく説明していきます。

# 実行環境
前提条件として、Node.jsおよびAWS CLIインストールが必要です。
私の実行環境は以下の通りです。
“`bash
$ node -v
v20.0.0
“`
“`bash
$ aws –version
aws-cli/2.15.12 Python/3.11.7 Darwin/23.2.0 source/x86_64 prompt/off
“`

# Serverless Framework のインストール
まずServerless Frameworkをインストールします。
“`bash
$ npm install -g serverless
$ serverless –versio

元記事を表示

Excel LAMBDA関数を手動でステップ実行して理解を深めるには?

[Excel LAMBDA関数でセル範囲を副問い合わせ表をLIKEやBETWEENでJOINするには?(https://qiita.com/madilloar/items/d058f5076a0810f5cf73)](https://qiita.com/madilloar/items/d058f5076a0810f5cf73)
で、2つのセル範囲を2つのテーブルとみなして、クロス結合表を作る関数、CROSS_JOIN関数を紹介しました。

“`Lisp:
=LAMBDA(range,range2,
LET(
rows1, ROWS(range),
cols1, COLUMNS(range),
rows2, ROWS(range2),
cols2, COLUMNS(range2),
rowsn, rows1 * rows2,
colsn, cols1 + cols2,
rowindex, SEQUENCE(rowsn, 1),
colindex, SEQUENCE(1, colsn),
arraymodel1

元記事を表示

VPC Lambda(Node.js)からSecretsManagerのシークレットを取得する

## 手順

– VPCを作成
– プライベートサブネットを1つ作成
– (↑Lambdaを入れる)
– Lambdaを作成
– Lambdaのロールを編集
– LambdaをVPCに入れるためのポリシーをアタッチ
– SecretsMangerを読むためのポリシーをアタッチ
– LambdaをVPCに入れる
– SecretsMangerでシークレット作成
– VPCエンドポイントを作成
– Lambdaを編集
– Lambdaでシークレットが取得出来る事を確認

## VPCを作成

お試しなので下図の最小限の設定で作ります。

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/349281/f6b257d2-605d-185a-9c15-de2e8791faf8.png)

## Lambdaを作成

ランタイムはNode.js。関数名のみ入力したらデフォルトのままで「関数の作成」します。

![03.png](https://qiita-image-stor

元記事を表示

【AWS – Lambda】バージョンをリセットしたい

## やりたいこと

– Lambdaで関数を作成し、バージョニングを実施(例:6まで)
– その後、作成した関数を削除し、同じ名前で関数を再作成&バージョニング
– この時再作成した関数のバージョンが7からスタートする
– これを1から割り振りたい

## 結論

– 1から再度割り振ることはできない
– もし再度1からバージョニングしたい場合、別名で関数を作成する必要がある

> Lambda assigns monotonically increasing sequence numbers for versioning. Lambda never reuses version numbers, even after you delete and recreate a function.

## 参考

https://stackoverflow.com/questions/53410914/lambda-versions-are-incremented-even-i-delete-the-lambda-stackie-cfn?rq=3

https://docs.aws.amaz

元記事を表示

[2024年2月更新] GitHub Action (OIDC認証) を用いてAWS Lambdaに自動デプロイする方法

業務内でSlack Botを開発した際に利用した実装方法を取りまとめました。
特にAWSのOIDC周りのUIが新しくなっていたため、備忘録としてまとめましたので参考にしていただければ幸いです。

ベストプラクティス、改善点等ありましたらお気軽にコメントください。

今回実装したSlack Botは定期的にメッセージを投げる簡単なものですが~~気が向いた際に~~記事を作成します。

# 概要
:::note warn
※2024年2月作成の記事なので今後仕様が変わる可能性ありますので最新の情報をご確認ください。
:::

* 特定ブランチが更新されたらLambdaにソースをデプロイ
* AWSのアクセスキー&シークレットキーの管理はGithub→Settingsにある”Select and Variables”には持たせずOIDCを用いて認証
→**IAMロールのarnを指定するだけで認証ができ、キーの管理が不要なのでめちゃ楽**

# 実装

## AWS側
### IAM IDプロバイダ登録

* IAMページ内の左のメニュー”ID プロバイダ”→プロバイダを追加を選択
![id_p

元記事を表示

【備忘】boto3・SESでメール送信

## はじめに
boto3を利用してSESでメール送信処理を実行することが多々あり、
備忘録として記録します!

htmlのテンプレートを使用して送信します。

## コード
“`python:ses.py
ses_client = boto3.client(“ses”)

# 諸々設定
sender_name = “送信者”
from_email = “from@email.com”
to_email = “to@email.com”
bcc_email = “bcc@email.com”
mail_subject = “メールタイトル”
mail_content = EMAIL_CONTENT

response = ses_client.send_email(
Source=’%s <%s>‘%(Header(sender_name.encode(‘iso-2022-jp’),’iso-2022-jp’).encode(),from_email),
Destination={
“ToAddresses”: [
to_e

元記事を表示

lambyを使ってみる

# はじめに
先月、AWS SAMを利用してrubyをlambdaで動かせることは分かったのですが、railsをlambdaで動かせないかと調べたところ、lambyが出てきたのでこの記事は調査禄となります。
(lambyそのものは前々から知ってたものの、今まで触ったことがなかったので今回が初となります)

# スタートアップに準じて触ってみる

https://lamby.cloud/docs/quick-start

## 準備
quick-start記載の以下のコマンドを実行
“`
$ docker run \
–rm \
–interactive \
–volume “${PWD}:/var/task” \
ghcr.io/rails-lambda/lamby-cookiecutter \
“gh:rails-lambda/lamby-cookiecutter”
“`
プロジェクト名を入力
“`
project_name [my_awesome_lambda]: learning_deliverable
“`

コンテナの中に入り、awsの設定を

元記事を表示

API GatewayからLambdaを通さずにS3へデータを入れる処理をCDKで書いたメモ

## 概要
API GatewayにPutしたデータをS3に格納してみたメモ。

[API GatewayからLambdaを通さずに直接DynamoDBにデータを入れる処理をCDKで書いたメモ](https://qiita.com/hibohiboo/items/fb801dca48f01403e0e2)と同様、インテグレーションでマッピングする。
[ソースコード](https://github.com/hibohiboo/aws-cdk-v2/blob/09987ded34fe472bb7524947b14857d70124074f/cdk/lib/api-gateway-proxy-to-s3-by-cdk-stack.ts)

## CDK

“`ts
import { RemovalPolicy, Stack, StackProps } from ‘aws-cdk-lib’;
import { AwsIntegration, Cors, MethodLoggingLevel, PassthroughBehavior, RestApi } from ‘aws-cdk-lib/a

元記事を表示

【ServerlessFramework】slsでカンタンにAPIサーバーを公開するチュートリアル

slsを利用してLambda x APIGatewayでカンタンにAPIサーバーを公開するチュートリアルです。

元となるリポジトリはこちら

https://github.com/ng3rdstmadgke/sls-tutorial

# node.jsのインストール

“`bash
# nvm インストール
# https://github.com/nvm-sh/nvm#installing-and-updating
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

# v16系のLTSをインストール
nvm install –lts=gallium

# v16系のLTSをデフォルトに設定
nvm alias default lts/gallium

# 確認
nvm list
“`

# サーバーレスフレームワークのインストール

“`bash
# インストール
npm install -g serverless

# slsコマンドが利用できるか確認
sls

元記事を表示

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 へ**:

元記事を表示

OTHERカテゴリの最新記事