- 1. AWS CloudWatchのログを監視し、Slackに通知する(CloudWatch+Lambda+Ruby+Slack)
- 2. AWSクラウドプラクティショナー 取得エビデンス
- 3. またしてもAWS無料枠を意図せず超えてしまった話(backup storage exceeding free allocation)
- 4. Railsでポートフォリオ作成時に何回も使用したコマンド5選
- 5. Tips: CodeBuildでGitHubのPRへコメントを行う
- 6. はじめての可観測性ハンズオン + ハンズオン後、担当システムにLambda Insights適用
- 7. 【AWS】S3のストレージタイプ
- 8. MWAAをローカルでテストするaws-mwaa-local-runner
- 9. AWS CLI route53domainsのlist-domainsでドメインが取得できずにハマった話
- 10. AWS Control Tower とは
- 11. AWS SQS、SNS、SES
- 12. AWS RDSのMariaDB/MySQLでLOAD_FILEと同じ処理をする
- 13. 初学者だからこそ、とんでもない請求が来る前にAWSでやっておくべき転ばぬ先の請求アラート
- 14. 【AWS CLI】ap-northeast-1でcreate-bucketした際にIllegalLocationConstraintExceptionがスローされた場合の対処法
- 15. GuardDuty → EventBridge → SNS → Chatbot → Slack
- 16. 【あべちゃんのフロントエンド塾】課題1を通して学んだこと
- 17. Laravelのログイン人数をCloudWatchMetricsで見てみる
- 18. CloudFrontを導入してから、ブラウザ再読込で403エラーになってしまう際の解決法
- 19. CodeCommitのプルリクエストをSlackに通知する
- 20. CloudFront + ACM + Route53 を利用してWebサーバーをHTTPS化してみた
AWS CloudWatchのログを監視し、Slackに通知する(CloudWatch+Lambda+Ruby+Slack)
# 概要
CloudWatchのログを監視し、特定のログが出力された場合に、
その特定のログの内容をSlackに通知する方法を紹介します。# 利用するサービス
– AWS
– CludWatch
– Lambda
– Amazon Systems Manager
– Slack(Incoming Webhook)# 手順
以下の順序で作業を行っていきます。1. SlackのWorkspaceにIncoming Webhookを登録
2. AWS Systems ManagerにSlackにPOSTするためのURLを登録
3. Lambdaでログ内容をSlackにPOSTするプログラムを作成
4. CloudWatchのロググループのサブスクリプションフィルターにLambdaを設定する
5. 連携確認テスト## 1. SlackのWorkspaceにIncoming Webhookを登録
まず、ログを通知したいチャンネルをSlackで作成。
次に、[slack app directory](https://my.slack.com/apps)で`
AWSクラウドプラクティショナー 取得エビデンス
半年ほど前にAWSクラウドプラクティショナーの資格を取得してきましたので、そのエビデンスを残そうと思います。これから取得される予定の方は参考にしていただけましたら幸いです。
※※この記事では、皆様がクラウドプラクティショナーの資格の概要についてをある程度理解されている前提で記載させていただいておりますのでご注意ください。※※![2CFC50BE-F917-44C1-988E-8C14EFEBCFC0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/667126/043bf81a-c90b-9822-8796-bfba9121e287.png)
エビデンス1 ⇦今回
学習に使用した教材
学習時間/学習の順番
まとめ
エビデンス2学習方法/問題の出題例
まとめ1.学習に使用した教材について
・AWSが用意するホワイトペーパーー
またしてもAWS無料枠を意図せず超えてしまった話(backup storage exceeding free allocation)
前回下記の記事に書いたように、スナップショット削除によって請求額自体は減りました。
https://qiita.com/NoOne/items/5482a61137b5cb8115beしかし、またしても料金が発生してしまいました。
AWSサポートセンターに問い合わせたところ、DBインスタンスの設定のバックアップ保持期間が7日になっているのが原因なので0日に変更するとよいとの回答を得ました。
特にバックアップ保持期間を変えた記憶がないので、デフォルトのままだと課金が発生してしまう仕組みでしょうか?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630191/c1c657d1-89c2-9f20-ee1e-241df78966a7.png)
Railsでポートフォリオ作成時に何回も使用したコマンド5選
どうも、三町哲平です!!
今回は、私がRailsでポートフォリオを作成した際に何度も利用したコマンドの備忘録です。ノートにメモしていたので毎回毎回パソコンで打ち直していたのですが、コピペした方が作業効率も上がるので、まとめました。
皆さんの問題解決へのヒントになれば幸いです。
ちなみに私のポートフォリオは、
下記の様になっています。# 使用した技術
* フロントエンド
* HTML/CSS
* JavaScript
* jQuery
* Bootstrap* バックエンド
* Ruby 3.0.1
* Ruby on Rails 6.1.3.1* インフラ・開発環境
* MacBook Air macOS Big Sur 11.3.1
* Docker/Docker-compose
* AWS(ECR,ECS(EC2),VPC,S3,Route53,ALB,RDS(PostgreSQL 12.5),ACM)
* Nginx/Puma* テスト
* Rspec (単体・統合)
* CircleCIにてDocker-co
Tips: CodeBuildでGitHubのPRへコメントを行う
## これは何
記事投稿イベント「3000文字Tips」の参加記事です。
https://qiita.com/official-events/d523df99d6479293ffa7
## CodeBuildについて
CodeBuildとは、AWSで使えるCI/CDサービスです。
詳しくは↓の記事などが参考になると思います。https://qiita.com/yuta-38/items/7ff485019e23cf3b9f6e
## CodeBuildnの準備
まずはCodeBuildとGitHubを以下の記事を参考に連携してください。https://qiita.com/sasasin/items/6e5f7001cba350851d49
CIの発火イベントは`PULL_REQUEST_UPDATED`を設定してください。
## コメントを行うためのスクリプトを用意する
GitHubのPRへコメントを行うためのスクリプトを用意します。
今回はRubyで書い
はじめての可観測性ハンズオン + ハンズオン後、担当システムにLambda Insights適用
[AWSの基礎を学ぼう 特別編 最新サービスをみんなで触ってみる はじめての可観測性](https://awsbasics.connpass.com/event/209070/)に参加しハンズオンをしました。
そして後日、自分の担当しているシステムに未適用だったLambda Insightsを適用してみました。
# ハンズオン
## 手順と設定のリポジトリ
https://github.com/harunobukameda/Observability
WORDとPDFで手順書が用意されますが、PDFのほうだとコマンドをコピペするとき改行部分でスペースが入ったりしてちょっと詰まったのでWORDのほうがおすすめです。
## このハンズオンで学べるサービス
– CloudWatch ServiceLens
– X-Ray
– CloudWatch Contributor Insights
– CloudWatch Synthetics
– CloudWatch Container Insights
– CloudWatch Lambda Insights
–
【AWS】S3のストレージタイプ
#プログラミング勉強日記
2021年6月1日#AWSのストレージサービス
| タイプ | 特徴 | 耐久性 | 可用性 |
|:–:|:–:|:–:|:–:|
| STANDARD | 通常S3にデータを保存するときに選ぶ。複数箇所にデータをコピーするため耐久性が非常に高い。いつでもデータにアクセスでき、標準的な値段のもの。(基本的には一番高い値段) | 99.999999999%(イレブンナイン) | 99.99% |
| STANDARD-IA | 標準の低頻度用アクセスストレージ。スタンダードに比べて安い。データの読み出し容量に応じて課金。 | 99.999999999%(イレブンナイン) | 99.9% |
| One Zone-IA | アクセス頻度は低いが、必要に応じてすぐに取り出すデータ向け。複数AZに分かれていないので、可用性は落ちる。バックアップのコピーや一時的なファイル保存向け。 | 99.999999999%(イレブンナイン) | 99.5% |
| RRS(Reduced Redundancy Storage) | 現在、使えるがAWS側は非推奨
MWAAをローカルでテストするaws-mwaa-local-runner
# aws-mwaa-local-runnerとは
MWAA実行環境のDockerコンテナイメージをローカルでビルドします。これにより、MWAAにデプロイする前に、ローカルのAirflow環境を実行して、DAG、カスタム プラグイン、および依存関係を開発およびテストできます。
https://docs.aws.amazon.com/mwaa/latest/userguide/best-practices-dependencies.html#best-practices-dependencies-cli-utility
https://github.com/aws/aws-mwaa-local-runner/
# ローカルMWAAセットアップ手順
aws-mwaa-local-runnerのREADME
本Qiitaは基本的にこのREADMEと同じ内容ですhttps://github.com/aws/aws-mwaa-local-runner/blob/main/README.md
### 手元のパソコンにDockerをインストールしておく
手順割愛
### 任意の場
AWS CLI route53domainsのlist-domainsでドメインが取得できずにハマった話
# 環境
“`shell
$ aws –version
=> aws-cli/2.2.7 Python/3.8.8 Darwin/18.7.0 exe/x86_64 prompt/off
“`# 原因
**`region`が`us-east-1`じゃなかったから****NG:**
“`shell
$ aws route53domains list-domains
=> Could not connect to the endpoint URL: “https://route53domains.ap-northeast-1.amazonaws.com/”
“`**OK:**
“`shell
$ aws route5
AWS Control Tower とは
## 勉強前イメージ
コントロールっていうからには全体統括的な・・?
Organizations使ってマルチアカウントがなんとかーって感じがしそう## 調査
### AWS Control Tower とは
簡単に言うと複数のAWSアカウントを簡単に管理できるようにするサービスです。
経緯としては、AWSを使用していくと複数アカウントが出来たり、統制など取るのが大変になってきました。
また、複数アカウントを集約するためにAWS Organizationsや
AWS Organizationsのアカウントに統制をきかせるService Control Policyなどが存在します。
これらのサービスも多数存在し、管理が大変になりcloudformationのテンプレートの提供が開始されました。
しかし、テンプレートが出来ても確認作業は必要となります。
そこで統制を簡単にするために、まとめて管理できるサービスが `AWS Control Tower` になります。### AWS Control Tower の機能
– ランディングゾーン
上記で説明記載した、複数アカウン
AWS SQS、SNS、SES
#コンポーネントの疎結合
コンポーネント間の相互依存を減らした構成とすることで、1つのコンポーネント変更や障害の影響を削減することができる。・以下が関連する主要サービス
**Lambda、SQS、ELB、SNS**・疎結合化のメリット
**ー耐久性が強まる
ー負荷対応やスケーリングなど容易
ーシステム構成の追加・変更が容易**#SQS(Amazon Simple Queue Service)
完全マネージド型のメッセージキューイングサービスで、マイクロサービス、分散システム、およびサーバーレスアプリケーションの切り離しとスケーリングが可能です。
**SQSはプッシュ通信ではなくポーリング通信です。プッシュ通信はSNSです。****ポーリングとは・・・複数のプログラム間通信に対し、一定のタイミングの問合せがあった場合に送受信処理を行う通信方式。**
ーメッセージサイズ・・・メッセージの最大サイズは256KB
ーメッセージ保持期限・・・デフォルトで4日、60秒から最大14日間の変更可能##キューのタイプ
メッセージを管理するための入れ物。
キューの作成・削除の他に
AWS RDSのMariaDB/MySQLでLOAD_FILEと同じ処理をする
AWS RDSのMariaDB/MySQLはRDS上で稼働しています。その為、EC2などのmysqlコマンドからSQLを叩いてローカルのファイルをカラムの値としてロードするLOAD_FILE(‘ローカルファイル名’)が使えません。
バックエンドAPIや管理フロントエンドがまだない状態で、mysqlコマンドから画像やpdfなどのサンプルバイナリファイルをRDSの*BLOBのカラムへ格納したかったのですが、海外含めてググっても不可能と言うレスしかついていなかったので、ややトリッキーですが解決方法を記します。
“`sample.sql
— ◆ローカルにあるサンプル用の画像素材などを一時保存するテンポラリテーブル
—
— AWS RDSのMariaDBはLOAD_FILE(‘サーバ側ローカルファイル名’)が使えないので
— テンポラリテーブルを作成し、クライアント側のローカルバイナリファイルを LOAD DATA LOCAL INFILE で読み込んで、
— そのテーブルのデータをサンプル画像として各種本テーブルへ挿入する。
— 使う際は、LOAD_FILE(‘ファイル名’
初学者だからこそ、とんでもない請求が来る前にAWSでやっておくべき転ばぬ先の請求アラート
#AWS 請求アラートを設定する
###きっかけ
『__AWSの学習をしたい!__』けれども、『__いくら請求されるか分からない__』という不安から一歩踏み出せなかったエンジニアの[てつてつ](https://qiita.com/i3no29)です。
ハンズオン学習するために料金を支払うのはOKだけど、想定している範囲を超えた時に一報してくれる__アラートの設定はAWSを学習するに必須(心理的安全性の担保としての側面)__かと思いましたので記事にしていきます。
___
###1.アラートの設定を保存する
1.AWSマネジメントコンソールから『__マイ請求ダッシュボード__』を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694365/34e3841e-4a46-3430-7d33-22f0e83c3166.png)
2.『__請求設定__』を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazona
【AWS CLI】ap-northeast-1でcreate-bucketした際にIllegalLocationConstraintExceptionがスローされた場合の対処法
## はじめに
以下のエラーが発生した際の対処法です。
“`sh
$ aws s3api create-bucket –bucket test-bucket# An error occurred (IllegalLocationConstraintException) when calling the CreateBucket operation: The unspecified location constraint is incompatible for the region specific endpoint this request was sent to.
“`
## 結論
`–create-bucket-configuration`に`LocationConstraint=$region`を指定する必要があります。
(今回であれば`–create-bucket-configuration LocationConstraint=ap-northeast-1`)“`sh
$ aws s3api create-bucket –bucket test
GuardDuty → EventBridge → SNS → Chatbot → Slack
#構成#
GuardDutyから検知 >> Event Bridge をトリガーに SNSトピックに通知 >> SNSトピックに設定されているChatbotに情報送信 >> ChatbotがSlackに通知
というのを CloudFormation でデプロイしていこうと思います。
#Guard Duty から Slack に通知させる#
##全リージョンにデプロイする場合##
###Chatbotでワークスペースを準備する###
– [こちら](https://qiita.com/leomaro7/items/4cc37ea3ca9b03eb0ef1#%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9id)の記事を参考にChatbotのワークスペースを作成する。
###CloudFormationStackSet用のIAMロールの作成###
– [こちら](https://qiita.com/leomaro7/items/4cc37ea3ca9b03eb0ef1#iam%E3%83%AD%E
【あべちゃんのフロントエンド塾】課題1を通して学んだこと
# はじめに
**「コンポーネント指向や、アトミックデザインを意識してポートフォリオサイトを作る」**という課題を通して、
**”苦労した点”**や**”それらをどう乗り越えたか”**など、自分の考えをまとめるためにも、整理しながらアウトプットしていきたいと思います。# コンポーネント指向とは
> コンポーネント指向とは、ソフトウエアを機能ごとに部品(ソフトウエアコンポーネント)として分割し、必要に応じて組み合わせて使うという考え方である。
例えば、ホームページ内の”ヘッダー”にはメニューアイコンや検索バー、そのサイトのロゴなどがあったりします。
『コンポーネント指向』を意識して、それらひとつひとつを「コンポーネント」として切り出して作成することで、**後々の管理を行いやすくなる** メリットがあります。
また、必要に応じてコンポーネントを”再利用”することで、コードの記述量を減らすことも出来るし、複数箇所の変更を”一箇所”で同時に行うこともできます。
####【参考】
[フロントエンドのコンポーネント設計に立ち向かう]
(https://qiita.com/se
Laravelのログイン人数をCloudWatchMetricsで見てみる
## 全体の流れ
(1) EC2上のLaravelアプリケーションでログイン時に専用のログをlaravel.logに発行する
(2) EC2上にインストールしたCloudWatchAgentによりlaravel.logの内容をCloudWatchLogsにpush
(3) CloudWatchLogsメトリクスフィルターにより専用のログのみを抽出しCloudWatchメトリクスで表示する### Laravelアプリケーションでログイン時に専用のログを発行する
ログの内容や発行場所は自由ですが今回はLaravel6のAuthミドルウェアを使用した場合の実装例を記載しますCloudWatchCustomMetricsSampleApp/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php
public function login(Request $request)
{
$this->validateLo
CloudFrontを導入してから、ブラウザ再読込で403エラーになってしまう際の解決法
CloudFrontのコンソールから、Invalidationsタブ→Create Invalidationで/*を指定するとブラウザ再読込を行ってもエラーにならなくなりました。古いキャッシュを消してくれるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/630191/84d3bd4b-445e-3873-20c7-e630aea5ebc6.png)
CodeCommitのプルリクエストをSlackに通知する
#構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659469/5d486a64-572e-6a3d-0b40-b496c5a48b8f.png)
#Lambdaを作成
lambdaのコードです。
“`python:lambda_function.py
import logging
import pprint
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiErrorlogger = logging.getLogger()
logger.setLevel(logging.INFO)def SendToSlackMessage(message):
client = WebClient(token=’your_slackbot_token’)
response=client.chat_postMessage(channel=’your_slack_channel
CloudFront + ACM + Route53 を利用してWebサーバーをHTTPS化してみた
##はじめに
以下構成で、Webサーバーの常時SSL化を実装します。![スクリーンショット 2021-05-31 18.53.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438093/c3f7b846-9b8e-c8b3-9c72-30c30b503e8c.png)
## 証明書作成
以前、以下の記事で作成済みです。
[AWS Certificate Manager (ACM)とRoute53でSSLサーバー証明書を取得](https://qiita.com/Takao_/items/bec58f9828138f1a2a29)## Webサーバー作成
– EC2(t2.micro)
– nginx1.18## Cloudfront作成
AWSコンソールのCloudFrontのダッシュボードから以下手順で作成します。
![CF1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438093/c28ba8