- 1. Lambdaオーソライザで任意のエラーレスポンスを返却する
- 2. 【AWS】boto3を使ってS3でフォルダを作成する方法
- 3. 疑似親友、作りました。
- 4. CloudFront用WAFをサクッと自動作成する
- 5. AWS CodeCommit にSSHでgit接続できないやんけ問題
- 6. Terraform + SAM で苦労した話
- 7. 【AWS/cloud9】SQL起動方法と簡単な使い方
- 8. 新しいAWS SysOps試験受験記録(合格)
- 9. AWS WAFで特定パス以下に海外IPアクセス制御
- 10. LocalStack とSAM CLIを用いたローカルLambda +DynamoDB API 作成方法メモ
- 11. Lambda (SAM CLI) + MySQL(docker-compose)を利用した REST API作成方法メモ
- 12. AWS CLI ver.2のインストールおよび設定
- 13. AWSのEKSのログを(ニア)リアルタイムでBigQuery連携するアーキテクチャ調査メモ
- 14. AWS CloudWatchでディスク容量とメモリ使用量を監視&アラート時に通知設定手順
- 15. pull requestでTipsDivergenceExceededExceptionが発生して差分が表示されなかった時の対応
- 16. 音声認識サービスを活用して話者特定のできる文字起こし機能をつくる(事前調査)
- 17. 【AWS】PynamoDBを使ってみる
- 18. Railsの環境構築やデプロイを学ぶ上で役に立った記事
- 19. AWS CodeCommitについて
- 20. AWS cloud9で、rails serverが起動しない時にやったこと。
Lambdaオーソライザで任意のエラーレスポンスを返却する
Lambdaオーソライザで認証結果に応じて
任意のステータスコードやエラーメッセージを返却する方法です。## 返却可能なステータスコード
ステータスコード 200, 401, 403, 500 を返却することが可能です。ステータスコードですが通常のLambdaのように直接ステータスコードを
返却することは出来ません。以下の方法でステータスコードを制御します。
・Allow IAMポリシーを返却 → 200 OK レスポンスが返却される。
・Deny IAMポリシーを返却 → 403 Forbidden レスポンスが返却される。
・’unauthorized’トークンを返却 → 401 Unauthorized レスポンスが返却される。
・上記以外のトークンを返却 → 500 Invalid token レスポンスが返却される。## エラーメッセージのカスタマイズ
403レスポンス返却時は、contextを利用することで対応が可能。
DenyのIAMポリシーの中で設定したcontextオブジェクトの情報は、
ゲートウェイレスポンスにてアクセスすることが可能です。(例)
【AWS】boto3を使ってS3でフォルダを作成する方法
boto3を使ってS3でフォルダを作成する方法です。(備忘録として)
“`python
import boto3 #boto3インポートdir = ‘hoge/fuga/’ #ディレクトリパス
bucket_name=’your_buket_name’ #S3のバケット名
s3 = boto3.client(‘s3’)
result = s3.list_objects(Bucket=bucket_name, Prefix=dir) #ディレクトリを変数にif not “Contents” in result: # ディレクトリがない場合はContents というキーが存在しない。これを使えば存在判定ができる。
s3.put_object(Bucket=bucket_name, Key=dir) #ディレクトリ作成
“`# 参考にした記事
https://intellipaat.com/community/41744/using-boto3-how-can-i-create-a-folder-inside-s3
https://qiita.com/ra
疑似親友、作りました。
こちらの記事「[疑似彼氏、作りました。](https://qiita.com/mnana/items/3836aee1b749670804dc)」が面白かったので真似して作ってみました。
# 疑似親友とは
良いこと(ポジティブ発言)に対して一緒に共感してくれて、嫌なこと(ネガティブ発言)に対しては励ましてくれて、それ以外に対しては適当な相槌を打ってくれて、向こうからは全く何も言ってこないとても ~~都合のいい~~ 素晴らしい親友です。# 疑似親友の構成
作りとしてはLINE Messaging APIで受けたテキストをAWS API Gateway経由でAWS Lambdaに渡しAmazon ComprehendでテキストをPOSITIVE(ポジティブ)、NEGATIVE(ネガティブ)、Neutral(中立)、Mixed(混在)の4種類に分類、その結果を元に返信メッセージを作成するという構成になります。
感情分析に関しては以前自分で作成した[Pythonで感情極性辞書を用いたテキスト感情分析をつくってみた](https://qiita.com/miso_taku/item
CloudFront用WAFをサクッと自動作成する
## この記事の目的は?
**CloudFront + AWS WAF**は非常に汎用性のある構成であるにも関わらずCloudFormation自動作成の記事が少なかったので、実装方法を記載します
### どんなものを実装できるの?
特定のIPのみアクセス可能なCloudFrontを**yaml**から作成できます
### 構成
![composition.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2171325/c19c9cae-d538-11b1-ee1a-67beae77f093.png)
### 注意することその1
CloudFront+WAFの構成を作る上で気をつけなければいけないのが作成順序です
CloudFrontを作ってからWAFを作って、関連付けるのではなく
**WAFを作ってからCloudFrontを作って、関連付ける**のが正しいです
理由:CloudFrontディストリビューションはARNでWAFを参照できますが、WAFはCloudFrontを参照する
AWS CodeCommit にSSHでgit接続できないやんけ問題
# ?問題
超絶ドザなのでWindowsに git 2.33.1 をインストールしている。
AWS CodeCommit から SSH で Cloneしようとすると、何か怒られるではないか。“`
Unable to negotiate with 52.12.34.56 port 22: no matching host key type found.
Their offer: ssh-rsa
fatal: Cloud not read from remote repository.Please make sure you have to the correct access rights and the repository exists.
“`
ばかなと思ってみんな大好き亀さんで試すと普通にCloneできた。ばかな。# ?対処
`~/.ssh/config` を以下の感じにしよう“`
Host git-codecommit.*.amazonaws.com
User hogehogemoge
IdentityFile ~/.ssh/id_rsa
Terraform + SAM で苦労した話
## はじめに
以下のブログを参考に SAM を Terraform に組み込んでみたところ、
色々苦労することになったので備忘録を残します
https://blog.youyo.io/posts/terraform-aws-sam/
## 実行環境
– Terraform: 1.0.6
– Terraform providers:
– aws: 3.58.0
– local: 2.1.0
– null: 3.1.0
– SAM: 1.24.1## 背景
AWS Lambda のデプロイに昔は apex を使っていましたが、メンテナンスされなくなってしまいました
https://github.com/apex/apex
昔は他に便利なツールもなかったため、
Docker コンテナで依存ライブラリをインストールしてから圧縮するスクリプトを自前で組みましたそれを Terraform から呼んで関数毎にビルド・デプロイする方法です
自前実装で長く運用してきたものの、
やはり Lambda 周りが無駄に複雑になってしまっているため、
公式の Lambda
【AWS/cloud9】SQL起動方法と簡単な使い方
#データベースサーバの起動と停止
*MySQLは最初からCloud9に導入されているからインストールは不要。
####サーバーの起動
“`sudo service mysql start“`####サーバーの起動状態確認
“`sudo service mysql status“`####サーバーの停止
“`sudo service mysql stop“`####サーバーを再起動
“`sudo service mysql restart“`####データベースサーバへの接続
“`sudo mysql -u root“`そうすると、、、
“`mysql>“`
が表示される####データベースサーバからの切断
“`mysql> exit“`#データベースの使い方
####データベースを作成する
まずbookstoreというデータベースを作成する。
“`CREATE DATABASE データベース名;“`
これでデータベースが作成される。####データベース一覧の確認
“`show databases;“`
コマンド
新しいAWS SysOps試験受験記録(合格)
# はじめに
これまでにAWS試験を受験した記録をいくつか書いてきました。* [AWS 認定クラウドプラクティショナーを受験(合格)してきた話](https://qiita.com/handy-dd18/items/c2b62ad58206e47f1345)
* [AWS 認定ソリューションアーキテクトアソシエイトを受験(合格)してきた話](https://qiita.com/handy-dd18/items/96a9f374a64663b10e24)
* [AWS DVAを1週間で合格してきた話](https://qiita.com/handy-dd18/items/33ba3e6cfa100903912c)この流れでSysOpsも受験しようとしたところ、新試験に切り替わるという[リリース](https://aws.amazon.com/jp/blogs/news/tips-for-an-aws-certification-exam-with-exam-labs/)が出てきたので、急遽勉強時間を延ばすことになってしましました。
今回やっと受験することができたので、簡単に勉強
AWS WAFで特定パス以下に海外IPアクセス制御
AWS WAF にて、「ALB」に対して、
国内IPではない、かつ、/admin 以下のパス、でのアクセスの場合に、
アクセス制御(「403 Forbidden」エラー)となるように設定したときの備忘録です。## 1.Web ACL 作成前に /admin 判定の設定
AWS WAF の サイドメニュー「Regex pattern sets」を開き「Asia Pacific (Tokyo)」に切り替え、
[ Create regex pattern set ] 押下#### Regex pattern set details
・**Regex pattern set name**:`admin`(自由に入力)
・**Description – optional**:(空で登録可能なので空で登録)
・**Region**:`Asia Pacific (Tokyo)`
・**Regular expressions**:`.*/admin*`(/admin 以下)[ Create regex pattern set ] 押下
## 2.「Regex pattern sets
LocalStack とSAM CLIを用いたローカルLambda +DynamoDB API 作成方法メモ
* LocalStackとSAM CLIを用いたローカルLambda + DynamoDB APIの作成方法についてメモする。
* POSTメソッドでリクエストボディに指定した値をDynamoDBテーブル検索して返却する。## 構成
![sam+dynamo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586535/5c881d46-febb-81c6-196c-36d81970d5d9.png)
## LocalStack 準備
* [こちら](https://qiita.com/KWS_0901/items/f9579d9c360cf42dc97d)の手順でDocker LocalStack環境を準備しておく。
## Dynamo DB 準備
* テーブル(`sample-table`)作成
“`shell
aws dynamodb create-table –table-name sample-table –attribute-definitions Attr
Lambda (SAM CLI) + MySQL(docker-compose)を利用した REST API作成方法メモ
* ローカル環境でLambda(SAM) + MySQL(docker-compose)を利用したAPIを作成する方法についてメモする。
## AWS SAM(Serverless Application Model)
* サーバーレスアプリのデプロイに特化したCloudFormationの拡張機能。
* YAMLもしくはJSONでリソース定義する。### SAM CLI
* SAMを利用した開発サポートツール
* サーバーレスアプリのひな形作成、ビルド、AWSへのデプロイができる。
* 開発者のローカル環境でLambdaをDockerコンテナ起動できる。## 構成
![sam.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586535/28ba6b48-16b7-3127-3657-9604cc31e631.png)
## 準備
* SAM CLIインストール
“`shell
brew tap aws/tap
brew install aws-sam-cli
AWS CLI ver.2のインストールおよび設定
# はじめに
Amazon ECS (Elastic Container Service) を用いて AWS 上にアプリをデプロイしたい。そのためにまず Amazon ECR (Elastic Container Repository) へコンテナイメージの登録が必要だが、登録するには Docker を認証するために `aws` コマンドを実行しなければならない。(詳細は[Docker イメージをプッシュする](https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/docker-push-ecr-image.html)を参照。)自身の環境にインストール済みの AWS CLI は ver.1 であったため、この機会に最新メジャーバージョンの2へとアップデートした。実行環境は以下。
– Ubuntu-20.04 (Windows 10 Pro, WSL2)
# AWS CLI バージョンの確認
以下コマンドで AWS CLI のバージョンを確認する。`aws-cli/1.18.69` であった。
“`bash
AWSのEKSのログを(ニア)リアルタイムでBigQuery連携するアーキテクチャ調査メモ
# 背景
– AWSのEKSのアクセスログやアプリケーションログをリアルタイムにBigQueryに連携したい
– 現状の最適アーキテクチャ調査をしたのでメモ# 方法
## 1. Fluentd -> BigQuery
### [Fluentd と BigQuery を使用したリアルタイムのログ分析](https://cloud.google.com/architecture/fluentd-bigquery?hl=ja)
– 最もシンプルな構成、BQでのアドホックな分析要求だけであればこれで良い
– 割り当て上限: テーブル毎にデフォルト100,000/secondのinsertの上限だが、追加リクエストで増やすこと可能 ([割り当てと上限](https://cloud.google.com/bigquery/quotas?hl=ja#streaming_inserts))
– ストリーミングインサートなので費用がかかる
– $0.010 per 200MB ([データ取り込みの料金](https://cloud.google.com/bigquery/pricing?hl=j
AWS CloudWatchでディスク容量とメモリ使用量を監視&アラート時に通知設定手順
CloudWatchでディスク容量やメモリ使用量まで含めて監視設定しようと思うたびにあっちこっちのサイトを見て時間を浪費してしまっていたので手順を記載します。
Linuxサーバで構築している前提の話です。## おおまかな手順
1. EC2インスタンスにsshで入る
2. perlモジュールのインストール
3. curlコマンドを実行してモニタリングスクリプトをダウンロード
4. ダウンロードしたモニタリングスクリプトをインストール
5. IAMユーザーを作成
6. 認証を設定
7. Cronを設定
8. 通知用SNSを作成
9. アラートの作成## 1. EC2インスタンスにsshで入る
使っているec2サーバ内にsshコマンドで入ります。
![スクリーンショット 2021-10-26 1.19.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/574173/983eaba5-a440-37a0-3caf-a9c9ecb05903.png)## 2. perlモジュールのインスト
pull requestでTipsDivergenceExceededExceptionが発生して差分が表示されなかった時の対応
###問題
ソースツリーのgit pushでリモートにあげた作業ブランチをreleaseブランチへpull requestしたところ
下記メッセージが表示されてしまい、差分が表示されませんでした。**TipsDivergenceExceededException**
The merge cannot be completed because the divergence between the branches is too great. If you want to merge these branches, use a Git client.###対応内容
作業ブランチにreleaseを取り込みgit push
その後再度pull requestしたところ差分表示されました。
音声認識サービスを活用して話者特定のできる文字起こし機能をつくる(事前調査)
# 背景
議事録作成などに便利な音声文字起こし機能だが、既存の文字起こしサービスには話者を特定できるものが少ない。
また、話者を特定するものについても、その方法は話者それぞれにマイクを準備し、どの、マイクから音声が入ってきたかで特定するもので、1つの音声から話者を分けて文字起こしができるサービスは出ていない。
今回は、1つの音声から話者特定のできる文字起こし機能をつくる方法について調査する。## 既存の文字起こし(議事録作成)サービスについて
・スマート書記
https://smartshoki.jp/
・UserLocal 音声議事録システム
https://voice-dashboard.userlocal.jp/
・QuantumCore sloos
https://sloos.qcore.co.jp/# 話者を特定しない文字起こしについて
*各クラウドサービスの音声認識サービスについて*
1. Amazon(AWS) : Transcribe
https://aws.amazon.com/jp/transcribe/
【Transcribeの機能】
・Re
【AWS】PynamoDBを使ってみる
# はじめに
おじさんは、AWSのお勉強しています。先日購入した書籍「動かして学ぶ!Pythonサーバレスアプリ開発入門」 を読んでいたら PynamoDBを使っていたのですが、そこで躓いてしまいました。書籍のソースコードは公開されています。(翔泳社の書籍の案内ページからリンクもあります)。
PynamoDBについて、下記のサイトをざっと読みました。
NoSQLなるもので、従来のrelational DBと異なるそうです。https://koh0214.hatenablog.com/entry/pynamoDB
# pynamoDBを動かした
## 準備
pynamodb そのものは普通に pip で入ります。
https://pynamodb.readthedocs.io/en/latest/
## DynamoDBLocalの用意
pynamodb は DynamoDBというサーバと接続して使うもののようで、まずサーバとして動くDBが必要です。
ローカルでDBを動かすためにはいくつか方法がありますが、ここではDynamoDB Local というものを動か
Railsの環境構築やデプロイを学ぶ上で役に立った記事
普段はインフラ寄りの仕事をしているエンジニアですが、Railsの環境構築やデプロイについてキャッチアップする機会があり、色々学ぶうちにブックマークが溜まってきました。
同様の内容を学習中の方の参考になればと思い、Qiita記事化します。
## 環境構築関連
### Docker
– [Rails 6.1のDocker開発環境構築をEvil Martians流にやってみた(更新)|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社](https://techracho.bpsinc.jp/hachi8833/2021_03_25/83450)
– [クジラに乗ったRuby: Evil Martians流Docker+Ruby/Rails開発環境構築(翻訳)|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社](https://techracho.bpsinc.jp/hachi8833/2021_04_20/79035)
– [Nginx+Rails6.0+MySQL8.0+Adminer:docker-c
AWS CodeCommitについて
# CodeCommitとは
AWSが提供するマネージド型のソース管理サービス。
Git の標準機能がサポートされており、Git からの移行が容易。
また、CodeCommitのリポジトリとGitHubやGitLabのリポジトリをミラーリングすることも可能。#CodeCommitへのリポジトリ作成手順
1. AWSマネジメントコンソールからCodeCommitのコンソールへアクセスする。
1. `リポジトリの作成` を押下する。
![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367074/370a9cd8-8235-1dfe-c174-5d8fa2a54ea1.png)
1. 以下の情報を入力して、`作成` を押下する。
リポジトリ名:任意の文字列
説明 :任意の文字列
タグ :任意
![002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367074/04e6f62c-
AWS cloud9で、rails serverが起動しない時にやったこと。
昨日中断するまでは起動していたはずの`$ rails server`を再開しようとしたら
“`ruby:qiita.rb
Could not find gem ‘puma (= 3.9.1)’ in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
“`出たよと思いつつ、とりあえず`$ bundle install`をしてみる。
“`ruby:quitta.rb
$ buindle install
Command ‘buindle’ not found, did you mean:
command ‘bundle’ from snap ruby (3.0.2)
command ‘bundle’ from deb ruby-bundlerSee ‘snap info
‘ for additional versions.
“`豪快にスペルを間違えるも、本人はなんかエラー出てるなと流し見して気づかず