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

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

DynamodbをLambdaからSQLっぽく操作する

# 説明の前に

pipのモジュールを利用する方法は、下記の記事を参考にさせていただきました。
ありがとうございました。

【Python】AWS Lambdaで外部モジュールを使用する
https://qiita.com/SHASE03/items/16fd31d3698f207b42c9

# 1.準備
LambdaにPipのモジュールを持ってくる必要があるため、ローカルにDQLモジュールをインストールする。

プロジェクトフォルダ内で、下記

“`sh
$pip install dql -t ./
“`

# 2. ソースコード
ファイル名は`lambda_function.py`

“`python
import dql
def lambda_handler(event, context):
engine = dql.Engine()
engine.connect(region=”us-west-2″)
results = engine.execute(“DELETE FROM tablename WHERE tm >= 1420071600 A

元記事を表示

AWSサーバレスでSPARQLエンドポイントを構築(Apache Jena編)

AWSサーバレスでSPARQLエンドポイントの構築を試してみた第2弾です。
第1弾はこちらです。

AWSサーバレス環境でSPARQLエンドポイントを作ろうとしたが上手くいかなかった話
https://qiita.com/uedayou/items/bdf7a802e27fe330044e

前回は利用したライブラリの関係で検索速度に難があり限定した用途であれば使える、という感じでした。
今回はRDFストアとしては実績がある[Apache Jena](https://jena.apache.org/)を使ってみました。

## 環境

– [AWS Lambda](https://aws.amazon.com/jp/lambda/)
– [Amazon API Gateway](https://aws.amazon.com/jp/api-gateway/)

前回と同じくAWS Lambda+API Gatewayという構成です。
Apache Jena は

– [jena-core](https://jena.apache.org/documentation/rdf/index.h

元記事を表示

Lambda関数をCodeCommitで管理する

# 概要

Lambda関数のコードを、Gitでソース管理したい。

↓こんな感じでできるんじゃないかと。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185989/d5eb8e57-be50-ee8e-4b03-070e356e30bc.png)

データの流れはこんな感じ↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/185989/02b9681c-db84-9547-710d-76eab46eabaa.png)

# 登場人物

AWSSDKで、ソースを外から突っ込む系は以下のコマンドでできるみたいです。

– [Lambda.createFunction](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Lambda.html#createFunction-property)
Lambda関数の属性値(メモリ・

元記事を表示

【lambda】インスタンスの状態を取得してlambdaでslackへ通知する

# 概要
インスタンスを立ち上げてテストしたあと、よく停止し忘れるのでlambdaでEC2/RDS/ElastiCacheの状態を確認し、不要なインスタンスが起動中であればslackで通知する処理を作る
(強制停止だと不味い場合があるので通知だけ)

# フロー
CloudWatchEventのスケジュール -> lambda実行

# 前準備
lambda実行用に以下のポリシーがついたロールを用意
・AmazonEC2ReadOnlyAccess
・AmazonElastiCacheReadOnlyAccess
・AmazonRDSReadOnlyAccess

# コード

“`
import boto3
import json
import urllib.request

ALLWAYS_RUNNING_EC2_INSTANCE_ID_LIST = [
‘i-hogehoge’, # hogehoge
]
AS_INSTANCE_NAME_LIST = [
‘auto-scale-instance-name’,
]
ALLWAYS_AVAILABLE_RDS_I

元記事を表示

LambdaのIP固定

実行毎に変わるLambdaのIPを固定。
呼び出し先のAPIにIPをホワイトリスト登録するなどで利用。

## 構成図

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406130/b3ee9513-b85e-63fc-a15f-e068edcb559a.png)

## 環境

1. VPCを1つ用意する。
2. サブネットとルーティングテーブルを2つずつ用意し、それぞれアタッチする。
3. インターネットゲートウェイを作成し、VPCにアタッチ
4. パブリックサブネットのルーティングテーブルの`0.0.0.0/0`をインターネットゲートウェイに向ける。
5. EIP確保、NATゲートウェイ作成、プライベートサブネットのテーブルの`0.0.0.0/0`をNATに向ける。

## Lambdaの作成/配置

1. IAMロールの作成。ポリシーは`AWSLambdaVPCAccessExecutionRole`
2. Lambda作成。
3. LambdaコンソールのVPCを編集し、上記

元記事を表示

[AWS] SAM + Lambda(Python)で、PythonライブラリをLayerに追加して利用してみる

# SAMのインストール
「[[AWS] Serverless Application Model (SAM) でAPI Gateway + Lambda + DynamoDBなサンプルを作成してみる](https://qiita.com/herohit-tool/items/5b0fe520f6f28fb5b4bc)」を参照ください。

なお、今回のサンプルに限っていうと、DynamoDBをローカルに持つ必要はないので、Dockerのインストールは不要です。

# プロジェクトの作成
では、例によって、HelloWorldベースのプロジェクトを作成していきましょう。

“`bash
$ sam init –runtime=python3.8
Which template source would you like to use?
1 – AWS Quick Start Templates
2 – Custom Template Location
Choice: 1

Project name [sam-app]:

Cloning app templates from htt

元記事を表示

[AWS] CodeStarを使うと、Lambdaで動作するSpring(Java)のプロジェクトをたった3分で構築できるのです!!

# CodeStar
AWS CodeStarは、アプリケーションを迅速に開発・デプロイすることができるための環境を構築することができます。
いくつかのテンプレートが用意されており、マネジメントコンソール上からポチポチと選択していくだけで、開発プロジェクトが構築できてしまいます。

## 構築される環境

– コードリポジトリ(CodeCommitと、GitHubを選択可能)
– CodeBuilde環境
– CodePipeline環境
– アプリケーション
– IDE(Cloud9選択時)

## 料金
CodeStar自体は料金は発生しません。
CodeStarによって構築されるコードリポジトリや、パイプライン、デプロイされたアプリケーションに係るリソース使用料のみです。

## 注意事項
リージョンに東京リージョンを選択すると、IDEにCloud9を選択することができません(2020年8月現在)。
今回はCloud9で環境を構築したいので、リージョンにバージニア北部(us-east-1)を選択することとします。

# 環境構築手順
まずは、マネジメントコンソールで、サービスよ

元記事を表示

S3で色々お試しして遊んでみる(VPCエンドポイント&静的Webホスティング性能編)

# はじめに
S3。単なるマネージドでサーバレスなバックエンドストレージなだけでなく(いや、それだけでも充分すごいんだけど)、暗号化できたり、セキュアアクセスができたり、ファイルの中身にクエリ発行できたり、ウェブサイトのホスティングができたり、イベントトリガになったり、なんだか色々できてすごいぞ!

これを使い倒さずに、毎回「とりあえずバケット作っておくか」な使い方をしているだけではもったいない!

ということで今回は、色々ある機能の内、VPCエンドポイントと静的Webホスティングの機能について触れてみる(いずれもさわりだけなので、たいした検証にはなっていないのだが……)。

# VPCエンドポイント
VPCエンドポイントの詳細は[公式](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-endpoints.html)を見てもらうと良い。
要するに、S3のAPIはインターネットに口を向けているので、何も考えずにVPCからaws cliを実行したりすると、インターネットを通ってしまう。内部通信をしたいのに!というときに利

元記事を表示

【AWS】Amazon SNSからHTTP/Sで通知する時、エンドポイントでやることを調べた

# はじめに
Amazon SNSを使ってHTTP/SでAPIを叩いていきます。
ここでは各AWSサービスの説明は省きます。
AWS超初心者です。

# 目的
– Amazon SNSからHTTP/SでAPIを実行する。
– Amazon SNSからWEBAPIを実行するとき、エンドポイント(受信側)でやることはなにか調べる。
(記事がほとんど見つからなかった)

# 構成
今回は、APIはAPIGateway + Lambdaで用意。
![amazon_sns_image.dio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/395395/ada46e8f-8a2d-d9db-7858-875a73b593ef.png)

# エンドポイント(受信側)でやること
[AWSの公式ドキュメント](https://docs.aws.amazon.com/ja_jp/sns/latest/dg/sns-http-https-endpoint-as-subscriber.html)を見たら、やることは大きく分

元記事を表示

AWSサーバレスで(SPAではなく)画面遷移型のWebアプリをつくる

# 経緯
AWSサーバレスを採用してWebアプリ(画面)を作ることになりました。コンシューマ(一般ユーザ)向けの画面ではなく、企業向けの管理画面です。

メンバーの皆さんにReactとかを学んでいただく時間的な余裕はなかったため、SPAではなく、メンバーの皆さんに経験のある「画面遷移型」の構成にしました。

ただ、AWSサーバレスで画面遷移型のWebアプリを作る、という事例を見つけることができず、実現方式をあれこれ考える必要がありました。構成が固まるまでに悩んだことや、自分なりの解を記事にすることで、同じようなことに悩まれている方のヒントになればと思ってます。

# アーキテクチャ

スクリーンショット 2020-08-08 21.04.25.png

ポイントは以下のとおりです。

* Lambdaでは[aws-

元記事を表示

Nuxt.jsをAWS Lambdaで動かす。【TypeScript編】

# 概要

vue.jsのサーバサイドレンダリングで行う[Nuxt.js](https://ja.nuxtjs.org)をAWS Lambda上で動かしてみます。あくまでも試験的に試すことが目的の記事です。もし,本番サービスでの導入する場合には慎重な議論をお願いします。

なお、この記事は以前私が書いた[Nuxt.jsをAWS Lambda上で動かす.サーバレス・サーバサイドレンダリング](https://qiita.com/hiroyky/items/ff955af81df67c30b852)をTypeScriptでも実現できるようにしたものです。JavaScriptで書きたい人はリンク先を参照して頂きたいと思います。なお、内容自体はこの記事単体で完結します。

# 構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73358/db485ca9-f538-85aa-09c9-119db83f8e0c.png)

– AWS Lambdaでnuxt.jsを可動させる
– API Gat

元記事を表示

FlutterとAWSで始めるサービス開発 (8)Cognitoの認証情報を使ってAPIを呼び出す

# はじめに
「[(5)AWS Cognitoでログイン](https://qiita.com/makotomi/items/a0b05e8819270072780b)」や、「[(7)AWS Cognito Googleでログイン](https://qiita.com/makotomi/items/e7ee81006a9505d468a0)」で、Cognitoを使ったログイン処理を一通り実装完了しました。今回はそれら認証情報がないと呼び出せないAPIを実装していきたいと思います。前回まででCognito ユーザープールからID Tokenを取得するところまではできています。APIを呼び出すために、ID Tokenを要求し、それを検証してから実行するAPIを作っていきます。つまり、ログインした場合だけサービスのAPIを呼び出せるというモデルを実現するための構成です。認証した上でさらに特定の権限を持っているユーザーだけが利用できるといったAPIも考えられますが、今回はそこまでは踏みこみません。

# 参考文献

– 公式サイト
– [サインイン後に API Gateway および La

元記事を表示

【今日から始めるAWS】LambdaでLINEのbotをつくる

#はじめに
30代未経験からエンジニア転職をめざすコーディング初学者のYNと申します。お読みいただきありがとうございます。
コーディング初学者にとってのAWS入門といえば`Lambda`!、サーバレスアプリを作ろう!、ということでメッセージをオウム返ししてくるLINEのbotをつくりました。
下記参考記事をそのままコピーした内容になってしまったのですが、学習ログとして投稿させていただきました。

* [LambdaではじめてのLINE Botを作る](https://dev.classmethod.jp/articles/lambda-line-bot-tutorial/#toc-2)
* [AWS Lambdaを使ってLINEBotを作ってみよう!](https://qiita.com/shinbunbun_/items/ae09364504002d0c25f1)

#今回やったこと
下記のように、こちらが送ったテキストメッセージをそのまま返答してくれる、オウム返しbotを作ります。
スクリーンショット 2020-08-08 11.16.4</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Node.js</div>
<div class='tag-cloud-link'>AWS</div>
<div class='tag-cloud-link'>初心者</div>
<div class='tag-cloud-link'>lambda</div>
<div class='tag-cloud-link'>linebot</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/theFirstPenguin/items/8168e8ba3d65e34c24e0'>元記事を表示</a></div>
<h3 id=AWSサーバレス環境でSPARQLエンドポイントを作ろうとしたが上手くいかなかった話

個人的に[SPARQLエンドポイント](https://ja.wikipedia.org/wiki/SPARQL)を作るときに、運用やメンテナンスが楽になればということでサーバレスでSPARQLエンドポイント作れないかと思い、AWSのサーバレス環境での構築に挑戦してみました。

結論から言うと、ちゃんと動きましたが、期待してたよりもうまくいきませんでした。

一応今回使ったコードは以下で公開していますが、利用される場合は以下を最後まで読まれることをお勧めします。

## 環境

– [AWS Lambda](https://aws.amazon.com/jp/lambda/)
– [Amazon API Gateway](https://aws.amazon.com/jp/api-gateway/)
– [Amazon Cloudfront](https://aws.amazon.com/jp/cloudfront/)

Lambda と API Gatew

元記事を表示

毎朝5時にGoogle Formに自動回答したい

みなさんこんにちは。夏ですね。
僕もついに部活動が再開し、ワクワクドキドキな訳ですが、一昨日の夜顧問からこんな連絡がきました。

“`
– 毎朝5時20分までに検温を行い、結果をGoogleFormから報告してください
– 報告がなかった部員は朝練の参加を認めません
“`

そもそも朝練が6時半から始まる時点でイッているので5時20分に連絡しろと言われてもさほど驚かなかったのですが、ここで一つ問題が発生しました。
というのも僕は普段朝5時に起き、そのままパンをかじりながら自転車で駅に向かうので、検温をする時間がないのです。もう少し早起きすれば済む話なのですが、4時起きは流石にきついし体がもたないのでやりたくない。かといって5時に起きて検温なんかしていたら朝練そのものに遅れてしまう。

というわけで、朝5時くらいに、心配されない程度の体温をよしなに指定のFormに入力して送信してくれるプログラムを作りたいと思います。

## Seleniumでフォームを送信する
本物のフォームを使ってやると僕の身元がバレてしまうので、今回は[テスト用に僕が作成した本物と同じ内容のフォーム](http

元記事を表示

AWS SAMとStepFunctionでAthenaの集計処理を自動化する

AWS SAMを見ていたら `AWS::Serverless::StateMachine` というStepFunctionのコンポーネントがあったので、それを使ってAthenaの集計処理を実装してみた。
実際は集計期間に応じて処理を分岐してリトライ間隔など調整できるようにしたが、ここではシンプルにした。

# 余談:VSCode + AWS Toolkit

`*.asl.json` ファイルを編集するとlintやグラフの描画をリアルタイムに行ってくれるので便利だった。
できれば `Fail` タスクはもっと軽く扱って欲しい。

![vscode+stepfunction](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379/6021521f-0099-c585-5e66-cbfecdb37f51.png)

# やりたいこと

下記の5タスクをステートマシーンにした。
この処理を週次/月次で実行する。

1. 集計期間の計算
1. Athenaへのクエリー
1. クエリー進捗の確認/待機
1. クエリー結果の

元記事を表示

AWS CDKでurl短縮サービスをサーバーレスで作ってみた

長い長いリンクを共有する際に短縮したいねということがあったので、いろいろ調べた結果、いくつかのチュートリアルが見つかりました。
[AWS Cloud Development Kit(CDK)でURL短縮サービスを作ってみた](https://dev.classmethod.jp/articles/implement-url-shorten-service-with-aws-cdk-python/)
[自社で使えるURL短縮サービスを低コストにサーバーレスで構築した話](https://engineer.retty.me/entry/2019/05/31/120000)
一旦後者のチュートリアルで作成したものの、CloudFrontのカスタムドメイン設定がどうにもうまくいかなかったのとコンソールをポチポチするのに嫌気がさしたので、前者のチュートリアルをベースにカスタマイズするという結果になりました。

# 作成の流れ
* aws cdkのセットアップ
* CloudFormationのstackの作成
* カスタマイズ

# cdkセットアップとチュートリアル
[AWS CDKとは](h

元記事を表示

Amazon CloudWatchロググループ保持期間をAWS Lambdaで管理しよう

こんにちは、stremapackのrisakoです。
長い梅雨が明けて夏がやってきましたね:sunny:
コロナに気をつけながら、マスクで熱中症にならないようにもっと注意が必要ですね:mask:
今年の夏は体調管理に気をつけて過ごそうと思います。
#今回したいこと
今回のテーマは「Amazon CloudWatchロググループ保持期間をAWS Lambdaで管理しよう」です!
Amazon ECSやAWS Lambda(以下Lambda)を使っていると、Amazon CloudWatch(以下CoudWatch)にログが溜まり続けてしまいます。
しかも、CloudWatch LogGroupの保持期間はデフォルトで「失効しない」に設定されるため、永遠にログが残り続けてしまい金額も増えてしまいます。今回は、金額を少しでも抑えるために、新規作成されたロググループの保持期間を自動で「1ヶ月」に変更する仕組みをLambdaで入れてみたいと思います!

#今回のアイテム
– IAM role
– IAM policy
– Amazon CloudWatch LogGroup
– AWS Lam

元記事を表示

【AWS】API Gateway Lambdaオーソライザー「User is not authorized to access this resource」エラーの原因と対応

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/312085/322187ad-6ff5-1eb3-5044-8c2e12891a23.png)

上記のようなAPIGatewayで構築したAPIにLambdaオーソライザーを適用した際に、正しい認証情報、正しいAWSリソースへのアクセス権限を設定しているにも関わらず「**User is not authorized to access this resource**」エラーが発生することがあります。
本記事ではその原因と対応を記載します。

## 原因
**Lambdaオーソライザーから返却される認可情報のキャッシング**が原因です。

以下のようなアクセスポリシーを返却するコードを記述した際に発生します。

“`node.js

statementOne.Action = ‘execute-api:Invoke’;
statementOne.Effect = ‘Allow’;
// ↓ 以下のアクセス承認するリソースを

元記事を表示

Zoomのミーティング入退出のwebhookをLambdaで受け取るAPIの下調べをした (1)

会社のハッカソンでZoomのAPIを使ったサービスを作ろうとしているので、その下調べを行った。

# Zoom API 認証

使えそうなものとして、JWT トークンか OAuth 2.0 が用意されている。
すぐに使えるJWTトークンは画面に表示されるものを使った。

会社のco.jp ドメインで登録されているzoomユーザーは、会社アカウント配下にあり、その場でJWTトークンを取得することができなかった(appの作成権限がなかった)ため、別途個人のGmailでユーザーを作って appを作成し、JWTトークンを入手している。

# Webhook のURLを用意する

お手軽に API Gateway + Lambda のAPIを作る事ができるフレームワークである **Chalice** を選択した。手間のかかる権限周りの設定もAPI Gatewayの設定もほとんど意識することなく、関数を書いて deployコマンド一発で諸々をデプロイしてくれるのでとてもお手軽です。

Chalice
https://github.com/aws/chalice

デプロイされたら、REST AP

元記事を表示

OTHERカテゴリの最新記事