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

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

つみたて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

元記事を表示

Apexのランクポイントの増減計算をするLINEBotを作った話

この記事は[TDU CPSLab Advent Calendar 2021 – Adventar](https://adventar.org/calendars/6489)の2日目の記事です

https://adventar.org/calendars/6489

前の記事は[こちら](https://qiita.com/narusei/items/77e03ac2393e5792a071)から、次の記事はこちらから。

## はじめに

1回ダイヤ上がれたけど、それからずっとプラチナ3くらいまでしか上げられなくて、
最近CoDの方に移動しようか悩んでいるなるせいです。

突然ですが、Apex Legendsやってますか?
日本だとかなり大人気だなって印象を受けます。

好きな配信者さんなどおりますでしょうか?
その方のランク配信とかで隅っこの方に、
「ランクポイントの増減カウンター」みたいなのありませんかね。

今回はそれを対話式に実現するLINEBotを作ってみたので、そのお話をします。

例の如く、車輪の再発明しているかもしれませんが、
何となく作ってみた記事となります。ご容赦

元記事を表示

【Lambda】【Python】import requestsで Unable to import module エラーが発生したとき解決方法

pip install requests -t .
→ ERROR: Can not combine ‘–user’ and ‘–target’

エラーが出たので取り急ぎターゲットディレクトリを指定せずにインストールしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2203079/51d1c769-b583-4c3e-a653-e86def673995.png)

pip install request だけのコマンドだったらいけました。
ただし、どこに保存されているのかな?

pip install requests コマンドでインストールしたパッケージがどこにあるか確認するためには ↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2203079/1d946ac5-f94a-908d-f3de-e7b47f252e0e.png)

元記事を表示

AWS DevOps – AWS Chalice を使ってサーバレスアプリケーションを開発しよう

# はじめに

みなさん、こんにちは。今回は「AWS Chalice」を活用したサーバレスアプリケーション開発についてのお話です。AWS Summit Online Japan 2021 の日立製作所の講演で軽く触れたこともあり、どこかで紹介したいと思っておりました。

さて、AWS Chalice は多くの方にとってあまり馴染みのないツールだと思いますが、実際に使ってみるととても手軽に Amazon API Gateway と AWS Lambda を使用するサーバレスアプリケーションを作成してデプロイすることができます。もちろん、どんなツールにも得手不得手はあるので「すべてのプロジェクトで AWS Chalice の活用が最適か?」と言われればもちろん「No!」なのですが、ちょっと試しに動く Web API をサッと手軽に作りたい、といったケースにはとても良いソリューションだと思います。

今回は AWS CloudShell 上に開発環境を作るところからはじめて、簡素なサンプルを用いた一連の開発の流れ、テスト自動化を組み込んだシンプルな CI/CD パイプラインの構築まで紹介して

元記事を表示

LINEで画像を集めて、素敵なモザイクアートを作ろう

## はじめに
まもなく年末が近づいてきました。
今年の思い出にモザイクアートなどを作ったら盛り上がるんじゃないかといった提案です。
クリスマスパーティーとか年賀状とか、いろんなところで友達や家族、クラスで集めた画像を一つにまとめて、みんなでいい思い出を作れると楽しいですよね。

## 以前挑戦して大成功した
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/488939/cc928a92-0e1b-20b8-6a4d-3e5ef02de32e.png)

こちらは今年の頭に、高校の卒業記念に卒業生みんなで作ったモザイクアートです。
8700枚ぐらいの画像を使って作ったのですが、すごくいいものが出来上がってみんな喜んでくれました。メインになっている画像は、母校の校舎です。

## 今回の特徴

高校の公式イベントとして行ったため、いくつかの制約がありました。

– みんなが簡単にかつ大量に提出できること
– 集めた画像は学校が管理するサーバーなどで管理すること
– モザイクアートにする前に、

元記事を表示

AWS IoT1-Clickで家族へ「帰ります」通知を送信できるようにしてみました

# はじめに
先日、AWSを使ってインフラの構築作業を行ったのですが、AWSにとても興味を持てたので、実際に生活で使えそうな何かを作成しようと思い、色々と考えてみました。
私の友人に**「Lambda王」**というあだ名の人がおり、私はlambdaを触ったことがなかったので、どんな感じで使えるのかを確かめようと思い、今回はLambdaを取り入れることにしました。
私はいつも仕事から帰る時に奥さんに「今から帰ります」と通知をしているので、これを簡単に実行してくれるものを作ってみました。Lambda関数を実行するトリガーとして「AWS iot-1-click」で関数が実行される仕組みにしています。
すでに、色々な情報が溢れており、今さら感が否めませんが、自分の勉強も兼ねてやってみました。

# システム構成図
システム構成は以下の通りです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/938100/d6b97586-0fba-cea0-15be-e9b66593e1aa.png)

**l

元記事を表示

Serverless FrameworkでデプロイしたLambdaでスクレイピングする。

## 目的
こちらの記事は、以下の記事の第1, 2回目となります。

https://qiita.com/ShiroUz/items/56e230d286d09d275d32

Lambdaを使用して、スクレイピングします。
また、Lambda Layerを使用して、Pythonで使用するパッケージを読み込ませます。インポートするパッケージをLambda Layerから読み込んでハンドラーと切り分けることで、デプロイするLambdaの容量を減らし、大規模なLambda関数を作成可能にするとともに、デプロイするまでの時間を短縮させます。

## 環境
“`
$ sw_vers
ProductName: macOS
ProductVersion: 11.6
BuildVersion: 20G165

$ sls -v
Framework Core: 2.65.0
Plugin: 5.5.1
SDK: 4.3.0
Components: 3.17.2

$ npm -v
8.1.0

$ docker -v
Docker version 20.10.8, build 3967

元記事を表示

AWS SAMでアプリケーションをローカルテスト&デプロイ

#はじめに

[こちらの記事](https://qiita.com/Geeryo/items/f05af3d72a808160a007)で作成した環境をテンプレート化したい!と思ったので、
AWS SAMを使ってみました。
SAMはリソースをプロビジョニングできるだけでなく、ローカルでLambda、API Gatewayをテストできる便利ツールだったのでその使い方も紹介します。
途中、cloudformationコマンドとの比較もしていますのでご参考までに。

#環境
* mac OS:Monterey 12.0.1
* AWS CLI:2.2.33
* SAM CLI:1.35.0

#SAMとは
* AWS Serverless Application Modelの略
* サーバーレスアプリケーション構築用のオープンソースフレームワーク
* YAML,JSON形式でテンプレート記述
* CloudFormationの拡張機能で、簡単にテンプレートを記述することが可能
* SAM CLIあり

#SAM CLIのインストール
こちらからどうぞ

https://docs.aws.am

元記事を表示

【AWS初学者向け】翻訳WEB APIを作成してみた(ハンズオン)

#はじめに
AWSハンズオン資料集の中から「サーバーレスアーキテクチャで翻訳 Web API を構築する」を試してみて結構楽しかったので

1. **AWS初学者向けに構築フロー**
2. **つまずきポイント**
3. **個人的に修正してみた箇所**

の3点を共有します。

https://pages.awscloud.com/event_JAPAN_Hands-on-for-Beginners-Serverless-2019_LP.html?trk=aws_introduction_page

上記、URLからAWS初学者の方はぜひトライしてみてください。

#参考ドキュメント

https://boto3.amazonaws.com/v1/documentation/api/latest/index.html

https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/api-gateway-integration-settings-integration-response.html

#構成

元記事を表示

AWSLambda(Golang)×DynamoDBのローカル開発環境を整える

# 目的
AWS LambdaでバックエンドAPIを構築しているとき、関数の挙動を確認したいときは都度devにデプロイしていました。流石にローカルでの開発環境を整えたいと思ったのですがGoでの使い方の情報が少なかったので個人メモとしてまとめてみました。
今回はAPI GatewayがトリガーのLambda関数になります。
APIトリガー以外は
→[`serverless invoke local -f ` で十分らしいです](https://blog.70-10.net/2018/08/29/serverless-typescript/#4-code-classlanguage-textserverless-offlinecode%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B)

# 全体の流れ

以下のJavascript filesのところを今回はGolangにしてやってみます

元記事を表示

RDS自動起動停止をlambdaで

#はじめに
RDSの料金を節約するために夜中に停止して朝起動するジョブを作ります。
#RDSの作成
RDS上でテスト対象となるDBを作成します。

“`json:DBの情報
“DB識別子”: “postgres-db”
“`

#lambdaの作成
event変数でAction(Start/Stop)と対象のInstanceを取得して、対象DBのステータスを取得したあと起動/停止を行います。

“`python:/lambda_function.py
import boto3
region = ‘ap-northeast-1’

def lambda_handler(event, context):
rds = boto3.client(‘rds’, region_name=region)
action = event[“Action”]
db_instance = event[“Instance”]

response = rds.describe_db_instances(DBInstanceIdentifier=db_instan

元記事を表示

TerraformでLambda(Golang)のCICDをGitHub Actionsで構築

## 以下の記事を参照して頂ければと思います

https://note.com/shift_tech/n/n9bdb5e803c0a?magazine_key=m21a220fb0f1e

**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です**

## 補足
ソースコード全体は以下を参照。

https://github.com/yuta-katayama-23/Go/tree/terraform

元記事を表示

OTHERカテゴリの最新記事