AWS関連のことを調べてみた2021年05月25日

AWS関連のことを調べてみた2021年05月25日

AWSクラウドプラクティショナー取得に向けて

夏までにAWSクラウドプラクティショナーを取得しなければいけないので、現状と勉強方法についてまとめようと思います。

#現状
昨日、とりあえずUdemyの模擬試験をやってみたところ…

**正答率42%**

….70%以上で合格なので全くダメですね。
正直、半分は取れるだろうとなめてました。
ただ試験時間に関しては90分あるうち22分しか使わなかったので、時間は見直しも含め十分あることがわかりました。

#ここまでの勉強
ここまでやった勉強は主に2つ。

– [AWS Cloud Practitioner Essentials (Japanese) (日本語字幕版)](https://www.aws.training/Details/eLearning?id=66479)
– [AWS 初心者向けハンズオン](https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-hands-on/)

どちらも初心者がAWSサービス全体を把握するにはぴったりだと感じました。
特にCloud Practitioner Es

元記事を表示

【比較】3大クラウドのストレージ機能について

https://qiita.com/YamaguchiRei/items/50e157f5e88567567218

クラウドストレージ比較解説まとめ

上限制限 管理面 Web での公開 連携 <

(初心者向け) AWSのアカウントを守るために最低限やっておきたいことまとめ(IAM )

## はじめに
これまで業務でAWSを触る機会もあったのですが、1からアカウントを運用するなどは経験がなく基本的な部分が抜けているなと感じたので、自身の知識の確認も含めて、AWSアカウントを安全に利用するためのセキュリティの基礎中の基礎をまとめてみました。

## 対象読者
* AWSアカウントを開設してばかりの方
* AWS IAMの設定内容に自信がない方
* IAM ベストプラクティスで推奨されている内容をさくっと確認したい方

## AWSにおけるセキュリティの考え方
AWSはさまざまな便利なサービスをクラウドサービスとして提供してくれていますが、クラウドサービスだからといってセキュリティのあらゆる部分をAWSが担保してくれるわけではありません。

セキュリティに関してAWSがどの範囲は責任を持ってくれるのか、また利用者側がどの範囲のセキュリティを検討しなくてはいけないのかは[「責任共有モデル」](https://aws.amazon.com/jp/compliance/shared-responsibility-model/)という形で明示されています。

https:/

Step FunctionsからLambda経由せずにSlackへ通知する

# はじめに

AWS Step Functionsで処理結果をSlackに通知したいなぁ…でもそのためにLambdaを一つ作るのも面倒くさいなぁ…と思っていたのですが、ちょっと工夫したらLambdaを作らずにSlackのIncoming Webhookを呼び出せることに気づいたので、ちょっと実装してみました。

# さっそく実装

で、こんな感じで実装してみました。

![StepFunctionsSlack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/83499/285d6f9a-dd43-2ac2-5e58-c538fd51d2d8.png)

– API GatewayはAWSサービスだけでなくて、外部のWebAPIのラップにも使うことができる
– Step FunctionsのタスクとしてAPI Gateway呼び出しを行うことができる

この2点を組み合わせた形です。

なお、今回はCDKを使ってサンプル実装をしています。
CDKプロジェクトは[github](https://github

【Rails6/MySQL5】既存アプリにDocker環境を構築した方法(Capistrano・Amazon S3にも対応)

Railsで開発した既存アプリにDocker環境を実際に構築した方法をご紹介します。

## ゴール
– 既存のRailsアプリにDockerの開発環境を構築
– Mysqlエラーを起こさずCapistranoによる自動デプロイ

## 開発環境・前提
– Ruby 2.6.5
– Rails 6.0.3.6
– Docker 20.10.6
– docker-compose 1.29.1
– mysql 5.6.50
– Capistrano 3.16.0
– アプリのインフラにAmazon EC2, S3を使用

## 最初に:Docker環境の構築で一番難しかったこと
ぼくが実際にDocker環境を構築するときに一番難しかったことが、MySQLの接続エラーの解決でした。
これから初めてDocker環境構築をするという方は覚悟して臨んだ方が良いと思います笑

## 各ステップで参考にした資料
順番が前後しますが、先にぼくがDocker環境を構築したときに参考にした資料を紹介します。
このあと紹介するコードも、基本的には以下の参考資料を組み合わせて作りました。

Rails6とMy

Amazon ECS の「タスクのスケジューリング」の設定について

Amazon ECS の「タスクのスケジューリング」の設定について

## ■Cron形式で設定する場合

**NGの設定**

“`
cron(*/1 * * * * *)
“`

結果 → `Parameter ScheduleExpression is not valid`

下記URLの「Wildcards」に記載があります。

https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html

`The * (asterisk) wildcard includes all values in the field. In the Hours field, * would include every hour. You cannot use * in both the Day-of-month and Day-of-week fields. If you use it in one, you must use ? in the other.`

曜日の項目が二つあり、両方に「`*`」

AWS 認定ソリューションアーキテクト プロフェッショナル に合格しました

AWS認定ソリューションアーキテクト – プロフェッショナル(SAP-C01)試験に合格しました。
他の人もたくさん書いてるので、目新しさも面白みもないですが、学習に利用した本やコンテンツなどを紹介します。

# 公式のガイド
AWS公式の認定試験に関するページから試験ガイドとサンプル問題を入手できるので、まずは求められるスキル・知識レベルと、自分の到達度を確認しました。

https://aws.amazon.com/jp/certification/certified-solutions-architect-professional/

上記ページの`試験の準備`から進んだページに試験ガイドとサンプル問題へのリンクがあります。
また、同じ箇所の`試験対策トレーニングを受講する`の`無料のデジタルトレーニングを受ける`から、試験準備のEラーニングが受けられます(日本語コンテンツもあり)。
(2021/5時点)

# 対策問題集
アソシエイトの本は複数あるのですが、プロフェッショナルはこれしかないようです。
(2021/5時点)

https://www.amazon.co.jp/dp

AWS S3 クイズ ~バケットが空ではない?~

# Question
ここに何の変哲もないバケットがあります。ご覧の通り、オブジェクトはありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/9621a2d4-ddec-9183-713c-7ac5bc8a8dbe.png)

S3 スペシャリストのあなたは、リソース整理のために空のバケットは削除するように依頼されました。

そこでバケット名を確認し、「削除」をクリックしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/776d59f0-9b5b-3f5d-fe55-fb8df68e2c5a.png)

しかし、なぜかバケットは空ではないというメッセージが表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621414/cb142ab

CloudWatchのログイベントが出力されない時の対処法

みなさん、CloudWatchを頻繁に使っていると思います。

ある日、Lambdaでバグが起きていた時にCloudWatchでログを見て解決しようとした時のことです。

![スクリーンショット 2021-05-24 16.07.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633297/e231202a-4a07-d330-ade4-cc6987a7e1fd.png)

####あれ!? メッセージが何も表示されていない!!!

ある期間からログイベントにメッセージが表示されていなかったのです。
ログイベントがそもそも無かったり、エラーが出ている、という訳でもなくメッセージのみが出ていないのです。

この現象は初めてでハマりました。

##結論
![スクリーンショット 2021-05-24 16.21.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633297/b8b2f8e8-aad2-e893-f86b

AWS ssh鍵を登録する

# 目的

– AWSにssh鍵を登録する方法をまとめる

# 方法

1. AWSコンソールにログインする。
1. 「サービス」をクリックし検索欄に`iam`と入力する。

![AWS_Management_Console.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/3986c25b-8cf1-116c-b7f7-24c8b35c2ab2.png)
![AWS_Management_Console_と_register_blade_php_—_j-project.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/306417/75ac9d21-22f8-8cef-0573-27e3d123f257.png)

1. 「IAM」をクリックする。

![AWS_Management_Console_と_register_blade_php_—_j-project.png](https:/

GitLab RunnerをEKSで実行

# はじめに
CI/CDのパイプラインをGitLabRunnerのKubernetes Executor(EKS)を使って実行する方法になります。
GitLab RunnerをEKSにインストールをします。
※EKSクラスターは構築済みの前提です。

# これを利用する背景や課題だったこと、メリットなど
以前はec2上にkopsを構築、スケールアウトにはSpotinstを利用して、Runnerを利用していましたが、メンテナンスのコスト高、安定感に欠けていました。

今回はAWSの完全マネージド(EKS+Autoscale+Spotinstance)にすることによりメンテナンスの容易さ+安定化することが目的となります。

また、スポットインスタンスのワークロードでEC2 Auto Scalingを利用することにより、入札不要モデル(上限価格は設定不要、デフォルト値はオンデマンド価格)で、スポットインスタンスでも中断回数を大きく減らすことが可能で、パイプラインの中断を防ぎます。

# 作業の流れ

1. k8s上にrunnerのnamespaceを作成
1. GitLab runnerのc

AWS CloudWatch,CloudTrail,Config

#CloudWatch
定期的にAWSリソースの状態(メトリクス)を取得し、問題がある場合はそれを運用者に通知するサービス。
リリース後に安定した運用をすることで利用者の満足度を上げていくことが重要。

**・標準メトリクス**
ーLambda関数ごとのエラー回数などがあらかじめ定義されている
ーCPU、ディスク利用率、読み込みIOPSなど、一般的な目とリスクの多くが取得可能
ー5分間隔でのメトリスク取得
ー無料

**・カスタムメトリクス**
ー利用者が定義した値を渡す。独自のメトリクスのこと。標準では取得できないメトリスク。
ー1秒から60秒でのリアルタイムでのメトリスク取得
ー有料

##CloudWatch Alarms
特定のメトリスクの閾値に応じてアラーム通知や自動アクションを実行可能。
モニタリング値を閾値にアラームを設定して、担当者に周知することが可能。
閾値のアラームで、SNSリソースを使用して、担当者にメール通知で知らせる。

・メトリクス
データポイントは、タイプスタンプと測定単位を保持
・名前空間
メトリスクのコンテナのこと
異なる名前空間のメトリスク

作業メモ Amazon linux2にpyenvでpython3.9.0をインストールする

## 手順
“`bash
# 使う諸々インストール
sudo yum -y install bzip2 bzip2-devel gcc git libffi-devel make openssl openssl-devel readline readline-devel sqlite sqlite-devel zlib-devel

# pyenvインストール
curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

# bashrc書き換え
cat << 'EOS' >> ~/.bashrc
export PYENV_ROOT=”$HOME/.pyenv”
export PATH=”$PYENV_ROOT/bin:$PATH”
eval “$(pyenv init –path)”
EOS

source ~/.bashrc

pyenv install 3.9.0

pyenv global

【AWS】EC2を起動してDockerアプリをdocker-composeで立ち上げてみた

#はじめに
ローカルで開発したDockerアプリケーションをEC2にホストしたいと思い、試してみました。

#前提条件
– [AWSアカウント](https://aws.amazon.com/jp/)を持っている
– [Docker Hub](https://hub.docker.com/)のアカウントを持っている
– [Github](https://github.com/)を持っていて、ソースをアップ済み

#手順
– AWSコンソールでEC2起動(無料枠のものを選択)
– EC2にログイン(ssh接続)して、Dockerインストール
– EC2でGithubからリポジトリをクローンする
– Docker Hubに保存したimageを使ってdocker-composeでコンテナ起動

#EC2の起動
##インスタンスを起動
AWSコンソールを開き、EC2ページに遷移後、インスタンス起動。
![スクリーンショット 2021-05-24 10.07.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0

CloudFront FunctionsをTerraformで書いてみた

# はじめに

awsのproviderバージョンが `v3.41.0` から `aws_cloudfront_function` リソースがリリースされ、CloudFront FunctionsをTerrafromで管理することができました。

リリースされたので、コード化をしてみようと思います。

“`hcl:provider.tf
terraform {
required_providers {
aws = {
source = “hashicorp/aws”
version = “3.41.0”
}
}
}
“`

# 前提条件

– Terraformのバージョンは `v0.13` 以降であること
– awsのproviderは `v3.41.0` 以降であること

# Terraformコード
[CloudFront FunctionsでBasic認証ができるか試してみた](https://qiita.com/yoshuuua/items/c575a2b077f8004a0747) で書いたコードをTerraform管

AWS ALB LCUコスト確認まとめ

#はじめに
AWS ALBのコストを算出する機会があったものの
LCUコストの算出がすぐに理解できなかったので、
(https://aws.amazon.com/jp/elasticloadbalancing/pricing/?nc=sn&loc=3) 
に記載の計算例を見てみることにしました。

#そもそもLCUとは?
LCUは「Load Balancer Capacity Units」の略でALBの使用量の単位です。

#料金例
ここからALBの料金表に記載の計算例を見ていきます。
※リージョンはアジアパシフィック(東京)を選択
※LCUがトラフィックを処理する尺度や既定値の情報に関しては、割愛させて頂きます。
 詳細はALBの料金表を参照してください。

■例1
条件
(1) アプリケーションが 1 秒あたり平均 1 個の新しい接続を受信
(2) それぞれ 2 分間継続すると仮定
(3) クライアントは毎秒平均 5 つのリクエストを送信
(4) リクエストと応答の合計処理バイト数は毎秒 300 KB
(5) クライアントのリクエストをルーティングする 60 個のルールを設定

【AWS】AMIの利用方法

#プログラミング勉強日記
2021年5月24日

#AMIの利用方法

##1. OSの選択
 利用したいサーバーのOSの選択として、利用していたサーバーを復元する際にAMIを利用する。

##2. EC2のバックアップ
 既存のEC2インスタンスからAMIを作成して、バックアップとして取得する。EC2インスタンスをバックアップとして構成内容を保存するが、このバックアップにはEBSボリュームのスナップショットも含まれるのでEBS分の復元も可能。

##3. ゴールデンイメージ
 最適なEC2インスタンスの構成をAMIとしたうえで、構成を複数利用できる。最適なEC2インスタンス構成を反映したAMIをゴールデンイメージという。

##4. AMIの共有
 AMIを共有するユーザのAWSアカウント番号を指定することで他アカウントでAMIを共有できる。

##5. リージョンの移動
 AMIはリージョン内でのみ移動可能だが、別リージョンにコピーすることができる。このAMIはリージョンのAMIとして別のAMIになる。

![image.png](https://qiita-image-store

日本語の音声認識の市場調査と軽く触ってみた

# はじめに

この記事の対象は、日本語の音声認識をする人を対象としています。

本記事で扱う音声認識は、mp3などのファイルに固定のファイルを想定しています。
ストリーミングしたリアルタイム性のある音声認識は対象外です。

# サービスの紹介と、その特徴

| サービス名 | 料金 | 動作環境 | コメント |
|:-:|:-:|:-:|:-:|:-:|
| [Google Speech-to-Text](https://cloud.google.com/speech-to-text/?hl=ja) | 0~60分:無料トライアル
60分超~100万分まで:$0.006/15 秒** | API | 簡単に利用できた |
| [Amazon Transcribe](https://aws.amazon.com/jp/transcribe/) | [250,000分まで0.00040USD](https://aws.amazon.com/jp/transcribe/pricing/) | API | S3挟まないと動かない |
| [Azure Speech Servic

【備忘録】お名前.comで作成したドメインの証明書をACMを使用して取得する

#楽なやり方
お名前.com側に検証レコードを作成するやり方でも可能だが以下の方法が楽。
お名前.comで作成したドメインをRoute53で運用する場合、お名前.comのネームサーバーの設定をRoute53のNSレコードの値に設定する必要がある。お名前.com側に検証レコードを作成して検証する場合、お名前.comのネームサーバーの設定がデフォルトのネームサーバーである必要がある為、検証後に変更が必要になり手間がかかる。

>
1. お名前.com のネームサーバをRoute 53で発行したNSレコードの値に変更する
https://teratail-v2.storage.googleapis.com/uploads/contributed_images/b3d8ac46d90d00cacea0bbb30ca4744f.png
上記の 0N.dnsv.jp となっているところを Route53で作成したゾーンのNSレコードの値に変更する
2. Route53で作成したゾーンに、 DNS認証のためのCNAMEレコードを追加する
https://teratail-v2.sto

DockerComposeをdevelopmentで実行する

これまで、production環境で開発をしてきた。
Dockerを導入し、AWSでのデプロイを試みている。

しかしそれは、他の記事を参考に作っていた為、
意味もわからず、本番環境でやってきただけで、
必要な構成も理解していないので上手く進まなかった。

そこで、development環境に戻し、
まずはDockerの導入にフォーカスして理解度を高めていく。

***

#### 各ファイルの修正

“`ruby:docker-compose.yml
services:
local-redis:
image: redis
container_name:
rails-redis
container_name: rails-redis

local-rails:
build: .
@@ -15,9 +14,31 @@ services:
– local-redis
env_file:
– env_file.env
container_name:
rails-rails
con