Lambda関連のことを調べてみた2021年12月06日

Lambda関連のことを調べてみた2021年12月06日
目次

Lambda + Go + terraformでAWSの料金をSlack通知してみた

## はじめに

この記事は[mixiアドベントカレンダー2021](https://qiita.com/advent-calendar/2021/mixi) 6日目の記事です。
みなさまはAWSで運用しているサービスに毎月どれくらいのコストがかかっているか、サービスのリソースごとにどれくらいの料金がかかっているかを確認していますでしょうか。
今回は、AWSの料金を毎日Slackに通知するシステムをLambda + Go + terraformで構築したのでそちらをご紹介させていただきます。

## おすすめな人

– AWSにかかる料金を定期的に通知したい
– GoでLambdaをどう開発するか知りたい
– terraformでLambdaを管理する方法を知りたい

## アーキテクチャー
![aws_billing_notification.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2334784/760f4f85-cfdb-8b57-bad4-8c4b0e4df04d.png)

– Even

元記事を表示

【Python】API Gateway + lambda にファイルを post、s3 に保存

「Applibot Advent Calendar 2021」 6日目の記事になります!!どうぞよろしくお願いいたします。

# 1. 概要
ローカルにある csv を lambda に post して、s3にアップロードするまでのメモ。Content-Type の設定をAPI Gateway で行うことを知らず、若干詰まったので記事にしました。

# 2. 目次
– [1. 概要](#1-概要)
– [2. 目次](#2-目次)
– [3. aws リソースの用意](#3-aws-リソースの用意)
– [3.1. ロールの用意](#31-ロールの用意)
– [3.2. s3の作成](#32-s3の作成)
– [3.3. lambda関数の作成](#33-lambda関数の作成)
– [3.4. api gateway の作成](#34-api-gateway-の作成)
– [3.5. 疎通の確認](#35-疎通の確認)
– [4. 参考](#4-参考)

# 3. aws リソースの用意
## 3.1. ロールの用意
– 次のポリシーを持ったロールを作成する

元記事を表示

Salesforceの外部サービスを使ってAWSのLambdaを実行してみる

[Ateam Brides Inc. Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ateam-brides)の6日目は
株式会社エイチームブライズ エンジニア
新卒2年目になった@takaHALが担当します!

# これは何?

Lambdaで作ったAPIをSalesforceの外部サービスに登録し
SalesforceのフローからLambdaを実行してみます。

# 使うもの

– AWS
– Lambda
– IAM
– APIGateway
– CloudWatch
– 意識して使うのはこの4つ

– ServerlessFramework
– Salesforce
– 外部サービス
– 指定ログイン情報

利用するSalesforce環境はtrailheadのplayground環境です。
trailheadに登録すれば誰でも利用できます。

# 外部サービスとは

https://trailhead.salesforce.com/ja/

元記事を表示

AWSのAI(Rekognition/Polly/Transcribe/Comprehend/Translate/Textract)サービスを試してみる

# 概要

AWS資格取得に向けて実際にAWSを利用してみるシリーズの投稿です。
今回はAWSサービスの中でAIサービスに分類されるサービスを使ってみる編です。
具体的には以下の6つのAIサービスをAWS Lambdaを使って実際に動かしてみます。
AWSアカウントがあればすべてAWS上で完結されることができるため、お試し簡単な実践編です(^^)

* Amazon Rekognition:画像ファイルをインプットにモノ・人・顔を抽出する
* Amazon Polly:テキストファイルをインプットに音声ファイルを生成する
* Amazon Transcribe:音声ファイルをインプットにテキストファイルを生成する
* Amazon Comprehend:テキストファイルをインプットにインサイトや関係性を検出する自然言語処理 (NLP) サービス
* Amazon Translate:テキストファイルをインプットに翻訳する
* Amazon Textract:画像ファイルをインプットにテキストを抽出する

資格勉強的にはAWSのAIサービスのサービス概要を掴める内容になっています。
興味

元記事を表示

CloudWatch EventとLambdaでStepFunctions間のエラ-を伝搬する

StepFunctions は、並行して実行するなどワ-クフロ-を構築・管理する際によく使用します。StepFunctions内のLambdaなどが実行失敗した際には、StepFunctionsが終了しますが、後続するStepFunctionsは実行されてしまいます。言い換えれば、StepFunctoins内のエラーは伝搬するが、StepFunctions間のエラーは伝搬しません。

今回は、StepFunctions間でエラーを伝搬させる構成を紹介します。

# 解決したい課題

StepFunctions間でエラーを伝播させる

StepFunction内だけではなく、StepFunctions間でエラーを伝播したい。
具体的には、1つのStepFunctionsが失敗すると、後続するStepFunctionsを実行させないようにします。

# StepFunctionsのエラー伝播

ここから、具体例を用いて、StepFunctionsでのエラー伝搬について説明します。

## StepFunctions内のエラー伝播

下図のように、複数のLambdaなどを順番に実行すること

元記事を表示

AWS Lambda + S3 + Python で PDF を扱う際のTips

# 初めに

PDF を `AWS` で扱う際に、ローカルの環境と `Lambda` や `S3` では少し扱いに注意が必要だったので、忘れないようにまとめておきます。

## 1. S3 から PDF を読み込む

`Python` で PDF を扱う場合は `PyPDF2` を使うことが多いかと思います。

ローカル環境で読み込む場合は

“`.py
# example code
from PyPDF2 import PdfFileReader

PDF_PATH = ‘pdf/xxx.pdf’ # ローカルのディレクトリ
pdf = PdfFileReader(PDF_PATH)
“`

とパスを指定するだけで簡単に読み込むことができます。

`S3` から PDF を読み込む場合は少し工夫が必要です。

“`.py
# example code
import boto3
from PyPDF2 import PdfFileReader
from io import BytesIO

PDF_PATH = ‘data/pdf/xxx.pdf’ # S3バケットの

元記事を表示

aws-cdk v2でlambda layers を扱ったメモ

## 概要
aws-cdkでもlambda layersが扱えることを確認する。
コードの共通化を試す。
[ソースコード](https://github.com/hibohiboo/aws-cdk-v2/tree/e32dc9658f313e651cf69fe82dd219891beb0efb)

## 参考

[AWS CDK + Typescript 環境で lambda layer を上手く管理する](https://qiita.com/hey3/items/b4032841b01e96b75e3e)
[How to Split TypeScript-Based Lambda Functions into Lambda Layers](https://www.qloudx.com/how-to-split-typescript-based-lambda-functions-into-lambda-layers/)

元記事を表示

【AWS】LambdaでJSONファイルを「S3へ保存/S3から取得」してみる

# はじめに
先日、Lambdaを用いて、S3へ推論結果を格納したり、S3から推論結果を取得したりする処理を実装する機会がありました。
今後似たような処理を実装する際にすぐに思い出すことができるよう全体の流れを整理したいと思い、記事に残すことにしました。

# シナリオ
API GatewayへのリクエストをトリガーにLambda関数を実行し以下の処理を行う。

* A – S3へJSONファイルを保存する
* B – S3からJSONファイルを取得する

# A – S3へJSONファイルを保存
![スクリーンショット 2021-12-01 23.28.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646903/46a940cd-982d-6a8f-5cb3-b9bee501fe72.png)
## 1. S3のバケットを準備する
1. 「バケットを作成」をクリック
1. バケット名を入力。今回は `sample-json-test`とする。

## 2. Lamda関数の作成
今回はリクエスト

元記事を表示

姉さん、New Relic デビューしたのでLambdaと・・・・

# 1.はじめに
こちらの記事で、New Relic デビューをしてから5日が経過しました。

https://qiita.com/horit0123/items/a53013db9d42711b648d

完全に理解した!!って最後に言ってますが、次のBlogを書いていたら、「お、完全に理解したし、ついでにやっとく?」と思いました。

https://qiita.com/horit0123/items/0cc147d4081803d46c14

ということで、New RelicとLambdaを完全に理解するための記事を一本書くことにしました。

# 2. AWS Lambdaアプリケーションの構成
意味は特になし。何も考えず、とりあえず、こんなアプリを作ろうと考えた。とりあえず、正規の流れと、エラー時のDLQがある感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535037/50524c1e-662c-260c-9ce9-a0545275abb4.png)

これがどう可視化され

元記事を表示

特定のサイトの更新情報をLINEに通知してくれるスクレイピングアプリを作ってみた!

# はじめに
特定のサイトのお知らせ欄が更新されたかな?と毎回見に行くことって結構あるかと思うのですが、時にはやはり忘れてしまうものです。
サイト自体に通知機能のようなものがあればそれを利用するのも一つの対策ですが、そういうものがない場合は毎日確認することをルーチン化する!…いや…やはりそういうわけにはいきません。

そこで今回は特定のサイトのお知らせ欄を1日に2回見にいき、更新されていたらその記事をLINEで通知してくれる、というアプリを作ってみました。

## 完成形
LINE Notifyから毎日7:00と17:00に以下のように通知が来るようになっています。

|記事が更新されていたとき|記事が更新されていないとき|
|—|—|
||Lambda サブスクリプションフィルター + AWS WAF で実現する「フルリモートワーク時代のお手軽社内サイト」

本記事は [AWS LambdaとServerless Advent Calendar 2021](https://qiita.com/advent-calendar/2021/lambda) の4日目です。

たまたま空きがあることに気付いたため、せっかくでしたらと急遽参加させていただきます! よろしくお願いいたします ?

こんにちは。[**Togetter**](http://togetter.com) を運営しているトゥギャッター株式会社でエンジニアをしている [@MintoAoyama](http://twitter.com/MintoAoyama) です。

[**Togetter**](http://togetter.com) はツイートを始めとした様々な情報を組み合わせてコンテンツを作り出すキュレーションサービスです。
2009年に誕生してから**今年で13年目**に突入し、現在も**月間PV約1億、月間UU約1500万という規模感**で成長を続けています。

元記事を表示

つみたてNISAの損益をスプレッドシートに保存

この記事は、[シアトルコンサルティング株式会社 Advent Calendar 2021](https://qiita.com/advent-calendar/2021/seattleconsulting)の4日目の記事です。
こんにちは、シアトルコンサルティングの松縄です。
現在は、エンジニアとしてWebサービスの開発に携わっています。

## はじめに
みなさん、つみたてNISAはやっていますか?
僕は1年くらい前からやり始めていて最近は順調に上がっていて安心しています。
さて、今回とある証券会社のサイトでスクレイピングをしてみようと思ったのは、**自動化**をしたいなと考えたからです。

僕は最低でも1日1回は口座状況を見るようにしています。chromeでパスワードは保存できるからすぐログインできますが少し面倒でした。それに日毎に見て少し増減があってもよほど変わらない限り気付けないんです。

そこで、今回作ったPython + AWS Lambda + Spreadsheet + LINEのシステムで日毎の損益を残しつつ、週毎だったり月毎だったりの増減も見れるようにしてみました。

元記事を表示

Github ActionsでAWS CDKを自動デプロイしてみる

#はじめに
はじめまして!株式会社オークンのNHatanakaと申します!

現在会社の同僚と趣味でフットサルのLINEアプリケーションを作っていて、
せっかくなので初めてGithub Actionsを触ってみました!
なので今回はその時実装したコードを紹介したいと思います!

#使ったもの
AWS CDK
Github Actions
direnv

#構成
まず構成としては下図のようなパイプラインでデプロイ時にAPIGatewayとLambdaが作成されます。
![構成図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2347292/d2fcb710-c34f-0aa9-b3b0-6dc1b8d80d7e.png)

#ディレクトリ構成
iam:GithubActions上で使用するロールを作成するプロジェクトです。
futsal-backend:今回自動デプロイを組むプロジェクトでLambdaとAPIGatewayを作成します。

“`ruby:全体のディレクトリ構成
.
├── README.

元記事を表示

Lambda関数をAWS CLI スクリプトで書こう 〜 @aws-cdk/lambda-layer-awscli モジュールの紹介 〜

これは [AWS CDK Advent Calendar 2021](https://qiita.com/advent-calendar/2021/aws-cdk) 4日目の記事です。

こんにちは。米田 (@komeda-shinji)です。インフラエンジニアをしています。

みなさん、AWS CLI を使っていますか。AWS Lambda を手軽にシェルスクリプトで書けたらなあ、と思うことはありませんか。

その夢、叶います。

この記事では [@aws-cdk/lambda-layer-awscli](https://docs.aws.amazon.com/cdk/api/latest/docs/lambda-layer-awscli-readme.html) モジュールをつかって、シェルスクリプトで Lambda 関数を書いてデプロイする方法を説明します。

# はじめに

先日 lambda-layer-awscli を使おうとしたときに CDK に @aws-cdk/lambda-layer-awscli モジュールがあることに気が付きました。

Lambda Layer

元記事を表示

RDS Proxyを作成して、lambdaで利用する

# 概要
RDS Proxyをセットアップする手順を記載する

# なぜRDS Proxyを使わないといけないか

https://ichi-station.com/aws-rds-proxy-lambda-aurora/

> LambdaからRDSへのアクセスはアンチパターンと言われています。(調べるまで知りませんでした)
> その理由は、Lambdaはリクエストごとに起動し、その都度RDSに対してコネクションを張ろうとするため、
> コネクション上限を超えたLambdaからのアクセスはエラーとなってしまうためです。
> Lambda起動の頻度が高いほどコネクションが多くなってしまうのですね。。。

lambdaが終了しても、コネクションが残ってしまい、接続数の上限に達してしまう

# 参考

### AWS

* RDS Proxyについて https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-proxy.html
* PostgreSQL関数lastvalを使用してはいけないw(Proxyを利用してるからしょう

元記事を表示

CloudFront+S3 URLの末尾がサブディレクトリの場合でもindex.htmlを表示する方法

#経緯

CloudFront+S3ではURLがディレクトリまでしかない場合は404エラーになります。つまり、

“`
http://hogehoge.com
“`
の場合には index.html が表示されますが、

“`
http://hogehoge.com/subdir/
“`
の場合には index.html が表示されずに 404エラーになる訳です。

その解決方法として既に多くの記事で Lambda@edge を使って http://hogehoge.com/subdir/ (末尾にスラッシュあり) の場合に index.html を表示させる方法が紹介されていますが、http://hogehoge.com/subdir (末尾にスラッシュなし)の場合CSSやJSのパス当たらないなど、うまく動かなかったので、備忘録も兼ねて記事を書くことにしました。

方法を先に言ってしますと、スラッシュ(/)無しの場合にはスラッシュ(/)ありに301リダイレクトさせるというものです。

# まずはLambda@edgeを用意しましょう。
2021/12現在、Lambda@edg

元記事を表示

AWS DevOps – CloudWatchのダッシュボードをAuto Scalingに追従して自動で設定する

# はじめに
Auto Scaling グループの各インスタンスのCPU使用率を一目で確認したい場合、CloudWatchのダッシュボードを作成して各インスタンスのCPU使用率を表示するウィジェットを追加することで実現可能です。
しかし、スケールアウト、スケールインに合わせてダッシュボードの内容を動的に変更する機能は本記事の投稿日の時点では存在しないため、スケールアウト、スケールインの度にダッシュボードの対象インスタンスを追加、削除する必要があります。これを手動で実施するのは手間なので、Lambda関数で自動化する方法を紹介します。
なお、今回紹介する方法はCPU使用率のみでなく、ディスクI/Oや、ネットワークI/O、メモリ使用率、ディスク使用率といったメトリクスを確認したい場合にも応用可能ですので参考にしていただければと思います[^1]。

# 課題
下図のようなAuto Scaling グループを管理しているとします。
![1_problem_asg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2

元記事を表示

【AWS】利用料金の詳細通知&自動化

# はじめに
この記事は NTT テクノクロス Advent Calendar 2021 の 3日目の記事です。

NTT テクノクロスの井上です。
普段は AWS 関連の業務をしています。

この記事では、
**AWS の利用料金通知システム** の作成についてご紹介します。

元々、AWS の利用料金を通知する Lambda を動かしていたのですが、
「今月の費用、予算内におさまりそう?」と尋ねられたり、
「どのサービスにいくら費用がかかっているのかも通知してほしい!」
などの要望があり、拡張機能を作成しました。

また、
最近 AWS へ移行するプロジェクトも増えてきたので、
これを機に料金通知システム作成の **自動化** を含めて、記事にまとめることにしました。

# 概要
通知内容は下記の4つです。
・ 今月1日から前日までの請求額
・ 今月1日から前日までの請求額の内訳(サービスごとの請求額)
・ 今月の予測請求額
・ 前日1日分の利用額

通知内容は、**今月1日から前日までの請求額** をデフォルトとして、
他3つは必要に応じて拡張ができるよう作成します。

拡張

元記事を表示

Github Webhookからlambda経由でkintoneにrecord登録する効率化ツールを作ったよ

この記事は[kintone Advent calender 2021](https://qiita.com/advent-calendar/2021/kintone)の12/3を担当します!?

## kintoneで全てを管理したい…
弊社しいては僕らのチームでは、kintone上でタスク管理・コミュニケーションをしています。
しかしコードの管理はGithub、ビデオ会議ではzoomというように、kintoneだけでなくさまざまなwebサービスを使って業務が成り立っています。

今まではGithubで自分たちが管理しているプロジェクトのコードにissueが登録されたり、dependabotによるPull Requestが行われた際は、手動でTaskとしてkintoneに登録していました。これが非常にめんどくさい…ヒューマンエラーも出てしまう…

今回これを、Github Webhook をトリガーにしてAWS経由でkintoneにrecord登録することで、従来手動で行っていた作業を自動化したのでシェアします!

## で、どんなの作った?
基本的には以下の流れです。
1. Git

元記事を表示

Let’s dive into Filtering event sources for AWS Lambda functions

#はじめに
今まで、

– Kinesis Data Streams + AWS Lambda
– Amazon SQS+ AWS Lambdaのバックエンド、
– Amazon SNS + Amazon SQS + AWS Lambda

といったアーキテクチャをお客様のアプリケーションの中に組み込んできた中で、よくやっていたのが、Lambda Functions内で処理すべきデータか判断する、あるいは、判断を後に任せてとりあえず全部処理したり、不要なデータをスキップしたりしていました。これは、従量課金制のLambdaに対して、本来、処理対象ではないはずの不要なデータを投入し処理し、AWSサービス利用料、処理時間等に多少なりとも影響があったと思います。
 当記事では、その課題の改善につながる、2021/11にリリースされたKinesis Data Streams, Amazon DynamoDB Streams, Amazon SQSをイベントソースとするLambda の[Event Filtering機能](https://docs.aws.amazon.com/lambda/l

元記事を表示

OTHERカテゴリの最新記事