- 1. 【Python】Switchbot Hub2の気温・湿度をCloudWatchに定期的に送信する【AWS Lamba】
- 2. API Gatewayとlambdaを使用してみる
- 3. InstanaでAWS Serverlessアプリを可視化しよう!Lambda編
- 4. AWS Signerを使って既存のLambda関数をコード署名してみた
- 5. 【備忘録】AWSのセキュリティ対策について学んだことまとめ ~リソース編 リソースの暗号化~
- 6. API GatewayのJWTオーソライザーでGoogle IDトークンを検証してみた
- 7. 【備忘録】AWSのセキュリティ対策について学んだことまとめ ~インフラ編④ Lambdaにおけるアクセス制御~
- 8. S3EventからLamdaコンテナを動かす
- 9. [備忘録] AWS CDKでRDS,RDS Proxy,Lambda を構築
- 10. Serverless Days Tokyo 2023に参加してきました!(前編)
- 11. 【AWS Amplify】functionのリトライ回数を変更したい
- 12. Next.js 13とAWS CDK + Amplify Hosting + Cognito + DynamoDB + Lambdaを使ってTODOアプリを作る
- 13. kintone-rest-api-client を使ってkintoneアプリを自動更新する
- 14. DynamoDB StreamをトリガーにLambdaを実行する処理をCDKで書いてみた
- 15. pythonの引数にlambda関数を使うと便利だった
- 16. AWS Lambda Node.js dockerイメージでmecab (+neologd)を実行する
- 17. [備忘録]AWS CDKでAPI Gateway, Lambda を構築
- 18. serverless framework を使ってHelloWorld
- 19. PythonでSlackのチャンネルにメンション付き投稿
- 20. Amazon EventBridge Schedulerのイマイチだったところ
【Python】Switchbot Hub2の気温・湿度をCloudWatchに定期的に送信する【AWS Lamba】
季節の変わり目ということで、自宅の気温と湿度をCloudWatchに保存したくなりました。
そこで最小限の労力でPythonを書いて、Switchbot ハブ2の気温と湿度(とついでに照度)をCloudWatchに送信しようと思います。
さらにEventBridgeとLambdaで5分ごとに定期実行します。
![dashboard.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/ab3df0bc-b206-97f9-9ea0-509137916abb.png)# GitHubリポジトリ
全てのソースコードを下記で公開しています。
https://github.com/tippy3/switchbot-hub2-custom-metrics
# #1 Switchbot API用のトークンを取得する
まずはコーディング前の準備です。
[公式サポートページ](https://support.switch-bot.com/hc/ja/articles/12822710195351
API Gatewayとlambdaを使用してみる
## 目的
AWS Certified Developer – Associateの勉強をしている中で
理解が浅いサービスについて実際に使用してみます今回はAPI GatewayとLambdaを使用して、リクエストを送れるまでをやってみます
## 手順
– Lambda関数の作成
– API Gatewayの設定## Lambda関数の作成
**1. Lambdaのページに移動、左のメニューから関数を選択**
**2. 右上の関数の作成を選択**![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1997750/f26b8a57-ac66-56fb-9ae7-e47d2e259681.png)
**3. 下の設定で作成(記載していないものはデフォルト設定です)**
関数の作成:一から作成
基本的な情報
関数名:test_lambda
ランタイム:Pythonコードは作成時に用意されているサンプルをそのまま使用します
“`
import jsondef lambda
InstanaでAWS Serverlessアプリを可視化しよう!Lambda編
# はじめに
本記事は、下記動画の手順を書き起こしたものです。
実際に動く画面を確認したい方はぜひご視聴ください。https://video.ibm.com/recorded/132859917
Instanaは14日間のFree Trialが可能です。
Try Instana! > https://www.instana.com/trial/## 検証用Lambdaの作成
AWS Lambdaのダッシュボードを開き、**関数の作成** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118463/76855990-8a44-23bf-0bb0-53b97b7f1ba8.png)任意の関数名を入力し、ランタイムは **Python 3.9** を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118463/a15f29fe-6dee-539
AWS Signerを使って既存のLambda関数をコード署名してみた
## これは何?
最近ですが[AWS Signer](https://docs.aws.amazon.com/ja_jp/signer/latest/developerguide/Welcome.html)によってLambdaなどにコード署名をくわえることができるるのか検証する機会があったので、今回はその検証した内容についていろいろ記載していきたいと思います。シナリオとしては、未署名のCloudformationで管理しているLambda(Python3.11)関数を、コード署名するまでの流れを検証してみました。
## 1. 事前準備
コード署名の設定していない関数をコード署名を有効化し、コードの改竄防止を確認しようと思います。
この章では、事前準備としてコード署名設定をしていないLambda関数の作成までをしようと思います。### フォルダ構成
Cloudformation を用いてデプロイしようと思うため、以下のようフォルダ構成になります。
“`
./
├── event.json
├── function/
│ └── main.py
└── template
【備忘録】AWSのセキュリティ対策について学んだことまとめ ~リソース編 リソースの暗号化~
今回はリソースの暗号化についてです。
AWSには保存しているリソースが外部から不正アクセスされたとき
内容が暗号化によって権限がない人が見れないようにする仕組みがあります。例としてS3, DynamoDB, Systems Managerのパラメータストア, Lambdaの環境変数などで
保存した値を暗号化することができます。
詳しくは以下で説明します。## S3
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3522793/e1e36d2d-8d20-7b17-7375-143f91b93ed6.png)
バケット作成時に暗号化のタイプを選択することができます。
以下、公式サイトから2023年1月5日以降はデフォルトで
バケットが暗号化されるようになったとあります。
以前は暗号化しない選択もできたようです。
ちょっと注意なのは、2023年1月5日より以前にバケットの暗号化をなしに設定していた場合は
既存のバケットの中のオブジェクトは暗号化されていないようです。
ただし既存のバケ
API GatewayのJWTオーソライザーでGoogle IDトークンを検証してみた
– toCアプリの認証認可ソリューションを選定する場合、OpenID ConnectやOAuth2.0等の技術を利用したソーシャルログインの実装が候補に上がることが多いのではないでしょうか。
– 今回はAmazon API GatewayのJWTオーソライザーを利用して、Googleアカウントで認証済み利用者への認可処理を実装してみました。## 環境構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3562653/38d33f32-8cac-43de-f8b1-f830ff5c978f.png)## 設定手順
### Google OAuth 2.0をセットアップする
※事前にGoogle Cloud Platformでプロジェクト作成が完了していることを想定しています。
– Google Cloud Platformの「APIとサービス」にアクセスします。
– 左メニューから「認証情報」を選択した後、「認証情報を作成」を押下します。
![Untitled.png](ht
【備忘録】AWSのセキュリティ対策について学んだことまとめ ~インフラ編④ Lambdaにおけるアクセス制御~
今回はAWSのサーバレスサービスを利用したインフラの構築におけるセキュリティについて
記事を書いていこうと思います!
Lambdaにおけるセキュリティについてのみの投稿のため基本的な
Lambdaの実装方法については記載しないのであしからず。# Lambdaとは
まず、基本的なことですがLambdaとはAWSが提供する
サーバーレスコンピューティングサービスです。
[前の記事](https://qiita.com/Yukimaru_Rutla/items/6325db36b7584b7d3730)ではEC2インスタンスを構築したネットワーク環境に配置して
管理していましたが、Lambdaは自前でアプリを動かすためのサーバーの構築や運用を
AWSに任せてクラウド上に作成したプログラムさえ置けば動かすことができる優れものです!
初めて触ったときは概念の理解がイメージしにくかったのですが触れば
とても便利なものと分かります。# サーバーレスにおけるセキュリティとは
前述で説明したようにサーバレスとはサーバーの構築・管理の一斉をクラウドサービスに
お任せできるため物理的な管理は不要にな
S3EventからLamdaコンテナを動かす
## 今回やること
S3 EventでLambdaジョブ(コンテナ)を実行させる– 入力: csvファイル
– 出力: jpgファイル![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/54100/7a32469d-334a-41d1-b160-bf8499f80922.png)
### やりたかったこと
S3のPutObjectに応じたS3イベントを使って、
Python(Maplotlib/Pandas)を動かして、生成物を再度S3へ保存。#### 経緯
– S3 EventとLambdaを組み合わせて簡単に作ろうとした。
– Maplotlibのボリュームが大きく、レイヤーの容量上限250MBにどうしても入りきらない。
– Lmadaコンテナを使う## やってみる
やった結果:
https://github.com/bd8z/s3event
### Step1 S3イベントの確認する
print(event)だけするLambdaとS3インベントをつないで、
実行
[備忘録] AWS CDKでRDS,RDS Proxy,Lambda を構築
AWS CDK を学習していく過程を記録する。
# はじめに
[[備忘録]AWS CDKでAPI Gateway, Lambda を構築](https://qiita.com/m-chan/items/0e3869afd193b92dd79a)にて、API GatewayをトリガーにLambdaを実行することで、LambdaがRestAPIとして外部ネットワークから利用可能になることを確認した。
今回は、RDS、RDS Proxy を構築し、Lambda の中の処理を書き換えて、API Gateway から Lambda 経由で mysql に接続できることを確認したい。### RDS とは
> Amazon Relational Database Service (Amazon RDS) は、AWS クラウド でリレーショナルデータベースを簡単にセットアップし、運用し、スケーリングすることのできるウェブサービスです。つまり、サーバの設定やOSのインストールなどすることなくすぐにDB構築が可能なサービスであり、RDSでは mysql、Oracle Database、Mic
Serverless Days Tokyo 2023に参加してきました!(前編)
日比谷のクラスメソッド社さん会場に100名以上が集結するオフラインイベントです!
https://tokyo.serverlessdays.io/
※リアルタイムの走り書きのため、誤り等あればお知らせください?
![IMG_0020.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/7ea79241-278c-a2e6-829e-352c291e13be.jpeg)
# KEYNOTE / Alex Debrie (AWS Data Hero)
有名なDynamoDB Bookを執筆された方です!
![IMG_0022.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633856/fbf6e64b-b81c-18d4-2219-b3196372539d.jpeg)
### サーバーレスの歴史
– オンプレミス〜EC2の登場〜Lambda登場の変遷
– Herokuから始まった12-Fa
【AWS Amplify】functionのリトライ回数を変更したい
## この記事の対象となる方
– AWS Amplifyを使用中
– S3のCreateObjectやSQS等に反応するLambda(function)を作成し、デプロイしている
– カスタムリソース(`amplify add custom`)を追加して、S3のCreateObjectのトリガやSQSを定義し、上記のLambdaと関連付けている
– デフォルトのリトライ回数は2だが、要件によって回数を変えたい (多分「0にする」を最も要求されそう)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267110/97052a32-6a8c-b66c-c9cb-6fe00f434099.png)
– ↑↑ この「再試行」です## どうすればリトライ回数を変更できるか
### 結論
CloudFormation(`[functionName]-cloudformation-template.json`)に加筆するしかありません。
– `Resources`に以下を追加し
Next.js 13とAWS CDK + Amplify Hosting + Cognito + DynamoDB + Lambdaを使ってTODOアプリを作る
[株式会社Never](https://neverjp.com/)のshoheiです。
株式会社Neverは「NEVER STOP CREATE 作りつづけること」をビジョンに掲げ、理想を実現するためにプロダクトを作り続ける組織です。モバイルアプリケーションの受託開発、技術支援、コンサルティングを行っております。アプリ開発のご依頼や開発面でのお困りの際はお気楽にお問合せください。
https://neverjp.com/contact/# 概要
自社開発でどうしてもAWSを使う事情があり、扱う技術を一通り触ったので備忘録として記録します。
自分の勉強も兼ねてNext.js 13とAWS CDK + Amplify hosting + Cognito + DynamoDB + Lambdaを使ってTODOアプリを作ります。
弊社内のメンバー向けなので、細かい説明は割愛します。
# 構成
| 種類 |技術スタック |
|—|—|
|フロントエンド |Next.js + SSR |
|ウェブホスティング | Amplify Hosting |
|API |API
kintone-rest-api-client を使ってkintoneアプリを自動更新する
## はじめに
以前書いた記事「[DynamoDB StreamをトリガーにLambdaを実行する処理をCDKで書いてみた](https://zenn.dev/collabostyle/articles/3ed9b3440c7d09 “DynamoDB StreamをトリガーにLambdaを実行する処理をCDKで書いてみた”)」の、Lambdaの処理でkintone-rest-api-clientを利用しています。## kintone-rest-api-clientとは
kintone-rest-api-clientは、KintoneプラットフォームのためのREST APIクライアントライブラリです。このライブラリは、Pythonで書かれており、Kintone REST APIを呼び出すための簡単な方法を提供します。
kintone-rest-api-clientを使用すると、Kintoneアプリケーションを操作するPythonスクリプトを簡単に作成することができます。たとえば、kintone-rest-api-clientを使用して、データレコードの作成、更新、削除、検索などを行
DynamoDB StreamをトリガーにLambdaを実行する処理をCDKで書いてみた
## はじめに
* DynamoDB StreamとLambdaを使ってDynamoDBのデータに変更があった場合(追加、編集、削除)に、その変更内容を別アプリに自動で反映する処理を実装しました。
* 自動化した処理をCDK化しました。## DynamoDB Streamとは
DynamoDB Streamは、Amazon Web ServicesのDynamoDBサービスに含まれる機能の一つで、DynamoDBテーブルの変更をリアルタイムでキャプチャし、変更を処理するアプリケーションとの間でデータを配信するためのサービスです。DynamoDB Streamを使用することで、アプリケーション開発者は、DynamoDBテーブルの変更を非同期的に受信し、変更を処理することができます。この機能は、サーバーレスアーキテクチャを使用する場合に特に有用であり、システムの拡張性と柔軟性を高めるのに役立ちます。## やりたいこと(イメージ図)
1.DynamoDBに対する項目の追加、編集、削除をDynamoDB StreamのイベントとしてLambdaに渡す
2.イベントを受け取ったLam
pythonの引数にlambda関数を使うと便利だった
numbers = [[‘1′, ’40’], [‘4′, ’13’], [‘3′, ’14’], [’25’, ’30’], [’17’, ’20’], [’21’, ’22’]]
# リストの要素をキーとして最大値のリストを取得
– リストの1つ目の要素をキーとして最大値のリストを取得
“`
m = max(numbers, key=lambda x: int(x[0]))
print(m)
“`
> [’25’, ’30’]– リストの2つ目の要素をキーとして最大値のリストを取得
“`
m = max(numbers, key=lambda x: int(x[1]))
print(m)
“`
> [‘1′, ’40’]# リストの要素をキーとして昇順に並び替える
– リストの1つ目の要素をキーとして昇順に並び替える
“`
s = sorted(numbers, key=lambda x: int(x[0]))
print(s)
“`
> [[‘1′, ’40’], [‘3′, ’14’], [‘4′, ’13’], [’17’, ’20’], [’21
AWS Lambda Node.js dockerイメージでmecab (+neologd)を実行する
試験的にmecabが必要になったのですが、PHP8に対応していないので、EC2ではなく、Lambdaにインストールして、EC2のPHPから叩くようにしました。neologdができるようにしたのはおまけ。pythonがわからないので、nodeでイメージを作成しています。neologdの辞書まで含めた場合、数GB程度になりますが、LambdaのECRイメージデプロイは、10GBまで対応しているので、問題なくデプロイ、実行できました。Dockerなので、ローカル確認もできます。
ファイル構成
Dockerfile
app.js
docker-compose.yml
package.json
deploy.shDockerfile
基本イメージは、public.ecr.aws/lambda/nodejs:18 2023年9月17日現在、20は出ていませんでした。
makeに必要なライブラリをインストールして、makeする形。
ipadic-neologdは、gitプロトコルでcloneすると鍵の問題解決が難しそうだったので、https:からのclone。
cdコマンドも、Docke
[備忘録]AWS CDKでAPI Gateway, Lambda を構築
AWS CDKを学習していく過程を記録する。
# はじめに
[[備忘録] AWS CDK プロジェクトの作成](https://qiita.com/m-chan/items/011a93e40f26230df135)にて、CDK プロフェクトの作成とデプロイまでできたので、今回はAWS CDKでAPI GatewayおよびLambdaを作成してみる。
また、API GatewayをトリガーにLambdaを実行することで、LambdaがRestAPIとして外部ネットワークから利用可能になることを確認する。#### Lambdaとは
> AWS Lambda は、サーバーをプロビジョニングまたは管理せずにコードを実行できるようにするコンピューティングサービスです。つまり、「サーバレスにインターネットを通じてプログラムを実行することができるサービス(Faas:Function as a Service)」である。
#### API Gatewayとは
公式サイトでは
> Amazon API Gateway は、あらゆる規模の REST、HTTP、および WebSocket
serverless framework を使ってHelloWorld
# はじめに
この記事では、Serverless Frameworkの基本的な使い方を説明します。Serverless Frameworkは現在、サーバーレスアーキテクチャを効率的に構築するための主要なツールの一つです。
# Serverless Frameworkとは
Serverless Frameworkは、サーバーレスアーキテクチャを簡単に、効率よくデプロイ・運用するためのオープンソースのツールです。このツールは、AWS Lambda, Azure Functions, Google Cloud Functionsなど、多くのクラウドプロバイダに対応しています。# チュートリアル
## ディレクトリ構成
“`
.
├── Dockerfile
├── README.md
├── assets
│ └── index.html
├── docker-compose.yml
├── functions
│ └── hello
│ └── handler.py
├── package-lock.json
├── package.json
└── ser
PythonでSlackのチャンネルにメンション付き投稿
## はじめに
この記事では、PythonでSlackのチャンネルにメンション付きで投稿する方法を載せています。
ローカル環境での実行だけでなく、ローカル環境で作ったイメージをAWS ECRリポジトリにUploadして、そのイメージを使って作ったAWS Lambdaでも実行出来るようにしています。## 背景
Webスクレイピングなどをしていると、結果をslackやメールに送りたくなる時があります。
slackについてはメンション付きだと気付きやすいので、今回は、slackのチャンネルにメンション付きで投稿する方法についてまとめました。## 目次
– [環境](#環境)
– [前提条件](#前提条件)
– [構成図](#構成図)
– [フォルダ構成](#フォルダ構成)
– [手順](#手順)
– 1:[GitHubよりcloneする](#1githubよりcloneする)
– 2:[Slackの設定](#2slackの設定)
– 3:[ローカル環境でSlackに投稿する](#3ローカル環境でslackに投稿する)
– 4:[AWS LambdaでS
Amazon EventBridge Schedulerのイマイチだったところ
## はじめに
本記事はAmazon EventBridge Schedulerのイマイチな部分を説明する予定でしたが、
投稿日時点では改善されていて良い機能になっているという内容になります検証をすることにした経緯も書いていますが、結論だけ読みたい方はスキップしてください
## Amazon EventBridge Schedulerを検証することになった経緯
とある業務システムを構築している際に、指定の時間になったらLambdaを実行する機能を実装することになりました。
繰り返し実行するのではなく、1回のみ実行することになります
簡単に説明すると、スマホのアラームのように、WEB画面から時刻を入力し、その時刻になればLambdaを実行させるシンプルな機能です時刻の登録は画面から行うため、AWSコンソールでポチポチ設定することができません
WEBアプリとして一連の流れを実現させる必要がありましたアーキテクチャとしては、本記事の投稿時点では、Amazon EventBridge Schedulerが発表されていますが、それ以前に実装を行なったため、Amazon Even