- 1. VPC内のLambdaからはSES向けのVPCエンドポイントを使用してもBoto3ではメールを送信できない
- 2. AWS Lambdaでpythonプログラムの定期実行
- 3. AWS Lambdaを使ってサーバレスアプリを作成(CRUDのR)
- 4. 共働き夫婦の月々の精算を自動化してみた
- 5. AWS Lambda Python3.8 から Slack へメッセージを送る設定を terraform で作成する
- 6. AWS の API Gateway (HTTP API) 経由で Lambda に繋いで POST データを処理するメモ
- 7. dataframeでの関数適用のサンプルです。
- 8. Python (Boto3) @ Lambda で CloudWatch Logs の特定のログストリームにログを出力する
- 9. 【AWS】S3 / LambdaでSSIっぽいことをやる
- 10. 【Serverless Framework 入門】 API Gateway + Lambda + DynamoDB サンプル
- 11. Pythonでgzipを直接S3へPUTする
- 12. Lambda から Amazon Timestream を呼び出す
- 13. Lambdaで”An error occurred (AccessDenied) when calling the GetObject operation: Access Denied”と言われてハマった
- 14. AWS LambdaでのLine Bot作成手順
- 15. 「AlexaスキルとSlackで買いものを便利に」をやってみた
- 16. AWS LambdaをTypescript+Webpackでデプロイする
- 17. pythonのlambdaでslack通知をするサンプル
- 18. Serverless FrameworkでLINE Botを作ってみた!
- 19. ぼく の かんがえた さいきょうの請求アラート設定!
- 20. アレクサスキルを開発したときのリアルタイムメモ
VPC内のLambdaからはSES向けのVPCエンドポイントを使用してもBoto3ではメールを送信できない
# 初めに
本記事はタイトルについて検証を行った詳細を記載します
書くきっかけですが、最近久しぶりにVPCと戯れることになりました。
VPCを使った構成ですんなり行った思い出はなく、実際に沼にハマりました。ポイントをまとめましたので、どなたかのお役にたてば嬉しいです
結論だけ知りたい方は最後まで飛ばしてください
# 検証を行うことになった背景
**VPC内のLambdaからメールを送る**
ただこちらを行いたいだけでしたアーキテクチャとしては以下となります
RDS→Lambda(VPC内)→SES→ユーザーあまり見ないアーキテクチャですね
RDS Proxyがリリースされてから、LambdaとRDSの組み合わせは使用する頻度が多くなりました
DynamoDBだけでは辛い部分もあるので、今後こちらのアーキテクチャは増えるようになるのではないでしょうか実装するに当たって、どのようにVPCから外へ出るか調べていました
すると、2020年5月に[SES向けのVPCエンドポイント](https://aws.amazon.com/jp/blogs/news/new-ama
AWS Lambdaでpythonプログラムの定期実行
#はじめに
AWSのlambdaを使用して、スケジュール実行のプログラムを設置しました。
lambdaの基本的なことで意外とつまったので残しておきます。
AWSのアカウントは作成しているものとしています。MAC OS X
python 3.6# 対象
・lambdaを触ったことのない方
・とりあえず何か動かして見たい方#lambdaとは
スクリプトを実行することが出来るサーバーレスのサービスです。
サーバレスと言ってもスクリプトの実行時にのみサーバを起動するイメージです。呼び出しはAWSの空いているサーバから行われるため、実行するサーバーは都度違います。
(固定IPを割り当てたサブネットにlambdaを設置して実行することでIPを固定にすることは出来ます)無料使用枠が月ごとに100万件の無料リクエストと1秒あたり40万GBのコンピューティング時間あるので、たいてい無料枠で動かせます。WebやIOTのバックエンドのAPIとしても使えるのでめちゃくちゃ便利なサービスですね。
#簡易的なスクリプト作成
pythonでLambdaのスクリプトを作成する場合、 **lamb
AWS Lambdaを使ってサーバレスアプリを作成(CRUDのR)
記事を閲覧いただき、ありがとうございます。[中村](https://twitter.com/AaTeltel)です!!
2020年10月にAWSエンジニアとして転職したので、AWSの予習も兼ねてLambdaを使ったアプリ作成について書いきます。### AWS Lambdaとは?
ここでつらつら説明するより[公式動画](https://youtu.be/Hr6ZIvXSZpw)の方がわかりやすいという結論に至りました。まずはご覧ください。
(Qiita記事の中にyoutube動画の埋め込みって出来ないんですねぇ。出来たらいいのになぁ。)##### 以下を使用して作成ます。
フロントエンド : [Vue.js](https://jp.vuejs.org/index.html)
AWS(インフラ) : [S3](https://aws.amazon.com/jp/s3/), [API Gateway](https://aws.amazon.com/jp/api-gateway/), [Lambda](https://aws.amazon.com/jp/lambda/), [Dyn
共働き夫婦の月々の精算を自動化してみた
# はじめに
我が家は共働きで、家賃や光熱費・食費等の共通の出費はワリカンです。
共通の出費は一つの口座にまとめて紐づけており、その口座の残高のベース残高から減った分(=使った分)だけ割り勘してそれぞれが振り込む、といったルールとしています。
今回は口座残高の取得やワリカン計算を自動化し、Slackのチャンネルに投稿するような仕組みを作りました。# やったこと
* AWS Lambda上でHeadless Chrome + Seleniumを動作
* Web家計簿アプリに自動ログインして口座残高を取得
* ワリカンを計算しSlackの家計清算チャンネルにメッセージ送信最終的にこんな感じのメッセージが投稿されるようになります。
![dousa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575870/3f89cbdb-1652-53b7-380d-16353a8b5a6f.png)
システム概要は以下の図のようになります。
![システム概要](https://qiita-image-st
AWS Lambda Python3.8 から Slack へメッセージを送る設定を terraform で作成する
【個人備忘録】lambdaからslackへメッセージを送るシンプル設定
# 概要
* Slack API へのメッセージ送信に関して
* [slackweb ライブラリ](https://pypi.org/project/slackweb) は使わない (ローカル環境にライブラリインストールしてあれやこれやがめんどくさい)。
* Python標準ライブラリの urllib を使う。
* Slack API へ渡す情報は、Lambdaの環境変数に設定する。* Terraform での Lambda 作成に関して
* aws provider の バージョンは 2.48.0
* Lambda関数コード(pythonソースコード)は、**terraform archive provider** の data ソース **archive_file** を使って zip にしてから、deployする。* 送信イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14
AWS の API Gateway (HTTP API) 経由で Lambda に繋いで POST データを処理するメモ
取り急ぎ忘れないようにめもめも。
* POSTパラメータは `event[‘body’]` に入っている。
* API Gateway の設定で `isBase64Encoded` が有効であると、Base64エンコードされるAPIに投げるときにJSONエンコードしたものを渡すと、Base64デコード後にJSONが取れる。
その際は、リクエストクエリのパースではなく、JSONのパース処理を行う。“`python
import json
import base64
import urllib.parsedef lambda_handler(event, context):
# POSTパラメータがBASE64でエンコードされているのでデコードする
decoded_body = base64.b64decode(event[‘body’]).decode()
# POSTパラメータをdict型に変換
post_params = urllib.parse.parse_qs(decoded_body)result = {}
dataframeでの関数適用のサンプルです。
#テストデータ
“`
import pandas as pddf=pd.DataFrame({“A”:[1,2,3],”B”:[10,20,30]})
print(df.to_markdown())
“`
| | A | B |
|—:|—-:|—-:|
| 0 | 1 | 10 |
| 1 | 2 | 20 |
| 2 | 3 | 30 |#サンプルソース
“`
def fnc(dt):
return dt[“A”]+dt[“B”]df[“C”]=df.apply(lambda dt : fnc(dt) ,axis=1 )
print(df.to_markdown())
“`# 結果
| | A | B | C |
|—:|—-:|—-:|—-:|
| 0 | 1 | 10 | 11 |
| 1 | 2 | 20 | 22 |
| 2 | 3 | 30 | 33 |
Python (Boto3) @ Lambda で CloudWatch Logs の特定のログストリームにログを出力する
# ■ はじめに
Python (Boto3) @ [Lambda](https://aws.amazon.com/jp/lambda/) から [CloudWatch Logs](https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html) の特定のログストリームにログを出力したかったので、やってみました。
# ■ コード
コードは、以下。
“`python
def put_logs(client, group_name, stream_name_prefix, message):
try:
exist_log_stream = True
log_event = {
‘timestamp’: int(time.time()) * 1000,
‘message’: message
}
sequence_token = None
【AWS】S3 / LambdaでSSIっぽいことをやる
2020.11.16更新
[Alibaba Cloud版](https://qiita.com/imaichiyyy/items/02ab2002c435ee1c938a)もつくりました。# TL;DR
SSI(include virtual)が記述されたHTMLを、S3の特定バケットに格納しLambdaでインクルード内のソースを結合した上で別のバケットに格納する。# やりたかったこと
S3は静的サイトホスティングサービスのため、サーバーサイド側で動的に処理をするということが原則できません。
もちろんその後キャッシュする先であるCDN側(CloudFront)もできません。その場合、今であればローカル開発環境を構築しローカル上では別々のファイルにしておき、コンパイルする際に結合する方法がスタンダードだと思いますが、元々SSIが使われていた既存サイトをS3+CloudFrontへ移管する場合などを含め残念ながらすべての案件でそのフローが導入できるわけでもありません。
なので、元々SSIが使われていた場合、そのまま置換など行わずそのままの形で使用できるようにAWS側で
【Serverless Framework 入門】 API Gateway + Lambda + DynamoDB サンプル
# はじめに
[こちらの記事](https://qiita.com/sugurutakahashi12345/items/afd14d2939a4a26fefa4)の続編になります。前回は Serverless Framework を使って hello 関数を Lambda にデプロイしたところまで行いました。
(Lambda をただデプロイできれば前編の記事は見なくても全然大丈夫です。)今回はそれを API Gateway 経由で API として公開し、さらに DynamoDB との疎通にも試みるものになります。
以下の Serverless Framework の[公式サンプル]([https://www.serverless.com/examples/])を参考にしました。
– [AWS | REST API Example](https://www.serverless.com/examples/aws-node-rest-api)
– [AWS | REST API With DynamoDB](https://www.serverless.com/example
Pythonでgzipを直接S3へPUTする
### やりたいこと
* Oracleから取得したデータのCSV作成
* CSVをgzip形式に圧縮
* ファイルを直接S3へ保存### サンプルコード
“`lambda_function.py
import csv
import gzip
import io
import os
import boto3
import cx_OracleDB_HOST = os.environ.get(‘DB_HOST’)
DB_PORT = os.environ.get(‘DB_PORT’)
DB_USER = os.environ.get(‘DB_USER’)
DB_PASS = os.environ.get(‘DB_PASS’)
DB_SID = os.environ.get(‘DB_SID’)AWS_S3_BUCKET_NAME = ‘hoge’
s3 = boto3.client(‘s3’)
def lambda_handler(event, context):
file_name = ‘hoge.csv.gz’
# oracle接続
con
Lambda から Amazon Timestream を呼び出す
## はじめに
Amazon Timestream が 10 月に一般提供されました。Timestream の名の通り、時系列のデータを扱うデーターベースです。データを管理するときにありがちな、直近データはすぐに参照できるようにしておきたいといったことや、時間のたったデータは安いストレージに保存しておいて必要なときに取り出そう、といった仕組みがあらかじめ備わっていて魅力的です。
今回は Lambda から受け取ったデータを、この Amazon Timestream に保存してみたいと思います。
執筆時点で Timestream を利用できるリージョンは、バージニア北部、オハイオ、オレゴン、アイルランドです。ここであげたいずれかのリージョンで以下の操作を行ってください。## Timestream データベースの準備
* まず、データベースを作成します。
* Timestream コンソールで Create database を選択します。
* Database configuration 欄の configuration は “`Standard databas
Lambdaで”An error occurred (AccessDenied) when calling the GetObject operation: Access Denied”と言われてハマった
#概要
LambdaにてS3の特定オブジェクトをダウンロードする操作をPython(boto3)で実行したが、Access Deniedと言われて実行できない。
実行ロールにAmazonS3FullAccessを付与するも同様の結果。#実行内容
“`Python
import json
import boto3def lambda_handler(event, context):
s3 = boto3.resource(‘s3’)
bucket = s3.Bucket(‘my-hoge-hoge-bucket’)
bucket.download_file(‘test.txt’, ‘fuga.txt’)“`
#Lambdaで表示されるエラー
“`
{
“errorMessage”: “An error occurred (AccessDenied) when calling the GetObject operation: Access Denied”,
“errorType”: “ClientError”,
“stack
AWS LambdaでのLine Bot作成手順
# 概要
AWS LambdaでのLineBot作成手順をまとめました。line-bot-sdk-pythonを使わずに1から書いてみました。
ほぼほぼ「参考」の記事を使っています。
## webhokとは
– [Webhookとは?](https://qiita.com/soarflat/items/ed970f6dc59b2ab76169)
– [Webhookって何?を子どもでもわかるように描いてみた](https://kintone-blog.cybozu.co.jp/developer/000283.html#:~:text=Webhook%E3%81%A8%E3%81%AF%EF%BC%88%E7%95%A5%EF%BC%89%E3%80%81,%E3%81%A7%E9%80%9A%E7%9F%A5%E3%81%99%E3%82%8B%E4%BB%95%E7%B5%84%E3%81%BF%E3%81%A7%E3%81%99%E3%80%82)# 開発の手順紹介
## 技術– Python
– AWS Lambda## 流れ
1. Lmabda関数の作成
2. L
「AlexaスキルとSlackで買いものを便利に」をやってみた
## はじめに
はじめまして。oka-shiです。Alexaに買いたいものを伝えるとSlackに通知される「スラックスキル」を作成してみました。元ネタは、下記のよーぐると様のブログとなります。
[AlexaスキルとAWS Lambda, Slackを使って我が家の買いもの管理を便利にした話](https://yoghurt1131.hatenablog.com/entry/2018/12/26/072907)Alexa初心者でも簡単に実装できたので、参考にしたサイト、Alexaスキル設定、Lambda→Slackへの連携 などをまとめてみました。
### 対象読者
* Alexaスキルを作ってみたい方
* Lambda(Node.js 10.x版)→Slackへの連携をやりたい方### 説明すること
* スラックスキルの概要
* Alexaスキル作成の前にやること
* Alexaスキル作成のポイント
* Lambda(Node.js 10.x版)→Slackへの連携設定
* Alexa初心者がつまずいたトコ### 説明しないこと
* スラックスキルの詳細
* Ale
AWS LambdaをTypescript+Webpackでデプロイする
Lambda関数をTypescriptで記述したくなった。
さらに、Webpackでバンドルした後にLambdaにアップロードすることを試みる。## 作業手順
1. Typescript環境構築
2. Lambda関数作成
3. Webpack準備## 1. Typescript環境構築
package.jsonを用意する。
Typescriptに必要なパッケージやWebpackでtsファイルをビルドするためのパッケージ、Lambda側で型定義するためのパッケージをインストールしておく。“`json:package.json
{
“scripts”: {
“build”: “webpack –mode production –config webpack.config.ts”
},
“devDependencies”: {
“@types/aws-lambda”: “^8.10.62”,
“@types/webpack”: “^4.41.22”,
“ts-loader”: “^8.0.4”,
“ts-node”:
pythonのlambdaでslack通知をするサンプル
## 設定
– ハンドラは`ファイル名.関数名`で指定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/293481/d4faa63e-eabc-ee7e-4c53-c949282f0009.png)### SlackでImcomingWebHookを追加する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/293481/11278097-a40e-5f5c-c0ba-743aafd91e29.png)## コード
– ググってでてくるrequestsというモジュールは、urllibの中に吸収されたみたい
– jsonをslackのWEBHOOK用のアドレスにPOSTで投げる
– `def lambda_handler(event, context):`の`event`はLambda実行時に関数へ引き渡されるJSONデータ
– 実行元のリソースによってもちろん中身は違うが
Serverless FrameworkでLINE Botを作ってみた!
# Serverless Frameworkとは
![https___camo.githubusercontent.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533652/d1dec5fc-f941-c194-85f1-3d2c04dd7060.jpeg)Serverless Framework はFaaS(Function as a Service)やクラウドのDB,Storageでアプリケーションを構成するためのフレームワークです。AWS以外にもGCP, Azureにも対応しています。
導入方法などは、こちらの記事を参考にしてください。# 注意事項
・コマンドはMacを想定しているのでWindowsの方は
ぼく の かんがえた さいきょうの請求アラート設定!
# 事の始まり
今回2回目の高額請求です!
前回はRDSの起動しっぱなしで起きました。
![スクリーンショット 2020-10-30 1.32.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/516091/fd6f187a-338a-5c1c-2d15-827607c95e5f.png)Billingの設定で請求アラートを設定すれば、よいと学んだので、その設定をしました。
しかし…
SlackやLINE, 電話で事足りる世の中になり、メールを見なくなる毎日。
そして、今回事件が起きました…。
![スクリーンショット 2020-10-30 1.01.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/516091/aabbdd36-5db0-b0e3-48fe-52d335810a0d.png)たすけてー AWSの偉いひとー。
メール通知だけだと、ダメだと思い知ったので、一番良い請求アラートの
アレクサスキルを開発したときのリアルタイムメモ
赤外線
http://www.optdevice.jp/ir/obniz IR LED
https://obniz.com/sdk/parts/InfraredLED/README.md赤外線リモコンのフォーマット
https://os.mbed.com/users/shintamainjp/notebook/remote_ir_ja/
http://elm-chan.org/docs/ir_format.htmlアレクサスキル
https://medium.com/crowdbotics/how-to-build-a-custom-amazon-alexa-skill-step-by-step-my-favorite-chess-player-dcc0edae53fbオペアンプ
https://akizukidenshi.com/catalog/g/gI-09406/ad
https://developer.amazon.com/en-US/docs/alexa/custom-skills/understanding-custom-skills.html
smar