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

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

Amazon API GatewayとAWS LambdaでつくるインタラクティブなSlackAppその1(Slash Command)

GitHub Organizationの管理をしているのですが、運用が少し面倒なのでなんとかできないかといろいろ考えています。
今回はチャットボットでの運用を導入できないかと考えて検証してみたのでまとめました。
(いろいろな制約により残念ながら実用には至ってません。)

今回の記事ではSlackAppにおける機能として`Slach Command`を利用しています。

また、この記事では以下の要素を利用して、SlackAppを構築するための基本的な部分を実装していますが、
個々の要素の具体的な利用方法や言語の実装についてはあまり触れません。

– Amazon API Gateway
– AWS Lambda (Golang)
– CloudFormation (AWS SAM)

# TL;DR

SlackとAWSを利用して対話型なインターフェイスを作成するサンプルを作りました。
以下のアニメーションにある`コマンドで呼び出し → 選択肢の応答 → ボタン押下による応答 → メッセージ書き換えによる応答`の流れのうち、選択肢の応答までを説明しています。

以下のような動作をします。

元記事を表示

S3 × Lambda × Cloudwatch Eventsで、簡単にバッチ処理の監視機構を導入する

コンニチハ。川野です。

[Fusic Advent Calendar 2019 – Qiita](https://qiita.com/advent-calendar/2019/fusic) 7日目の記事です。
昨日は [@ya_ma23](https://qiita.com/ya_ma23) による [Rustでcsvを読み込みDBにインポートする](https://qiita.com/ya_ma23/items/58cdbb96099c339d70bd) でした。
最近よく目にするRust、気になる存在です。

—————-

さて本日は、簡単に導入できるように設計・実装したバッチ処理の監視機構について紹介します。

本記事は「一日一回 **決まった時刻に** 動く処理が、何らかの理由で失敗していたことを検知したい」という方向けです。

# 概要
アプリケーションサーバ上で、毎朝1回決まった時刻にcronによって実行されるphpファイルがあります。
当然、毎朝このファイルが実行されないと困りますね。
そこで、ファイルの実行に失敗したことを検知し、システム管理

元記事を表示

AWSで近くの避難場所を通知してくれるLinebotを作ってみた

#はじめに

 本記事は[「あなたを死なせないためのプログラミング」](https://qiita.com/yossymura/items/b19d08235bdb44f06ae8
)に感化され,自分もほぼ同じシステムをバックエンドとしてAWSを使って構築することを目的にしました.システムの詳細な内容は元記事も参考にしてください.

 また私も災害対策や避難誘導の一助になるようなシステムを作りたいと思い,「ドローンを活用した災害避難勧告システム」や「スマートスピーカーを利用した避難勧告システム」についての記事も公開を予定していますのでそれも合わせて見ていただければと思います.

# 対象読者
– 実際に動くシステムを作ることを目的にしていて,作って学びたい方
– LINE botの開発がしたい方
– バックエンドとしてAWSを使いたいAWS†初学者†の方

# 製作物
【AWS・Lambda】Python外部ライブラリ読み込み方法

# 概要
 AWS lambdaでは初期状態でpandasやnumpyなどの外部ライブラリを読み込むことはできません.読み込ませる方法は二つあって,一つ目はインストール済みのライブラリと実行ファイルをまるっとzipファイルにまとめてlambdaにアップロードする方法,二つ目はlambdaでLayerとして読み込ませる方法です.後者の方法がおすすめですが,本記事ではこれらの方法をコード管理の面と合わせてTipsとしてまとめました.

# 環境
MacOS Catalina
docker 導入済み
AWS CLI 導入済み

# はじめに
 lambda開発をブラウザ上で行うのはコード管理の面でよろしくないのでローカルで開発できるようにします.つまりgitHub管理できるようにローカルで作業を行いコードの変更を随時lambdaにアップロードするという形を取ります.
 ということで[docker-lambda](https://hub.docker.com/r/lambci/lambda/)を使用してデプロイ環境つくりました.(使用する場合はcloneしてください)
https://gith

元記事を表示

AWS Lambda関数を非同期で呼ぶ場合の動きを改めて確

### はじめに
2019年11月から12月5日までに発表されたAWS Lambdaに関する新機能の中で、以下の二つを取りあげて構成方法とテストした結果についてまとめたいと思います。
1. [AWS Lambda Supports Destinations for Asynchronous Invocations](https://aws.amazon.com/jp/about-aws/whats-new/2019/11/aws-lambda-supports-destinations-for-asynchronous-invocations/)
(非同期呼び出し時の結果出力先を指定できるようになった件)
2. [AWS Lambda Now Supports Maximum Event Age and Maximum Retry Attempts for Asynchronous Invocations]
(https://aws.amazon.com/about-aws/whats-new/2019/11/aws-lambda-supports-max-retry-attempts

元記事を表示

AWS Chaliceでchalice localしているかどうかを判定する

# はじめに
AWS上で[API Gateway](https://aws.amazon.com/jp/api-gateway/)と[Lambda](https://aws.amazon.com/jp/lambda/)を使ってWEBサービスを作るときに便利なPythonフレームワークの[AWS Chalice](https://github.com/aws/chalice)。便利ポイントの一つが、`chalice local`コマンド一発で、手元のPC(ローカル)にWEBサーバが立ち上がって、AWS上で動かすものと同じものが動いてしまう、というところ[^1]。テストとデバッグがめちゃくちゃ捗ります。

# 課題
という便利な`chalice local`なんですが、ローカルで動かしていることをコードで判定する直接的な方法が無さそうだったので、考えてみました。
*きっかけは、[実施例](#実施例)にも示したとおり、AWS上で動かすときとローカルで動かすときでログのフォーマットを変えようとしたことです[^2]。*

# 解決方法
以下でできます。環境変数を活用します[^3]。

– cha

元記事を表示

Rust Runtime for AWS Lambdaの実行ファイルをWindows環境ビルドしたんだけど・・

# Rust Lambda のビルド

Rustを勉強するついでにあえてWLSを利用せずにWindows環境でRust実行環境の構築と
Lambda with Rustを構築してみたんだけども・・

## やりたいこと

AWS Lambdaで実行可能なbootstrapファイルをビルドできる環境を構築したい。

できれば、WSL環境が許されない現場でもどうにかしてビルドできる環境できないか
確認したい。

## 今回の動作環境

* Windows 10
* Rustインストール(rustup-init.exe)
* VSCode, rls extensionsインストール済み
* Windows 10 SDK, dev toolsをインストール済み
* Docker on Windowsインストール済み

##### 参考

[AWS Blog:Rust Runtime for AWS Lambda](https://aws.amazon.com/jp/blogs/opensource/rust-runtime-for-aws-lambda/)

#### Rustプロジェクト

元記事を表示

サーバーレスに触れる

# はじめに
APIGateway、Lambda、DynamoDBを使って
簡単なサーバーレスアプリケーションを作成して
サーバレスに触れてみようと思います。
自分用の備忘録として記述しようと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510859/c91bc177-ba4d-dd2e-acc0-c51ea8e9b578.png)

# 1.DynamoDBを作成
DynamoDBの説明は[こちら](https://www.slideshare.net/shimy_net/amazon-dynamodb-23315068)を参考にしてみて下さい。

## テーブル作成
コンソール画面からDynamoDBの画面に移動します。
そして[テーブル作成]をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510859/53079572-e15b-36ee-0137-9c829

元記事を表示

lambroll & GitLab CI/CD Pipelineを使ってみた

## Lambdaのコードだけ入れ替えしたい

サーバーレスが気になって夜も6時間しか眠れないサーバーレス気になる人間「ながの」です。

AWSでサーバーレスと言えばAWS Lambdaですよね。みなさん、AWS Lambda使ってますか?

Lambdaを使っていると`コードだけ入れ替えたいなあ`ってときありますよね?

基本的にはAWSリソースはCloudFormationで管理していますが、ちょっとしたコードの変更なのにCloudFormation動かしたくないですね。CloudFormationを動かした事でリソースが予期せぬ変更をする可能性もないとは言えないですし。

でも都度都度CLIでやるのも面倒ですし、コードをコピペして書き換えるのはもっといやですよね。

じゃあどうすればいいんだー!?

ってことで`lambroll`を使ってみました。

## lambrollとは?

[GitHub – fujiwara/lambroll: lambroll is a minimal deployment tool for AWS Lambda.](https://github.c

元記事を表示

Zappaでサーバーレスアプリケーションを作成するための最初の1歩

[近畿大学 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/kindai)の8日目を担当することになり、QiitaではCSGの夏のAdventCalendar以来、2つ目の投稿になります。今回は、Zappaってのを使うと気軽にAWS Lambdaベースのサーバーレスアプリケーションを運用できるぞというお話です。学生向けに書いてますので、話が逸れるところが少しありますがご了承ください。

### サーバーレスアプリケーションとは
一昔前までは、ウェブアプリケーションのようなクライアント・サーバ型のアプリケーションを開発するときは、サーバマシンというものが必要で、さらにその中でサーバプログラムを動かすために、例えばApacheのようなウェブサーバや、TomcatのようなJava Servletコンテナと呼ばれるミドルウェアを設定してするのが一般的でした(ちょっとネタが古い?)。
サーバーレスアプリケーションとは(サーバーレスコンピューティングとも言いますね)、そういったサーバーのインフラ整備を一切気にすることなく、プ

元記事を表示

知識ゼロからSlackで匿名チャンネルを作ってみた話

#はじめに
AWSの知識もLambdaの知識もPythonの知識も全くない状態でSlackに匿名チャンネルを作ろうと四苦八苦したときの備忘録。

#きっかけ
Advent Calendarに誘われQiitaで何か記事書かないと…と考えてきた時に
>社内slackにVIPチャンネルを作った話
>https://qiita.com/peisuke/items/80984db8b47cd8243019

この記事を読んでこれは面白そうだ自分が参加しているSlackにも導入してみたい!と軽い気持ちで手を出したのが悪夢の始まり。
全く知識なくてもコード書いてあるしこれ使えば簡単に導入できると思ったんです。

##botの作成
貼られてるSlack APIのサイトからSlack botの設定をすればいいんだね。
ふむふむbot作るの初めてだけどこれくらいフィーリングでわかる。
設定も書かれてるしこの通りに設定完了!

##最初の躓き(Lambdaの準備)
次は順番通りにLambdaの準備…Lambda…Lambda…って何?
>色々な所に解説が乗っているので、Lambda+API Gatewayの

元記事を表示

API Gateway 経由で Lambda 呼び出して CORS ではまったのでメモ。

## 概要
Vue.js から API Gateway 経由で Lambda 関数を呼び出したら CORS のエラーが出てはまったので書きます。状況としては、Vue.js で axios の get を使用して、認証ありの API Gateway 経由で Lambda 関数を呼び出したら、console に “Access to XMLHttpRequest at ‘< API の URL >‘ from origin ‘< フロントの URL >‘ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.” というエラーが出ました。ちなみに、API Gateway で CORS の有効化は既に行なっている状況でした。

## CORS を有効化
念のため、CORS を有効化するところから書きます。詳しい方法は AWS 公式ドキュメントの [こちらのページ](https://docs.aws.amazon.com/ja_jp

元記事を表示

1ヶ月〇〇○円で速度改善!?事業でも個人開発でも導入できる画像リサイズのAPI

この記事は[Ateam Brides Inc. Advent Calendar 2019](https://qiita.com/advent-calendar/2019/a-t-brides) 6日目の記事です。

3日目に続きまた書きます[@fussy113](https://qiita.com/fussy113)です。

今回は実際に担当をしているWEBサービス、[HIMARI](https://hi-ma-ri.net/)で行なった簡単速度改善のお話です。

少し前の話にはなりますが、速度改善の一貫として画像のリサイズ、CDNサービスに利用したキャッシュをAWSサービスのみで実装しました。

# この記事のターゲット

– ページスピード改善を目指すエンジニア
– 一つのやり方として参考にしてなれば!

# システムの構成

導入したHIMARIはRailsで作られています。
active_storageを利用して一部画像をS3は置いてあります。

画像のリサイズ、CDN利用により、どれほどの効果が見込めるのかの検証をするため、ミニマムに一部分だけ導入を進めることとなりました

元記事を表示

lambda pythonで制限時間に引っかかった時にやったこと

## はじめに
昔のLambdaは制限時間が5分で、batch系の処理なんかでは制限時間をオーバーして異常終了したりしていました
またAPI Gatewayから起動されるLambdaが「もっと速く出来ないの」って言われたりもします
その時の対応内容を紹介します

エンジニアですので、数値を持って語るべきなのですが、前職での実行内容だったり、手元に環境がなかったり、この記事のためだけに環境を作るのは諸々の事情で憚られますので割愛します

## ちょっと寄り道

レスポンスで問題が出た場合は、まずprofileを取る訳ですが、私がいつもやる方法も念の為記しておきます

#### 対象ライブラリ

“`
import cProfile
import pstats
“`
cProfileだけでprofileは取れますが、取得結果をソートするためにpstatsも使います

#### 測定開始
cProfileをインスタンス化して、測定の有効化

“`
pr = cProfile.Profile()
pr.enable()
“`

#### 測定終了と結果確認
profileを無効化してソ

元記事を表示

DynamoDBのデータをGlue, Athena, Lambda, QuickSight を使って分析の定期実行

## はじめに

アプリ開発では、使用状況を可視化したいという要求がよくあり、
事前に運用を想定して分析しやすいようなデータベースへのデータ格納にすることができていればよいのですが、最初はスピード優先やミニマムに開発してといったプロジェクトの場合、
JSONデータをスキーマレスで格納してしまうといったことがあるかと思います。

その場合、通常はDBからデータを取得して、
ログイン回数やUU数、アプリの各種イベントの状況、ゲームの達成状況など、
分析用に加工処理して出力する部分のプログラミング開発が必要かと思います。

Glueを使えば、DBからのデータ抽出部分のプログラミングが不要になり、
Athenaを使えば、分析用の加工をSQLで行え、
QuickSightを使えば、表示用のWebフロント側をプログラミングする必要がない、
ということで、やってみました。

——————–

## DynamoDBのデータを分析できるようにするには

AWS Glueを使用してDynamoDBテーブルからデータを抽出し、Amazon AthenaでSQLクエリを使用して分

元記事を表示

Slackで動的なユーザグループを作成しようと試行錯誤した物語

この記事は [JSL \(日本システム技研\) Advent Calendar 2019 \- Qiita](https://qiita.com/advent-calendar/2019/jsl) の12月6日の記事です。 昨年のカレンダーは[こちら!!](https://qiita.com/advent-calendar/2018/jsl)

## TL;DR

* Slackで動的なユーザグループがあると便利そう
* `@here` みたいな
* Slackの `usergroups.users.update` APIを使うと行けるのでは?
* `Chalice` (Python)と `AWS Lambda` 使って定期実行したらできた
* できたけど問題が発生したので辞めた
* 用途にあってるのか技術検証大事

## 前置き

弊社は歴史が古いながらも、「コアタイムなしのフルフレックス&リモートワーク推奨」な自由な働き方を売りにしている会社です。
出社時間はみんなバラバラですし、3割ぐらいはリモートワーカーです。よって、オフィスを構えているものの全員が出社することは稀です。

元記事を表示

簡易的な社内向けAtlassian製品のクラウドサービスを構築してみた話

私の所属している[リックソフト株式会社](https://www.ricksoft.jp/)では、Atlassian製品をはじめとしたツール製品の販売を行っています。

今回、製品を購入検討中のお客様向け評価環境提供や、社内向けの検証環境として使える、簡易的な社内向けAtlassianサーバ製品のクラウドサービスを構築してみました。(当社が提供している[リッククラウド](https://www.ricksoft.jp/cloud/rickcloud/)とは別のものです)

社内では「インスタできる君」と呼ばれているもので、今回はこの社内向けクラウドサービスについて、技術的な内容を含めながらご紹介します。

## 概要
Atlassianのサーバ製品を、Web上から簡単に作成して利用できるシステムです。
本システムを利用することで、お客様への評価環境や、社内向けの検証環境を、数分で準備することが出来ます。
次より、具体的な環境作成の流れを説明していきます。

## アプリケーション環境作成の流れ

フロントエンド(管理画面)から「追加」をクリックします。
![image.png](h

元記事を表示

サーバーレス将棋 AI – WebSocket 編

Web ブラウザからクラウド上の将棋 AI を呼ぶアプリケーションを作りました。
https://d3iczbzr06u2at.cloudfront.net/

Serverless_Shogi_DEMO.png

将棋 AI が [伝説の ▲52 銀](https://book.mynavi.jp/shogi/detail/id=88815) を発見する瞬間を、ブラウザで体験できます!

# 背景

三年前、[サーバーレス将棋 AI ☖](https://qiita.com/na-o-ys/items/b04ce27732c82b6beb9b) という記事を書きましたが、あれから

元記事を表示

【Python用】AWS Lambda Layerへのアップロードファイルをササッと作る

# 前提
Dockerを利用して、Lambdaで使うPythonライブラリのLayerアップロード用zipを作る。
手順はrequestsをzipにする場合のサンプル。

# 手順

ホストOSで、ライブラリを使うバージョンのPythonコンテナにアタッチする。

“`sh
$ docker pull python:3.8
$ docker images
$ docker run -itd ImageID bash
$ docker attach ContainerID
“`

コンテナ側では、pipでライブラリを取得し、zipにまとめる。

“`sh
$ apt-get update & apt-get install zip
$ mkdir python & pip install requests -t ./python
$ zip -r upload.zip python
“`

「Ctrl + p, Ctrl + q」でコンテナから抜け、コンテナからホストにzipをコピーし、コンテナを終了させる。

“`sh
$ docker cp ContainerID:/roo

元記事を表示

【待望リリース!】もう Lambda×RDS は怖くない!LambdaでRDSプロキシを徹底的に検証してみた 〜全てがサーバレスになる〜

本日の reinvent でのリリースで衝撃のアップデートがたくさん出ましたね。EKS on Fargate や SageMaker の大幅アップデートも魅力的ですが Lambda の常識をくつがえす RDS のプロキシ機能が登場しました ?

OTHERカテゴリの最新記事