- 1. AWS ソリューションアーキテクト プロフェッショナル (SAP-C01) 2回目を滑り込み取得してきた話
- 2. 【AWS】Lexボットの作成方法についてまとめてみた
- 3. CloudFormationでLambda(Python) + RDS Proxy + Auroraを構築する
- 4. LINEアプリケーションをHerokuからAWSに移行しようLINEアプリケーションをHerokuからAWSに移行しよう
- 5. LINEアプリケーションをHerokuからAWSに移行しようLINEアプリケーションをHerokuからAWSに移行しよう~準備編~
- 6. 【AWS認定試験】受験の流れと感想@ピアソンVUE【クラウドプラクティショナー】
- 7. 【Athena】大量のファイル群からのスキャン量をファイルパスをマッピングして削減する
- 8. AWS Lambda 料金形態
- 9. AWS Parameters and Secrets Lambda Extension つかってみた
- 10. AWS CDKとReactを利用してログイン処理を実装してみる
- 11. AmazonConnect × Salesforce 連携をセットアップしてトラブルシュートした話(履歴メトリクス:Queueのデータ連携)
- 12. AWS SageMaker Studio 費用(ノートブックとインスタンスもシャットダウンしないと課金される)
- 13. 【AWS】複数のIdpを紐づけたCognito ユーザプールを作る
- 14. 【rails + minitest】 flashに格納したメッセージをassertする方法
- 15. AWS Fargateでストレージを共有するバインドマウントとデータボリュームの違いを理解する
- 16. API Gateway カスタムドメイン設定方法
- 17. Amazon Detective とは
- 18. AWS LambdaでPython向けLayerを作ろうとしたらはまった話
- 19. 【Terraform】Terraformで別のリソースを参照する方法
- 20. RDSパラメータグループ(utf8)を設定しても日本語が文字化けする
AWS ソリューションアーキテクト プロフェッショナル (SAP-C01) 2回目を滑り込み取得してきた話
# はじめに
前回から早3年、「AWS認定ソリューションアーキテクト プロフェッショナル(SAP-C01)」を再度受験して合格しました。
今回の出来としてはジャスト8割程度です。現行試験のSAP-C01は最終受験日は2022年11月14日となっており滑り込みで受験です。
これから同試験を受ける方は少数かも知れませんが、体験記と学習法をまとめてみます。学習にフォーカスした記事は書いてる方も多いと思うのでそこは簡単に、
試験に向けて当日気を使ってみたことや心構えも書いてみます。また資格取得だけを目的とするよりは、極力実務に活かせるよう実サービスを触りたいという方針です。
ここらへんは時間との兼ね合いで学習プランを検討ください。参考になれば幸いです。
前回:[AWS ソリューションアーキテクト プロフェッショナル SAP-C01 合格 受験記録](https://qiita.com/ymnk3/items/fd6c3482cd73dd3a1d26)
# 簡単なバックグラウンド
– AWS実務歴6年
– サーバーサイド/バックエンド・インフラメインで10年強→SRE歴3年→
【AWS】Lexボットの作成方法についてまとめてみた
# 1.はじめに
どうも、ARIの名古屋支社に勤務している愛知県民です♪
(/・ω・)/少し時間が空きましたが、以前の記事で
AmazonConnectのコンタクトフローからLexボットを呼び出す方法について記載しました。https://qiita.com/Aichi_Lover/items/748a0f469378235d258f
・・・がそもそもLexボットについてあまり詳しく書けていなかったので、
**今回はLexボットの作成方法について記事にしたいと思います!**
Lexについて勉強中の方の参考になれば幸いです。
(*^^)v# 2.用語の説明
Lexボットを作成するにあたり、基本的な用語の説明をします。## 2.1.インテント
インテントとは直訳すると「意図」のことで、
Lexが顧客に対して投げかける質問の内容や、予想される顧客の反応等を設定し、
Lexと顧客の一連のやり取りを記述しておくことができます。また、1つのボットに対してインテントを複数作り、処理を分けることができます。
:::note info
例
以下の画像のインテントを作成した場合
「B
CloudFormationでLambda(Python) + RDS Proxy + Auroraを構築する
# 本記事の内容
– AWSが提供するCloudFormationサービスを利用し、Lambda(Python)、RDS Proxy、Auroraを建てる方法を記載した記事です。
– これまでに以下の記事でAurora関連をCloudFormationで実施していました。その続編です。
- [検証目的のためにCloudFormationでシングルインスタンスのAuroraを建てようとしたら手こずった話](https://qiita.com/kanamekun/items/4db938d52712b1165c37)
- [CloudFormationでAuroraとLambdaを構築。LambdaでLOAD DATA FROM S3コマンドを実行しS3のCSVファイルをAuroraにインポートする。](https://qiita.com/kanamekun/items/53da2f73bcc2e5d68dc2)本記事の手順で以下のような構成のクラウド環境を作成します。
![aws_lambda_rdsproxy_aurora.png](https://qiita-image-
LINEアプリケーションをHerokuからAWSに移行しようLINEアプリケーションをHerokuからAWSに移行しよう
# はじめに
この記事はLINE API開発者のためのイベント、REV UP2022のハンズオンセッション「LINEアプリケーションをHerokuからAWSに移行しよう」のハンズオン資料をまとめた記事です。
https://revup.jp/session/aj9vx8bgy
準備編もございますので、そちらも合わせてご覧下さい。
https://qiita.com/ufoo68/private/6c9e7154993e1af81b2f
# HerokuでLINE botを作成する
## LINE DevelopersでMessaging APIを登録
LINE Developersにログインして[コンソール画面](https://developers.line.biz/console)を開きます。
最初にプロバイダーを作成する必要があるので、まだ作成されていない場合は作成します。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209689/de038de2-38b3-e1
LINEアプリケーションをHerokuからAWSに移行しようLINEアプリケーションをHerokuからAWSに移行しよう~準備編~
# はじめに
この記事はLINE API開発者のためのイベント、REV UP2022のハンズオンセッション「LINEアプリケーションをHerokuからAWSに移行しよう」の事前準備のための記事です。
https://revup.jp/session/aj9vx8bgy
# 準備するもの
## アカウント
このハンズオンでは以下のサービスのアカウントの準備が必要となっています。
– [LINE Developers](https://developers.line.biz)
– [Heroku](https://dashboard.heroku.com)
– [AWS](https://aws.amazon.com)注意点として、ハンズオンで多少の金額が発生する可能性もあります。予めご了承ください。
## インストール
ここがすごく面倒なのですが、以下のサービスを予めインストールする必要がございます。
– 開発全体で用意してほしいもの
– [vscode](https://azure.microsoft.com/ja-jp/products/visual-s
【AWS認定試験】受験の流れと感想@ピアソンVUE【クラウドプラクティショナー】
## はじめに
初めてクラウドプラクティショナーの試験を受けてきました!
ピアソンVUE(武蔵小杉テストセンター)も初めてのためせっかくなので記事を書いてみました。
AWSでは現在、AWS認定取得応援キャンペーンを実施中で、試験が通常金額の半額で受けられたためお得でした。## 試験の予約について
– 24時間後以降の試験であればいつでも受験可能、つまり予約した次の日に試験を受けることもできる。
そのためスケジュールが非常に組みやすかった。
自分は50%割引のバウチャーが届いたあと最短で受験可能な試験を予約した。
(朝9時30分〜16時45分の間、15分刻みで申し込める)
– 名前をローマ字で求められるが、大文字小文字は多分どちらでもよい。
名前がクレジットカードと一致してないと申し込めない、みたいな記述があったからちょっと悩んだけど自分は頭文字のみ大文字にした。
特に問題なかったけどどっちが主流なのかは地味に気になる。
ちなみに試験画面で自分の名前を選択する際、他の人の名前を見たら4人中2人は全部大文字、残り2人は頭文字のみ大文字だった。## 当日の注意点
– 身分証明書を2
【Athena】大量のファイル群からのスキャン量をファイルパスをマッピングして削減する
# 大量のファイルからのスキャン量を減らしたい
Athenaの料金はスキャン量に比例するので例えば
“`
1.csv.gz
2.csv.gz
3.csv.gz99999.csv.gz
100000.csv.gz
“`
といったファイルがあり、その合計が数テラバイト(とにかく大きいデータ)あるとします。
これらは例えば時系列データで2015年〜2022年のデータが入っているとします。スキャン料を減らす方法として、parquet化やpartitionで分けるというやり方があるのですが、ここで問題が発生します。
時系列データならpartitionで分けるのが一番いいのですが、partitionに振り分けるには一度のスキャンでは100個のパーティションでしか分けられません。
なので最大でも日付単位でパーティションを分けると1年のデータを作るのに3ヶ月ごとにSQLを分けなければならないため、1年で4回のフルスキャンが発生します(今回はCSVなのでフルスキャンとなる)。例えば10TBのデータであれば10TB*4で40TBのスキャンが必要になります。
>1 TB あたり 5.00USD
AWS Lambda 料金形態
# はじめに
AWS Lambda を使って何かを作ってみる。
だが、その前に課金の仕組みについて理解したいので記録する。# AWS Lambda の料金
課金は以下に基づいて生じる
– 関数へのリクエスト数
– コードの実行時間### 関数へのリクエスト数の条件
リクエスト数は以下の条件でカウントされる
– イベント通知トリガー
(Amazon SNS, Amazon EventBridge など)
– AWS SDK経由などの呼び出し
(AWS Console からのテスト呼び出しを含む)### コードの実行時間
– コードの実行が開始されてから、戻り値またはその他の方法で終了するまでの時間を計算される(1ms未満を切り上げる)
– 価格は、関数に割り当てるメモリの量に依存する。
**AWS Lambda では関数の必要なメモリ量を選択。CPUパワーやその他のリソースが比例して割り当てられる。**# AWS Lambda の無料利用枠
– 月間 100 万件のリクエスト
– 月間 40 万 GB 秒の計算時間# 参考
[AWS Lambda 料金](htt
AWS Parameters and Secrets Lambda Extension つかってみた
## はじめに
2022/10/18 に AWS Parameters and Secrets Lambda Extension が利用できるようになりました。https://aws.amazon.com/jp/about-aws/whats-new/2022/10/aws-parameters-secrets-lambda-extension/
AWS から提供される Lambda Extensions を使用して AWS Systems Manager Parameter Store からパラメーターを取得したり、AWS Secrets Manager からシークレットを取得したりできるようになります。
## 何が嬉しいのか
これまでは Lambda 関数の処理内で AWS SDK 等を使用してパラメーターやシークレットを取得していました。今回の拡張機能を使用することでこれらの値をキャッシュし、Lambda 関数のライフサイクル内で再利用できるようになります。これによりパラメーターやシークレットを取得するためのレイテンシーとコストが削減されます。## 基本的な使い方
以
AWS CDKとReactを利用してログイン処理を実装してみる
## はじめに
お仕事でAWS CDKとReactを扱う機会があり、その経験を踏まえて何かしら記事を作成したいと思い、この記事を書きました。
AWS CDKでCognitoを作成し、ローカルで起動したReactアプリケーションからログイン処理を行えることまでを記載しています。## 環境
WSL2
Node :16.15.0
aws-cdk:2.45.0
React:18.2.0## AWS CLIのセットアップ
以下の記事に沿ってセットアップを行います。
https://aws.amazon.com/jp/getting-started/guides/setup-cdk/module-one/まず私の環境ではAWS CLIをインストールしていなかったため、インストールしていきます。
以下のコマンドを実行するとAWS CLIのセットアップが完了します。
“`bash
$ sudo apt install unzip
$ curl “https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip” -o “awscliv2.z
AmazonConnect × Salesforce 連携をセットアップしてトラブルシュートした話(履歴メトリクス:Queueのデータ連携)
![記事対象.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/77866383-943f-addc-9b45-5d58f074b835.jpeg)
# 前提条件
Saleforce API Version : v55.0
serverlessrepo-AmazonConnectSalesforceLambda : 5.19.0
この記事は、2022/10頃に書かれています。バージョン齟齬によって起こるトラブルのようなので、あまりに時期が違う場合は、読む必要はありません。
同じハマり方をした人に届いたらいいな?と自分への備忘も兼ねて# トラブルの内容
公式のインストール手順書は下記の通りhttps://amazon-connect.github.io/amazon-connect-salesforce-cti/docs/lightning/salesforce-lambdas/02-historical-metrics
この手順通りに設定してもデータ連携ができなかった。というの
AWS SageMaker Studio 費用(ノートブックとインスタンスもシャットダウンしないと課金される)
AWS SageMaker Studio初心者です。
Abalone pipelineチュートリアル実行して費用発生(約$10/day)したので
原因を探ってみました。1)結論
ノートブックとインスタンスもシャットダウンしないと課金される2)原因
公式の料金表だとml.m5.xlargeは$0.298/Hなので24Hずっと動かしてたらしい。
作業終了時には必ずノートブックをシャットダウンしてたのになぜ?と思い
サポートページ(コンソールの右上の?にある)へ質問してみました。
3日ほどで回答が来て、丁寧に色々と説明がある中に
「自動シャットダウン拡張機能を利用した Amazon SageMaker Studio のコスト削減方法」があり
どうやらノートブックをシャットダウンしても、インスタンスまでシャットダウンしないと
課金され続ける事が判明。
https://aws.amazon.com/jp/blogs/news/save-costs-by-automatically-shutting-down-idle-resources-within-amazon-sagemaker-s
【AWS】複数のIdpを紐づけたCognito ユーザプールを作る
# きっかけ
– とある案件にて拠点ごとにAzure ADが構築されており、それらを使用して、ユーザをSAML連携したCognitoで一括管理できないかという案を受けて調べることになった。
– 内心、できないんじゃないか(ユーザプールがIdpと1対1対応で複数ユーザプール化)と思っていたが、できちゃったのでこの記事が書かれています# Cognito, AzureADの構築手順は過去記事参照(CognitoのUIは古いままです)
– 【AWS】Cognito ユーザプールをAzure ADをIdPとして構築する(前編)https://qiita.com/kei1-dev/items/a0870c26da51dbaa6580
– 【AWS】Cognito ユーザプールをAzure ADをIdPとして構築する(後編)
https://qiita.com/kei1-dev/items/c8ae68e975dccb2902be
# 検証結果
– Azure ADのディレクトリを2つ作り、それぞれユーザを紐づける。
![スクリーンショット 2022-10-18 13.28.4
【rails + minitest】 flashに格納したメッセージをassertする方法
## 概要
minitestでrailsのテストを書いていてふと、
「flashの内容でコードの挙動を確認出来れば、testコードの可読性があがりスマートなのでは??」と思ったので、書き方をメモします。## 結論
以下のように記載すればOK。assert flash.to_hash.value? “想定されるメッセージ”
## 詳細
Flashクラスはよくわからないので、`to_hash`でハッシュに変換したのち、`value?`メソッドで格納されたメッセージを検索してます。これを使えば、以下のように、テストコードの可読性がグンッと上がって幸せ
“`ruby:sample-test
test “records-destroy” do
# 正常系
sign_in(@user2)
delete record_path(1)
assert flash.to_hash.value? “レコードを破棄しました”
# ↑ 一目瞭然
assert_redirected_to records_path# 異常系
delete record_pa
AWS Fargateでストレージを共有するバインドマウントとデータボリュームの違いを理解する
# はじめに
アプリケーションをコンテナ化してAWSのFargateで運用する場合、Django+Nginxの場合だとスタティックファイルの共有が必要となるが、仕組みをよく理解していなくて混乱していた。
後から考えればそういうことかと思えたけどもそのあたりを整理してみた。# やりたいこと
ざっくり構成図を描くとこんな感じ。本当はRDSとかECRとか使っているが省略。
![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691494/bec4b6e0-85c0-67e5-39d0-4f877d4fbf29.png)
2つのアベイラビリティゾーンにパブリックサブネットを配置してFargateをロードバランシングして運用。
1つのタスク内にDjangoとNginxの2コンテナを置く。
DjangoとNginx間でファイル(実際はディレクトリ)を共有する必要があり、左右のFargate間はロードバランシングしているため共有が必要となる。結論からいうと
* タスク内のコンテナ間での共有
API Gateway カスタムドメイン設定方法
# 目的
Lambda+API Gateway構成で、証明書を作成してAPIGatewayにカスタムドメインを設定する方法を
試しにやってみたので、手順書的なもの。
※ Route53でのホストゾーンの作成は済んでいるものとします。
※ ACMを使った証明書も作成済みとします。
# やったこと
API Gatewayを開き「カスタムドメイン名」を選択します。①今回指定したいドメイン名を定義します。
②ACMで作成した証明書を選択します。
![スクリーンショット 2022-10-17 21.56.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542333/fa30e287-367f-a0ed-ae02-8d75d0452568.png)次にAPI Gatewayの画面に移るので、「APIマッピング」を選択し、設定を行います。
①対象のAPI Gatewayを選択
②対象となるステージを選択
③パスも設定(Lambda関数名)
![スクリーンショット 2022-10-19 8.39.40.pn
Amazon Detective とは
## 勉強前イメージ
聞いたことない感じする
## 調査
### Amazon Detective とは
AWS上のアプリケーションでのセキュリティ問題や不審なアクティビティなどがあった際に原因を分析・調査することを支援するサービスになります。
Detectiveは探偵の意味なので、探偵のようにモニタリングをして原因を調査して分析するサービスです。Detectiveは、以下のようなログを収集して情報を分析します。
– cloudtrail ログ
– vpcフローログ
– GuardDuty### 推奨条件
– aws cliは 1.16.303 以上
– Amazon GuardDuty を有効にする必要があります
– マスターアカウントで有効にする必要があります
– 有効後48時間待つ必要があります
– Amazon GuardDutyのcloudwatch通知が6時間間隔なので15分にする### ユースケース
– セキュリティで問題が発生した際の影響調査
万が一漏洩した際の認証情報や、悪意のあるIPアドレスからのAPIコールなどを確認することが出来
AWS LambdaでPython向けLayerを作ろうとしたらはまった話
AWS Lambda(Python)を使ってGoogle APIにアクセスしようとしたらライブラリではまった話です。
(Python初心者なので誤った記述があるかもしれません)# 環境
– 開発環境用にEC2 Amazon Linux2 + Python 3.7
– Google APIにはサービスアカウントでアクセスする
– Google API利用に必要なPythonパッケージ用にLambda Layerを作成する# 参考にした記事
– メインのコード自体は「補足:サービスアカウントを使ったやり方」を
ほぼそのまま活用させていただきました。https://www.coppla-note.net/posts/tutorial/google-calendar-api/
– 必要なパッケージについてはGoogleの「[Python quickstart](https://developers.google.com/docs/api/quickstart/python)」を参照しています。
# 事象
`pip -t`でインストールしたディレクトリを圧縮・Layer化したのに
【Terraform】Terraformで別のリソースを参照する方法
# はじめに
udemyを使ってTerraformの勉強をしたので、Terraformで別のリソースを参照する方法についての学習備忘録です。https://www.udemy.com/course/iac-with-terraform/
# Terraformで別のリソース参照する方法
* “.”で連結して参照する
* resourceブロックの場合、省略できる“`terraform
. .
“`“`terraform
# 例
resource “aws_vpc” “vpc” {
cidr_block = “192.168.0.0/24”
}resource “aws_subnet” “public_subnet_1a” {
vpc_id = aws_vpc.vpc.id # リソース参照している}
“`各リソースでどのような情報が引き出せるかは、[公式ドキュメント](https://registry.terraform.io/providers/hashicorp/aws/lat
RDSパラメータグループ(utf8)を設定しても日本語が文字化けする
# はじめに
Postmanを利用してLambda(Go)のAPIを試しているときに、日本語を送信するとエラーが発生するという問題が起きました
MySQLを使う際によく起きる現象なので記事を参考に修正をしましたが、どうもうまくいきませんでしたのでまとめます# 問題
https://bamboo-note.tokyo/AWS/aws-rds-mysql-cannot-japanese/
この記事を参考に設定を行い、DBの更新を行ったがなぜか日本語が文字化けしてしまいます
テーブルを削除して作成しなおしたのですが、それでも日本語が文字化けしました# 解決方法
テーブル削除でなくデータベース自体を削除する必要があありました
“`
select * from INFORMATION_SCHEMA.SCHEMATA;
“`これで文字形式をみたところ利用しているデータベースが`latin1`になっていて、`utf8`になっていないことから気づきます
RDSを変更したらDBを一回削除してから再度作成しないと変更が適応されませんでした
https://qiita.com