- 1. カスタムメトリクスを自前で取得してCloudWatchに送信してみた。
- 2. CloudWatch Syntheticsを使用してAPI監視を実現する
- 3. AWS IAMで未使用者のアクセスキーを無効する
- 4. AWS上で起動するNode-REDでのメール送信方法
- 5. Redshift Serverless に provisioned cluster から移行してみた
- 6. 【備忘録】EC2 ubuntu内でDockerのhttpd(Apache)コンテナを起動してアクセスしても、403 Forbiddenとなる問題
- 7. AWS SDK for PHP: DynamoDB だけ? リトライを 10 回する件
- 8. WorkSpacesにエプリクスをダウンロードする方法
- 9. クラウドなんでもLT会#6
- 10. 関連づけられてないEBSをSlack通知 & 削除するLambda
- 11. JenkinsサーバーをAWS EC2上で作った
- 12. python 3.10をAWS EC2にinstallする上ではまったこと
- 13. Seleniumの通信ログを確認したい(on AWS Lambda)
- 14. 組織で GuardDuty の Malware Protection を有効化する際の注意点
- 15. AWS S3 に React をデプロイした時に出るエラーの解決方法
- 16. boto3を使ってファイルを読み込んだ際Overflowになるときの対処法(OverfloawError: signed integer is greater than maximum)
- 17. EC2で作成したsambaの共有フォルダにwindowsからアクセス失敗した初歩的な見落とし
- 18. error: exec plugin: invalid apiVersion “client.authentication.k8s.io/v1alpha1”
- 19. AWS CloudWatchで請求アラートを設定する
- 20. CDK workshop for TypeScriptをlocalstackでやるときにはまったこと
カスタムメトリクスを自前で取得してCloudWatchに送信してみた。
# 目次
[1.はじめに](#1-はじめに)
[2.やりたいこと](#2-やりたいこと)
[3.環境](#3-環境)
[4.結論](#4-結論)
[5.手順](#5-手順)
[6.おわりに](#6-おわりに)
[7.参考](#7-参考)# 1. はじめに
こんにちは。
私はAWSの資格取得に向け日々勉強していますが、CloudWatchにカスタムメトリクスを自前で取得して送信する手法があることを学びましたので実装しました。# 2. やりたいこと
カスタムメトリクスであるディスク使用率とメモリ使用率を取得してCloudWatchに送信するスクリプトを作成します。
さらに送信したカスタムメトリクスに対してCloudWatchアラームと連携させ監視する仕組みを構築します。# 3. 環境
Amazon Linux2# 4. 結論
* カスタムメトリクスを取得してCloudWatchに送信できる。
* 取得したカスタムメトリクスをCloudWatchアラームと連携できる。# 5. 手順
## スクリプトを作成
ディスク使用率とメモリ使用率を取得し、カスタムメトリクスとしてCl
CloudWatch Syntheticsを使用してAPI監視を実現する
# はじめに
本記事はAWS環境でCloudWatch Syntheticsを使用して、API監視を行うための方法について記載しています。クラウド環境におけるシステム監視を行うためには、クラウドを提供するサービスプロバイダーによってビルトインされたモニタリングシステムや、Datadogなどサードパーティ製ツールを使用するなどの手段があります。
AWSではモニタリングシステムとしてCloudWatchが無料で利用できます。
Syntheticsの監視についてもサードパーティ製ツールを使用せずに、コストを下げてAWSでインテグレーションしたモニタリングシステムを構築できます。一見便利そうなSyntheticsですが、仕様が分かりにくかったり、痒い所に手が届かない部分もあります。
本記事ではSyntheticsを使ってたナレッジについてまとめました。## CloudWatch Synthetics
日本ではAPIなどエンドポイントに対する監視のことを外形監視といった表現が多いですが、AWSはDatadogと同じ**Synthetics**と呼び、CloudWatchの**Syn
AWS IAMで未使用者のアクセスキーを無効する
# 背景
AWS認定資格の学習中に、「未使用期間が90日以上経過したIAMユーザーのユーザーアクセスキーを無効する作業を自動化するには?」という問題がありました。
AWSの設定のみで実現できないルーチンワーク的なセキュリティ処理をLambda関数などで作成するという解答はAWS認定試験の問題集などに散見されるのですが、具体的にどうやるのかの情報があまりヒットしないので、自分で作って確認してみることにしました。# 目次
1. [選択肢](#Chapter1)
1. [実現方法](#Chapter2)
1. [参考文献](#reference)# 選択肢
1. 管理コンソールのIAMサービスからIAMユーザーの利用状況をダウンロードし、90日以上経過したユーザーをピックアップし、無効化する
手動操作、および目視確認のため、自動化には程遠い
→却下
2. AWS CLIで以下のコマンドを実行する
“`
$ aws iam generate-credential-report
$ aws iam get-credential
AWS上で起動するNode-REDでのメール送信方法
ちょっと前にやった案件で結果苦労したんで、備忘録として残します。
ちょっと前のことなんで、記憶曖昧なところありますが、ご容赦ください。AWSのEC2(WindowsServer2019)上にNode-RED環境を作り、そこからお客さんの会社メールアドレスへ添付ファイルをつけてAWSのSESを経由してメールする必要があって。。
gmailの送信方法は出てくるんですけど、こういったAWS環境上からの送信方法ってググっても意外に出てこなくて、けっこう苦労しました。やり方は主に2つです。
1. Node-REDのライブラリを使って送る。
2. Powershellでメール送信処理を書いて、Node-REDで送る。上記1の方法ですが、Node-REDの公式から[こういうような](https://flows.nodered.org/node/node-red-contrib-aws-ses-send-raw)追加のライブラリをダウンロードして使うってのが手っ取り早いです。
自分も手軽にできないかなとおもってライブラリダウンロードして使ってみたのですが、ノードに宛先とか設定してノードを実
Redshift Serverless に provisioned cluster から移行してみた
# はじめに
[Redshift Serverless が 7/13 に GA ](https://aws.amazon.com/jp/blogs/news/amazon-redshift-serverless-now-generally-available-with-new-capabilities/)されました。従来の Redshift (provisioned cluster) では、クラスターを構成するインフラを意識しながらデプロイする方式でした。Redshift Serverless ではインフラ管理が不要となり、より簡単に、より運用負担を軽減してご利用いただけます。データを準備して Redshift Serverless に取り込むだけで分析ができ、料金は使用した分だけ発生します。これにより、利用頻度が少ない分析処理や夜間のみ実行されるワークロードなど、データウェアハウスを常時利用しないユースケースの場合に、効果的にご利用いただけます。
従来の provisioned cluster でサポートされている機能のほとんどは、Redshift Serverless でサポー
【備忘録】EC2 ubuntu内でDockerのhttpd(Apache)コンテナを起動してアクセスしても、403 Forbiddenとなる問題
# 現象
EC2内で、[ドキュメント](https://docs.docker.com/engine/install/ubuntu/)通りにubuntu内にDocker Engineの立ち上げ。
`/home/ubuntu`でhttpdのDockerコンテナを[ドキュメント](https://hub.docker.com/_/httpd)通りに起動
“`
$ docker run -dit –name my-apache-app -p 8080:80 -v “$PWD”:/usr/local/apache2/htdocs/ httpd:2.4
“`WEBサーバとして`http://[EC2のpublic IPv4]:8080`にアクセスしたが、403 Forbidden。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496036/aae64906-c82a-247d-661f-bf75da91a7d4.png)
ちなみに、[さわって学ぶクラウドインフラ docker
AWS SDK for PHP: DynamoDB だけ? リトライを 10 回する件
参考) [retries – AWS SDK for PHP](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_configuration.html#config-retries)
## 概要
リファレンス上リトライのデフォルトは以下のとおり(のはず)だが、DynamoDB のときだけ(?) 10 回リトライしている。
– retry_mode: legacy
– max_attempts: 3## 例
### DynamoDB (リトライ未指定)
“`php
$ddbClient = new Aws\DynamoDb\DynamoDbClient([
‘region’ => ‘ap-northeast-1’,
‘version’ => ‘2012-08-10’,
‘endpoint’ => ‘http://192.168.1.1’, // 応答なし
‘http’ => [
‘connect_timeout’ => 3,
],
])
WorkSpacesにエプリクスをダウンロードする方法
https://www.eclipse.org/downloads/packages/
ダウンロード方法
https://iteng-pom.com/archives/721
クラウドなんでもLT会#6
NCDC様の **クラウドなんでもLT会#6** でAWS CDKについて発表させて頂きました。
参加させて頂いた理由はLTの題名を見て内容が面白そうだったからです。実際、参加させて頂いて大変勉強になりました。自分の発表内容(**AWS CDKを触ってみて**)と特に面白かった **AWSとAzureで「サーバレス」が全然違う件** について記載させて頂きます。次回も参加させて頂きたいと思います!!# 概要
https://ncdc-dev.connpass.com/event/251073/
# AWS CDKを触ってみて
AWS CDKとBaseline Environment on AWS(BLEA)の概要や使用方法を発表させて頂きました。
ALBとFargateを使用した構成を数行で書くことが出来ます。https://speakerdeck.com/toru_kubota/try-the-aws-cdk
# AWSとAzureで「サーバレス」が全然違う件
使用したことはありませんが、Azure FunctionsといえばAWSのLambdaと同じように使用出来るイ
関連づけられてないEBSをSlack通知 & 削除するLambda
# はじめに
以前、[「関連づけられてないEIPをSlack通知 & 削除するLambda」](https://qiita.com/suzuki_kento/items/6adb5e7e70bb17148699)を作成しました。今回は上記のLambdaを応用し、何も関連づけられていない(= 「使用可能」状態)のEBSボリュームを削除するLambdaを作成してみました。
なぜ、作成するに至ったかというと、自分の所属するチームの検証環境には**59台の「使用可能」状態のEBSが存在しており、毎月3000円ほど無駄な費用がかかっていた**ためです。
また、**「使用可能」状態のEBSは「終了時に削除」が有効化されていないAMIからインスタンスを作成してしまうと、作成者の意図しないところで湧き出す**のです。
なので、定期的に駆除したいと感じていました。# 仕様
– 検証環境に存在する何も紐づけられていないEBSをSlack通知・削除(全リージョン)
– Amazon EventBridgeと組み合わせて毎日定時で実行
– 容赦ない削除、慈悲はない
– 削除されたくない場合、以下
JenkinsサーバーをAWS EC2上で作った
## はじめに
書き主はサーバーエンジニアではないため
サーバーなどの設定が甘い場合などがあります、参考にする際にはご注意ください。
あと、一部そのままのコピペでは動かないようなものもございますのでご注意ください。## 動機
現在は大阪の拠点の中でローカルのPCの中でjenkinsサーバーを立ており。
そのサーバーからビルドをするPCをjenkinsにて繋ぎ、
自動ビルドや、定期的なコマンドを実行するなどの動作をしていた。ただ、最近のコロナ禍により、リモートワークなどが多くなったため、
社外からjenkinsにアクセスする必要性などが出てきた。じゃあ!サーバー側だけEC2に移して社外からアクセスが出来るようにしよう!
というのが動機になります。
今回はjenkinsサーバーの作成の部分だけ記事化してみました。
## jenkinsサーバー作成
### ざっくり仕様
– AWS上にjenkinsサーバーを設置し、大阪のローカルマシンでビルドを行えるようにする。
– sslを設定(社外からのアクセスのためのセキュリティ)以上!
### EC2の仕様について
–
python 3.10をAWS EC2にinstallする上ではまったこと
## python 3.10がinstall listに表示されない
pyenvでpythonのversion管理を行なっている場合pyenv自体をアップデートしないとpython 3.10が表示されません。pyenv-updateというパッケージをinstallしてpyenvのバージョンを最新にしましょう。
https://github.com/pyenv/pyenv-update
“`
$ git clone https://github.com/pyenv/pyenv-update.git $(pyenv root)/plugins/pyenv-update
“`install後このコマンドを実行
“`
$ pyenv update
“`そうするとpython 3.10がinstall listに表示されるようになるはずです!
“`
$ pyenv install list
“`## Openssl11が必要
python 3.10からはEC2環境にinstallするにはOpenSSL1.1.1が必要になります。
これが地味にハマりど
Seleniumの通信ログを確認したい(on AWS Lambda)
# 自動化っていいですよね
ブラウザ操作を自動化してくれる「Selenium」。
テストやスクレイピングなどで使われている方も多いかと思います。
便利なんですが、エラーが起きた場合にその原因が分かりにくいな、Seleniumがどんな通信を行っているのか確認したいな、と思うことも。
この記事ではSeleniumの通信内容を簡易的に取得する方法を検証します。# この記事のゴール
1. コンテナ形式のAWS LambdaにてSeleniumを動作させる
1. Seleniumの通信ログ(HTTP/HTTPS)を確認する# 前提および注意事項
* 開発環境としてAWS Cloud9を使用します
Cloud9の環境には予めDockerやAWS CLIなどがインストールされているため、それらのインストール手順は本記事では触れていません。
また、デフォルトのディスク容量だとすぐに不足するため、本記事の内容を検証した際は30GBに拡張しています。
* コンテナ形式のAWS Lambdaで動作確認を行っています
Lambdaは実行時間やメモリなどに応じて課金されますが、本記事の内容を実行する場合
組織で GuardDuty の Malware Protection を有効化する際の注意点
## 事象
AWS Organizations を使用して組織で GuardDuty の管理を行なっており、委任された管理者アカウントからメンバーアカウントの Malware Protection を有効化しようとすると以下のようなエラーが発生する。“`
The request failed because you do not have required AWS Organizations master permission.
“`![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/125105/7f6bc65a-cf32-0714-5c5e-38e084f11ebd.png)
## 対応
以下のドキュメントに記載されているとおり、最初に組織の管理アカウントで Malware Protection の信頼されたアクセスを有効化する必要がある。“`
aws organizations enable-aws-service-access –service-principal
AWS S3 に React をデプロイした時に出るエラーの解決方法
次のエラーに対する解決方法です。
“`text
404 Not Found
Code: NoSuchKey
Message: The specified key does not exist.
Key: admin/courses
RequestId: EHQCGTYW4WS*****
HostId: vfFuFiZqF0EbwuClsRpDJLwBg7vfq/D/******
“`![aws_s3_jul2801.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179446/53e7b796-f6c2-a87b-baea-be57123cb969.png)
S3 の設定を変更します。
プロパティ -> 静的ウェブサイトホスティング -> 編集
>エラードキュメント – オプション に
>index.html を入れます。![aws_s3_jul2802.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179
boto3を使ってファイルを読み込んだ際Overflowになるときの対処法(OverfloawError: signed integer is greater than maximum)
# まえがき
boto3を使ってS3にあるcsvファイルを読み込もうとしたときに、以下のようなエラーが発生しました。
**OverflowError: signed integer is greater than maximum**Python3.6からPython3.8へバージョンアップした際に生じたエラーです。
# エラーが生じたプログラム
“` Python
import os
#S3操作用モジュール
import boto3
from botocore.client import Config
#データ操作に使うモジュール
import pandas as pd
import numpy as np
import io
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler
import timeconfig = Config(connect_timeout=100, read_timeout=100)
role = ‘ロール名’
EC2で作成したsambaの共有フォルダにwindowsからアクセス失敗した初歩的な見落とし
結論
smbの共有ディレクトリを作っていなかった・・・(3時間も格闘したのに・・・)
→
### エラー
\\IP\kcsambにアクセスできません→診断→予期せぬエラーが発生
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969819/2a12402f-49ae-1166-4e19-9a632c8edd33.png)### 格闘
色々調べるとmaxprotocolをSMB3にしろとかminprotocol変えろとか
https://stackoverflow.com/questions/68547105/nt-status-io-timeout-when-trying-to-connect-with-samba-client#:~:text=This%20is%20most%20likely%20because,client%20max%20protocol%20into%20SMB3.クライアントからSMB2.0だとアクセスエラーがでるからそこなんとかしろとか
https:/
error: exec plugin: invalid apiVersion “client.authentication.k8s.io/v1alpha1”
## What’s This
以下コマンドを実行しようとしたら、表題のエラー。
解決のメモです。“`
$ aws eks –region ap-northeast-1 update-kubeconfig –name “Cluster Name”$ kubectl get svc
error: exec plugin: invalid apiVersion “client.authentication.k8s.io/v1alpha1”
“`## AWS CLIのバージョンアップ
“`
aws –version
aws-cli/2.1.31 Python/3.8.8 Darwin/20.6.0 exe/x86_64 prompt/off
“`以下からGUIで最新をインストール
https://awscli.amazonaws.com/AWSCLIV2.pkg
“`
aws –version
aws-cli/2.7.19 Python/3.9.11 Darwin/20.6.0 exe/x86_64 prompt/off
“`## 冒頭のコマンド
AWS CloudWatchで請求アラートを設定する
AWSマネジメントコンソールにログインしてください。
左上のアカウント名のリンクをクリックし、メニューから[請求ダッシュボード]をクリックしてください。
![スクリーンショット 2022-07-28 6.50.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14202/37bcf243-2e38-2858-6a15-4549b6c9a037.png)請求ダッシュボードが表示されます。
[請求設定]をクリックしてください。
![スクリーンショット 2022-07-28 6.52.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14202/c4a7b693-79e4-5127-60a2-d1a9cff74316.png)請求設定画面が表示されます。
3つのチェックボックスをチェックし、[詳細設定を保存]をクリックしてください。
設定が保存されます。
![スクリーンショット 2022-07-28 6.55.07
CDK workshop for TypeScriptをlocalstackでやるときにはまったこと
インターン先の業務でAWSを触ることになり、手始めにcdkのworkshopをやりながら何となく理解しようとした。
https://cdkworkshop.com/15-prerequisites.html
こういうものは、公式が用意してくれているんだからそれに従い進めていくのがふつうである。
しかし、自分は以前少しだけ遊んでいたLocalStackを使ってみたくなり、開発環境改善のための検証もかねて一通りやることにした。
なおworkshop中に出てくる、コンソール画面で動きているかどうか確かめるようなことはすべてスキップしている。## 検証環境
Ubuntu 20.04 on WSL2
## 準備
まずはworkshopのPrerequisitesから進めて、必要なものをインストールする。
次にLocalstack、aws-cdk-localをそれぞれインストールする。
なお、Localstackは公式リポジトリからdocker-composeをコピペしてきて使ったので、dockerも入れるのを忘れずに!https://docs.localstack.cloud/