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

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

社内slackにVIPチャンネルを作った話

[ABEJA Advent Calendar](https://qiita.com/advent-calendar/2019/abeja)の1日目です。

# はじめに

昨年はABEJA Platformに関するAdvent Calendarでしたが、今年はプラットフォームに限らず幅広い技術を扱おう、ということで縛りを作らずに様々な技術を紹介していきます。

さて、皆さん、社内でのコミュニケーションツールは何をお使いでしょうか。色々なツールがあると思いますが、Slackを使っている所が多いのではないかと思います。Slackはとても良いツールなのですが、使いこなす会社側にその運用ルールが委ねられています。中でも、DMやプライベートチャンネルでの秘密の会話による情報格差などが発生することが問題になり、オープンチャンネルに限定している会社も多いのではないでしょうか。しかしながら、オープンに会話をすれば、皆が平等かつ平和に会話ができるか?というと、全くそんなことはありません。オープンにすると下記のような問題が発生します

### 問題1:心理的安全性が確保されない

様々な技術力、ポジション

元記事を表示

Chalice x Circle CI 環境における CI/CD について

# 序文
https://chalice.readthedocs.io/en/latest/

AWS Chalice は、AWS Lambda と API Gateway などを組み合わせて、Heroku のような手軽さで Serverless 環境を構築することができるフレームワークです。
現在のところ開発言語は Python しか対応していない(今後も対応する?かは不明)ですが、その制約を受け入れれば他の Serverless フレームワークよりも手軽で開発しやすい環境が提供されているように思います。
私の環境でも、簡易的な API の作成や、バッチ、cron 処理など、かなり広範囲の処理について Chalice を用いて開発をすることが多くなりました。

当記事では Chalice でできることの説明は割愛します。

そして、テスト周りについてはすたじおさん (https://qiita.com/studio3104) が記事を書くようなので、私の方では Chalice で開発する際の CI/CD 環境をどのようにするか、自分の実例を基に記事を書きたいと思います。
なお、ここで

元記事を表示

手順メモ:AWS Lambdaでzipファイルをアップロードするまでに必要なこと

# やりたいこと
– lambdaでapiを叩きたい。
– python3でやるためには必要なライブラリをlambdaにzipでアップロードする

# 前提
– lambdaのランタイムはpython 3.7
– awsのlambdaの画面で関数の基本情報(関数名、ランタイム、アクセス権限)を作成しておく

# やり方
– [ ] アップロードするzipファイルを作成する
python3なので、仮想環境を作成する

“`shell:実行コマンド

$ python3 -m venv dev
$ . dev/bin/activate
$ mkdir upload
$ cd upload/
$ pip install –upgrade pip
$ pip install requests -t ./
$ ls -la
total 8
drwxr-xr-x 14 ~ 省略 ~ .
drwxr-xr-x 6 ~ 省略 ~ ..
drwxr-xr-x 3 ~ 省略 ~ bin
drwxr-xr-x 7 ~ 省略 ~ certifi
drwxr-xr-x 10 ~

元記事を表示

1dayでやりきる!スタートアップ向けの少人数CSのコールセンター作り(Amazon Connect + Lambda + Slack)

# TL;DR

社員20−30名の小さいスタートアップでコールセンター設備が必要になったので、それの準備やら用意したもののお話をします。

# 背景

Moff AdventCalender第2号です。Moffで初の取りくみで社内Advent Calenderを実施
しようということで、扱っている人も少ないであろう分野でAmazon Connectを扱った取り組みを紹介しようと思います。(基本的には平日に記事をあげることにしています。少人数なんで。。。w)

「実際使ってみたいけど時間かかって手出すのめんどくさい」みたいな自分でも1日ちゃんと時間作ればできたので、どういう動機付けでやったところから紹介しようかなーと思います。後、基本技術系の記事みると「こういう風にやるといいー」的なHowの要素多めで記述されていることが多いんですが、会社のAdventCalenderなのでもう少しWhyの部分とHowはHowでも技術以外に必要な部分(モチベーションとか、取り組み方みたいな?)ところを少しだけ散りばめて書こうかと思います。(Howに特化して知りたいのであれば他の記事の方がよくかけていてそ

元記事を表示

PycharmでローカルのLambdaをDocker Toolboxで動かす時にデバッグ実行できない事象の回避

PycharmでLambdaのデバッグ実行を行う際に、ローカル環境のDockerが「Docker Desktop for Windows」でなく「Docker ToolBox」の場合、デバッグが行えない現象が発生することがあります。

原因はDocker ToolBoxのフォルダのマウント設定です。
Docker ToolBoxでは初期設定で「C:\Users」フォルダ以外がマウントされません。
しかしデバッグでは “C:\Program Files\JetBrains\PyCharm Community Edition 2019.2.3\helpers\pydev\pydevconsole.py(※フォルダはバージョンによってことなります)”というマウントされてないフォルダのモジュールを使用するので、モジュールの読み込みが行えずデバッグが行えないのです。

回避策としては、モジュールの格納されているフォルダをマウント設定する必要があります。
今回はCドライブの直下をまとめてマウント設定してしまいました。

“`
# ▼VirtualBoxのDockerイメージを停止する、NAMEは

元記事を表示

Site24x7 の API 認証が OAuth 2.0 に変更されたので、アクセストークンを取得してみる。

# 0.はじめに

以下の記事にある様に、サイト監視に [Site24x7](https://www.site24x7.com/) を利用しているんですが…、

* [StatusCake や Site24x7 と同じ様な海外のサイト監視サービスを色々と調べてみた \- Qiita](https://qiita.com/kusokamayarou/items/77e0cba7857a90143694)
* [Site24x7 での API キーの取得のやり方 \- Qiita](https://qiita.com/kusokamayarou/items/e2eec05d8ea2acf43594)
* [kintone アプリで管理しているサイト情報を、Site24x7 と StatusCake に連携させてみる \- Qiita](https://qiita.com/kusokamayarou/items/553f07ed0c904d02d6f1)

先日、以下の様なメールが届きまして…、

* ![FireShot Capture 234 – Site24x7_ Migr

元記事を表示

AWSサーバレス(Python)でWebSocketを使ったWEBチャットを作ってみます!

この記事は NTTテクノクロス [Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ntt-tx)の2日目の記事です。

こんにちは。安田と申します。
NTTテクノクロスでAI関連の新製品開発を担当しています。早速本題からズレますけれども、マンガを描くのが最近の息抜きで、次のようなマンガを描いています。

[マンガでわかるデータ連携](https://www.ntt-tx.co.jp/products/dataspidercloud/manga.html?utm_source=qiita&utm_medium=ac2019&utm_campaign=02)
[マンガでわかるAI時代のエンタープライズ・アーキテクチャ](https://www.ntt-tx.co.jp/column/yasuda_blog/20170413/?utm_source=qiita&utm_medium=ac2019&utm_campaign=02)
[マンガでわかるITストラテジー](https://www.itmedia.co.jp/e

元記事を表示

「Cloud functions VS AWS Lambda」を「お金」と「始めやすさ」で勝手に比較してみた

この記事は「[Google Cloud Platform Advent Calendar 2019](https://qiita.com/advent-calendar/2019/gcp)」1日目の記事です。

# ▶ 対決条件
今回は最近流行りのサーバーレスの中でも「Cloud functions」と「AWS Lambda」の2つがどう違うのかを個人的な観点で勝手に比較してみることにしました!

とはいえ漠然と比較するとしても比較のしようもないので、今回は「 *お金* 」と「 *始めやすさ* 」という2つの軸で調べて比較することにしてみました!

* お金
* 関数に 512 MB のメモリを割り当て、3,000,000 回実行し、毎回の実行時間が1秒間だった場合にかかるお金
* 実行回数が1,000万の月
* 実行時間が100msecの月

* 始めやすさ
* ドキュメントやチュートリアルなどの充実度に限定

# ▶ まずは前哨戦、各種サービスの謳い文句を比較

Cloud Functions
> イベント ドリブンなサーバーレス コンピューティン

元記事を表示

素人がAWSに手を出してみた様子-3

#素人がAWSに手を出してみた様子-3

どうもはじめまして。

前回
[【素人がAWSに手を出してみた様子-2】](https://qiita.com/entakar/items/a77a1448161efc90eb31)
ではEC2でインスタンス作成→とりあえずindex.htmlを表示してみよう
を行いました。

そして第3回は**lambda**

バタバタして前回から更新が大幅に遅くなった。。。だめだなぁ

##lambdaを使ってみよう
まずはサービスから【コンピューティング】→【Lambda】を選択します。

スクリーンショット 2019-12-01 22.56.00.png

オプションを選択しますが、今回は【一から作成】を選択します。
ランタイムは【Node.js】を選択しました。

元記事を表示

lambdaを勉強した①

今更ながらlambdaについて勉強しました。
今回は概要についてです。

#lambdaとは
– サーバーの管理を気にすることなくコードを実行できるサービス
– ほかのAWSのサービスをトリガーにコードを実行できる
– APIのように使うことができる
– 課金されるのはコードを実行した時間と、回数によって課金(月に100万リクエストまで無料)
– デフォルトで使える言語はJava、Node.js、C#、Python、Go、PowerShell、Ruby
– Javaは実行時にコンパイルが行われる関係で速度が遅い
– lambda layerを利用することでほかの言語も使用可能

下記はlambdaのイメージ
API GateWay
![lambda(api).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/369848/3ce8676f-aff0-3c14-c536-f38dd544bc97.png)

S3
![lambda(s3).png](https://qiita-image-store.s3.a

元記事を表示

AWS lambda+scrapyで定期的にサーバレスなスクレイピング その1

初投稿!
本当はサーバレスまで一つの記事に入れたかったけど間に合わなかった・・・。
ということで今回はスクレイピング編になります。

## やりたいこと

定期的に情報が更新されるwebページを自動でスクレイピングしたい!

## 目標
Yahoo!天気(東京)のデータを6時間おきに取得。

## 方法
Python + Scrapy + AWSlambda + CroudWatchEventsあたりでいけそう・・・?

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

### まずはスクレイピングから
以下手順でクローリング、スクレイピング部分を作成。

1. Scrapyインストール
2. Scrapy projectを作成
3. spiderの作成
4. 実行

### 1. Scrapyインストール

“`bash
$ python3 -V
Python 3.7.4

$ pip3 install scrapy

Successfully installed

$ scrapy version
Scrapy 1.8.0
“`

### 2. Scrapy projectを作成
コマンドを

元記事を表示

カフェの注文でいつも焦るので、Reactアプリを作って解決した

## アプリ概要

スタバやドトールなどの主要カフェチェーンのドリンク・フードメニューを店ごとに一覧できるアプリを作りました。

商品名と各サイズの値段が表示され、行をタップすれば公式の詳細ページに飛びます。

## なぜ作ったか

いわゆる「喫茶店」だと席についてからゆっくりとメニューを見られますが、**スタバなんかだとレジの目の前で即断しないといけない**こともあります。

後ろに人が並んでるし、目の前には店員さんもいる・・・。

この状況では**メニューをくまなく見れないし、結局前と同じ無難な注文をしがち**です。

**並んでいる最中にゆっくりと吟味できたらいいのに**と思ったので作りました。

## URL

[アプリはこちら](https://cafe-menu.site/)

[リポジトリはこちら](h

元記事を表示

ASK-CLIのask deployで”request must be smaller than 69905067 bytes for the UpdateFunctionCode operation”というエラーが出た

## デプロイ失敗したときの様子

Alexaスキル開発時、VSCodeにてASK-CLIでask deployしたところ、以下のようなメッセージが出てデプロイに失敗しました。

“`
[Error]: Lambda update failed. Lambda ARN: arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:xxxxxx
Request must be smaller than 69905067 bytes for the UpdateFunctionCode operation
“`

↓VSCodeのターミナルの様子
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/354808/8a084d7d-d476-5f85-066e-ebe3e87bcaec.png)

## 原因調査

調べてみたところ、どうもlambdaにデプロイするファイルが50MBを超過したことが原因では?という結論に至りました。

[コードログ –

元記事を表示

serverless-python-requirements利用時のファイル構成

こんにちわ。Patheeの廣瀬です

`serverless-python-requirements`利用時の
ファイル構成についての情報があまり見当たらなかったので書いていきます

## 状況
会社で`AWS lambda`を利用したAPIを開発している
新規プロジェクトのバックエンドの一部です

## 概要

– 言語は`Python3.7`
– パッケージ管理は`Pipenv`
– `Serverless Framework`を利用して開発・実行・デプロイ
– パッケージは`serverless-python-requirements`を利用してLayer化
– 開発環境はDocker内に構築し、Docker内でローカルテスト(UT等)を実施する

## ディレクトリ構成

“`
root
├── lambda
│ ├── env
│ │ ├── dev
│ │ │ └── resource.yml
│ │ └── prod
│ │ └── resource.yml
│ ├── handler
│ │ └── aaa

元記事を表示

APIGatewayのログのタイムスタンプをLambdaで加工してElasticsearch Serviceに送る

# はじめに
APIGatewayのログをElasticsearch Serviceに送ってKibanaで可視化しようとしたときの手順。
ただ、kibanaで対応しているタイムスタンプの形式がAPIGatewayが出力するタイムスタンプの型と一致していなかった。
そのため、Lambdaでタイムスタンプの形式を変換してKibanaでタイムスタンプとして扱えるようにした。

# 構成
APIGatewayのアクセスログは、Kinesisにしか出力できないため、Kinesisを利用している。
![aaa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478113/4dd31a14-db75-a75c-dbd1-8698667d8c6d.png)

# 手順
1.Lambdaの作成
2.Kinesis Data Firehoseの作成
3.APIGatewayでアクセスログを出力する設定追加
※Elasticsearch Serviceのドメインは作成済の前提

# 1.Lambdaの作成
Lamndaの環境変

元記事を表示

Lambda+APIGateway設定で「CORS の有効化」をオンにしたのにCORSエラーになる

# 「CORS の有効化」をオンにしたのに
## ハマりポイント
APIGateway設定で「CORS の有効化」をオンにしているのに,
> Access to XMLHttpRequest at ‘https://xxxxxxx.execute-api.ap-northeast-1.amazonaws.com/xxx/xxxx’ from origin ‘http://xxxxx’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

とエラーが返ってくる.
## 解決策
Lambdaのreturnのヘッダーに以下のように,Access-Contraolについて書かなきゃダメだった.

“`json
return {
‘isBase64Encoded’: False,
“headers”: {
“Access-Control-Allow-Origin”

元記事を表示

Flutterで作ったアプリから入力した電話番号あてにAWS SNSからSMSの送信をする方法(ざっくり)

# Flutterで作ったアプリから入力した電話番号あてにAWS SNSからSMSの送信をする方法

## やりたいこと

入力された電話番号あてにPINを送信したい!

## 使うもの

“`
AWS
| DynamoDB
| API Gateway
| Lambda
| L Node.js 12x
L SNS
Flutter
L http 0.12.0+2
“`

## DynamoDBの準備

PINコード保存用のテーブルを作成します。

“`json
“pin”: {
“user_id”:””,
“pin”:””,
“ttl”:”” //TTL設定
}
“`

## Lambdaの準備

SMSの送信は “`publish()“`を使うことで簡単に送ることができます。

“`js
const AWS = require(‘aws-sdk’);
const sns = new AWS.SNS();
const documentClient = new AWS.DynamoDB.DocumentClient();

exports.handl

元記事を表示

AWS Lambda のタイムアウト発生時に別の Lambda 関数を起動し、元の Lambda 関数の処理内容を取得する

#はじめに
こんにちは。はじめまして。
最近、AWS で本番稼働する時のことをかんがえるようになりました。
Lambda の負荷テストをしていると、タイムアウトが発生して「コマッタ…」となった時のことを書いてみます。

#Lambda タイムアウト 15分問題

Lambda ってタイムアウト時間設定しなくちゃいけなくて、最大 15分しか設定できないんですよね。
(参考)
https://aws.amazon.com/jp/blogs/news/aws-lambda-timeout-15min/

で、15分以上処理しちゃうと、CloudWatch にタイムアウトのログを出すだけ… と。

まあ、Lambda に重たい処理をさせるな!ということでしょうけど、
もう作ってしまったし… なんとかできないものか…
せめて、ユーザに処理できなかったことを伝えられないものか…

#対策

ちょっと調べてみると、色々と対策はある模様。

– [タイムアウトでエラーとなってしまったLambdaのリカバリを行うLambdaを作成してみました](https://dev.classmethod.jp/se

元記事を表示

Github ActionsでLambdaにデプロイする

## TL;DR
以下の要件の実装備忘録です。
– GitHubでreleaseが作成された時、Lambdaにコードを反映させバージョンを更新する

## サンプルディレクトリ構成
“`
some-lambda-function-repo
├── .github
│   └── workflows
│   └── lambda-cd.yml
├── README.md
├── bootstrap
└── handler.sh
“`

### GitHubのSecretsに以下を設定
– `AWS_ACCESS_KEY_ID`
– `AWS_SECRET_ACCESS_KEY`

必要なPolicyに関しては割愛します

## Github Actions

“`lambda-cd.yml
name: Lambda Continuous Delivery

on:
push:
tags:
– ‘*’
jobs:
lambda-cd:
runs-on: ubuntu-latest
steps:
– uses:

元記事を表示

[awscli] lambdaのコード(zip)をダウンロードする

“`
func=your-lambda-function-name
url=$(aws lambda get-function –function-name ${func} | jq -r ‘.Code.Location’)
curl -o lambda.zip $url
“`

元記事を表示

OTHERカテゴリの最新記事