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

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

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 を呼ぶアプリケーションを作りました。(画像クリックで開きます)

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 のプロキシ機能が登場しました ?

StepFunctionsの入力方法サンプルメモ集

# メモ

## 前提
### 検証用Lambdaファンクション
引数を出力するだけ

“`ruby
require ‘json’

def lambda_handler(event:, context:)
puts event
puts context
{ statusCode: 200, body: JSON.generate(‘Hello from Lambda!’) }
end

“`

## InputPath

StepFunctionsの実行の入力のうちで、Lambdaファンクションにわたす引数を抽出する。

### ステートマシン定義

“`json
{
“Comment”: “test”,
“StartAt”: “Hello”,
“States”: {
“Hello”: {
“Type”: “Task”,
“Resource”: “arn:aws:lambda:ap-northeast-1:xxx:function:inputparameter-test”,
“InputPath”:

元記事を表示

Provisioned Concurrency for Lambda Functions ちょっと試してみた。

AWSの一番好きなサービスはAWS Lambda な人です。

re:invnet 2019真っ最中で、量子コンピューティングサービス出てきたり、EKS for Fargateとか出ている中で、Lambdaのアップデートがいくつかありました。
その中で、過去の経緯上、個人にちょっと熱かった
[Provisioned Concurrency for Lambda Functions](https://aws.amazon.com/jp/blogs/aws/new-provisioned-concurrency-for-lambda-functions/)
についてやってみたので、所感のメモです。
※リンクは日本語でたら変えるかも

例によって、クラスメソッドさんが速報を上げてくれているので、こちらも

[[速報]コールドスタート対策のLambda定期実行とサヨナラ!! LambdaにProvisioned concurrencyの設定が追加されました  #reinvent | Developers.IO](https://dev.classmethod.jp/cloud/aw

元記事を表示

re:Invent 2019 – Lambda Provisioned Concurrency やってみた

## Provisioned Concurrency とは
Lambda のコードスタート対策として、CloudWatch Events から定期的に Lambda を呼び出すという処理を、一般機能として提供されます。

## 前提条件
– **$LATEST** バージョンに設定できない
– **エイリアス** か **バージョン** の設定が必要
– 無料枠に適用されない

## どう設定する
Lambda の設定画面で設定できます

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/5b62a02c-91bc-2446-f910-3490139fdcb0.png)
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/44983f90-c15d-3d97-5186-e77f541c762b.png)

## 料金設定 (東京リージョン)
||Price|
|—|—|
プロビジ

元記事を表示

ECSタスクの終了ステータスを見てLambdaを発火させる

LIFULLでSETとしてテスト自動化やCI/CDの改善をやってます。
弊チームの自動テストはECSタスクで実行しています。
その自動テストの運用改善の一環で調べたことを書き綴ります。

# 自動システムテストのアーキテクチャ

下記の流れでテスト実行・テスト終了通知を行っていました。

Scheduled task(定時実行)

ECS Run task(自動テスト実行)

Cloudwatch Rules(ECS Taskの完了を検知)

Lambda(チャットツールへ通知)

# 要求・要件
従来のままだとテストがすべてPassしても通知が来てしまいました。
ある自動テストプロジェクトの際に「テストがFailしたときだけチャットに通知させたい」という要求が生まれました。
よく考えれば当たり前の要求です。(たまたま私達の運用ではいらなかった)

要件に落とし込むと
「ECS Run taskで実行したテスト実行コンテナの終了ステータスが異常値の場合だけLambdaを発火させたい」
となりました。

# やったこと①:ECSイベントを調査

ECSタスクはある状態から別の状態に

元記事を表示

本当にあったAWSでやらかした話と対策?

# 概要
みなさんこんにちは?
「[フォトリ](https://photream.com/)」という家族写真の撮影サービスを運用している会社でCTOをしてるカイトズズキと申します。

この記事では、先日会社のAWSで割と高額の請求が来てしまい?死にたくなる思いをしたので、そのお話についてしていきます。

AWSは便利だけど、お金使いすぎたりしないか不安になりますよね。
特に僕はそんなにAWSには詳しくない人間なので、なおさらドキドキです。

この記事を通して、僕がやっちまった失敗をみなさんに知ってもらい、
同じような失敗をする人が1人でも減ることを祈ってます?

# やらかした話
### やらかしレベル
まず、結果としてどれくらいやらかしたかと言うと、
普段の使用料金以外に、
– `Lambda` で **10万円** くらい
– `S3` で **30万円** くらい
の請求が来てしまいました、、、

普段は数万円程度で2つのWebサービスを運用しているため、
最初に気づいたときは驚きすぎて理解に苦しみました、、、笑

なお、結果的に `Lambda` の方はAWS様にご返金いただき

元記事を表示

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

# がいよう
[社内slackにVIPチャンネルを作った話](https://qiita.com/peisuke/items/80984db8b47cd8243019)

上記エントリが面白かったのでchatwork版を作りました。

# やりたいこと
– 匿名チャンネルと、発言するbotアカウントを用意する。
– botアカウントで[Chatwork Webhook](http://developer.chatwork.com/ja/webhook.html)を使う。
– WebhookをAWS API Gatewayで受け取り、Lambdaを発火する。
– Lambdaから[Chatwork API](http://developer.chatwork.com/ja/endpoint_rooms.html#POST-rooms-room_id-messages)を使いbotアカウントで匿名チャンネルへ発言する。

やっていきましょう

# Chatworkをやる
匿名チャンネルと、発言するbotアカウントを作ります。
匿名チャンネルには一緒に遊びたいユーザーを全員追加して

元記事を表示

らくらく?スタートアップ用片手間手抜き分析プラットフォーム作り(BigQuery+Tableau)

# TL;DR

入社当初、社員10-20名の小さいスタートアップでプロダクトのデータをもろもろまとめたい、ディレクター職や何か数値をまとめたいときに簡単に低予算、手間かけないで分析基盤を用意したことをおさらいします

# 背景

Moff AdventCalender第4号は私が入社してすぐに取り掛かったことで、低予算+抵工数の分析基盤作りについて紹介します。どういう変遷だったか詳しくは覚えていないんですが、Moffが介護事業所や医療機関に提供するサービスでは、MoffBandを装着したユーザーが、あるトレーニング・動作を実施することで、そのトレーニング結果・動作結果(可動域の角度や速さ、回数、腕振りの腕の向きデータや歩行のバランスにまつわる数字データetc)を記録しております。
また、初期ローンチを少人数でカバーするために当時Serverless(API Gateway + Lambda + DynamoDB、ところによりKinesis Data Stream)にてプロダクトをリリースしてたので、ユーザーデータ含め、運動動作にまつわるデータは全てKVS(DynamoDB)で管理され

元記事を表示

【AWS】RustでServerlessFrameworkを使ってみる

この記事は Rustその2 Advent Calendar 2019 12/3 の記事です。

以前ブログでも書いたのですが、今回はRustを使ってServerlessFramework用のプロジェクトを作るための最小限のことだけ書いていきます。

## 環境構築
### Rust
||バージョン|
|—|—|
|rustc|1.41.0-nightly|
|rustup|1.20.2|
|cargo|1.41.0-nightly|

### ServerlessFramework
||バージョン|
|—|—|
|yarn|1.19.2|
|serverless|1.58.0|
|serverless-rust|0.3.7|

### Rustインストール

“`bash:console
curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh
“`

`.profile`にPATHが更新されるので確認して、読み込みます。

“`bash:console
$ cat ~/.profile

元記事を表示

【サーバレス機械学習入門】AWS Lambda レイヤーの使い方

## はじめに

これは[機械学習ツールを掘り下げる by 日経 xTECH ビジネスAI③ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/machine-learning-02)の1日目の記事です。

12/20に記事を書こうと思っていたのですが1日目が埋まっていなかったので突貫工事で記事を書きました。

私はAWS Lambdaが大好きなので、Lambdaで機械学習するノウハウを書いていこうと思います。

本記事では**Lambda関数でPandasなどの外部ライブラリを使う方法**をまとめておきます。[^ase]

[^ase]: 1日目がこんなんでいいのか…?

## これまでのAWS Lambda

これまでのAWS Lambdaでは、外部ライブラリを用いる場合[^built-in]

– Lambda関数のソースコード
– ライブラリのソースコード

これらをZipファイル(デプロイパッケージ)にまとめてアップロードする必要がありました。

[^built-in]: [組み込み関数](https:

元記事を表示

TerraformでLambda(Cron起動)を構築する

# はじめに
Lambdaのバッチ実行をCloudWatch Evnetと組み合わせて使うことがよくあると思いますが、
今回はその設定をTerraformを使って構築してみたいと思います。

# 事前準備
Terraform, aws-cliのインストールをお願いします。

“`bash
brew install terraform
brew install awscli
“`

ちなみに私の環境は下記のようになっています。
macOS Mojave 10.14.6
Terraform 0.12.6
aws-cli 1.16.21

# フォルダ構成説明
“`
.
├── main.tf        →Mainファイル
├── variable.tf      →変数定義ファイル
├── terraform.tfvars   →外部変数設定ファイル
├── lambda_src  →Lambdaソース置き場
│   ├── handler.py
│   └── requirements.txt
└── modules        →AWS各サービスモジュール

元記事を表示

社内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 ~

元記事を表示

サーバーレスCrystalのための自作Custom Runtimeを改良した話

みなさんCustom Runtimeしてますか?
確かLambdaの新機能としてCustom Runtimeが発表されてから大体一年くらい経ちましたね。
私は[去年のアドベントカレンダー](https://qiita.com/qazx7412/items/5054331183f8655f541c)で壮大に渾身のネタを潰されたのでよく覚えています。
今qiitaなどで[検索をかけてみる](https://qiita.com/search?utf8=✓&sort=created&q=”custom+runtime”)と直近ではphp勢が目立つ感じですかね?
まあRubyが対応してしまった今となっては人口の多くてLambdaを使いたいような言語のうち対応してないのはphpくらいでしょうしね。

あれから発表当時作ったCrystal用のCustom Runtimeでいくらか開発をしてきて私のLambdaやCrystalへの理解に合わせて更新していってもはや見る影もなく変わってしまったので更新版について適当に書いていこうと思います。
あ、基本的にServerless Frameworkを使うのを

元記事を表示

OTHERカテゴリの最新記事