- 1. ALBの認証に対するログアウト処理(ALB + Cognito + Lambda)
- 2. LambdaからGoogleDrive内のファイルを読む
- 3. AWS CLIを用いてLambda関数の情報とコードの一覧を取得する。
- 4. Cognitoで色んな社会の願いを叶えられるか考えてみた(2021/3版)
- 5. AWSから行うセキュア動画配信 ~署名付きCookieを利用したプライベートコンテンツ配信~
- 6. AWS ChaliceでEC2とRDSを自動で起動停止するLambdaを作成(祝日対応版)
- 7. Google Chatのチャットルームへメッセージを投稿するLambda関数
- 8. 【AWS Lambda+API Gateway】Pythonでslack通知アプリ作ってみた
- 9. AWS Lambda基本
- 10. Lambdaでcryptographyを使う(Python3.8 + cryptography)
- 11. コンテナLambdaをデプロイしてみた(躓いたポイントとリソース削除)
- 12. RDSの自動起動と自動停止スクリプト
- 13. SAMでSlack通知Lambdaをデプロイ
- 14. lambda + typescript + s3のリファクタリングをしてテストケースを書いたメモ
- 15. Slackへ勤怠連絡を入力するAlexaスキルを作ってみた
- 16. Lambda@Edge とは
- 17. AWS SAM を用いて Hello World アプリケーションをデプロイしてみる
- 18. Chalice で Lambda Layer を利用する
- 19. AWS Lambdaで関数作ってAPIGatewayで公開するまでの学習
- 20. EC2のプロセス監視と自動再起動
ALBの認証に対するログアウト処理(ALB + Cognito + Lambda)
# はじめに
AWSでは、Webサービスの認証機能は、ALBを使うのが超便利ですね!
ここでは、まず準備段階として認証機能を実装します。(→「準備」の段落)
つぎに、ログアウト処理を追加します。(→「ログアウトの実装」の段落)ALBに認証させる方法は、いろいろな方が書いてくれています。そちらを参考にしてください。
以下、クラスメソッドさんの記事です。https://dev.classmethod.jp/articles/alb-cognito-user-pool/
# 準備
まず、ALBにCognitoを連携し、ログインの実装まで。
上のリンクのとおりに、ALB、Cognitoユーザープールなどは実装してください。
WebサーバはLambdaでベタ書きします。EC2は面倒なので。ログアウトの処理がやりたいので手抜きです。## Webサーバ
Lambda関数を、Python3.8で実装する。
“`python
import jsondef lambda_handler(event, context):
return {
‘sta
LambdaからGoogleDrive内のファイルを読む
参考:[DevelopersIO AWS Lambda からサービスアカウントで Google APIs を叩くまでにやったこと](https://dev.classmethod.jp/articles/call-google-apis-from-aws-lambda-by-service-account/)
このページのうち、とりあえず動作確認のため
AWS System Manager Parameter Store を使わない構成でやるそれなりにリスクがあるのでご注意
# 前提
Googleアカウント(組織向け)→ 認証を作る
Googleアカウントの管理者権限(サービス有効化等の権限)→認可する
Lambda用ロール:最低限で大丈夫# 手順
## 1. 認証情報を作る:Google組織内個人アカウントで操作
[Google APIs | リソースの管理](https://console.developers.google.com/cloud-resource-manager)#### 1-1. Google側でプロジェクトを作成
ドメインの下に、プロジェ
AWS CLIを用いてLambda関数の情報とコードの一覧を取得する。
#はじめに
AWSを使用するに当たり適宜適当にlambdaの関数を作成していたら、いつの間にか管理がおろそかになってしまいました。。。
とりあえず AWS CLI を使えば現状あるものの一覧を取得できるみたいなのでトライしてみます。
#手順
##0. 事前準備
###わたくしの環境
・ubuntu v20.04.1 LTS (Focal Fossa)
・aws-cli /2.1.3 Python/3.7.3 Linux/4.4.0-19041-Microsoft exe/x86_64.ubuntu.20cliを使用するroleにはLambdaのListFunctionsとGetFunctionの権限を追加しておきましょう。
##1. 関数の一覧を取得する
以下関数でlambda関数の一覧をcsvで取得できます。“`bash
aws lambda list-functions –region ap-northeast-1 | jq ‘.Functions[] | [ .FunctionName , .Runtime ]’ | jq -rs ‘ map([.[]])[]|
Cognitoで色んな社会の願いを叶えられるか考えてみた(2021/3版)
昨年の[この記事](https://qiita.com/taniyuu/items/c37be3d0c275f797962f)でもCognito取り上げましたが、今年度も相変わらずCognito使うことがあったので、書きます。
# アブスト
2020年度は、(みんな忘れてるかもしれないけど)某D口座の話してた時が認証周りでは一番盛り上がってた気がします。そんな最中にCognitoはどうなの、みたいなことを調べることが急増したので、Q&Aみたいな感じ→**社会の願い**で羅列していきます。
# 基礎知識
この記事では、断りのない限り、「Cognito」は「Amazon Cognito」のことを指します。「ユーザプール」は「Amazon Cognitoのユーザプール」(IDプールってのがありますが、今回はそれじゃない)のことを指します。
何も知らない人は、BlackBeltをさっと眺めておくのが良いと思います。というか、それで満足したらここでブラウザバックで。https://www.slideshare.net/AmazonWebServicesJapan/20200630-a
AWSから行うセキュア動画配信 ~署名付きCookieを利用したプライベートコンテンツ配信~
## はじめに
AWSから行うセキュア動画配信の後編の投稿になります。
* [前編](https://qiita.com/r-mizuno/items/79ec52ca77ac0bb1b503): 配信するための動画を、AWS Key Management System (KMS) から生成した共通鍵で暗号化し、S3へ格納する
* [中編](https://qiita.com/r-mizuno/items/b3ec1cdd4851d6b54823): AWS Elemental MediaConvert を利用して、HLS+AES暗号化の形へ動画を変換する
* 後編: **Cloudfrontの署名付きCookieを利用して、アクセス可能なユーザを制限する(今回)**前回は、S3へ格納された動画をMediaConvertを使用して、HLS+AESの形へ動画を変換しました。
今回は、変換した動画をCloudFrontから、署名付きCookieを利用して配信する手順をご紹介します。## 構築予定の環境
構築予定のシステム構成図は以下のようになります。
本記事では、赤字となって
AWS ChaliceでEC2とRDSを自動で起動停止するLambdaを作成(祝日対応版)
https://qiita.com/danishi/items/4b5fa88458ca656ada97
こちらの記事の祝日対応版です。
Google Calendar APIを使って起動日が祝日の場合は処理を行わないように。
また、Google Calendar APIだと正月や会社の休日に対応できないので、環境変数に別途例外休日を設定できるようにしています。記事のコードにimport文と祝日判定のためのロジックを追加。
“`python:app.py
import datetime
import urllib.request
import json
“`“`python:app.py
def change_instances_state(event, target=’ec2′, state=’Start’, dryrun=True):if is_holiday():
return # 休日なら処理終了if state == ‘Stop’: # 停止させる条件
“`“`python:app.py
def is_h
Google Chatのチャットルームへメッセージを投稿するLambda関数
# 前提
* Python 3.8
* 標準ライブラリのみ
* 対象チャットルームにて着信Webhook作成済み# コード
【】は各自環境の値で修正“`python
import json
import urllib.requestdef lambda_handler(event, context):
# TODO implement
message_detail = ‘from aws lambda’message = {‘text’: message_detail}
url = ‘【作成した着信WebhookのURL】’
headers = {‘Content-Type’: ‘application/json; charset=UTF-8’}
byte_encoded = json.dumps(message).encode(‘utf-8’)req = urllib.request.Request(
url=url
, data=byte_encoded
【AWS Lambda+API Gateway】Pythonでslack通知アプリ作ってみた
#はじめに
我が社のCTOが、「エンジニアはみんな`Lambda`くらい使えるようになっていてほしいね〜」
とのありがたいお言葉から、「自分もエンジニアになったからには、`Lambda`でAPI作ってみよう!」と、
一念発起して、挑戦してみますた(⌒▽⌒)#LT;DR
– Lambda関数の作成
– Slack Api Incoming WebHooksの作成
– Layerの作成 & 登録
– API GatewayでAPIの作成
– 実践と結果まとめ#Lambda関数の作成
##Lambdaとは
>AWS Lambda は、サーバーのプロビジョニングや管理の必要なしにコードを実行できるコンピューティングサービスです。
Amazon API Gateway を使用すると HTTP リクエストに応答してコードを実行できます。
参照元:[AWS Lambda とは](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html)ほうほう、AWSに管理系は丸投げできるんですな。
今回は、`HTTP`リク
AWS Lambda基本
#AWS Lambdaとは?
**「サーバーのプロビジョニングや管理の必要なしにコードを実行できるコンピューティングサービス」**#サーバーレスの特徴
**①インフラのプロビジョニング、管理が不要**
**②自動でスケール**
・リクエスト数に応じて自動的に起動数がコントロールされる
**③価値に対する支払い**
・事前に必要なコストが存在しない
・リクエスト数並びに処理実行時間に対しての課金
・コスト効率がよく、コストゼロからのスタート可能
**④高可用かつ安全**##**Lambda関数(ファンクション)**
・Lambaで実行するアプリケーション
・それぞれが隔離されたコンテナ内で実行される
・利用する言語の関数もしくはメソッドをハンドラーとして指定し、実際の際に呼び出す
・コードは依存関係も含めてビルド、パッケージングした上でアップロード
**ZIP形式**
アップロードしたものは**S3**に保存され実行時以外は暗号化される##**Lambdaファンクション-基本設定-**
・メモリ:**128MBから3008MB**の間で設定可能
容量に応じ
Lambdaでcryptographyを使う(Python3.8 + cryptography)
# はじめに
Lambdaでcryptographyを使う際に、モジュールをレイヤーで追加しました。
その手順の記録です。# 手順
クラウドシェルでPythonS3のライブラリをZip圧縮して、cryptographyのレイヤーを作成します。
一時的に保存するS3は事前に準備しておきます。
## ①cryptographyのファイルを取得する
### クラウドシェルを起動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/155165/b0bf86bc-b927-9bda-e284-f6526fb0f818.png)
### Pythonを3.8にする
バージョンを確認“`shell
python3 -V
“`
3.8でなければ、3.8にする。3.7.9だった。“`shell
# Pythonを3.8にする
sudo amazon-linux-extras install python3.8 -y
sudo update-alternatives –install /us
コンテナLambdaをデプロイしてみた(躓いたポイントとリソース削除)
## はじめに
AWS builders-flashにコンテナLambdaの記事が出ていたので試してみました。
躓いたポイントと試した後に実行したリソース削除コマンドだけ書いておきます。https://aws.amazon.com/jp/builders-flash/202103/new-lambda-container-development/
## 躓いたポイント
##### awscli 2.1.6 未満だとコマンド実行エラーになる
> aws lambda create-function \
–function-name func1-container \
–package-type Image \
–code ImageUri=\${ACCOUNTID}.dkr.ecr.\${REGION}.amazonaws.com/func1@\${DIGEST} \
–role ${ROLE_ARN}コンテナLambdaは新しくサポートされた機能なので、バージョンは最新化すべきですね。
RDSの自動起動と自動停止スクリプト
RDSは起動しっぱなしだとお金がかかる。
しかし、停止しても7日後に再度起動してしまう。
特に検証用とかで使用しない間が多い場合、いちいち起動したら停止するという運用はかなり面倒。
そのため、検証時以外は、起動したらすぐ停止するというスクリプトを作成して、**無駄なコスト**がかからないようにする。
そこで使用するのが、AWSのLambdaを使う。
## Lambdaとは何?
Lambdaと聞いてもわからないので調べた。
AWSの「サーバレスコンピューティングとアプリケーション」と言われる。
これまではPHPやPythonをうごかすためのwebサーバーが必要だったが、Lambdaならサーバーレスのため、サーバーを準備しなくても環境が揃っていると言うことである。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255267/1235389f-8f51-f11f-ea6b-dc23ef67432e.png)
**LambdaはJava、Node.js、C#、Pythonの
SAMでSlack通知Lambdaをデプロイ
## はじめに
[AWS Lambda Container Image Support](https://aws.amazon.com/jp/blogs/news/new-for-aws-lambda-container-image-support/) や EventBridgeのcron設定、Secrets Managerからシークレット情報の取得を試してみたかったので、以下のような構成図で一気に試してみます。## 構成図
– SAMでSlackにメッセージを通知するLambdaをデプロイする
– Lambdaはイメージ化してECRで管理する
– LambdaはEventBridgeで定期実行する
– SlackのWebhook URLをSecrets Managerで管理する![sam.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/917499/eed96002-2bda-33c2-64bf-cfdac785faed.png)
## 手順
1. ECRにリポジトリを作成しておく
2. S
lambda + typescript + s3のリファクタリングをしてテストケースを書いたメモ
## 概要
[前回はS3をローカルで立ち上げた。](https://qiita.com/hibohiboo/items/e81573744466343aec2c)
今回は、[ローカル環境でLambda+S3のテストをする](https://qiita.com/billthelizard/items/22d2457f3d6386d21796)を参考に、リファクタリングをしてテストを行う。[ソースコード](https://github.com/hibohiboo/develop/tree/481815420c60a0933e51483ded6ed53d1da64c03/tutorial/lesson/aws/typescript/projects/cdk_sample)
## 構造
“`
src
– lambda
– handlers
– s3-sample.ts
– service
– s3-sample.ts
test
– fixture
– s3
– message.txt
– lambda
–
Slackへ勤怠連絡を入力するAlexaスキルを作ってみた
# 概要
弊社は出勤や休憩などの勤怠連絡をSlackのチャンネルへのメッセージ送信で行っています
毎日何度も行うことなので手入力は結構面倒です
そこで、最近我が家にやってきたAmazon Echo Showに話しかけて勤怠連絡を行えるAlexaスキルを作りました!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413932/9ec76584-08da-ed4f-8139-d3a2a473f531.png)ちなみに、Echo Showが無くてもスマホのAlexaアプリでAlexaスキルを実行することはできます
音声入力で色々なものを操作するのは魔法感があって楽しいのでAlexaスキル開発はおすすめです!# システム構成
![勤怠入力スキル構成図 (2).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/413932/0b8214ed-9921-5472-d822-715873c51e29.jpeg)
Lambda@Edge とは
## 勉強前イメージ
lambda関係してそうだけど、Edgeがわからん
## 調査
### Lambda@Edge とは
cloudfrontのエッジロケーションからコードを実行するLambda関数のことで、
ユーザに近い場所でコードが実行されるので高速なコンテンツ配信が可能になる仕組みです。
コードをLambdaにアップロードするだけで自動的にコードの実行やスケーリングが行われます。
ですので、Lambda@Edgeは Lambdaとcloudfrontから成り立ちます### メリット
– 低レイテンシーのコンテンツを配信
ユーザに近いロケーションからコードを実行するので
低レイテンシーの配信が出来ます– サーバ管理が不要
オリジンサーバを複数のロケーションでプロビジョニング・拡張・管理することもなく、自動的にスケールします。
オリジンで実行しているアプリケーションに何も変更を加えることなく追加できます。### 指定できるcloufrontイベント
cloudfrontには4つの流れがあり、
それぞれ1つのリクエストに対して一意のlambdaのコードを割
AWS SAM を用いて Hello World アプリケーションをデプロイしてみる
AWS SAM を使ってみたいので、API Gateway 経由で Hello World メッセージを表示する Lambda を呼び出すアプリケーションを SAM でデプロイしてみます。
# 前提条件
– AWS アカウントの作成
– Docker のインストール
– AWS SAM CLI のインストール
– “sam –version” と叩いてバージョンが表示されれば OK# サンプルアプリケーションのダウンロード
sam コマンド経由でサンプルとしてダウンロードできるアプリケーションがあるので、ダウンロードしていきます。
まずは下記のコマンドを入力します。“`
$ sam init
“`途中でテンプレートソース、パッケージタイム、ランタイムを選択していきます。
プロジェクト名は任意の名前で問題ありません。
ここでは「hello-sam」としています。“`
$ sam init
Which template source would you like to use?
1 – AWS Quick Start Te
Chalice で Lambda Layer を利用する
# 問題点
Chalice で1つの `app.py` 内に以下のようなコードを書いた場合、API Gateway用の Lambda関数 と 定期実行用の2つの Lambda 関数が作成される。 デフォルトの設定だと `requirements.txt` で指定するすべてのライブラリを各 Lambda 関数内に展開してアップロードするので、2つの Lambda のコードサイズが大きくなる。
“`python:app.py
@app.route(‘/’)
def index():
pass@app.schedule(‘rate(5 minutes)’)
def cron(event):
pass
“`こういった場合には共通ライブラリの配置場所として Lambda Layer を利用できるのだが、昔ドキュメントを読んだときに読み落としていたのか chalice ではまだサポートされていないと思い込んでいた。 改めて調べると、ちゃんと Layer を使うことができたので、そのやり方を示す。
# 対象コードとバージョン
今回は以下のような cryptog
AWS Lambdaで関数作ってAPIGatewayで公開するまでの学習
# 本記事でやること
![スクリーンショット_2021-03-28_17_22_37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113504/ea799a62-b7d4-6169-cea7-f51db4cba365.png)
適当なJSONを返す
# 前提
[AWSのアカウント作成後のAdminのIAMユーザー作成](https://qiita.com/Teach/items/8212c06dc9f4a2546800)# Lambdaのスタート
## Lambdaとは?
サーバー管理せずにコードが実行できるサービス## コスト
コード実行していない間は無料
https://aws.amazon.com/jp/lambda/pricing/永久無料枠アリ
## イベント
S3、DynamoDBの変更をトリガーにして発火できる## 学び方
https://docs.aws.amazon.com/lambda/latest/dg/welcome.html#welcome-first
EC2のプロセス監視と自動再起動
EC2で稼働しているプロセスがダウンした時に、自動起動する仕組みを作っていきたいと思います
今回は、dockerプロセスがダウンした場合を例とします# 前提条件
* Amazon Linux2
* amazon-ssm-agentインストール済み
* cloudwatch-agentインストール済み
* dockerインストール済み
* EC2のIAMロールにAmazonSSMFullAccessのポリシーがアタッチ済み# プロセスの監視を設定します
## Systems Manager パラメータストアの設定
CloudWatchのメトリクスに入れるための定義を作成します
AWSマネジメントコンソールからSystem Manager、パラメータストアをたどり、「パラメータを作成」を実行します
タイプはString、データ型はtextで、以下を値に設定します“`json:値
{
“metrics”: {
“append_dimensions”: {
“ImageId”: “${aws:ImageId}”,