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

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

TABLE 形式の Aurora(MySQL 互換)スロークエリログを Elasticsearch Service (6.8) に取り込み S3 に保存するメモ(Lambda Python 3.8 版)

こちらは、

– **[TABLE形式のAurora(MySQL互換)スロークエリログをElasticsearch Service (6.0/6.2) に取り込みS3に保存するメモ](https://qiita.com/hmatsu47/items/8c92b1a43fd412c054cf)**

の Elasticsearch Service 6.8 / Lambda Python 3.8 対応化メモです。

1 ヶ月ほど前に、

– **[ALB のアクセスログを Elasticsearch Service 6.8 に取り込むメモ(Lambda Python 3.8 版)](https://qiita.com/hmatsu47/items/432b1f18f40bba16f5d1)**
– **[CloudFront のアクセスログを Elasticsearch Service 6.8 に取り込むメモ(Lambda Python 3.8 版)](https://qiita.com/hmatsu47/items/e61e1065ba521896225c)**
– **[Ela

元記事を表示

serverless framworkでLambda+APIGatewayをdeployする

## はじめに
アプリケーションを Lambda にデプロイする際どんな方法を使用しているだろうか?
AWS SUM ,code deploy と使用してきたがコマンドを複数回叩かないといけなかったりとちょっと面倒臭かった。
そこで最近自分の周りで話題になっている serverless framwork を試してみる。
何やらコマンド一つでビルド・デプロイを行ってくれたりとかなり便利らしい。
スクリーンショット 2020-02-09 11.34.10.png

## Serverless Framework インストール
以下のコマンドを実行し Serverless Framework をインストールする。

“`
$ npm install -g serverless
“`

> ローカル端末で Serverl

元記事を表示

AWS Lambdaでslackに新着論文通知

# TL;DR

AWS Lambdaを用いてMicrosoft Academicで新着論文を検索してSlackに通知するツールを作った。

# はじめに

研究室等のSlackに新着論文通知出せたら便利ですよね。

以前はjournalのRSSを使ってましたが、あまり関係ない論文が飛んできてイマイチ機能していなかったので自分でフェッチツールを作ることにしました。

(実際、皆さんどうしてるんでしょうか)

通知を出すだけなので、[AWS Lambda](https://aws.amazon.com/jp/lambda/)や[Azure Functions](https://azure.microsoft.com/ja-jp/services/functions/)といったサーバーレスアーキテクチャを用いれば非常に安価で簡単に構築できます。

今回はAWS Lambdaを用い、また論文検索には[Microsoft Academic](https://academic.microsoft.com/home)のAPI、[Academic Knowledge API](https://doc

元記事を表示

AWS Lambdaと仲良くなれるかもしれないまとめ

– AWS Lambdaに関してざっとまとめてます
– 具体的な使い方ではなく、サービスの位置付けや概念に関してまとめています

## 概要
[AWS Lambda とは](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html)によると

>AWS Lambda はサーバーをプロビジョニングしたり管理する必要なくコードを実行できるコンピューティングサービスです。
>
>AWS Lambda は必要時にのみてコードを実行し、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケーリングします。使用したコンピューティング時間に対してのみお支払いいただきます- コードが実行中でなければ料金はかかりません。
>
>AWS Lambda では、管理を全く必要とせずに、任意のアプリケーションやバックエンドサービスで仮想的にコードを実行できます。AWS Lambda は、高度な可用性のコンピューティングインフラストラクチャでコードを実行し、サーバーとオペレーティングシステム、システムのメンテナンス、容

元記事を表示

apacheからS3に静的ページを移行してパス補完で詰まった話

# 何を書いた記事か

AWS S3を用いて静的ページをホスティングする際のTipsです。
特に、apacheなどで配信されていた静的ページをS3に移行する際に使えると思います。

apacheなどのMWがよしなに解析してくれていたURI PathをS3を用いたホスティングでどのように実現するかについて記載します。

# ストーリー

とあるWebサイトのクラウド移行案件を進めることになりました。
そのWebサイトには、静的コンテンツ(HTML/CSS/JavaScript)のみで構成されたLP(静的ページ)が存在することがわかり、せっかくクラウドに移行するので、信頼性の高いS3から配信するようにしようと考えました。
また、対象のLPは接続できるIPに制限をかける必要があり、その実現についても考える必要がありました。

## As-Is

– apacheで静的ページを配信
– LoadBalancerでSSLを終端し、FirewallでIP制限を実施
– アクセスログはapache→fluentdで取得

## To-Be

– 静的コンテンツはS3上に配置
– SSL通信を実現する

元記事を表示

AWS Lambdaでカナリアリリースする

# LambdaのVersionとAlias
AWS LambdaではPublishすると固有のVersion番号が割り当てられる。
Versionには任意の名前のAliasをつけることが可能で、Aliasに関連付けるVersionを変更することで、Aliasを指定してFunctionを呼び出しているユーザが利用するVersionを変更することができる。
![Lambda_Version_Alias.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13038/02427f6b-9a54-a781-62a1-0305578379c9.png)

# Additional versionを用いて、新しいVersionをカナリアリリースする
Aliasには Additional versionというオプションが存在し、主として指定したVersionとは異なるVersionとその呼び出し割合を指定することができる。
Additional versionの有無や呼び出し割合は任意のタイミングで変更ができ、新しいVe

元記事を表示

「セキュアで堅牢なAWSアカウント」を実現する CloudFormationテンプレート – ④アクセスキーのローテーションと削除

# はじめに

AWSには、アカウントやリソースへの脅威検知に対応した、**AWS IAM Access Analyzer**, **AWS Security Hub**, **Amazon Inspector**, **Amazon GuardDuty**, **AWS CloudTrail**, **AWS Config** などのサービスが用意されています。

また、[**CIS AWS Foundations Benchmark**](https://d1.awsstatic.com/whitepapers/compliance/AWS_CIS_Foundations_Benchmark.pdf) という**セキュリティガイドライン**が公開されており、このガイドラインは、**AWSアカウントをセキュアに保つために必要なAWSのセキュリティ設定**を集めた**ベストプラクティス集**として活用できます。自身のAWSアカウントがこのガイドラインにどの程度準拠しているのかを確認/監査する手段として、**AWS Security Hub**で、**CIS AWS Foundation

元記事を表示

【Slack】インタラクティブメッセージについて

この記事の内容は[この](https://api.slack.com/messaging/interactivity)公式ページを参考に作成しました。

SlackのインタラクティブメッセージはSlackアプリを強力なワークフローパートナーになりうる物です。

# メッセージ内アプリの対話性
[Block Kit](https://api.slack.com/messaging/composing/layouts#adding-blocks)を利用してリッチなメッセージレイアウトを作成する事ができます。
また、Block Kitには、インタラクティブ機能を有効にするコンポーネントも含まれています。
これらの対話型コンポーネントを利用して、単純な情報通知アプリから、ユーザー向けの強力なパートナーアプリを作成できます。

## Block Kitに含まれるインタラクティブ機能
– ボタン
– リスト選択
– 複数選択リスト
– オーバーフローメニュー
– 日付ピッカー
– プレーンテキスト入力フィールド
– ラジオボタン

# インタラクティブメッセージの使用方法

## Lambdaの作

元記事を表示

特定のタグを含むツイートに英訳をつけてインスタに投稿したかった

## やりたかったこと

**特定のタグを含むツイートに英訳をつけてインスタに投稿したい**
なんでこんなことをしようとしたのか。
2019年6月からPS4でFF14をやっていまして、あるツイートをしたところ、
ちょっと反響がありました。
d0dfa62c-4f40-9e98-e63c-e2730f1f5a27.jpeg

2020年になり、せっかくなら毎日投稿しようと思い、1月から日々投稿しています。
ただし、TwitterのアカウントがFF14以外のことをツイートしていること、
インスタ界隈も盛り上がっていることから、FF14用のアカウントをインスタで作成し、
インスタで投稿を始めました。

ところが、インスタでは外国人のアカウントが多数。
もっと見てもらうには、英訳も必要なのです。

元記事を表示

S3にCSVファイルがアップロードされるとLambdaがDynamoDBへデータを挿入します

#概要
S3へjsonファイルがアップロードされるとLambdaがそのファイルの中身を解析して、DynamoDBへデータを挿入します。

#jsonファイルの構成
`data`キーに配列があり、配列の要素はオブジェクトとなっています。

“`json
{
“data”: [
{
“item1”: “sample data1”,
“item2”: 123,
“item3”: “test data1”
},
{
“item1”: “sample data2”,
“item2”: 1234,
“item3”: “test data2”
},
]
}
“`

#主な流れ

1. S3へファイルがアップロードされるとLambdaが起動
2. アップロードされたファイルの中身を取得
3. `data`キーから配列を取得
4. 配列を`forEach`で各要素をDynamoD

元記事を表示

今日から始めるSAM CLI【API Gateway + Lambda + DynamoDB】

## SAM CLIでAPI Gateway + Lambda + DynamoDBを使う

AWSでのサーバレス構築を考えた時に最も無難でポピュラーな構成(悪く言えばあまり面白みのない)として挙げられる、

– API Gateway
– Lambda
– DynamoDB

の構築を、SAM(Serverless Application Model) で行います。

## 書くこと
1. SAM CLIでプロジェクトの作成
2. SAMプロジェクトのデプロイ
3. SAMプロジェクトを修正してDynamoDBにテーブルを作成
4. SAMプロジェクトの更新

## SAM CLIでプロジェクトの作成

まずSAM CLIをインストールします。

[Installing the AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html)

“`
$ sam –version
SAM CLI,

元記事を表示

LambdaでS3オブジェクトに独自メタデータの追加・更新を行う

# はじめに

LambdaでS3オブジェクトを制御したかったので、オブジェクトに独自のメタデータ(ユーザ定義メタデータ)を追加・更新して対処した。
本文では、ユーザ定義メタデータについて、実際のソースと実行結果について記す。

# ユーザ定義メタデータとは

Content-Lengthなどのオブジェクトの追加情報を`メタデータ`という。
メタデータには2種類あり、主にAWSシステム上で制御される`システムメタデータ`とユーザが独自で定義できる`ユーザ定義メタデータ`がある。
今回はファイルの上書き回数(メタデータ名を`x-amz-meta-count`とする)をユーザ定義メタデータとして定義する。

# Lambdaソース

下記LambdaをCloudWatchEventsなどをトリガーとして実行する。
指定したバケット、ディレクトリ配下のファイルを取得し、そのファイルのメタデータに`x-amz-meta-count`がなければ追加する。
あれば、メタデータの値を+1する。
最後に追加更新した内容でファイルを上書き(copy_object())する。

“`python

im

元記事を表示

AWS LambdaのNode.jsのランタイム更新時確認手順書

なかったんで用意しておきました。まだ本番環境でサポート期限間近のランタイムを使っている人は参考にしてください。
※当時はNode.js 8.10系が対象でした。

## TL;DR
– AWS Lambdaのランタイムの更新はダウンタイムがないので本番環境への適用もサービス稼働中でOK
– ランタイム更新時の動作確認は推奨
– 更新はAWSがランタイムサポートポリシーで定めている日付より前に実施する

## 手順
1. 本番環境以外の環境で本番環境にデプロイされている資源と同じものをデプロイする
2. デプロイした環境のLambdaのランタイムを上げる
3. 動作確認を実施
4. 問題なければ本番環境(ST環境 → 本番環境の順番でも)のLambdaのランタイムを更新する

## 気になるところ

#### 廃止(更新)をすぎても更新可能なのか
これについてAWSサポートに問い合わせてみました。
AWSサポート内の過去事例として、廃止(更新)以降でもランタイムの移行(サポート対象バージョンへの移行)が可能だった例があったそうですが、ドキュメントにも明記がないように、それが必ずしも可能と

元記事を表示

[Node.js]Google Cloud Functionsでimport/exrpot構文を使う

#Overview

フロントエンドはReact、バックエンドはNode.jsで作っていると、どちらでも利用する処理はソースコードを共有したくなります。
別の記事でesmというパッケージを知り、Google Cloud Functions(以降、GCF)でもimport/export構文を使いたくなりました。
GCFのフレームワーク内で動くから厳しいかな?と思っていたのですが、至って簡単だったので残しておきます。

#Target reader

– JavaScriptとNode.jsでソースコードを共有したい方。

#Prerequisite

– バックエンドはGCFを利用する、つまりNodeの起動オプションを指定するようなことはできない。
– Node.jsのバージョンはGoogle Cloud Function(GCF)に依存し、現時点ではV10系とする。

#Body

##どうしてimport/export構文にするの?

私のPJの場合、バックエンドで作成した機能をフロントエンドで実行するかも?という機能がいくつかあります。
そうなるとどちらも同じJSだし、フロント

元記事を表示

Lambdaにライブラリを乗せるときにLayersを使ったら便利

Lambdaにデプロイするときライブラリも一緒にデプロイする場合があると思いますが、いざデプロイするとちょっとした修正がコンソール上でできず、ちょっとめんどくさかったです。
それについてぼやいたらLayersを使えばどうかとアドバイスをもらったので、その備忘録。

## デプロイする関数
APIをちょっとたたく関数。言語はPython。

## LambdaのLayers機能
公式。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html
ライブラリをレイヤーとして取り込め、共通ライブラリとして利用できる。
そのためLambda関数にライブラリを取り入れる必要がない。
他のユーザが公開してるLayerも使えるらしい。

## そのままデプロイすると
ライブラリだけで4.5MBでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/452110/5c17653e-7869-eb74-e0b

元記事を表示

DynamoDBのチュートリアルを読み解く【5: トリガーを作成してテストする】

# はじめに

今回も[DynamoDBのチュートリアル](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Streams.Lambda.Tutorial.html)を実施しました。
最後はLambdaでのトリガー作成です。

(バックナンバー)
[1.DynamoDB テーブル作成](https://qiita.com/kkino1985/items/f9091c1e1efb35009ce7)
[2.IAMポリシー/ロール作成](https://qiita.com/kkino1985/items/a087bc3077f36b4b1e21)
[3.SNSトピック作成](https://qiita.com/kkino1985/items/f40d950cfd6d464635fa)
[4.Lambda関数作成/テスト](https://qiita.com/kkino1985/items/4850f4bba7b8418c2cc8)

# 5.1 トリガー作成用ARN情報取得

今回はDynamoDB

元記事を表示

LambdaバージョンをAWS CDKで構築する際にハマったエラー

## 概要

Lambda functionとそのバージョンの発行をAWS CDKにて構築する際に「Lambdaコード更新と発行されるバージョン番号の関係」を正しく理解できず、エラーに悩みました。

そこで、AWS CDKでLambda functionとそのバージョンを発行する場合の挙動について検証しました。

本記事では、これらの検証結果とその解説を記述しています。

## サンプルコード

以下GitHubにて公開しています。

[YoshinoriSatoh/o-aws-lambda-version-cdk](https://github.com/YoshinoriSatoh/o-aws-lambda-version-cdk)

## Lambda Version

Lambda versionについては、以下参考記事でも説明されています。

[https://qiita.com/quotto/items/4c364074edc69cb67d70](https://qiita.com/quotto/items/4c364074edc69cb67d70)

また、公式ドキュメント

元記事を表示

(AWS) API GateWay + Lambda でAPIを実行してみた。

# Amazon API GateWay を使って、Lambdaで作成した関数を実行してみました。

<大まかな手順>
– AWS Lambdaで関数作成
– Amazon API GateWayで API作成
– APIを実行して、レスポンスを取得

`LambdaとAPI GateWay作成のリージョンは「東京 (ap-northeast-1)」に設定して進めますので、事前にリージョンをご確認ください。`

## AWS Lambdaでの設定
ではさっそく始めます。
まず、Lambdaで関数を先に用意します。

Lambdaのコンソール画面にて、左側のメニューから「`関数`」→「`関数の作成`」ボタンをクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/05145779-fe1c-061c-2221-bb54f4d18242.png)

関数作成ページが表示されるので「`一から作成`」にチェック→`関数名`入力→`ランタイム`選択→「`関数を作成`

元記事を表示

DynamoDBのチュートリアルを読み解く【4: Lambda 関数を作成してテストする】

# はじめに

引き続き[DynamoDBのチュートリアル](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Streams.Lambda.Tutorial.html)を実施しました。
今回はLambdaです。

(バックナンバー)
[1.DynamoDB テーブル作成](https://qiita.com/kkino1985/items/f9091c1e1efb35009ce7)
[2.IAMポリシー/ロール作成](https://qiita.com/kkino1985/items/a087bc3077f36b4b1e21)
[3.SNSトピック作成](https://qiita.com/kkino1985/items/f40d950cfd6d464635fa)

# 4.1 Lambda用Javascriptファイル作成

javascriptは専門外なので深入りはしませんが、使われているメソッドをピックアップします。

‘use strict’;
var AWS = r

元記事を表示

Amazon S3 と AWS Lambda を使って PPAP を回避します。

みなさん、PPAP をご存知ですか?
以前、流行した、ペンパイナポーアッポーペン ではなく…

>PasswordつきZIP暗号化ファイルを送ります
>Passwordを送ります
>Aん号化(暗号化)
>Protocol

のことです。
https://www.jaipa.or.jp/event/isp_mtg/asahikawa_190912-13/190913-3.pdf

つまり、社外に添付ファイルを送る際に使われるプロトコルです。
このプロトコルにはいろいろと問題があるといわれています。
例えば、パスワードを送り忘れたら受信者はいつまでたっても開けません。
受信者はパスワード入りメールがくるまで待ってないといけません。
そして、そもそも、メールでパスワードを送ってよいのかしら。。。

そんな PPAP を使わないで済む仕組みを Amazon S3 と AWS Lambda で作りました。

## 予備知識
Amazon S3 には事前署名 URL というものを生成する機能があります。
これを使うことで、期間を指定して(執筆時点で最大7日)、URLを知ってる人だけが

元記事を表示

OTHERカテゴリの最新記事