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

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

PagerDutyのオンコール担当をチャンネルのトピックに設定する

# 概要

PagerDutyのオンコール担当になっていることをうっかり忘れたことが何回かあったので、なにかよい方法ないかなと探してたら、「pd-oncall-chat-topic」というものがあったので早速試してみました。

https://github.com/PagerDuty/pd-oncall-chat-topic

仕組みはとてもシンプルでした。
1. Lambdaが5分おきに動いてPagerDutyのAPIからオンコール担当を取得
2. Slackのチャンネルにトピック登録

# 手順

手順はReadmeに記載の通りで特に詰まるところもなく設定できます。

## SlackでBotを設定する

ここからBotを作成します。
https://my.slack.com/services/new/bot

![bot1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/32289/ebaf13a2-20c1-2334-528f-4e79d56ded39.png)

APIトークンをメモしておきます

元記事を表示

みんながよく使うawsリソースとは?【2021年上半期】

webエンジニアならAWSは必須ですね。
最近は、サーバーレスも定着してきて、これまでのEC2メインでもなくなってきたので、勝手ランキングを発表!
(2021年上半期版)

これからのwebサービス開発の参考にしてください。

# 人気awsリソースランキング 4位~10位

第 **4** 位 **Lambda**

軽いちょっとした処理は、lambdaにして呼び出すのが便利ですね。
もう自前ライブラリを構築する必要はなくなりました。
[AWS Lambda 料金](https://aws.amazon.com/jp/lambda/pricing/)

第 **5** 位 **DyanmoDB**

NoSQL便利!しかも、速い!スケーラビリティ!
RDB思想からの脱却に苦労するかもしれませんが、価値はかなり高いです。
[Amazon DynamoDB 料金](https://aws.amazon.com/jp/dynamodb/pricing/)

第 **6** 位 **API Gateway**

サーバーを立てて、APIキー認証をしっかり作って、バージョンを管理して、から脱却

元記事を表示

CodeCommit APIのCreateCommitの動きが想定と違った話

# 概要

Lambda(python)で作成したファイルを、CodeCommit API(CreateCommit)を使ってリポジトリに追加(更新)しようとしたが上手くいかず、調べたらAPIの仕様が自分の想定と違ったので、備忘録としてその時の内容をまとめる。

# やりたかったこと

S3にあるファイルをLambdaで編集して、編集したファイルをCodeCommitリポジトリに追加(更新)する。

## 作成したLambda関数

“`
s3 = boto3.resource(‘s3’)
cc = boto3.client(‘codecommit’)

def lambda_handler(event, context):
bucket = s3.Bucket(‘<バケット名>‘)
obj = bucket.Object(‘<オブジェクト名>‘)
res_obj = obj.get()
body= res_obj[‘Body’].read()

〜〜〜(編集処理)〜〜〜

res_branch = cc.get_branch(

元記事を表示

【Node.js, TypeScript】LINE MessagingAPIで作った天気予報アプリをAWSのLambdaにデプロイしてみる!

先日、Node.jsとTypeScriptで天気予報アプリを作成しました。

https://qiita.com/Ryo9597/items/4c05b8b972ad7efc0c66

完成形としては以下の通りです。
![名称未設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/838372/0af0bfce-b695-b341-4e90-aeefde544562.png)

この記事内では、`Glitch`でデプロイをしています。
まぁ無料なわけで色々問題があります。
・プロジェクトは、利用されていないときは5分でスリープ状態になる
・4000件/1hのリクエスト制限がある(Error: 429 too many requests)

ということで、AWSのLambdaを使ってデプロイすることにします。
それではアーキテクチャに関してみていきましょう。

## サーバーレスアーキテクチャとは
AWSにおけるサーバーレスとは、**「インスタンスベースの仮想サーバー(EC2など)を使わずにアプリケーション

元記事を表示

AWS超絶初心者がSESを使ってメールの一斉送信やってみた

筆者のレベル感は

– AWSの構成図は読める、それぞれの機能の概要はなんとなく分かる
– AWSでの実装経験はゼロ(システム開発経験もゼロ)

なので、生暖かく見守ってください。

#やりたいこと

リスト化されたメールアドレス宛に、対応する宛名を文面に盛り込んだメールを送りたい。

基本的には以下の記事を参考に実装。項目も引用させてもらっています。

https://dev.classmethod.jp/articles/bulk-email-ses-lambda/

#SESで送信元メールアドレスを登録
ここはうまくいった。方法はネットに溢れているので割愛

#DynamoDBでユーザーテーブルを作成
???
userId(PK)とはなんぞや???プライマリキーということは分かったけど、
a06b7c45-1303-45bf-a2d7-fec53fbc224cとかが何を表しているのか分からないので、
いったん以下のように記載

| userId(PK) | name | emailAddress |
|:-:|:-:|:-:|
| 1|太郎 | test1@XXX

元記事を表示

AWS Lambdaのコールドスタートについて

アクセス増に応じて、同時に処理できる数が増えていきます。

####作成済みのLambda
初期処理不要

####追加されたLambda
初期処理必要
※関数実行までに、コンテナ作成→パッケージのロード→ランタイム起動・初期化

=コールドスタート

##対応方法について
###①コールドスタートの処理を短くする対応
・パッケージのサイズを小さくする
・Lambdaのメモリを増やしていく(メモリを増やすと、CPUの性能が上がり、処理時間が短くなる)
 ※メモリ増やすと、1ミリ秒のコストは上がるが、処理時間が短くなる。一概にコスト増とはいえない。

###②設定「Provisioned Concurrensy:準備済みの同時実行数」を使用。別途コスト
常時、初期処理済みのLambdaを、XXX個用意しておくことが可能

元記事を表示

TerraformでLambdaコンテナイメージを自動構築する

# はじめに
昨年末にGAされたLambdaのコンテナイメージ機能。
プラットフォームとしてのデプロイ方法が増えて、ますますLambdaの使い勝手が良くなってきている。

今回は、通常のZipによるデプロイではなくて、コンテナイメージでのデプロイをTerraformで自動化してみよう。

前提知識としては以下だ。

– TerraformによるLambdaのデプロイ経験がある
– SAMによるLambdaのデプロイ経験がある([参考記事](https://qiita.com/neruneruo/items/1ef52f908e4497103a59))
– Dockerの基本のキは理解している([参考記事](https://qiita.com/neruneruo/items/82c9daf90d5782f150d2))

# ソースコード
今回は動けば何でもよいので、AWSリソースとも接続しない、テキトーにJSONを返すだけのコードにしよう。
クエリからidを受け取り、それに応じた名前を返すような機能(getemployee)とする。

“`main.go
package main

元記事を表示

API Gatewayを使ってLambda関数を使ったREST APIを作成する

# はじめに
こんにちは。東京五輪のサッカー準決勝のチケット持ってましたが、無観客になっちゃいましたね :innocent: いやー、もし再抽選で当たってたら行く行かないで迷っていたと思うので、自分はこれでよかったと思います。

さて、今回は先日作成した**Lambda関数**を**API Gateway**を通してAPIとして使えるようにしようと思います。

# 先日作成したLambda巻子はこちら

https://qiita.com/akitkat/items/d7d3f41449a58fdb38ae

# API Gatewayを使ってLambda関数を実行する
## 1. APIの作成
`APIの作成`からAPIを作成します。
`API名`はお好みで大丈夫です。URLに含まれたりはしません。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86984/3a0b3a0d-5777-40da-46e0-cb49d0eea4d4.png)

## 2. リソースの作成
`アクション`プルダウ

元記事を表示

ElixirでAWS Lambdaの.zipファイルとコンテナイメージの速度比較

# はじめに

ElixirでAWS Lambdaのアプリケーションを書く場合、これまではカスタムランタイムを含めたアプリケーションを.zipファイルで固めてアップロードする方式一択でしたが、2020年末に、AWS Lambdaがコンテナイメージをサポートしたことで、カスタムランタイムを含めたアプリケーションをDockerイメージにし、ECRに登録して利用するという方式も選択できるようになりました。

今回、それぞれのアプリケーションをデプロイしてみて、コールドスタートからの実行速度や、通常の実行速度等を比較してみたいと思います。

# 比較してみる

## アプリケーションの作成

今回は、リクエストされた小文字を大文字に変換して返す簡単なLambdaを作成して速度比較を行います。

アプリケーション作成については、AWS LambdaやAzure Functions、IBM Cloud Functionsのアプリケーションを簡単に作成できる謹製ライブラリがあるのでそちらを使います。

ライブラリはこちらで公開
→ https://github.com/imahiro-t/faas_

元記事を表示

AWS Lambda で画像AIを動かす

## はじめに

AWS Lambda で Pytorch の画像AIを動かしてみました

SAM CLI で簡単に構築できるので、ちょっとした AIサービスなら低コストで実現できそうです

## 実行環境

– macOS Big Sur 11.4
– SAM CLI 1.24.1
– Docker 20.10.6

## 参考にしたもの

2021/2/12 のブログです

こちらは自然言語処理のAIを動かしています

https://aws.amazon.com/jp/blogs/machine-learning/using-container-images-to-run-pytorch-models-in-aws-lambda/

## AWS Lambda とは

AWS Lambda はサーバレスコンピューティングサービスです

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

開発したコードをアップロードすると、呼び出されたときだけマシンが起動し、コードを実行して、自動的に終了してくれます

何が嬉しいかというと

– サーバーがないので、サーバー構築

元記事を表示

Lambda関数でPythonとSelenium使ってサーバレスでスクレイピングする

# はじめに
こんにちは。先日、とある企業のとあるリードテックの方とお話しする機会がありました。今までにない切り口で質問いただいたり、すごく勉強にも気づきにもなって楽しくて、あの話もしたかったなとか、今までにない感情がわきました 🙂

あぁいうのって、**話術**っていうんですかね :thinking: すごかったです 🙂

さて、今回は**Lambda**を使って**Selenium**によるスクレイピングを行っていこうと思います。
私は、**GoogleAppsScript**をよく使うので、簡単はものはそれでいいのですが、ちゃんとした**テスト**をするには、**Selenium**等使うべきだとは思います :pray:

**Heroku**に**Laravel**入れて**Selenium**使おうとかも思ったのですが、せっかくなので、今まで触ったことないものに挑戦しようと、今回の運びになりました。

**Lambda**も**Python**も使ったことないので、同じく初心者の方にやさしい記事になると思います。
参考になれば幸いです :b

元記事を表示

レプリケーションインスタンスをオートスケールさせる

## はじめに
AWS DMSの継続レプリケーションするタスクのインスタンスのスペックの調整をするのに、コンソール上でポチポチするのが面倒になったので、必要に応じてレプリケーションインスタンスを自動的にスケールして、より高い負荷 (スケールアップ) を処理し、負荷が低いときにコストを削減 (スケールダウン) する方法を模索しました。

##やりたいこと
対象のレプリケーションインスタンスのCPU使用率が閾値を超えた際は、スケールアップし、Eメール通知をもってトリガーを確認できるようにします。閾値を下回った際は、スケールダウンし、Eメール通知を行う。

## セットアップ
### **構成図**
![DMS AutoScaring.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192019/5cea3c9f-1d4d-0aea-3423-5fa02bda5c35.png)

### **必要リソース**
– インスタンスタイプの変更通知(SNS)
– Lambda関数を呼び出す通知(SNS)
– CPU

元記事を表示

Amazon Cognito の Lambda トリガーに、エイリアス付きで Lambda を設定してみる

# ■ はじめに

![963f9ca9395c096c234f891ad8877b28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/161939/d838a89d-5dc1-d693-0517-add60ca2ce07.png)

Amazon Cognito の Lambda トリガーに、エイリアス付きで Lambda を設定してみたかったので、やってみました。

参考にさせて頂いた記事は、コチラ ♪♪♪

– [aws lambda \- Cant set AWS cognito triggers using CLI \- Stack Overflow](https://stackoverflow.com/questions/60351508/cant-set-aws-cognito-triggers-using-cli)
– [update\-user\-pool — AWS CLI 1\.19\.105 Command Reference](https://docs.aws.amazon.c

元記事を表示

TerraformでLambdaを作成したときにログがでない

TerraformでLambdaを作成したときにログがでない(ロググループがない)

TerraformでLambda作成するときに以下を参考にして権限をつけると大丈夫なようです。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-cloudwatch-log-streams-error/

今までTerraformでロググループを作っていましたが、権限つければいいじゃんということで備忘です。

CloudWatch にログを書き込む Lambda 関数に必要なアクセス許可を含む JSON ポリシーの例

“`
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: “logs:CreateLogGroup”,
“Resource”: “arn:aws:logs:region:accountId:*”

元記事を表示

AWSのサービスを活用して低コストでradikoをPodcast化するアプリケーションを作った話

# TL;DR

– AWSのサービスを活用してradikoをPodcast化するアプリケーションを作りました
– [l3msh0/radicaster](https://github.com/l3msh0/radicaster)
– 低コストで運用可能で、番組の連結などヘビーリスナーに嬉しい機能もあります
– 気に入ったらGitHubで star :star2: してね

# この記事のターゲット

ラジオが好きで、ある程度AWSの知識があるエンジニアの方

# 前置き

皆さん、ラジオ :radio: 聴いてますか?

私は10年ほど前にラジオに出会って以来、移動中や家事をしながら、時にはお風呂やお布団の中など、日常のあらゆるシーンでラジオが欠かせない存在になっています。

ラジオの聴取手段と言えばradikoですよね。かく言う私もradikoプレミアムの会員で、タイムフリーやエリアフリーなどの便利な機能のおかげでラジオをより楽しめています。

ただ、ヘビーに利用していくと痒いところも出てくるわけで…。再生開始から24時間以内・合計3時間の聴取時間の制限や、シークのしづらい

元記事を表示

LambdaでS3からHTMLファイルを取得して返す

色々と応用できそうなので残しておきます。

##環境

Python3.7
API Gateway プロキシ統合あり

##処理

“` Python3
import boto3
import os

# バケット名は環境変数から取得
BUCKET_NAME = os.environ[‘BUCKET_NAME’]
s3 = boto3.resource(‘s3’)
filepath = ‘/tmp/hogehoge.html’

def main(event, context):

bucket = s3.Bucket(BUCKET_NAME)
bucket.download_file(‘hogehoge.html’, filepath)

with open(filepath , encoding=’utf-8′) as f:
html = f.read()

return {
“statusCode”: 200,
“headers”: {“Content-Type”: “tex

元記事を表示

【LambdaでOpenCVを利用】AWSとOpenCVを利用してポケモン画像でアスキーアート風に変換するAPIを作った

こんにちは、[Yui](https://twitter.com/yui_active)です。

引き続き週イチ発信をしていきます。
今週はAWSとOpenCVを使って、画像処理を行ったのでそのことについて書きます。

以下の件です。