- 1. TerraformでHTTPS静的サイト(Route53 + ACM + S3 + CloudFront + Lambda@EdgeによるBasic認証)を作ってみた
- 2. SSM・CloudWatch Agentの自動更新とエラー発生時のメール配信
- 3. AWS Lambdaと開発環境(Eclipse)とでRDSの日時の値が異なる
- 4. AWS Lambdaのマルチアカウントデプロイ
- 5. AWS CDK + SAMでローカル実行しているLambdaにattachしてデバッグ実行したメモ
- 6. Lambda関数を作成する開発者に必要な権限を考えてみた
- 7. API Gateway + Lambda Authorizer + Lambdaプロキシ統合 + AWS SAM CLIを組み合わせたときのCORS設定
- 8. Lambda関数から別アカウントのDynamoDBに接続
- 9. Lambda + Goでネストされたアプリケーションを構築
- 10. AWS Lambda (Python 3.8)からWrikeのAPIを叩いてみる
- 11. AWS ChaliceでEC2とRDSを自動で起動停止するLambdaを作成
- 12. AWSから行うセキュア動画配信 ~MediaConvertで動画変換~
- 13. Alexaスキル開発チュートリアル(AWS Lamda, node.js)
- 14. AWS LambdaでRESTでデータ取得してSplunkに送信してみる (Python編)
- 15. 【AWS IoT】IoT CoreのRuleでできること:アラート通知とシステムの疎結合化
- 16. Amplify×Lambda×SESでメール配信
- 17. LambdaとSNSでごみ収集日をメール通知
- 18. [AWS SAM] Python外部ライブラリ(Pandas)のLayer化
- 19. AWS LambdaでRESTでデータ取得してSplunkに送信してみる
- 20. 【AWS IoT】Greengrass Coreデバイス上でLambdaを起動し、ローカルファイルをS3にアップロードする際の9個のハマりどころをまとめてみた。
TerraformでHTTPS静的サイト(Route53 + ACM + S3 + CloudFront + Lambda@EdgeによるBasic認証)を作ってみた
# 概要
Terraformでvueなどで作られた静的サイトを独自ドメインでHTTPS配信するためのインフラを構築していきます。
サンプルソースをリポジトリにまとめてみたのでこれを参考に紹介していきます。## サンプルリポジトリ
サンプルとなるソースをリポジトリにまとめてみたのでこれを参考に紹介していきます。
[GitHub](https://github.com/grasswake/terraform_aws_static_site “GitHub”)
※本記事の内容と基本的に一緒ですが、一気に作るのでなくRoute53とACM、CloudFrontの3ディレクトリに分けてます。
その為remote stateを使用した構成になっています。因みにaccess_keyなどの扱いが雑ですので使ってみる場合は使いやすい形に直してください。# 前提
– 独自ドメインでのアクセスを行うために、お名前.comなどでドメインを購入してください。この記事ではお名前.comで`example.com`というドメインを購入していると想定でいます
– アクセスURLは`example.com`にな
SSM・CloudWatch Agentの自動更新とエラー発生時のメール配信
クマ松です。
皆さん、AWS Systems Managerはお使いでしょうか。
AWS Systems ManagerはAWS環境のEC2やオンプレのサーバを効率よく運用することが出来るサービスです。
サーバ構成のインベントリをコンソールから確認したり、決められた時間にパッチを適用したり等、よくある定型作業の自動化を実現してくれます。今回はこのSystems Managerの機能の1つである「State Manager」を用いて、EC2にインストールしたSystems Manager AgentとCloudWatch Agentを定期的にアップデートしてくれる構成を作ろうと思います。
![アラートメール配信アーキテクト.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307047/78dd37f5-0a5d-52cf-22d3-09e12469605f.jpeg)
#前提知識
##State Managerについて
###Black Beltの説明
AWSのBlack Beltの文言を借りる
AWS Lambdaと開発環境(Eclipse)とでRDSの日時の値が異なる
# 背景
AWS Lambda処理内で、RDSのデータを読み書きする機能を開発していました。
プログラム上で日時を生成してテーブルに格納するのですが、実行環境(ローカル or AWS Lambda)によって日時の値が異なってしまっていました。# 環境・前提
– Java8
– Eclipse(2020-12 M3)
– RDS(MySQL 8.0)
– AWS Lambdaローカルで開発中は Eclipse で JUnit を実行し、ローカルから RDS の読み書きを行います。
AWS Lambda へプログラムのデプロイ後は、AWS Lambda を実行し、 RDS の読み書きを行います。# 検証
## ① ローカル(Eclipse)から、RDSへ
| プログラム上の日時(UTC)[^1] | RDS上の日時 |
| —————————– | —————– |
| 2021/3/25 12:00:00 | 2021/3/25 3:00:00 |[^1]: `Times
AWS Lambdaのマルチアカウントデプロイ
クマ松です。
「テスト用/本番用とで環境毎にAWSアカウントを分けてはいるけれども、利用しているLambdaは同じ」
という場合、テストしたLambdaをコピペして本番環境にデプロイをしたくはないですよね。ですので、**テスト環境のCodeCommitへのマージイベント**をトリガーに**本番環境にLambdaをデプロイする**構成のCodePipelineを作りました。
ほぼ全てCloudFormationで実現していますので、お手元のAWSアカウントで試してみてください。## 想定する環境
– テスト環境用AWSアカウントが1つ
– 本番環境用AWSアカウントが複数
– テスト環境と本番環境とで同じLambdaを使っている## 実現したいこと
– テスト環境のLambdaを本番環境にもデプロイしたい
– テスト環境のマージイベントをトリガーに、本番環境のCodePipelineを起動したい## ブログ
設計方針やCloudFormationのテンプレートはブログに掲載しています。
[Lambdaのマルチアカウントデプロイ 設計編](https://cloud
AWS CDK + SAMでローカル実行しているLambdaにattachしてデバッグ実行したメモ
## 概要
[前回はローカルでMongoを動かした。](https://qiita.com/hibohiboo/items/15db5256624c7a8e8b8c)
今回はローカルで実行しているlambdaにデバッグ実行を試してみる。
[ソースコード](https://github.com/hibohiboo/develop/tree/0466b37b367ea738564395fb82ac6a8dc1d31547/tutorial/lesson/aws/typescript/projects/cdk_sample)## 環境
* Windows 10
* aws-cdk 1.95.1
* SAM CLI. 1.20.0
* VSCode 1.54.3## やること
* attachしてデバッグ実行
* launch.jsonの自動生成## フォルダ階層
“`yaml
– .vscode
– launch.json # VSCodeのデバッガ設定
– cdk # cdk用の設定フォルダ
– lib
– s
Lambda関数を作成する開発者に必要な権限を考えてみた
## はじめに
日頃Lambda関数の構築において、都度インフラ管理者に依頼して、IAMポリシーとIAMロールを作成してもらうようにしていますが、後から必要な権限が出てきたりして、開発がなかなか進まないこともありますよね。
Lambda関数にアタッチするIAMポリシーとIAMロールを自分で作って試せると嬉しいなと思い、Lambda関数を構築する開発者に必要なIAM周りのIAMポリシーについて考えてみました。**先にお伝えすると、下記のポリシーだと穴があるので、ご使用はお控えください。**
別のアイデア大歓迎です!コメントください!## 前提条件
AWSの環境は次の通りとします。### Assume Roleを使う
Assume Roleを使っている場合、ユーザーに権限をつける際は下記のようなフローになります。**① IAMポリシーの作成**
必要な権限をつけたIAMポリシーを作成する。**② IAMロールの作成**
①で作成したポリシーをAssume用のロールにアタッチする。**③ IAMポリシーの作成**
②のIAMロールにAssumeできる権限をつけたIA
API Gateway + Lambda Authorizer + Lambdaプロキシ統合 + AWS SAM CLIを組み合わせたときのCORS設定
表題の通りです。苦しめられたので解決方法を共有します。
ポイントとしては、
* プリフライト用にOPTIONSメソッドを受け入れる必要がある (Access-Control系のヘッダーも返す)
* AWS::Serverless::ApiのCorsプロパティを定義すれば、自動的にOPTIONSメソッドが作成され設定したヘッダーが返されるようになる
* [CorsConfiguration \- AWS Serverless Application Model](https://docs.aws.amazon.com/ja_jp/serverless-application-model/latest/developerguide/sam-property-api-corsconfiguration.html)
* LambdaでAccess-Control系のヘッダーを返す
* 普通にレスポンスにヘッダーを含めればOK
* ↓「Lambda または HTTP プロキシ統合への CORS のサポートを有効にする」の項目を参照
* [REST AP
Lambda関数から別アカウントのDynamoDBに接続
## 記事を書いた経緯
– 初めてAWSを触った!記録取っておこう!
– Lamdba関数から他アカウントのDynamoDBにアクセスを経験!個人的に詰まったところもあったので、同じミスはしないように記録として残そう!
– ナレッジ化して共有できればいいなーって感じです。初投稿なので、「ん?」って思うところがあるかもしれないですが、参考になれば幸いです。
## 環境
– Typescript
– DynamoDB
– Lambda## まず驚いたこと
Lamdba関数からただ単に`aws-sdk`の`DynamoDB Client`を作ってアクセスをしたら`ResourceNotFoundException`になった。。。
なぜだ。。。### NGコード
“`typescript
import {DynamoDB} from “aws-sdk”const client = new DynamoDB.DocumentClient()
const param = {
TableName: “sample”,
Key: {
‘id’: 1
},
}
c
Lambda + Goでネストされたアプリケーションを構築
![1280px-Go_Logo_Aqua.svg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/525769/2b8f3e0b-9e8b-1355-2e71-ffd3570f9337.png)
LambdaでGoを使ったAPIを作成したときの話
あるサービスでGoを採用し、Lambda上でapiを作成することになった、最初は小規模の認識で開発を行っていたが、仕様がどんどん膨らみ気づいた時にはエンドポイントが150を超え、そしてやってきたリソース制限“`
Template format error: Number of resources, 206, is greater than maximum allowed, 200
“`ネストさせることで回避できることを知り、ネストするも“`sam build“`できず、結局ネストされた各アプリケションを個別にビルドし、マージするシェルを書いて運用していた。
苦労した話を書こうと思い調べていると、いつの間にかネストされたアプリケーションのビルド
AWS Lambda (Python 3.8)からWrikeのAPIを叩いてみる
#この記事の概要
AWS API Gatewayでリクエスト受けてLambdaを実行するという記事は以外にあるのですが、逆にLambdaから他の外部APIを叩くのにサンプルがほしかったのでLabmda & Python 3.8(&標準ライブラリ)からWrikeのAPIを叩いてみました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2671/90aaf978-d6da-eee8-9124-ee2025c738d6.png)
bearerトークンが使えるAPIが公開されているWeb serviceなら他のサービスでも流用できると思います。#本記事の投稿者
Python&Lambda初心者(両方とも初めて書いてみた)のでとりあえず動けばいいというレベルです。
#大まかな手順
Wrikeで永続トークンを生成し、LabmdaでPythonの関数つくって実行。#Wrike公式APIリファレンス(英語)
https://developers.wrike.com/#永続アクセストークンの取
AWS ChaliceでEC2とRDSを自動で起動停止するLambdaを作成
任意のタグが付いたEC2、RDSインスタンスをスケジュールで起動停止するためのLambdaです。
[Chalice](https://github.com/aws/chalice)で作ってあるのでハンドラーを変えればAPIエンドポイントから実行したりもできます。
以下実装です。
「AutoStartStop」タグが付けられたインスタンスを対象にして、平日の10時に起動、平日の19時に停止します。
“`python:app.py
from chalice import Chalice
import logging
import os
import boto3app = Chalice(app_name=’schedule-startstop’)
app.log.setLevel(logging.DEBUG)env_dryrun = False if os.environ[‘DRYRUN’].upper() == ‘FALSE’ else True
def change_instances_state(event, state=’Start’, dryrun=True
AWSから行うセキュア動画配信 ~MediaConvertで動画変換~
## はじめに
個人情報を含む動画をAWSからセキュアな環境で配信してみる、の中編の投稿になります。
* [前編](https://qiita.com/r-mizuno/items/79ec52ca77ac0bb1b503): 配信するための動画を、AWS Key Management System (KMS) から生成した共通鍵で暗号化し、S3へ格納する
* 中編: **AWS Elemental MediaConvert を利用して、HLS+AES暗号化の形へ動画を変換する(今回)**
* 後編: Cloudfrontの署名付きCookieを利用して、アクセス可能なユーザを制限する前回は、KMSを使用してS3へ格納する動画を暗号化(CSE)する方法をご紹介しました。
今回は、S3へ保存された動画をMediaConvertを使用して、HLS+AESの形へ動画を変換して配信用のバケットへ保存していきます。## 構築予定の環境
構築予定のシステム構成図は以下のようになります。
本記事では、赤字となっている部分を解説します。![image.png](https://qii
Alexaスキル開発チュートリアル(AWS Lamda, node.js)
# Alexaスキル開発チュートリアル(AWS Lamda, node.js)
個人で開発した、Alexaスキル開発チュートリアルを記載します。**今回は自分の目標設定をAlexaに記憶させて、次回起動時に目標期限を自動で算出して教えてくれるAlexaスキルを開発してみようと思います。**
### 完成イメージ
“`
◼︎ 初回起動時
(自分)アレクサ、目標リマインダーを開いて
(Alexa)こんにちは、目標リマインダーへようこそ。目標達成希望日時を教えてください。
(自分)2020年10月9日
(Alexa)ありがとうございます。目標達成日時は2020年10月9日ですね。◼︎ 次回起動時
(自分)アレクサ、目標リマインダー
(Alexa)おかえりなさい、次の目標達成日時まで1年、残り12日です。目標達成に向けて本日も頑張りましょう
“`### 前提知識
“`
1. AWS Lambdaについての最低限の知識
2. JavsaScriptについての最低限の知識
3. Alexa(スマートスピーカー)についての最低限の知識
“`## STEP1 「ログイン」
AWS LambdaでRESTでデータ取得してSplunkに送信してみる (Python編)
#はじめに
– [AWS LambdaでRESTでデータ取得してSplunkに送信してみる](https://qiita.com/symmr/items/c25fd31ebde1e8ebb095)ではBlueprintを使用してLambdaからSplunkへのHEC送信に成功しました。
– しかしBlueprintはNode.jsでした。Splunk管理者はPythonの方が得意だと思いますので(偏見)、Pythonでできないか調べました。
– PythonでSplunk HECに送信するClass([Splunk-Class-httpevent](https://github.com/georgestarcher/Splunk-Class-httpevent))がありましたので、今回はこちらを使って実現します。
– Splunk-Class-httpeventはレイヤーにしてLambda上のPythonから呼び出せるようにします。
– Splunkで毎日運勢を占えるようになりました。#環境
– Lambdaからアクセス可能するためEC2などでグローバルIPを持つSplunk E
【AWS IoT】IoT CoreのRuleでできること:アラート通知とシステムの疎結合化
#はじめに
今回はIoT Ruleでできることというテーマで、アラート通知とシステムの疎結合化の方法について書きました。具体的にはエッジデバイスからMQTT通信でIoT CoreにJSON形式のメッセージを定期的に送信する際、異常な値が検知された場合に誰かに通知したり、特定のサービスを止めたりする想定で、Ruleの解説をしていきます。
**※この記事内で紹介するコードは動作確認していないものも含まれるのでご了承ください。**#共通部分-Ruleの作成
IoT Coreの画面から「ACT」→「ルール」→「作成」をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001699/6d6be26d-15f8-640a-5ae5-c07aa85653cc.png)
**メッセージのフィルタリングにSQL構文が使えます。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001699/
Amplify×Lambda×SESでメール配信
## 概要
開発中のアプリにレポートを投稿した際にメール通知が必要ということでAWSのSESを利用した検証を行いました。
メール通知やメール配信を考えている方の少しでも参考になればと思います。## 事前に
### アプリケーション
[Amplify SNS Wrokshop](https://amplify-sns.workshop.aws/ja/10_getting_started/00_what_you_build.html)の「[FOLLOW/TIMELINE機能の実装](https://amplify-sns.workshop.aws/ja/50_follow_timeline.html)」までを実装済みの方を前提としています。
しかし、SESの実装自体は簡単ですので、Amplify SNS Wrokshopをやっていない方でも実装できると思います。### Email認証
SESの送信元は検証済みのEメールアドレスが必要となります。
検証済みのEメールアドレスがない方は[こちら](https://docs.aws.amazon.com/ja_jp/ses/latest
LambdaとSNSでごみ収集日をメール通知
##はじめに
平日休みだと、日課のごみ出しを忘れてしまうことがあるので、前日に通知しておきたいと思いました。
せっかくなのでLambda(Python)とSNSを使ってメール通知したいと思います。##今回構成するサービス
「毎日20時に翌日のごみ収集内容をEメール通知する」というサービスを作ってみようと思います。大まかな流れは以下の流れで行います。
①SNSでTopicとサブスクリプションの作成
②Topicに対し、テストメッセージを送る
③IAMロールの作成
④Lamdaでテストコードの実行
⑤明日の曜日を判定するコードの作成
⑥SNSでメッセージの送信
⑦Lambda関数の定期的な実行##SNSでTopicとサブスクリプションの作成
SNSのサービス画面でTopicを作成します。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/991082/5ef4b46e-728b-5aa5-a531-389f2a4cc2e4.png)
画面上の指示に従い、以下のようにTopicを作成します。
[AWS SAM] Python外部ライブラリ(Pandas)のLayer化
関連記事:[[AWS SAM] Lambda Layerの定義(nodejs)](https://qiita.com/takmot/items/6b18a74784fbf346f4ae)
# 目的
– Lambdaで外部ライブラリ(Pandas)を使用するためにLayer化する
– AWS SAMでLayerをデプロイする# パッケージの作成
外部ライブラリをLayer化するためには
– 外部ライブラリをまとめたzipファイルを作成する
– 使用する外部ライブラリが参照している他の外部ライブラリも含める
– Amazon Linux でデプロイパッケージを作成する ※Lambdaの実行環境がAmazon Linuxのため
– Lambdaの実行環境に合わせたRuntimeで作成する今回はEC2でAmazon Linuxのインスタンスを使用した
### Amazon LinuxへのSSH接続
デフォルトのユーザ名:ec2-user
EC2からダウンロードした秘密鍵:****.pemを使用してログインする
### Python3インストール
参考:[【2020年
AWS LambdaでRESTでデータ取得してSplunkに送信してみる
#はじめに
– RESTで取得してSplunk or Splunk Cloudに取り込みたいデータがある
– Add-onがあればいいんだけど、ないものはない
– Add-on作るのめんどい
– ローカルでREST叩くスクリプト動かすとしても24時間稼働するマシン用意するのもコストがかかる
– うーん、、、AWS Lambda試してみるか → **何これすごい!** というお話です追記:本記事ではNode.jsを使用します。Pythonでの方法をまとめました。
[AWS LambdaでRESTでデータ取得してSplunkに送信してみる (Python編)](https://qiita.com/symmr/items/074be71bdcc31d3e6079))#環境
– Lambdaからアクセス可能するためEC2などでグローバルIPを持つSplunk Enterprise、もしくはSplunk Cloud
– AWS Lambda#設定手順の概要
1. SplunkでHEC設定
2. AWS Lambdaで関数作成
3. CloudWatchでLambdaを定期実行化#
【AWS IoT】Greengrass Coreデバイス上でLambdaを起動し、ローカルファイルをS3にアップロードする際の9個のハマりどころをまとめてみた。
#はじめに
AIカメラ等のプロジェクトでほぼ必須(だと思います)の「Greengrass Coreデバイス上でLambda(boto3)を動かしローカルファイルをS3にアップロードする」手順と注意点をまとめました。エッジコンピューティングの基礎でもある機能で、一見すごく簡単そうですが、筆者自身かなりハマってしまいました。ラズパイの初期設定から最後の画像のアップロードまでハマりどころが9つあるのでそれを実際の手順にそって解説しています。
(ちなみにGreengrassはversion1を使っています)#概略図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001699/c8c852f3-690f-1c49-25c8-42e5eeda2878.png)#今回やることの大まかな流れ
**初期設定(OSインストール、ラズパイの初期設定、PCからラズパイへSSH接続、Greengrass Coreのインストール&Greengrass初期設定、Filezilla等FTPソフトウェアでラ