Lambda関連のことを調べてみた2023年01月20日

Lambda関連のことを調べてみた2023年01月20日
目次

Goを使ってDynamoDBに一括書き込み

aws-sdk-goを使ってDynamoDBを操作するメモです。
こちらの[リンク](https://docs.aws.amazon.com/ja_jp/code-library/latest/ug/go_2_dynamodb_code_examples.html)を見ながら基本的なCRUDは一通りできたのですが、一括処理はうまくできませんでした。
一括書き込みの箇所についてデモを作成しようと思います。

### 環境
`go version 1.17.2`

`aws-sdk-go v1.44.180`

### 前提
DynamoDBにユーザ情報を一括登録する想定です。
ユーザ情報はHTTPリクエストボディから受け取ります。
Lambda上で受け取ったデータを構造体に変換し、DynamoDBに書き込みます。

### 構造体を定義
ユーザ情報を表現する構造体を定義します。

“`go:main.go
type User struct {
ID string `json:”id”`
Name string `json:”name”`
}
“`

### リクエストボディか

元記事を表示

ガロア群を計算するアプリケーション

# 初めに?

SageMath を使ってガロア群を計算するアプリケーションを作りました。?

– SageMath とは

https://www.sagemath.org/

– リポジトリはこちら

https://github.com/oiz-y/sage-lambda-container-app

# URL?

### https://www.galoisapp.com/

– 例

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/619ae679-2bf5-745e-84dc-034c6de5659d.png)

# 開発?

バックエンドは AWS Lambda というサーバーレスサービスを使っています。

– AWS Lambda とは

https://aws.amazon.com/jp/lambda/

– バックエンドのリポジトリはこちら

https://github.com/oiz-y/sage-lambda-container-backend

元記事を表示

【AWS】API Gateway+Lambdaの構成にX-Rayを有効化

# はじめに
DVA試験対策でAPI Gateway+Lambda構成にX-Rayを有効化して挙動を確認しました。
本記事では、この構成にX-Rayを有効化する方法を記載します。

# X-Rayとは
API GatewayやLambda等、各サービスの処理時間を記録するサービス
 処理時間をコンソール上で可視化
 どの処理でボトルネックが発生しているかを特定できる
 Lambdaでは、X-Ray SDKを使用することで、Lambda内のAWSサービスへのリクエスト処理時間も記録

# 構成

API Gateway+Lambda+DynamoDBの構成です。
Lambdaでは、DynamoDBテーブルにクエリし、返ってきたデータを返します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485934/8f6df9f8-3165-8462-8c46-087649d37b8e.png)

・使用言語
Python(Lambdaでは3.9をランタイム環境として使用)

・開発環境
 OS

元記事を表示

AWS CodeBuildを使ってSPAのフロント側を強制リロードする

# やりたいこと
– フロントエンド側をデプロイした後に、画面を開き続けてるユーザを強制的にリロードさせたい
– バージョン管理はできるだけ自動化したい

# 作ったもの
1. AWS CodeBuildのbuldspec.yml
– 自動でバージョンを採番する
– バージョンをビルドしたモジュールに埋め込む
– 最新のバージョン情報をAWS S3にファイルとして保存する
1. バージョンを比較するAWS Lambda
1. 強制リロードするフロントエンド

[![Image from Gyazo](https://i.gyazo.com/302304d16e665505f60ea5a381b865db.png)](https://gyazo.com/302304d16e665505f60ea5a381b865db)

# AWS CodeBuildのbuldspec.yml
`${CODEBUILD_RESOLVED_SOURCE_VERSION}`でCodeBuildが把握しているソースのバージョンを取得できます。([詳細](https://docs.aws

元記事を表示

AWS Lambdaを使って特定ログを通知する

# Index
1. [挨拶&背景の話](#1-挨拶–背景の話)
1. [構成](#2-構成)
1. [実装](#3-実装)
1. [感想](#4-感想)

# 1. 挨拶 & 背景の話
こんちには、アプリケーションエンジニアで働いてます。キムでございます。
この前、運用してるアプリケーション内で発生するとあるエラーを検知する処理を入れたことがあります。
そこまで素晴らしい構成ではないが、この構成を作るときに、なかなか私と似てる状況の例文がなくてここに少しでも似てる悩みがある方に役に立てれば…と思って記録して残します。

# 2. 構成
#### 前提条件
– Cloudwatch Logsを使う
– FILTER機能はすでに別処理で動いてる
– 必ずリアルタイムでキャッチアップする必要はない
– 1日1回のアラームぐらいでも構わない

要するに、Filterがすでに他のもので機能してるので、追加でなにかしたくて今回の構成を作りました。
正直Filterをもう少し汎用的に改善して運用することもいい案になったかもしれませんが、このような使い買ってもどうかなと思います。

![i

元記事を表示

AWSで実現した不動産新着物件情報のサーバレス巡回通知システム

# 不動産新着物件情報のサーバレス巡回通知システム

![名称未設定.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1042708/f4a4dd67-98fd-fc6e-c3f6-c6d70830bee3.png)

[掲載元](https://github.com/PGtanuki/reproject)

AWS各サービスを連携させ、SUUMOの検索結果を巡回して新着物件情報を通知します。
https://suumo.jp/
※requestsを用いたクローリングは直接的に利用規約違反にはなりませんが、負荷をかけることは禁止されています。新着物件情報は頻繁には更新されないので、1時間に1回以上か、朝昼晩くらいの感じにしましょう。AWS無料枠の範囲に抑える観点からもそのほうが適しています。

## 使ったAWSサービス
+ EventBridge Scheduler
+ Lambda
+ SNS
+ DynamoDB(SUUMOのみならRDSでOK)

## EventBridge

元記事を表示

Reactでaxiosを使用してAPI Gateway連携済みのLambda(Python)からOpenWeatherMap APIをFetchする

## 概要
タイトル長いですが、タイトル通りのこと実現するための手順を記載します。
それぞれの技術の深掘りはしません。
これを経ることで、最終的に東京の天気を開発者ツールのコンソールログで出力させることができます。

## 目次
– 全体の構成
– OpenWeatherMapでAPIキーを発行する
– AWS Lambda(Python)でOpenWeatherMap APIをたたく
– Amazon API GatewayにLambdaを連携させてAPIをデプロイする
– ReactでAPI通信を可能にするライブラリ(axios)を使ってデプロイしたAPIをたたく(現在の東京の天気を出力)

## 全体の構成
システムの全体構成は以下のようになっています。
※この構成を組んで何度かAPIを叩くくらいならAWSのコストは発生しない想定です
![lambda_api.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/754596/15968fa8-b376-8c59-36bf-a5294a846160.pn

元記事を表示

Lambda + DynamoDB を利用したサーバレス構築ハンズオン

## はじめに
普段DynamoDBをあまり使用しないので、CFnの練習がてら構築していきたいと思います。

学習に利用した教本は、[AWS Lambda実践ガイド 第2版 (impress top gear) 著:大澤文孝](https://www.amazon.co.jp/AWS-Lambda%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-%E7%AC%AC2%E7%89%88-impress-gear/dp/4295013307/ref=asc_df_4295013307/?tag=jpgo-22&linkCode=df0&hvadid=553954433678&hvpos=&hvnetw=g&hvrand=2164190274868650654&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009299&hvtargid=pla-1599229625688&psc=1&th=1&psc=1)
を利用しています。
GUI及び、SAMによる構築はありましたが、CF

元記事を表示

SageMathコンテナをLambdaで実行する

# 初めに

[SageMath](https://www.sagemath.org/) の [Docker イメージ](https://hub.docker.com/r/sagemath/sagemath)を [AWS Lambda](https://aws.amazon.com/jp/lambda/)で実行する方法を書きます。

## 課題

記載した手順で一応コンテナ実行はできます。しかし Lambda 関数自体の実行はエラー終了します。解決方法についてはまだわかっていません。

# 手順

## 1) Dockerfile、sage スクリプトを作成する

### 1.1) Dockerfile、sage スクリプトを作成する

ディレクトリ構成は以下のようにします。

“`
/home/ec2-user/sage-demo
|—Dockerfile
|—run.sh
|—hello.sage
“`

以下 3 つのファイルを作成します。

“`docker:

元記事を表示

boto3 APIで実装するAssumeRole(Python)

## AssumeRoleとは
現在のIAMの権限から、異なるIAMロールへ権限委譲するときに利用するAWS API名。
本記事では、Lambdaに付与しているIAMロールからAssumeRole先のIAMロールへ権限委譲するための実装を後述。
![スクリーンショット 2023-01-13 11.04.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263017/3ca07396-fb58-9a97-f3dd-d3dcb2e38fad.png)
## IAMロールの構築
Lambdaに付与するIAMロールを作成
![スクリーンショット 2023-01-13 11.06.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/263017/659edbd3-e797-91a7-a5eb-ab4b8420069d.png)

AssumeRole先のIAMロールを作成(添付画像の信頼関係の設定必須!)
![スクリーンショット

元記事を表示

Private環境でパスワード認証(SecretManager + Lambda)のTransfer Familyを使ってEFSにファイルをアップロードしてみた(FTP)

# 概要
Private環境でパスワード認証のTransfer Familyを使ってEFSにファイルをアップロードしたいと思い、色々ぐぐって調べてみました。

その結果、以下のような記事がクラメソさんから上がっていて非常に助かったんですが、残念ながら記事ではPrivate環境用ではなかったので、Private環境用に直した流れを記載します。
[参考にしたクラメソさんの記事](https://dev.classmethod.jp/articles/upload-files-directly-to-efs-via-sftp-using-transferfamily-for-vpc-internet-key-password-authentication/)

# 構成
構成は以下の通りです。PrivateなEC2からVPCEndpoint経由でEFSにファイルをアップロードします。Transfer Familyはパスワード認証なので、ユーザ名やパスワードをSecrets Managerに持たせて、Lambdaで認証します。
![名称未設定ファイル-ページ3.drawio.png](http

元記事を表示

AWS SDK V3 のSNS(Simple Notification Service)で、いくつか動作確認した話(AWS SDK V2 → V3 移行Tips)

# はじめに

https://qiita.com/Syoji_Yonemoto/items/f96a4d10b05715e95d1c

引き続いて、今度は、SNS(Simple Notification Service)についても確認しました。
と言っても、それ程、確認したメソッドは多くありません。

# 結論
SNS(Simple Notification Service)に関しては、私が普段使うメソッド群については、問題ありませんでした。
やはり、Firehoseだけが罠だったのでしょうか、、、

# V2 と同じ使い方で問題なく動作確認できたメソッド

+ subscribe
+ publish

# 余談
subscribeが、「何故あるのか?」というネタ話。その昔、SNS(Simple Notification Service)にLambdaをsubscribeするのに管理コンソールからは、「一覧に表示された100件の中からしか選択できない。」というイケてないUIだった時代があって、LambdaからARNを指定して、subscribeを追加するという運用をしていた時期が

元記事を表示

AWS LambdaでSSM RunCommandを実行する(AWS SDK for JavaScript v3)

# 概要
LambdaからSSMのRunCommandを実行する処理の作成方法について記述します。言語は`JavaScript`でSDKのv3(バージョン3)で書いてあります。

v3では、サービスのインスタンスを作成して、非同期で`send`メソッドを呼び出すというのが全サービス共通の書き方になります。`send`メソッドはPromise型を返します。何のアクションを行うかは`send`メソッドの引数の型によって判断されます。

## 公式ドキュメント

https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/

# サンプルプログラム

## 処理の流れ

SSMClient生成 → SendCommandCommand生成 → send実行 → ListCommandsCommand生成 → send実行 (RunCommandが終了するまで繰り返し) → send実行 → send実行 → …

注意点としては、RunCommandを実行した後その処理がサーバーで正常終了したのか異常終了したのかすぐにわからない点です。R

元記事を表示

【iOS】【AWS】はじめての個人アプリ(iOS+AWS)で開発からリリースまでやった話(苦戦あり)

## 概要
 2023年1月1日に、はじめて個人アプリをリリースしたので
 開発からリリースまで苦労だらけだったので
 同じようなところに苦戦するような人がいたり、参考になれば嬉しいです。
 今回は全体感の話なので細かいところは別記事で追記していこうと思います。

## なぜ個人アプリを作ろうと思ったのか
 コロナで1週間何もせず寝込んでいた時に
 よく使っていたアプリ自体の更新が止まっていて不便な思いをしたので
 自分で新しいアプリを作ろうと思ったのがキッカケ

## どういうアプリを作りたかったのか
 FF14のまとめ記事と動画などを検索せずに見れるアプリ
 最新情報が探しづらいし情報が古かったりするから最新情報だけ欲しいアプリを目指す。
 ![アプリレビュー説明資料.001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215997/7cf71fe5-538b-1523-4a20-bf5b55a9ea05.png)

## バックエンド AWS開発編 (試しながら1〜2週間)
 バックエンドは

元記事を表示

Step Functions Distributed Mapで超高速な並列処理を実行してみた

## この記事で紹介していること

以前、投稿した[Lambda×Stepfunctions の繰り返し処理](https://qiita.com/yuken/items/36ca91c345919752fa4d)を環境へ展開した矢先、
re:invent2022で**Step Functions Distributed Map**が発表されました。(あと少し早ければ、、、)
この記事では、噂の新機能に関して紹介します!

– Distributed Mapとは?
– どんな処理が向いている?
– やってみた体験レポート

![Untitled (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2956558/0d9b63fa-3dca-cb15-15f8-e29c8ca9db0b.png)

## Distributed Mapとは?

Mapフローは以前からStep Functions にありました。
これまでのMapとの違いについてはAWS公式ドキュメントがわかりやすくまとめてくれています。

元記事を表示

【AWS】動的Webサイト構築の備忘録

## はじめに

初心者の入門編として、AWSを用いて、動的Webサイトを構築する。

https://aws.amazon.com/jp/cdp/midscale-webservice/

## システム概略
システムダイアグラムは以下の通りである。

![Frontend3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483556/c73ad07c-0dd5-362e-22be-17441cfbde05.jpeg)

使用したサービスは以下の通りです。
– フロントエンド
– AWS EC2
– AWS Route 53
– AWS Elastic IP
– [Let’s Encrpyt](https://letsencrypt.org/ja/)(無料のSSL認証書発行局)
– [お名前.com](https://www.onamae.com/)(日本最大級のドメインレジストラ、ドメイン取得サービスサイト)
ICANN(ドメイン、IP、ポートの

元記事を表示

【AWS】基本的なWebアプリケーションをクイック開発する

下記公式サイトのチュートリアルを参考に基本的なWebアプリケーションを一時間で構築してみる。

https://aws.amazon.com/jp/getting-started/hands-on/build-web-app-s3-lambda-api-gateway-dynamodb/

〇 今回構築したWebアプリケーションの構成図
![We_applivcation_basic.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483556/cbc9c613-991d-66a3-c5b9-84c94b19e96f.jpeg)

## 開発手順

### 1. AWS AmplifyでWebアプリケーションの静的リソースをデプロイする

1. ローカルPCに下記のindex.htmlを用意し、ZIP形式で圧縮する
“`html:index.html



元記事を表示

EC2インスタンスの自動起動停止を、より柔軟にしてみた(Lambda)

# はじめに
こんにちは、はやぴー(@HayaP)です。
皆さん、サーバーの節約対策していますか?

クラウドを使うのであれば、なるべくサーバーを
効率的に使いたいものです。

そこで、今回は
EC2インスタンスの自動起動を、より柔軟に実装した
経験を記したいと思います。

## 対象読者
– サーバー代を節約したい。
– サーバー毎に起動、停止時間を柔軟にしたい。

この記事が、クライドネイティブな運用の参考になれればと願っています。

# 概要
## 実現方法
AWS公式記事や、技術ブログを見ていると
複数のやり方がありますが、主に下記だと思います。

– [インスタンススケジューラー(AWS ソリューションライブラリー)](https://aws.amazon.com/jp/solutions/implementations/instance-scheduler-on-aws/)
– System Managerを用いた方法
– Lambdaを用いた方法

今回は、Lambdaを用いて
より柔軟なサーバーの自動起動停止を実現したいと思います。

## 要件
タイトルにもありますが

元記事を表示

ロググループに保存されているログを定期的にS3にエクスポートしてみた。

# はじめに
こんにちは、山田です。
現在携わっている案件で、CloudWatchロググループに保存されているログを一定期間経過後に長期保管用に作成したS3バケットにエクスポートするコードを作成したので以下に記載していきます。
よろしくお願いいたします。
# 全体概要図
全体概要図は以下の通りです。
![](https://storage.googleapis.com/zenn-user-upload/e34fe2b9e3ac-20230107.png)
**①:ロググループ一覧とS3フォルダ一覧を比較します。
②:比較した結果S3フォルダに名前がないもの似関しては、新規でS3フォルダを作成します。
![](https://storage.googleapis.com/zenn-user-upload/f3cc42e21f43-20230107.png)
③:ロググループに保存されているログをS3にエクスポートします。**
# コード
以下が今回作成したコードは以下になります。
“`python
import boto3
import datetime
import time

de

元記事を表示

DynamoDBで1:nのデータ構造を表現する

こんにちは太郎です。
最近、DynamoDBを触る機会があり1:nのデータ構造を表現しようとしました。
しかし、DynamoDB特有の設計方法に戸惑ったのでメモを残します。

## 前提条件
この先は例を挙げながら進めます。
ひとつのチームに複数の選手が所属しているという想定です。
チームの一覧を表示する画面と属する選手の一覧を表示する画面があります。
DynamoDBではRDBとは違い、どのようにデータにアクセスするのか次第で構造がかなり変わるため、最初にユースケースをリストアップすることが重要になってきます。

### テーブル設計
RDBで設計するなら2つテーブルを作って、一方が片方を参照しているという設計が一般的かと思います。
しかし、DynamoDBではテーブルの数は極力減らすという方針があります。
それぞれの一覧が取得できるように以下のような設計にしました。

| ID(PK) | dataType(GSI) | teamName | memberName | teamID |
| – | – | – | – | – |
| 1 | team | teamA |
| 2 |

元記事を表示

OTHERカテゴリの最新記事