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

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

AWSサーバーレスのWebアプリケーションをもっと勉強する

いつも忘れないように、コンセプトから。

###コンセプト
・お金かけてまでやりたくないのでほぼ無料でAWSを勉強する
 →ちょっとしたサービスを起動すると結構高額になりやすい。
・高いレベルのセキュリティ確保を目指す
 →アカウントを不正に使われるととんでもない額を請求されるので防ぐ

昨日は[「AWS Lambdaで動的コンテンツ配信を考えてみる」](https://qiita.com/auf/items/061817b6ae05d9ccdfbc)をやってみたものの、実装はできるが画面(HTML)の実装がイマイチだなという違和感を感じていました。そこれ、[「さらに先日やってみたチュートリアル」](https://qiita.com/auf/items/74578049ef2f668f9d60)をもう一度見てみようと思ったんですが、これがなかなかハードです。ワークショップ関連のプログラムがセットになっていて、関連する部分が
`\aws-serverless-workshops-master\WebApplication\1_StaticWebHosting\website\js`

元記事を表示

GAS(Google Apps Script)からワンクリックでec2にアプリケーションをdeployする

スプレッドシートで管理している内容をRuby on Railsのアプリケーションにdeployするという運用があり、これまでは、

1. スプレッドシートを編集(運用チーム)
2. 開発チームに依頼(運用チーム)
1. スプレッドシートの内容をcsvで保存(開発チーム)
2. csvファイルを所定のディレクトリに置く(開発チーム)
3. capistranoを使ってec2にdeployする(開発チーム)

という運用でした。
これ、*めんどくせえなぁ*、という事で運用を見直した話となります。

## お話する内容

こんな仕組みが作れたよ、という話

## システム構成

![Untitled Diagram(1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308709/d263207b-7d51-a29b-d844-f536ddd948a7.png)

### 登場人物

1. SpreadSheets
2. S3
3. Lambda
4. CodePipeline with CodeDeploy

元記事を表示

AWS Lambdaで動的コンテンツ配信を考えてみる

いつも忘れないように、コンセプトから。

###コンセプト
・お金かけてまでやりたくないのでほぼ無料でAWSを勉強する
 →ちょっとしたサービスを起動すると結構高額になりやすい。
・高いレベルのセキュリティ確保を目指す
 →アカウントを不正に使われるととんでもない額を請求されるので防ぐ

[先日やってみたチュートリアル](https://qiita.com/auf/items/74578049ef2f668f9d60)をもう少しシンプルに勉強してみようと思います。LambdaとAPIGatewayだけで、HTMLを生成するのが目標です。

いくつかサイトを見てみましたが、

こちらで行っているのを真似します。そのまんまなんで、記載するほどでもないんですが、自分の備忘とちょっとはまったところをがあったので記載してみます。

###とりあえずやってみる

まずはLambdaを作成します。デフォルトで作っただけなので、ここは後で書き換えます。
![TestLambda1.png](https:

元記事を表示

AWS Lambda のパフォーマンスを Dynatrace で監視・分析する方法

### AWS Lambda を含むシステムに対して Dynatrace で分散トレーシングな監視をする手順を紹介します。
**Lambda関数内のコードレベルでのパフォーマンスの分析が容易になります。**

## 前提:
– ローカル環境に、NodeJSがインストールされている必要があります
– Dynatraceのテナントを持っていること **\([2週間フリートライアルできます](https://www.dynatrace.com/ja/trial/)\)**
– Dynatrace の Serverless integration の利用申し込みが完了していること(注)
– AWS Lambdaが利用できること

**(注)Serverless integration の申し込みについて**

現在のところ、Lambda を監視するための ”Serverless integration” 機能は、限定されたユーザーのみ使用できるEarly Adapter Release

元記事を表示

Cognito+API Gateway+LambdaでログインAPIを作りたいんだー!

[前回](https://qiita.com/seobomi/items/d2ab34bf2d3c4dcc98d5)の続きで、Cognitoを使ったユーザ認証を行う。

#やりたいこと
APIでログイン
– ログイン名 と パスワードをリクエストボディに指定しAPIをコールしアクセストークンを取得する

#参考
[LambdaでCognito認証(ユーザー認証)](https://qiita.com/minmax/items/12e65cd51d85f419faa5)

#やってみよう
###Lambda用IAMロール
前回同様に、Lambdaの基本的なポリシーに加えて、「AmazonCognitoPowerUser」をアタッチする。

###ログイン用のLambda関数を作成
前回と異なっていた点ですが、引数に渡すUSERNAME・PASSWORDは大文字で記載しないとエラーになりました。

“`index.js
‘use strict’;

const AWS = require(‘aws-sdk’);
const cognito = new AWS.CognitoIdentit

元記事を表示

S3 → Lambda → Transcribe → S3 で文字起こしパイプラインを作成する

##1 S3(input)##

音声用ファイルのS3バケットを作成しておく。

##2 Lambda##

`s3-get-object-python`を利用していきます。
![スクリーンショット 2020-05-02 13.24.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/6fde4114-89cd-0143-184d-e588590a4bc3.png)

「1 S3(input)」で作成したS3バケットを選択し、「トリガーの有効化」にチェックを入れる。
![スクリーンショット 2020-05-02 13.29.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/40e8c87a-326b-eb5f-8554-c014d5a9505d.png)

“`python
import json
import urllib.parse
import boto3

print(‘Loa

元記事を表示

APIGateway + Lambda + Comprehend でサーバーレスなWeb API を作成する

#1.Lambda#
実行ロールにデフォルトの「管理ポリシー」に加えて、『ComprehendFullAccess』の「AWS 管理ポリシー」を付与する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/41215cca-2a57-0a08-8946-fc5a8d7bb264.png)

ランタイムは「python3.8」で、関数コードは以下のとおり作成。

“`python:Comprehendfunction
import json
import boto3

comprehend = boto3.client(‘comprehend’)

def lambda_handler(event, context):

input_text = “とても美味しいです!”

response = comprehend.detect_sentiment(
Text=’input_text’,
LanguageCode=’

元記事を表示

Lambda関数をまとめてバックアップする

# 概要
WebGUIは便利だけど、修正が一発勝負になっている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185989/3dfd803d-2375-4424-ec6c-2f194628e85a.png)

とりあえず、夜間にでもLambda関数をまとめてバックアップしときます
バックアップファイルをGitに突っ込んでおけば、後追いの履歴管理ができる。ないよりはマシ

# Lambda関数の構造
1つの関数に対して

① 関数詳細(関数名・説明・ロール・メモリサイズなどなど)
② ソースファイル群

これらは、[Lambda.getFunction](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html#getFunction-property)で取得することができる

※ソースファイルは、getFunctionのレスポンスに含まれているURLでzipファイルがダウンロードできる

# まとめて取

元記事を表示

Cognito+API Gateway+Lambdaでユーザ作成APIを作りたいんだー!

AWSの認定は保有していますが
実践できていない主なサービスがサーバレスまわり…

ということで勉強を兼ねて、簡単なAPIを作成してみます。

#やりたいこと
APIでユーザ作成
– ログイン名 と パスワードをリクエストボディに指定しAPIをコールするだけでユーザ作成する。
– メールアドレス/電話番号の認証は不要。

#参考
[LambdaでCognito認証(ユーザー作成)](https://qiita.com/minmax/items/8c2aa57b76e09b8192ed)

#やってみよう!
###ユーザプールの作成
こんな私でもCognitoでユーザ管理をするにはユーザプールを作成しなければならないことは知っている。

属性は必要最低限を指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613712/1a254b24-c952-5ccf-d650-2f2e400d01f9.png)

![image.png](https://qiita-image-store.s3

元記事を表示

AWS SQSで署名付きURLを発行する

AWSのS3には「署名付きURL」があります。
この機能と似たようなことをSQSでも実現します。

# どういうときに使うの?

たとえば、こんな感じのシステムを作りたいとします。

![device_image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233180/9f588e38-4079-7c5f-30a4-869ec2959464.png)

+ 端末の画面状態(操作中かどうか、人がいるかどうか)を定期的にAWSに送信します。
+ 端末の台数は1万台、送信間隔は5秒、AWSはSQSにデータを溜めておいて、1時間に1回解析します。
+ 端末ではAWS-SDKが動かず、なおかつ簡単なHTTPS通信しかできません。

AWSで構成を考えてみます。

**<構成A:API Gateway + Lambda>**

安いと評判のLambda + API Gatewayですが、大量のリクエストを捌くとさすがに高価になります。

![talk_image_gateway.png](https://qii

元記事を表示

LINEBotをみんなで作ろう〜LINEBot is 何?編〜【GWアドベントカレンダー2日目】

この記事は下記の [#GWアドベントカレンダー](https://gw-advent.9wick.com/calendars/2020/72) の 2日目の記事になります。

楽しそうなのでやってみる ( @inoue2002 ) | GWアドベントカレンダー

# はじめに
こちらの内容は超初心者向けです。
[公式ドキュメント](https://developers.line.biz/ja/docs/messaging-api/overview/#messaging-api%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF)を読める方はこちらをお読みいただく方が正確です。

[昨日の記事](https://qiita.com/drafts/a87df2b520f8b6e37f42/edit)をご覧になってない方はぜひ。
こちらの記事はGWアドベントカレンダーを通してLINEBotをサーバレスで作れるようになろう!ということを目標に書いている記事です。

LINEBotって何なん?って思われる方にまずお読みいただきたいです。
できるだけ専門用語を使わず、噛み砕

元記事を表示

AWS Lambdaのメモリを増やすと処理が遅くなる事がある

# 背景

Lambdaで作成した関数のメモリー割当量を検証をしていた際にメモリー割当量を増やしたのにも関わらずレスポンスが遅くなることがありました。
そこで実際にCPU性能を調べてメモリ割り当て量によるレスポンスタイムの違いを調べてみたいと思います。

# 検証

## 検証方法
極力ネットワークの影響やファイルIOなど外部の影響を受けないようにするために今回は `console.log` を大量に行いCPUに負荷をかける。
Lambdaの画面よりテストボタンで下記のスクリプトを6回実行を行い、選択できる全メモリ量を記録して所要時間の中央値を比較するものとする。
ランタイムは `Nodejs 12.x` を使用する。

“`js
exports.handler = async (event) => {
for (var i=0; i<100000; i++) { console.log(i); } }; ``` ## 検証結果 各実行時間の中央値をグラフにしました。 グラフから分かる通り、特定容量の割当ての際にレスポンスが遅くなっていることが

元記事を表示

WINDOWS OSでAWS LAMBDAにGOをデプロイ

#目的
現在、WINDWOS10 OSでGOを用いてWEBサービスを開発しており、
AWS LAMBDAを活用する場面がありましたが、
実際にデプロイを行う際に、無駄にはまったところがあったので、
この度は、実際にデプロイしてみてはまったことや感想を共有したいと思います。

#AWS LAMBDAにGOをデプロイする方法
基本的でデプロイする方法はAWSの公式ドキュメントに記載されてあります。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/golang-package.html
特に`デプロイパッケージ`、`Handler`がデプロイとは密接に関係があるので、
この辺はしっかりと読みましょう。

僕は、しっかり読まずいくつが見逃してしまい、苦労しましたね、、、:joy_cat:

#僕がはまったところ
##①ソースコードをLINUX用しなかったこと
###問題

僕は以前、LAMBDAにPYTHON3をデプロイした経験があります。その際は、OSを気にせずデプロイしてもうまく動いてくれたので、
この度、GOをデプロイ

元記事を表示

AWS LambdaのJavaは遅い?

AWS Lambdaで動作するJavaは初回が遅いですが、速くする方法がないか調べました。
末尾にある参考サイトの内容にたどり着いて、実際に試してみたのでその記録です。

レイテンシ情報はX-Rayにて取得しました。

# テスト対象

S3にファイルをPUTするだけのものです

“`java
S3Client s3 = S3Client.builder().region(Region.AP_NORTHEAST_1).build();
PutObjectResponse result = s3.putObject(
PutObjectRequest.builder().bucket(ENV_BUCKET).key(“filename.txt”).build(),
RequestBody.fromString(“contents”));
“`

# 検証1 普通に実行

まずは普通に試してみます。

ソース全体

“`java
package helloworld;

import c

元記事を表示

NHK番組表API叩いてSlackで通知する

## はじめに
なんか面白そうなAPIとか探していたら、NHK番組表APIなるものを発見しました。

NHKっていったら、紅白、高校野球、朝ドラ、大河、天才テレビくんとか忍たま乱太郎とか、昔からそんなイメージ。
最近だと、キングダムとか進撃の巨人なんかも放送してたり、昔のイメージを覆しはじめてますねー。
ちなみに最近見つけた僕のイチオシは「[香川照之の昆虫すごいぜ!](https://www.nhk.or.jp/school/sugoize/)」です。

ちなみに、NHKって不定期放送多くないですかね?
LIFE!とか、見逃しちゃうんですよね〜。
ウッチャンのコント番組見ると、笑う犬思い出しちゃいますよね〜。ミル姉さんとか。

ということで、今回はLambda使ってサーバーレスな感じで、見たい番組・好きなタレントが出ている番組をSlackに通知する、お手軽アプリケーション作ろうかと思います。

言語はGo(勉強中)です。

## 環境など
– AWS Lambda
– Amazon CloudWatch Events(cron式)
– 言語:Go
– NHK番組表API(Program

元記事を表示

コロナ休みで増えた家事を分担!LINEBotでスッキリ解決する

この記事は下記の [#GWアドベントカレンダー](https://gw-advent.9wick.com/calendars/2020/87) の 2日目の記事になります。

すごくなりたいがくせいぐるーぷ( @inoue2002 ) | GWアドベントカレンダー

# はじめに
記事をご覧のみなさんStayHomeお疲れ様です。
一刻も早い収束を願い、みなさんで協力していきましょう!

さて、学校が休校になり、毎日お昼ご飯を作ったり、その他家事をしたりとそろそろ疲れてきたところではないでしょうか?
そんな皆さんのために、(僕はお母さんの為に)家族で各仕事の役割と分担をして発表してくれるLINEBotを作成したのでご紹介します。

#完成品

元記事を表示

LINEBotをみんなで作ろう〜環境構築編〜【GWアドベントカレンダー1日目】

この記事は下記の [#GWアドベントカレンダー](https://gw-advent.9wick.com/calendars/2020/72)の 1日目の記事になります。

すごくなりたい @inoue2002 ) | GWアドベントカレンダー

# はじめに
#####全く触った事がない人でも読み進められる記事を目指して、「実際に動くもの」を作ることを重視して解説をしていきます。
最初は環境構築から始め、最終的にはサーバレスで動くLINEBotを作成し、色々な物を作ってもらえたら嬉しいです。
僕の持っている知識を全部書いていこうと思いますのでよろしくお願いします!
もし誤表記やっ訂正すべき点がある場合、コメントいただけると幸いです。
あと、基本的にはMac環境で説明していきますのでよろしくお願いします。
では1週間よろしくお願いします!

#今日やる事
・[LINE Developerのサイト](https://developers.line.biz/console/)にログインできるようにする。
・[ngrok](https://ngrok.com/)をインストールする
・[no

元記事を表示

「AWSサーバーレスのウェブアプリケーションを構築する」の体験

いつも忘れないように、コンセプトから。

###コンセプト
・お金かけてまでやりたくないのでほぼ無料でAWSを勉強する
 →ちょっとしたサービスを起動すると結構高額になりやすい。
・高いレベルのセキュリティ確保を目指す
 →アカウントを不正に使われるととんでもない額を請求されるので防ぐ

無料ではないんですが(無料枠がある人はつかますが)、お安い金額でお勉強です。
GWもはじまり、Stay Homeで暇なんで「サーバーレスのウェブアプリケーションを構築する」を体験してみました。
https://aws.amazon.com/jp/getting-started/projects/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/module-5/

学習できるサービスは、

– AWS Lambda
– Amazon APIGateway
– Amazon S3
– Amazon DynamoDB
– Amazon Cognito

です。

###まずは感想から
チュートリアル自体は2時間あれば多少調べながら

元記事を表示

Lambdaのコールドスタートを改めて整理する

## 概要

Lambdaを使うとき、「コールドスタート」の課題があることをよく耳にします。これについて、過去の経緯、直近のアップデート状況なども踏まえつつまとめてみた記事です。
AWS初心者の目線なので不足点などあるかもですが、その場合にはご指摘いただければありがたいです。

## 前提となる知識

### 1. Lambdaは実行時にコンテナを生成している

以下のスライドはAWS公式からの引用ですが、Lambda関数実行時の流れを表したものです。これに記載の通り、Lambdaの裏側では、実行時にコンテナが生成されています。なお、以降は実行時に生成されるものを__関数インスタンス__と呼びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/451175/fb36e4fc-d3df-553e-dc25-72b2aa5bc298.png)
(出典)[全部教えます!サーバレスアプリのアンチパターンとチューニング](https://speakerdeck.com/keisuke69

元記事を表示

【SlackBot】明日は休みだよBotを作ってみた

## きっかけ

– 昨今の事情もあり在宅勤務を行っている方は多いと思います
– そんな中でチームのSlackでこんなやりとりがありました

スクリーンショット 2020-04-29 0.18.53.png

– 在宅でリモートだと曜日感覚なくなってきますよね
– 明日が休みだと思うことで生まれる**生産性爆上げ日**を逃してしまうのはもったいない!ということでStayHomeの暇つぶしも兼ねて次の日が休みの時にSlackに通知してくれるBotを作ってみました

## 使用した主な技術

– AWS Lambda(Node)
– [Holidays JP API](https://holidays-jp.github.io/)
– [Slack Web API](https://slack.dev/node-sla

元記事を表示

OTHERカテゴリの最新記事