AWS関連のことを調べてみた2020年03月18日

AWS関連のことを調べてみた2020年03月18日
目次

AuroraのActiveTransactionsをMetricsで取得する

# はじめに
DBの監視目的に `CloudWatch` の `Metrics`を取得してみたが、 `ActiveTransactions` がそのままでは取得できなかったので取得できるようにしてみた。

# ドキュメントを読む

**Amazon Aurora メトリクス**

| メトリクス | 説明 | Applies to |
|:–|:–|:–|
| ActiveTransactions | Aurora データベースインスタンスで実行されている現在のトランザクションの 1 秒あたりの平均数。 | Aurora では、このメトリクスはデフォルトで有効になっていません。この値の計測を開始するには、特定の DB インスタンス用の DB パラメータグループに innodb_monitor_enable=’all’ を設定します。 |

Amazon Aurora DB クラスターメトリクスのモニタリング
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/Aurora.Monitoring.ht

元記事を表示

Amazon Workspaces / AWS Client VPN を多要素認証に対応させる方法

この時期、リモートワークの手段として、Aamzon Workspaces や AWS Client VPN を試そうとしてる方もいるんじゃないかと思います。

どちらも、多要素認証(MFA)が可能なので少しだけ書いておきます。

# Workspaces の MFA について

#### 公式の対応記事
**Multi-Factor Authentication for Amazon WorkSpaces**
https://aws.amazon.com/jp/blogs/aws/multi-factor-auth-for-workspaces/

#### 具体的な方法
**多要素認証による Amazon WorkSpaces の利用**

以前、こちらの[記事](https://qiita.com/daimatsu/items/75b5924e06a4394b83d2)でAWS Single Sign-On を 多要素認証(MFA

元記事を表示

爆速でLambda@edgeにNuxt.jsを構築できるテンプレートを作りました

## 注意事項
**Lambda@Edgeに無料利用枠は無いので注意**
**詳細な利用料金は[こちら](https://aws.amazon.com/jp/lambda/pricing/#Lambda.40Edge_Pricing)**

## ある日の夜
はぁ・・・やる事無くて暇だしなんかサービス作りたい・・・
とりあえずNuxt.jsでなんか作るか:thinking:
デプロイ先はどこにしようか、、、Lambda@Edgeにデプロイするの面白そうだなぁ・・・

:thinking::thinking::thinking:

**いっちょやってみっか**:hugging:

## Serverless Nuxt
ということで作っちゃいました。
**成果物はこちら→ [serverless-nuxt](https://github.com/Karibash/serverless-nuxt)**
不具合修正、機能追加のプルリク待ってます!
あと:star:付けてくれたらめっちゃ喜びます。

### 導入済みModule/Plugin
– @nuxt/typescript-build

元記事を表示

RaspberryPiを使って洗濯乾燥タイマーを作る

# RaspberryPiを使って洗濯乾燥タイマーを作る

## はじめに(制作の目的)
– 会社勤めのため、日中、不在にしていることが多く、にわか雨が降ったときに洗濯物の取り込みができません。このため洗濯物については、基本的に室内干しで乾燥させています。
– ところが、物干し部屋の日当たりが悪く、冬場だとなかなか思うように乾燥が進まないため、取り込むタイミングを逸することがあり、洗濯物が雪ダルマ式に溜まるという悪循環に陥っています。
– この悪循環を断ち切る(?)ため、洗濯物の乾燥完了時間を計算し、スマートフォンに通知する仕組みを作りました。

## 用意するもの
①デバイス側の環境構築に必要なもの。秋月電子で購入可能です。
http://akizukidenshi.com/catalog/top.aspx

②サーバ側の環境構築に必要なもの。AWSとSlackのアカウントが必要です。
AWS: https://aws.amazon.com/jp/
Slack: https://slack.com/intl/ja-jp/

|品名|数量|用途|
|:–|:–|:–|
|① Ra

元記事を表示

Ruby on RailsでWebAPIの作成

# Ruby on RailsでWebAPIの作成

## はじめに
この記事では、Ruby on RailsにおけるAPIの作り方を簡単に紹介します。
データベースへのユーザ登録、参照、消去、更新ができるAPIを作成し、いじりながら解説します。

### 前提知識
– API
– JSON
– HTTPリクエスト、レスポンス
– GET, POST, DELETE, etc

### 環境
– ruby 2.6.5
– Rails 6.0.2

## 作り方
なにはともあれAPIの基盤の作成。

“`
[tmp]$ rails new RailsApi –api
“`
ご存知`rails new [アプリ名]`とすることでアプリの基盤を作成することができるが、 **–api**のオプションをつけることでAPIに必要なものだけに絞って作ってくれる。

“`
[tmp]$ cd RailsApi
“`
RailsApiフォルダに移動。

“`
[RailsApi]$ rails g scaffold user user_id:string password:string

元記事を表示

【AWS】DynamoDBとRDSの違いについて

# AWSのデータベースサービスについて
AWSが提供するデータベースは下記の5つ

– [Amazon RDS](https://aws.amazon.com/jp/rds/)
– [Amazon DynamoDB](https://aws.amazon.com/jp/dynamodb/)
– [Amazon Neptune](https://aws.amazon.com/jp/neptune/)
– [Amazon Redshift](https://aws.amazon.com/jp/redshift/)
– [Amazon ElastiCache](https://aws.amazon.com/jp/elasticache/)

# DynamoDBとRDSの違いについて
データベースサービスの中で「DynamoDB」と「RDS」の違いがよく理解できなかったため色々な記事や資料をあさりました。
RDSの各種操作にはSQLを使用し、業務ではOracleやPostgresを用いておりかつRDSは用いていたためすぐに理解できました。ただし、DynamoDBについてはSQLを使わないデ

元記事を表示

メモリ不足でLaravelインストール、composer update失敗

#なにがおきたか
Laravelを5.8から6にしようと
`composer update`したら

下記のようなエラーがたくさん出た

“`

mmap() failed: [12] Cannot allocate memory

mmap() failed: [12] Cannot allocate memory
PHP Fatal error: Out of memory (allocated 448884736) (tried to allocate 20480 bytes) in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 275

Fatal error: Out of memory (allocated 448884736) (tried to allocate 20480 bytes) in phar:///usr/local/bin/composer/src/Composer/Json/JsonFile.php on line 275

mmap() failed: [

元記事を表示

CloudFormationに日本語コメントを含めるとエラーになる場合の解決方法

# テンプレートに日本語コメントを含めるとエラーになる

“`yaml
# これは日本語だ
AWSTemplateFormatVersion: ‘2010-09-09’
Parameters:
Parameter:
Type: Number

Resources:
# 日本語だ、これは
Lambda:
Type: ‘AWS::Lambda::Function’
“`

こういうテンプレートファイルを`aws cloudformation deploy –template-file hoge.yml –stack-name foo `ないし`aws cloudformation create-stack –template-body file://hoge.yml –stack-name foo`を実行するとテンプレートはバイナリだから`fileb://~`を指定しろといったエラーが出ることがある。もちろんテンプレートはバイナリではない。AWS CLI実行時に`–debug`をつけるとこのようなエラーが見える。

“`bash

Unicod

元記事を表示

AWS Amazon Linux2 で Django 2.2以降の環境を構築する

# 概要

 この記事は初心者の自分がRESTful なAPIとswiftでiPhone向けのクーポン配信サービスを開発した手順を順番に記事にしています。技術要素を1つずつ調べながら実装したため、とても遠回りな実装となっています。

前回の [Djangoで画像を配信できるwebAPIを作る](https://qiita.com/Ajyarimochi/items/b7278c357b2ffca183b5) で実装したAPIを外部のサーバへデプロイし、パグリックな環境からAPIを利用できる状態にします。

作業は

1. クラウドのインスタンスを立てて必要なソフトやパッケージをインストール
2. RestAPIのアプリをデプロイ

になります。この記事では「1. クラウドのインスタンスを立てて必要なソフトやパッケージをインストール」を纏めます。

### 構成

 今回はAmazonのEC2を使うことにしました。OSはAmazon Linux 2 を選びました。構築に失敗したり環境が合わなかったらインスタンスごと作り直せば良いと考えたので、docker等のコンテナは使わず、OSに直接イ

元記事を表示

Pythonを使ったDigest認証の設定@Lambda

# はじめに
Digest認証について検索してもほとんど情報がなかったので [Pythonを使ったBasic認証の設定@Lambda](https://qiita.com/ijufumi/items/7a141a6528a28f180fb1) の続編として書いてみた。
Digest認証自体ほとんど触ったことがなく、その仕組みを勉強するのも兼ねて。

# コード
“`python
import os
import ctypes
import json
import base64
import time
import hashlib
import copy
from Crypto.Cipher import AES

accounts = [
{
“user”: “user1”,
“pass”: “pass1”
},
{
“user”: “user2”,
“pass”: “pass2”
}
]

realm = “sample@test.com”
qop = “auth”
# Basi

元記事を表示

AWS BackupのDefault vaultのリカバリーポイントをまとめて削除する。

#概要
大分前にテストしていたAWS BackupでDefault vaultに大量のAMIとSnapshotがあり、
邪魔だったので消そうとしたところ、EC2のコンパネからはまとめて削除ができない。

AWS Backupのコンパネからだと1個ずつしか消せず、vaultごと削除しようとしたところ
**Defaultのvaultは削除できない**ことが判明。

引用元:
[AWS Backupを使い始める前に覚えておきたいこと]
(https://qiita.com/hayao_k/items/a4f18d030e0e58063f64)

#解決策
50個程度のAMIとSnapshotなら1個1個手で消してもいいかもしれないが、どうせ同じ時間をかけるならまとめて削除できる方法を考えたい。
**じゃあAWS CLIで一気にやってしまおう。**

#環境
Amazon Linux2
aws-cli/1.16.300 Python/2.7.16 Linux/4.14.171-136.231.amzn2.x86_64 botocore/1.13.36

#組んだshell
“`budel.s

元記事を表示

AWSのCloudFormationのテンプレートを作成中に依存循環のエラーが発生した。

cloudFormationを使っていたところ、依存循環のエラーが発生し少しハマってしまった。
AWS初学者です。エンジニアとして一年目なので、そこを考慮して見ていただけると幸いです。間違っている点などありましたら、教えてください。。

# 環境
Amzon Linux2

# エラーの内容
cloudformationのテンプレート作成中に以下のエラーが発生。調べると、依存循環のエラーとのことらしい。

“`
[cfn-lint] E3004: Circular Dependencies for resource Ec2InstanceServer. Circular dependency with [WpLaunchTemplate, Ec2InstanceServer]
“`

以下、エラーが出たコード部分です。

“`
—省略—
Parameters:
DBPassword:
NoEcho: true
Description: The database admin account password
Type: String
M

元記事を表示

AWS-SDKを使いたくてAPIを叩いたらエラーが出た。

#概要
aws-sdkを使用してRoute53の操作をしたかった。

##エラー内容
“`
Error executing “ListResourceRecordSets” on “https://route53.amazonaws.com/2013-04-01/hostedzone/XXXXXXXX/rrset”; AWS HTTP error: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html)
“`

##原因

‘cURL error 60’エラーが出たときの対処法 ‘cURL error 60: SSL certificate problem: unable to get local issuer certificate’


>このエラーは、SSL暗号化されているhttpsのサイトにアクセスしようとした際にそのサーバが信頼できるか否かの証明書(ca証明書)が取得できなかった時に発生します。

**ライブラリ自体はあまり関係ない?**

##解決策
とりあえず動かしたかったので、Gitの証明書を使

元記事を表示

New credentials encrypted and saved. の対処法

#前提条件
Docker
Rails5.2

#解決したいこと
“`:Terminal
docker-compose run -e EDITOR=”vim” web rails credentials:edit

“`
のコマンドを入力した際に、credentialsを編集できずに

“`:Terminal
New credentials encrypted and saved.
“`

と表示されてしまう。

#解決方法
– credentials.yml.encの削除
– docker-compose build

をするとうまくいく。

元記事を表示

コンテナレジストリ(AWS ECR / AzureContainerRegistry)のスキャン機能を試してみた

# はじめに

コンテナのベースイメージのスキャンがしたいなーと思いまして、Azure・AWS両方触ってみました。時間がない方は「AWSとAzureのコンテナレジストリの特徴」「両者の比較」「さいごに」という部分だけお読みください。

まずはそれぞれのスキャンの特徴から。

# AWS ECR

2019年10月28日[Amazon ECR のイメージスキャンの通知](https://aws.amazon.com/jp/about-aws/whats-new/2019/10/announcing-image-scanning-for-amazon-ecr/)ということでAWSから発表されました。

* イメージスキャンにかかる料金は**無料**
* ECRにすでにプッシュしてあるイメージに対するスキャンが可能。
* pushをhookしてスキャンすることが可能
* スキャンが終わったら通知することが可能
* [Events&EventBridge](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-eventb

元記事を表示

AWS ClientVPN接続時にAWS VPCを介さずインターネット・オンプレミスネットワークに接続する方法

# 1.概要

 AWS ClientVPNの登場によって、VPC上に構築したプライベートサブネットに対して容易にVPN接続が行えるようになりました。便利になった一方で、デフォルト設定ではVPN接続中インターネットに接続できない・社内ネットワークに接続できない、といったことがあります。
 本稿では、AWS ClientVPNにおけるVPN接続の仕組みを通じて、なぜインターネットに接続できないのか、そのとき何が起こっているのか、どのように設定すればよいかを解説します。

# 2.AWS ClientVPNデフォルト設定におけるルーティング

## 2-1. 前提

– AWS ClientVPNでは、AWS ConsoleよりOpenVPNの接続設定ファイル(XX.ovpn)をダウンロードすることができる。ここでは本設定ファイルを用いOpenVPNよりVPN接続を行う。
– AWSクライアントVPNサービスでは「スプリットトンネル」を無効(既定値)に設定すると、VPN上の全ての通信がVPNトンネルにルーティングされる。本稿「2」章の解説は「スプリットトンネル」が無効であることを前提とし

元記事を表示

.htaccessを使わず、S3から圧縮したJS,CSSを提供する

サーバーレスのアプリのため.htaccessを操作しづらい環境があったのでS3からこうやりました。
肝はアップロード時のcontent-encodingとcontent-typeの指定です。これがないとうまく読み込んでくれないです。

“`bash
gzip –best -f public/js/app.js # app.js.gzが生成される -fつけないと2回目から上書きしてくれない
aws s3 cp public/js/app.js.gz s3://xxxx/ –content-encoding “gzip” –content-type “text/javascript”
“`

“`html

“`

参考
[How to: Gzip compression of CSS and JS files on S3 with s3cmd](https://christianfei.com/posts/how-to-

元記事を表示

NFCシールを活用して自動打刻ツールを(個人的に)作ってみた話

# はじめに

今回はNFCシールを使用して会社の自動打刻システムを、完全に自分用で作ります!

# 要件定義

## なぜつくるか?

現在、弊社の勤怠は、エクセルで管理されています。
実際の打刻フローとしては、

1. 出社したら出社時刻をエクセル開いて手動で打刻
2. 保存
3. 退社するときに退社時刻をエクセル開いて手動で打刻
4. 保存

。。。
**毎日エクセルポチポチするの面倒すぎる!!!!!!!!!**

作業自体も面倒なのに、何日か打刻を忘れるとまあ面倒臭いことになります。

せっかくIT企業にいるんだからいろいろスマートにやりたい…
ということで、今回の自動打刻システムの開発を決意しました。

## どう作るか?

今回開発する自動打刻システムでは、NFCシールを活用していきます。

処理の流れとしては、

1. NFCシールにスマホをかざして専用のWEBサイトを表示する
2. WEBサイトから自動打刻システムにリクエストを投げる
3. 打刻する

といった感じにしようかと思います。

NFCシールにスマホかざすのとリクエストを投げるところにWEBサイト表示をは

元記事を表示

AWSで配信をしてみる準備 (Cloud Frontを介してS3にアクセス)

自分用メモ。

以前書いたShaka Packagerを使った配信環境を構築してみるにあたって、CDNを介した環境を作ってみたいと思った。
Shaka Packagerを使った配信環境はEC2で構築してみようと思ったので、オリジンはS3で、EdgeとしてCloud Frontを使ってみることに。

Cloud Frontを介したほうが安いのか、S3のみを使ったほうが安いかは調べてない。

## やりたいこと

S3へのコンテンツへのアクセスをCloud Frontからのアクセスに限定して、S3のオブジェクトへの直接のアクセス (XXXX.s3-ap-northeast-1.amazonaws.com のURLでのアクセス) をさせないこともついでにやろうと思った、なぜか。

色々ドキュメントを探したところ、端的に書いていたのはこのページだった。
https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html

以下のページから

元記事を表示

[Amazon Linux 2]公開鍵認証からパスワード認証へ変更

# 内容
EC2への接続方法を公開鍵認証からパスワード認証へ変更する

**類似記事**
[(Amazon Linux 2の)sshd_configとauthorized_keysを学ぶ](https://qiita.com/Inon/items/84162368dd57e4356621)

# 手順
対象のEC2へSSH接続して、ユーザを**root**へ切り替えます。

## sshd_configのバックアップ取得
設定変更を行う前には必ずバックアップを取得しておきます。

“`
# cd /etc/ssh/
# pwd
/etc/ssh

# ls -l
total 608

-rw-r–r– 1 root root 2276 Mar 15 12:25 ssh_config
-rw——- 1 root root 3977 Mar 15 12:04 sshd_config

# cp -p sshd_config sshd_config_yyyymmdd
# ls -l
total 608

-rw-r–r– 1 ro

元記事を表示

OTHERカテゴリの最新記事