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

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

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 |

元記事を表示

ELB(ALB,NLB,CLB)アクセスログを、CloudWatch Logsに出力させてみた(Lambda)

# はじめに
こんにちは、はやぴー(@HayaP)です。
日々のログ監視、皆さんはどうされていますか?

– とりあえず、ログをS3に出力している
– CloudWatchで見たいな、、と思いつつ諦めている

なんて人は、少なくないはずです。

そこで、今回は
ELBアクセスログを、CloudWatch Logsに出力した
経験を記したいと思います。

## 対象読者
– ログ監視設計者
– CloudWatch Logsに、ログを集めたい
– 毎回S3に、ログを見に行くのがしんどい

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

# 概要
## ELB(ALB,NLB,CLB)アクセスログとは
ロードバランサーに送信されるリクエストの、詳細情報が記されているログです。

– リクエストを受け取った時刻
– クライアントの IP アドレス
– サーバーレスポンス
などの情報が含まれます。

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/load-balance

元記事を表示

AWS SAMでJavaScript v3のLambdaをデプロイする(Node16以下)

この記事は Lambda の Runtime が Node16 以下で`SDK for JavaScript v3`を AWS SAM でデプロイする方法について記述しています。

:::note info
Node18以降はv3に対応しているので、v3で書かれたソースだけをデプロイしても動きます。代わりに、Node18以降でv2で書いている場合はv2のSDKをソースに含めてデプロイする必要があります。
:::

プロジェクトを`sam init`で作成した場合、ルートパスでデプロイすると`template.yaml`や`__tests__`などのファイルもアップロードされてしまい見た目が悪いです。そのため`template.yaml`で`CodeUri`を指定すると思います。

“`yaml:template.yaml
SampleFanction:
Type: AWS::Serverless::Function
CodeUri: src/
“`

このようにすると、v3のSDKが`sam build`の対象に含まれなってしまいます。この場合は`package

元記事を表示

re:Invent 2022 サーバーレス関連の新サービス、アップデートまとめ

# re:Invent 2022で発表されたサーバーレス関連のアップデートをまとめました
## AWS Lambda SnapStart
https://aws.amazon.com/jp/blogs/news/new-accelerate-your-lambda-functions-with-lambda-snapstart/
– Lambda ファンクションのコールドスタート時のレイテンシを大幅に短縮する新機能
– Corretto ( ランタイムのファンクションをサポートし、最大 90% のレイテンシを削減
– Firecracker のスナップショット機能と、その他いくつかの機能改善によって実現。実行環境
の初期化終了時点のスナップショットを使うことで、初期化時間を削減
– 東京を始めはじめ 9 リージョンで一般利用開始に

### 試してみました
上記のブログの通り、[springboot2のサンプルアプリケーション](https://github.com/awslabs/aws-serverless-java-container/tree/main/samples

元記事を表示

OTHERカテゴリの最新記事