- 1. APIGatewayでWebSocketを利用した場合のOpen時の認証処理
- 2. DynamoDBとStepFunctionsで初めてサーバーレスバッチ処理をつくってみた
- 3. lambda で heic 形式の画像を扱うためにやったこと
- 4. Lambda関数をBlue/GreenデプロイメントするCodePipelineをCloudFormationで自動構築する
- 5. AWSのサーバレスサービス試してみた (Lambda・DynamoDB・APIGateway)
- 6. あのボタンを押したらM5Stackに今何してるを表示させる
- 7. AWS lambda(Node.js)でオレオレ証明書(self-signed)を一時的に信頼してSSL通信を行う方法
- 8. SlackのSlashCommandをAWS LambdaのPythonで実装したときにタイムアウトで困っている場合
- 9. 【AWS】CodeStarでPython Lambda環境を作ってHelloWorldする
- 10. AWS lambdaで setTimeout を待つ(await, callback2つの手法)
- 11. Amazon Translate、AWS Lambda を使った自動翻訳(後編)
- 12. AWS CodePipelineが対応していないgitリポからのCI/CD構築
- 13. AWSとLINE BOTを使って簡単にコロナウイルス感染者数をチェックする
- 14. DynamoDBで”The provided starting key does not match the range key predicate”とエラーが出た場合の対策(node.js)
- 15. VPCにのLambdaからS3に接続
- 16. Amazon Translate、AWS Lambda を使った自動翻訳(前編)
- 17. ALBのバックエンドで動作するJava実装のLambda関数をBlue/GreenデプロイメントするCodePipelineを作る
- 18. 【NodeJS】AWS Lambda+APIGateway+DynamoDBでTODOアプリを作成
- 19. 静岡県オープンデータカタログ(csv)からCOVID-19対策サイトのデータ(json)に変換して取得するAPI
- 20. 無視されたリプライをPython+AWS Lambdaで毎日自動削除する
APIGatewayでWebSocketを利用した場合のOpen時の認証処理
# はじめに
AWSのAPI GatewayがWebSocket対応しています。
この接続を認証したもののみでOpenするのにどうするか?の話です。
wscatなどでコマンドで叩かれると接続だけはできちゃったりするので、そのあたりをどう防止できるかというものです。
今回は別のシステムなりで認証後に発行されたIDがDynamoDBにあり、ブラウザ側へ送信されてるのを前提とします。
$connect時にそのIDがついてる時だけconnectionIdをDynamoDBに格納したい時にどのように出来るかの話となります。# $connect時のみGetパラメータが取れる
もう結論出てるんですが、API Gatewayで設定したものはブラウザ上でnew WebSocket()などでOpenした時に、URLについたGetパラメータがいつも通りにLambda側で取得できます。ブラウザ側
“`
const socket = new WebSocket(“wss://xxxxxxx.execute-api.ap-northeast-1.amazonaws.com/prod?id=xyz”)
DynamoDBとStepFunctionsで初めてサーバーレスバッチ処理をつくってみた
# AWSでサーバーレスなバッチ
2つのAWSアカウント間(VPC Peering済み)で、一方のデータベースからデータ加工してもう一方のデータベースへ、のようなバッチをつくります。![qiita1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/86958/b7864d8e-aab0-eac5-7906-a253e09f7425.png)
勉強も兼ねてAWSのサービスを積極的に使っていこうということで、
まずは間に [DynamoDB](https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/Introduction.html) を挟み、分割した [Lambda](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html) function で処理する形にしました。![qiita2.png](https://qiita-image-stor
lambda で heic 形式の画像を扱うためにやったこと
## 背景
iphone のカメラで保存された画像はデフォで heic という形式になっており、web ブラウザは現状解釈してくれない。そのため、他のjpgなどの画像と同じように扱うためにはサーバ側で加工する必要がある。[^1] 今回は、サーバ側でどうにかする手段をやってみたので残しとこうと思う。
## 内容
### 結論
lambda に imagemagick を仕込んだ lambda layer を連携させて、imagemagick を叩けばok
### 実装方法
lambda の runtime は node v12
lambda の管理には serverless framework
lambda layer はこの[リポジトリ](https://github.com/serverlesspub/imagemagick-aws-lambda-2)のものを使う。ただ、 heic を扱うためのライブラリが入っていないので同リポジトリに上がっていたPRからビルド手段を持ってきました。imagemagick のビルドフラグで heic を追加したり、必要なモジュールである、
Lambda関数をBlue/GreenデプロイメントするCodePipelineをCloudFormationで自動構築する
# 前提条件
以下の記事で手動構築していたCodePipelineのCI/CDパイプラインをCloudFormationで自動構築してみる記事。なので、構成やアプリケーションの内容は読んで把握しておくことが望ましい。[Amazon API Gateway/ALBのバックエンドで動くLambda関数をJava(Eclipse+maven)で実装する](https://qiita.com/neruneruo/items/8673af2a3ae0f8076627)
[ALBのバックエンドで動作するJava実装のLambda関数をBlue/GreenデプロイメントするCodePipelineを作る](https://qiita.com/neruneruo/items/73906cdc3c2aa699644f)最終的に目指すCI/CDパイプラインの構成イメージは以下。Lambda関数のフロントにALBがいる想定だが、このパイプラインでは触らない(厳密には、リスナーとターゲットグループは触る)ので割愛する。
![LambdaCFn.png](https://qiita-image-stor
AWSのサーバレスサービス試してみた (Lambda・DynamoDB・APIGateway)
AWSの花形と言えばサーバレスのサービスだろうと思ったので
awsのサーバレスサービス(Lamda)を中心に簡単な設計概念を解説してから
lamdaのハンズオン出来るように記事として書き起こしてみる。###参照:これだけでOK:awsアソシエイト
https://www.udemy.com/course/aws-associate/learn/lecture/13595998##このハンズオンで実施する内容
1.Lambdaと連携するDynamoDBの構築
2.Lambdaの構築
3.API GatewayによりAPIを構築する##今回構築するアーキテクチャ
apiを介してlambdaを呼び出して、lambdaがdynamodbからデータを取得するという関数を実行してその関数の実行結果に基づいてapiにdynamodbの取得した結果がapi側で取得されるという流れを作る。
![WS000001.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/99495/faa7be8c-9a96-632
あのボタンを押したらM5Stackに今何してるを表示させる
COVID-19の影響でリモートワークな人です。
—
今回は、**あのボタンを押したらM5Stackのディスプレイに今何してるか表示させる**
っていうのをやってみました。
## きっかけ
きっかけはソラコム小熊さんが投稿されてた
[M5stack で作る ON AIR サインで手に入れる平穏な在宅勤務環境](https://blog.soracom.jp/blog/2020/04/02/on-air-sign-on-m5stack/)
です。
ボタン使ってできるんじゃないかなーって思って、誰か(ソラコム某エバンジェリスト)が作るんじゃないかなーとちょっとボールを投げたら、
見事に投げ返されたので、まあ、面白いからやってみぜよと。
まあ、事実としては、居間でテレワークしている人がいるので、会議中に居間行きたくないので、それがわかるようにも使えそうだしってこともありまして。。。
技術力の問題で時間かかってしまいました。。。## できました。
### 構成
AWS lambda(Node.js)でオレオレ証明書(self-signed)を一時的に信頼してSSL通信を行う方法# はじめに
AWS lambdaのNode.js(https標準モジュール)で実装した、WEBサイトへhttpsのリクエストを投げる処理で、以下の2つのエラーが発生した際の対応についての記事です。
※急いでいる方、ソースコードだけ見たい方は[ここから見ればOK](#3オレオレ証明書self-signedを一時的に信頼する)です
SlackのSlashCommandをAWS LambdaのPythonで実装したときにタイムアウトで困っている場合こんな風にすればレスポンスを即時で返して2度めの呼び出しで後続処理をできるのでタイムアウトが出づらくなる。
呼び出し回数は倍になるけど。“`python
def lambda_handler(event, context):if “hoge” not in event:
event[“hoge”] = “fuga”
boto3.client(“lambda”).invoke(
FunctionName=context.function_name,
InvocationType=”Event”,
Payload=json.dumps(event),
)return {}
# 以下本当にやりたい処理
“`Pythonのは探しても見つからなかったので書いとく
LambdaからLambda呼ぶアクセス権限は別途設定する必要がある
【AWS】CodeStarでPython Lambda環境を作ってHelloWorldする
## はじめに
### 概要
このところ [AWS CodeStar](https://aws.amazon.com/jp/codestar/) を使った開発を行っています。
CodeStarはざっくりいうとCI/CDサービスとダッシュボードをまとめたサービスという理解でいます。
CI/CDツールもパッケージ化して作成してくれるので書いたコードがすぐに反映されるのでちゃちゃっと試したいときに便利なものではあります。
ただ作り込んでいくと(AWS初心者の私は)権限周りで躓くことが結構ありました。
今後S3アクセスやLambdaのVPC配置、EC2プロジェクトについても随時更新していく予定です。まずはローカルのテキストエディタでコードを編集・Pushして変更を確認するところまで。
### 前提
– 作業日時:2020/4/11
– ローカル環境
– PC:Mac
– OS:Catalina
– インストール済みコマンド:Git CLI, AWS CLI
– AWS環境
– ユーザー:root
– AWSリージョン:東京(ap-northeast-1
AWS lambdaで setTimeout を待つ(await, callback2つの手法)
`lambda` で、 `setTimeout` を利用する場合、何も意識しない場合 `lambda` の実行が終わってしまいます。
それを待つには、 `await` を使う方法がパッと思いつきますが、 `callback` を使っても待つことが出来ます。
## await を利用するパターン
`Promise` を使って書きます。
“`
exports.handler = async (event, context, callback) => {
await new Promise(resolve => {
setTimeout(() => {
console.log(‘waited!!!!!!!!!!!!’)
resolve();
}, 2000);
});
};
“`## callback を利用するパターン
`callback` メソッドは、実行前に `node` のイベントループが空になるまで待つようになっているので、 `setTimeout` が終わるまで待ち
Amazon Translate、AWS Lambda を使った自動翻訳(後編)
#はじめに
[前回の記事](https://qiita.com/JJ33/private/2926898abbda8f38d340)でご紹介した、ドキュメント翻訳の自動化の実践の続きです。![batch-translation-6.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543340/26a78e9a-097c-8b7b-c03f-31ea80a86f9b.gif)
コンテンツを外国の言語に翻訳するには、バッチ翻訳ジョブを実行することで、容易かつコスト効率よく解決することができます。
しかし、一連のドキュメントを集めたり、そのドキュメントに対して定期的に非同期のバッチ API を呼び出したりすると時間がかかります。
ドキュメントが用意された時点で、すぐに翻訳処理を開始できたほうがいいですよね。#AWS Lambda と リアルタイム翻訳を使用する進んだアプローチ
イベント駆動型アーキテクチャを利用することで、簡単に、自然な翻訳を行えるようになります。特定の S3 バケットにドキュメ
AWS CodePipelineが対応していないgitリポからのCI/CD構築
# 本記事の対象読者
* AWS CodePipelineに対応していないgitリポから、CodePipelineに乗せたい人
* AWS Lambdaでgitコマンドを使いたい人# CI/CDしたい
とあるAWSプロジェクトで、ソースコード管理にBacklog gitを利用していました。
どうせならCI/CDを組んでしまおうと考えたのですが、AWS PipelineがBacklog gitに対応しておらず。。。そこで、Backlogのwebhookを使ってS3にまでソースコードを連携する以下のようなアーキテクチャ構成としました。
アプリ自体はnuxt.jsで作成しており、buildしてS3にアップロード、静的WEBとして公開することがゴールです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545043/213288de-10dd-758f-8772-0cf8f7efd554.png)# 実装環境
AWS Cloud9* Serverless Frameworkを利用
AWSとLINE BOTを使って簡単にコロナウイルス感染者数をチェックする
# 経緯
コロナウイルス感染者数が増幅していく世界で、不安におびえつつ感染者数をチェックする自分に呆れながらも、いちいちサイトを見に行く手間にうんざりしたので、都道府県名を入力すれば情報を教えてくれる**LINE BOT**を作ってみた。
# Demo
![20200414_022946000_iOS.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283351/b1d31cb1-aae8-804a-ef13-1829b3f49715.jpeg)
**※画像は4/14日時点の情報です。**
# Architecture
![Untitled Diagram.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283351/95b7c9ee-1a18-64f4-19f3-e3a91545fdea.jpeg)
# LINE Devlopersに登録
– 登録してプロバイダーを作成、チャネル作成を行う。
– [Me
DynamoDBで”The provided starting key does not match the range key predicate”とエラーが出た場合の対策(node.js)
Lambda(node.js)で、DynamoDBから超膨大なレコードを取得するプログラムを開発していました。
1分単位でクエリを実行して、レコードを小分け取得するようにしたのですが、
その際にプロパティを初期化できていなかったため、標題のエラーが発生したようです。っていうことが、以下の記事を見てわかりました
https://qiita.com/nanananamememe/items/52293f1fece4458cc2fa
具体的な対策は `delete params[“ExclusiveStartKey”];` みたいな感じで
プロパティを消せば良いです。すっごく長いですが、備忘録を兼ねてソースコードを掲載します
“`javascript
try {
var ENV = require(‘dotenv’).config();var AWS = require(‘aws-sdk’);
AWS.config.update({ region: process.env[‘AWS_DYNAMO_DB_REGION’] });
var docClient
VPCにのLambdaからS3に接続
# 問題
VPCにのLambdaからS3に接続できない
# 解決
S3アクセス用エンドポイントを作成する
Lambdaに設定しているサブネットに上記のエンドポイントを追加する
# 参考
Amazon Translate、AWS Lambda を使った自動翻訳(前編)
#はじめに
今回も AWS 公式ブログから、気になる記事を見つけてきたのでご紹介します。ビジネスや個人向けに、デジタルなテキストドキュメントをコピー&ペーストして、希望の言語に翻訳できるツールが複数存在します。(分量に限度があり)
しかし頻繁に行うとなれば、退屈で時間だけがかかる作業になります。そこで、2 つのソリューションについて解説していきます。
1. 収集したドキュメントに、非同期のバッチ翻訳を行うシンプルな翻訳
2. AWS Lambda と Amazon のリアルタイム翻訳を使い、ドキュメントを入手する度に同期的に翻訳を行う、より進んだ手法#Amazon Translateとは
– 現実的な価格で、迅速かつ高品質な翻訳を実現する、ニューラル機械翻訳サービス
– ニューラル機械翻訳、深層学習モデルを応用した、自動翻訳の一形態
– 従来の統計学や規則をベースにした翻訳アルゴリズムと比べて、正確かつ自然
– 多様なコンテンツに適格に対応。異なるユースケースやドメイン間での、多様な文章を使ってトレーニングされている
– 大量に集積したテキストや HTML ドキュメント
ALBのバックエンドで動作するJava実装のLambda関数をBlue/GreenデプロイメントするCodePipelineを作る
# 前提条件
以下の記事で作ったアプリケーションをベースに、CodePipelineでCI/CDパイプラインを実装するため、内容を把握しておいてほしい。[Amazon API Gateway/ALBのバックエンドで動くLambda関数をJava(Eclipse+maven)で実装する](https://qiita.com/neruneruo/items/8673af2a3ae0f8076627)
また、ALBのリスナー、ターゲットグループはデプロイ内部で作る都合上、削除しておく。
空っぽのALBのARNが準備されていれば良い(これもデプロイで一緒に作ってしまっても良いけど、ALBの作成って時間かかるので……)。最終的に目指すCI/CDパイプラインの構成イメージは以下。Lambda関数のフロントにALBがいる想定だが、このパイプラインでは触らない(厳密には、リスナーとターゲットグループは触る)ので割愛する。
![LambdaCFn.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111314/48
【NodeJS】AWS Lambda+APIGateway+DynamoDBでTODOアプリを作成
## はじめに
サーバーレスを趣味で始めてみたので、勉強がてらAWS Lambda+APIGateway+DynamoDBでTODOアプリを作成し始めました。
個人のメモとして、サーバー側とクライアント側での処理を記事にまとめます。(まだ作成途中です)## 概要
Lambdaで使用する言語はNode
DynamoDBはidとtodoという項目のみを持ちます。
テーブル名は「todoTable」
今回は、GETとPOSTのみを実装します。## Lambdaで関数作成
本来であれば1つの関数にまとめたかったのですが、GETメソッドであることをLambdaに渡す方法がわからず、ひとまず関数を分けました。まずはGETメソッドから。
単純に全てのカラムを取得します。(本来はあまりscanは使わない方がいいらしいが)“`js
const AWS = require(‘aws-sdk’)
const dynamo = new AWS.DynamoDB.DocumentClient()exports.handler = (event, context, callback) =>
静岡県オープンデータカタログ(csv)からCOVID-19対策サイトのデータ(json)に変換して取得するAPI
# 静岡県オープンデータカタログ(csv)からCOVID-19対策サイトのデータ(json)に変換して取得するAPI
## はじめに
[浜松市 新型コロナウィルス感染症対策サイト](https://stopcovid19-hamamatsu.netlify.com/)のお手伝いをしています。
お手伝いをしています、というか、楽しく参加させてもらってます。
[東京都のオープンソースを活用した新型コロナウイルス感染症対策サイトの派生サイト](https://cio.go.jp/node/2581)の1つです。
Code for Japanによる[支援活動の1つ](https://www.code4japan.org/activity/stopcovid19)だそうで、すばらしいですね。その活動の中で、タイトルのAPIを作って利用しましたので共有のため記事にします。
## 概要
こんな感じです。
![Screenshot 2020-04-12 at 09.44.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.
無視されたリプライをPython+AWS Lambdaで毎日自動削除する
# メンヘラすぎて無視されたツイートは消したい
これは私ではないが、こういうツイートを消したい自分がモテないのも、もしかして瀧さんのせいですか?
— ねっとのひと (@_tanosikuikouze) April 6, 2020
– 無視されるよりは無視したほうが良いという、被害者より加害者よりの思考へシフトし、陽キャよりのコミュニケーションにコミットを行う
– これは[セキュリティ・オートメーション](https://aws.amazon.com/jp/solu