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

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

Cloud 9 + lambdaでbot作成 ーpart2

# はじめに
本投稿ではpart1から引き続きlambdaを定期実行してTwitter APIを叩き、
AM10時(JST)につぶやくbotを作成します。
ここでは下記を実施します。
・Cloud9の環境構築
・bitflyer APIをAWS Lambdaで叩いてみる
・Cloud9からAWS Lambdaをデプロイする

# Cloud9環境構築
Cloud9はGUIでファイル編集ができるうえ、
Linuxコマンドラインを実行できる。

AWSコンソール > Cloud9
から新規インスタンスを構築

cloud9にはもともとpython3.6がインストール済み。
下記から確認

“`
python –version
“`

# Lambda ファンクション作成
右ペインのAWS Resourcesからlocalにlambda functionを作成
(name bottest)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/627775/8fa83b8a-b803-2914-

元記事を表示

AWSのEC2サーバーをLambdaを使って自動起動

#目的:EC2サーバーの自動起動&停止でコストダウン
 AWSを使用することが多くなってくると、運用コストが気になってきます。他(社)のクラウドサービスと異なり、AWSは基本的には従量制です。インスタンス(CPU)やストレージ(ディスク)、トラフィックのデータまでほとんどのサービスが使った量・時間に対して課金されます。
 EC2インスタンスは停止すれば課金されない(正確にはストレージや固定IPアドレス等は停止中も課金される)ので、使わないときはEC2インスタンスを停止しておき、使用時のみ起動して立ち上げる仕組みを、AWS Lambdaを使って構築します。

 弊社ではソーシャルゲームを開発・運用していますが、イベント実行時には普段の十数倍のアクセス集中や負荷があります。AWSではオートスケール機能もありますが、あらかじめ予定されているのであれば時間前にサーバーを追加しておくのが安全です。
また、 バッチファイル実行やログ収集を夜中や早朝に行う場合などにも、必要時のみ起動できればコスト削減に役立つでしょう。

#AWSドキュメントの参照
 AWSを解説したサイトは多いですが、Lambd

元記事を表示

AWS-Lambda + PythonでCSVデータをAWS-S3に書き込む

# AWS-Lambda + PythonでCSVデータをAWS-S3に書き込む

## はじめに

`Mac環境の記事ですが、Windows環境も同じ手順になります。環境依存の部分は読み替えてお試しください。`

### 目的

この記事を最後まで読むと、次のことができるようになります。

| No. | 概要 | キーワード |
| :— | :———– | :———— |
| 1 | コーディング | Python, boto3 |
| 2 | Lambda設定 | Lambda |

### 実行環境

| 環境 | Ver. |
| :————- | :—— |
| macOS Catalina | 10.15.3 |
| Python | 3.7.3 |
| boto3 | 1.11.17 |

### ソースコード

実際に実装内容やソースコードを追いながら読むとより理解が深まるかと思います。是非ご

元記事を表示

CodeCommitのイベントから自動でSonarQubeのプロジェクトを設定するLambda関数のSAMテンプレート

# 前提条件
いろいろごちゃ混ぜなことをしてしまったので、以下の前提。
Lambda, Python, SAMはセットみたいなものだから、ごちゃ混ぜのようでそんなに敷居は高くないか。

– Pythonをちょっと書いたことがある
– SAMテンプレートをちょっと書いたことがある
– Lambdaのイベントハンドラまわりの仕様をそれなりに理解している
– CloudWatch Eventsをなんとなく知ってる
– SonarQubeをなんとなく知ってる

# いきなりIaC
マネージメントコンソールの画面ポチポチで作るのは面倒なので、いきなりSAMテンプレートを書いて追って解説をする。
こんなPythonのコードをインラインで書くなよ……というツッコミはしない。
あと、どう考えてもこれはStepFunctionsで実装した方がカッコイイ気がするけど、SAMでまとめてデプロイとかできなくて面倒なので、一旦このかたちにする。

本題のSAMテンプレートは以下。

“`YAML
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::Serv

元記事を表示

API GatewayにおけるセッションIDの固定化攻撃の危険性について

# API GatewayにおけるセッションIDの固定化攻撃の危険性について

この記事は、 [すごくなりたいがくせいぐるーぷ GWアドベントカレンダー](https://gw-advent.9wick.com/calendars/2020/87)最終日の記事です。

## はじめに

CookieのDomain属性について調べていたら、ふと
「APIGatewayのエンドポイントって`amazonaws.com`のサブドメインだから、Domain属性で`amazonaws.com`指定してCookieセットできんじゃね?」
と思ったので検証してみました。

要するに、都道府県型jpドメイン・地域型jpドメインのクッキーモンスターバグのようなことが`amazonaws.com`でも起こってしまうのではないかということです。
※クッキーモンスターバグについては徳丸先生の[こちらの記事](https://blog.tokumaru.org/2013/03/csrf-and-cookie-monster-bug.html)をご覧ください。

また、[RFC6265の8.6](https:

元記事を表示

AWS-Lambda + PythonでAWS-RDS/PostgreSQLのテーブルを読み込む

# AWS-Lambda + PythonでAWS-RDS/PostgreSQLのテーブルを読み込む

## はじめに

`Mac環境の記事ですが、Windows環境も同じ手順になります。環境依存の部分は読み替えてお試しください。`

### 目的

この記事を最後まで読むと、次のことができるようになります。

| No. | 概要 | キーワード |
| :— | :———– | :————— |
| 1 | コーディング | Python, psycopg2 |
| 2 | Lambda設定 | Lambda |

### 実行環境

| 環境 | Ver. |
| :————- | :—— |
| macOS Catalina | 10.15.3 |
| Python | 3.7.3 |
| psycopg2 | 2.8.4 |

### ソースコード

実際に実装内容やソースコードを追いなが

元記事を表示

【Node.js】JTW生成処理をSAMで作る

[前回の続きです。](https://qiita.com/Shu3/items/edacbfbea4b1b6aaf877)
Zoom会議をSlackをお知らせするアプリにてZoom APIに必要なJWTを生成する処理をSAMで作成しました。(下図の赤枠)
時間ができたらやりたいと思っていましたが、思ったよりすぐやっちゃいました。さすがStayHome週間(笑)
※本記事ではSAM,SAM-CLIなどの詳述は割愛します。ご了承ください。
スクリーンショット 2020-05-06 11.28.57.png

# SAMを始める

[公式](https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/server

元記事を表示

AWS-Lambda + Python + CronでWEBスクレイピングを定期的に実行する

# AWS-Lambda + Python + CronでWEBスクレイピングを定期的に実行する

## はじめに

`Mac環境の記事ですが、Windows環境も同じ手順になります。環境依存の部分は読み替えてお試しください。`

### 目的

この記事を最後まで読むと、次のことができるようになります。

| No. | 概要 | キーワード |
| :— | :—————- | :————————————– |
| 1 | コーディング | Python |
| 2 | WEBスクレイピング | Selenium,chromedriver,headless-chromium |
| 3 | Lambda設定 | Lambda |

### 実行環境

|

元記事を表示

AWS Lambda関数コードの参照とダウンロードをブロックする方法

# Lambda特有の情報漏洩リスク
AWS Lambdaベースのサーバレスアプリケーションならではの情報漏洩リスクとして、AWSマネジメントコンソールまたはAWS CLI経由で関数のコードが漏洩したり、zipファイルごとダウンロードされるケースが考えられます。

AWS CodeCommit等リポジトリ側の情報漏洩リスクに比べて、Lambda関数 (Function) 自体の情報漏洩リスクは言及すらされずに放置されるケースが多いようで、以下に備忘を兼ねてまとめてみました。

# 対応策
IAMユーザが上記の操作をしてもブロック (拒否) するためには、以下のIAMポリシーを設定します。

“`json:IAMPolicy
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Sid”: “DenyDownloadLambdaFunctionCode”,
“Effect”: “Deny”,
“Action”: “lambda:GetFunctio

元記事を表示

Puppteerでキャプチャ画像を取得 part2

## 概要
エンジニアもどき2年目に入りました。色々あって以下を行うLambda関数を作成することになりました。
色々学びがあったので備忘録がわり兼アウトプットのために書くことにしました。

1. 特定のページのキャプチャ取得
2. 取得したキャプチャをS3に保存
3. S3に保存したURLをDyanmoに記録

part2では`2. 取得したキャプチャをS3に保存`の実装とデプロイまで行います。
part2での実装内容は[こちら](https://github.com/syu-y/puppeteer-capture/tree/part2)

## 前提

[前回(part1)](https://qiita.com/yimi_getu/items/4c0dca38f8f55e8e6d3d)の続きです。part1に引き続き以下の準備は完了している前提です。
前回(part1)の実装内容は[こちら](https://github.com/syu-y/puppeteer-capture/tree/part1)

– nodejs
– ServerlessFramework
– yarn

元記事を表示

LINEBotをみんなで作ろう〜AWSアカウントを作るぞ編〜【GWアドベントカレンダー6日目】

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

1週間でサーバレスLINEBotを生み出す( @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/35fab5b7901aa94fafd2)をご覧になってない方はぜひ。
こちらの記事はGWアドベントカレンダーを通してLINEBotをサーバレスで作れるようになろう!ということを目標に書いている記事です。

LINEBotは作れるけどAWSでサーバーレスを作ってみたい!方向けの記事です

昨日の記事で複雑な処

元記事を表示

Puppteerでキャプチャ画像を取得 part1

## 概要
エンジニアもどき2年目に入りました。色々あって以下を行うLambda関数を作成することになりました。
色々学びがあったので備忘録がわり兼アウトプットのために書くことにしました。

1. 特定のページのキャプチャ取得
2. 取得したキャプチャをS3に保存
3. S3に保存したURLをDyanmoに記録

part1では`1. 特定のページのキャプチャ取得`の実装とデプロイまで行います。
part1での実装内容は[こちら](https://github.com/syu-y/puppeteer-capture/tree/part1)

## 前提
以下の内容が出てきます。インストールなどの準備は完了している前提です。

– nodejs
– ServerlessFramework
– yarn
– webpack
– iamのユーザ作成済み

## 実装作業
### 1. 準備
フォルダとテンプレートの作成をします。

“`zsh
mkdir puppeteer-capture
cd puppeteer-capture
serverless create –template

元記事を表示

【Python】Zoom会議をお知らせしてくれるサーバーレスアプリ【#StayHome】

テレワークが基本となった近頃、Zoomを使ったWebミーティングも多くなったのではないでしょうか?
ぶっちゃけ私は別のコミュニケーションツールを使うことが多いのですが、Zoomの利用が急激に増加している昨今、これを手動で毎日操作して運用していくのもそれなりに不都合や煩わしさがあるんだろうなあ〜みたいに想像しています。

そこで、Zoom会議を自動で作成してくれて、URLを勝手にSlackに通知してくれる機能なんてあったら嬉しくない?と思い、簡単ではありますがそれらしいものを作ってみました。

# アプリの全体構成

今回のアプリはAWS上で構築しています。基本方針としては、全力でサーバーレスを活用し、疎結合で変更に強いアーキテクチャを意識すること。自分の学習的目的が強いですが。

## ***アーキテクチャ***

アーキテクチャは↓のような形で設計しました。中途半端で申し訳ないですが、今回は赤枠の範囲を実際に構築しています。やり切れてない範囲は時間を見つけて、改めてやりたいところですが。。。

元記事を表示

[AWS Step Functions] RDSを常時起動すると高いので、使う時だけStepFunctionとLambdaを使って自動起動できるようにした

# 概要
運用環境でない場合、AWS RDSを常時起動していると、コスト高になってしまうと感じたため、必要な時のみ起動するようにしました。RDSのスナップショットを保存しておき、コンソールから手動で立ち上げても問題はないですが、AWSのサービスを使ってみたい思いもあり、他サービスとの連携してボタン一つで完了するように試してみました。

# 手順
初めに、RDSのスナップショットを作成。
次に、RDSを操作するLambda関数の作成。
最後に、Lambda関数のコールを行うStepFunctionsの作成。
を行います。

## (1)RDSのスナップショット作成
 対象となるRDSのスナップショットを作成します。
今回は、Amazon AuroraのPostgreSQL互換性のものでクラスターを生成、クラスター内にインスタンスを1つ作成したものを対象のRDSとします。
スナップショットはRDSのページから作成することが可能です。
※クラスターのスナップショットを生成すると、RDSのデータも合わせて保存されます、クラスター内のインスタンスに対してスナップショットを取得する必要はありませ

元記事を表示

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

元記事を表示

OTHERカテゴリの最新記事