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

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

AWS全サービスの一言メモを、マネジメントコンソールから抽出してみた

エンジニアを生業にしている、くわブロ です。
麦茶や寝袋の話ばっかりしているので、本業のエンジニア関連の話も投稿したいなと思い、AWSクラウドの話をしてみます。

同じ記事を [はてなブログ](https://kuwablo.hatenablog.com/entry/2020/06/16/110049) でも書いています。

# AWSクラウドのサービス

AWSクラウドで提供されるサービスは100個以上あります。
「このサービスってどんなサービスだっけ?」とパッと出てこないことや、
「〇〇サービスは、こうこうこういうサービスです。」と設計書でサービスの前提を説明したくなることもあるかと。

以下の記事を見て「なるほどなるほど」と思ったのですが、

[Gigazine : AWSの膨大で複雑なサービス群をすべて「たった1行」で説明していくとこうなる](https://gigazine.net/news/20200528-aws-one-line-explanation/)

でもやっぱり設計書や提案書に書くなら、公式サイトから引用したい。
そんな時に便利な機能を発見しました、それはマ

元記事を表示

AWS アクセスキーを作成する

# 目的

– アクセスキー(Access key)とシークレットアクセスキー(Secret access key)の作成方法をまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2 GHz クアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

# 前提条件

– AWSのアカウントを持っていること。持っていない場合は下記リンク先を参考にアカウントを作成する。
– [AWSのアカウント作成方法](https://miriwo.hatenablog.com/entry/2020/06/03/122128)

# 前提情報

– アクセスキーとシークレットアクセスキ

元記事を表示

AWS SAM CLIでWebアプリをサクッと作ってサーバーレスアプリケーションに親しむ。

AWS Serverless Application Model(AWS SAM)
数分でサーバレスアプリケーションに必要なリソースを揃えてデプロイ&ローカル開発環境も提供してくれるます。
AWSコンソールに慣れていなくても、とりあえず動くものが立ち上がって、いろいろいじれるところから始められるので非常に楽しいです。

# 記事の対象

– Webアプリをつくる人
– AWSをすこしいじったことあるけど面倒そうだなとか思って後回しにしていた人
– AWSでサーバレスウェブアプリを作りたい人

# 準備とインストール

一度もAWSいじったこと無い場合は準備だけ必要です。

## AWS CLIをインストール
AWSをターミナルからコマンドでいろいろいじれるようになります。
インストールして認証するまではちょっと頑張らないとかも。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-welcome.html

## AWS SAM CLIをインストール
今回インストールしたいもの。下記から手順にしたがってインスト

元記事を表示

AWS Lambda ローカル実行(デバッグ)、デコレータで例外処理統一、引数チェック等 with Python

AWS Lambdaをローカルで実行するサンプルを書きました。Dockerは使いません。

やること
1. 環境変数の読み込み pip install python-dotenv しておくこと
2. lambda_handlerに渡す event引数を記述したJSONファイル読み込み
3. デコレータで例外処理、引数チェックなどを統一する。複数のAWS Lambda関数を使うときに、共通ファイルにデコレータ関数を定義し、各々の関数でlambda_handlerを呼ぶたびにデコレータ関数を呼び出すようにする。そうすると、失敗時にイベント引数をs3等に保存しておけば再処理したり、またはイベント引数の共通チェックを行うという処理を統一できる。

#サンプル
./.env
./.event.json
./lambda_handler.py

.env 環境変数設定用

“`.env:.env
LogLevel=DEBUG
“`

.event.json イベント引数

“`json:.event.json
{
“body” : “{\”key\” : \”valu

元記事を表示

AWS初心者がAWS初心者向けにVPCについてまとめた

# 初めに
ネットワークの基礎も分からない弱弱エンジニアがAWSを触り始めて、最近やっとVPCの概念が少し理解できてきたので、同じ悩みを抱える同士向けにまとめます。
※ 初心者が初心者向けに噛み砕いて書いているので厳密には表現が間違っている箇所があるかもしれません。その場合はご指摘いただけるとありがたいです。

# VPC
まず、VPCはVirtual Private Cloudの略で、その名の通り、**あなた専用の仮想ネットワーク**です。このVPC上にEC2などのインスタンスを設置することができます。VPCは、他のVPCとは論理的に切り離されているので、他の人があなたのVPC上のリソースに直接アクセスすることはできませんので、安全に利用することができます。(あまりこう言う解説は見かけないですが、仮想的なLANのようなものだと私は理解しています)。

2013年以降に作成されたアカウントには、各リージョン毎にデフォルトでVPCが作成されていますが、VPCを自分で新たに作成することもできます。
VPCの作成時には、そのVPCのIPを自分で設定することができます。

# サブネット

元記事を表示

Terraformでインフラを構築しようとして失敗する大学生日記

## Terraformとは
まず、この記事をご覧の方でTerraformをご存知でない方~~数時間前の私~~はこちらをご覧ください。
https://www.terraform.io/

まぁ一次記事を理解できるなら私のQiitaなんか見ないですよね、
初学者なりに理解したTerraformを説明させていただきます。
しっかりとした知見は得ていないので、間違っているならコメントしていただけるとありがたいです。

Terraformとは、インフラ構築をコードで行うツールであり
そのことをInfrastructure as Codeと言います。
メリットしては、同一環境が容易に構築できるという点や
gitでの管理が可能であるため以前の環境に戻すことが簡単である、などたくさんあります。
モダンですね、モダン、もダン、ジダン
 
それでは以下に私がTerraformでAWSを構築していった経緯を記述していきます。
記事を更新していくつもりなので、更新が遅いとか言わないでください。

## 参考のURL
こちらに参考にさせていただいたURLを記述していきます。

元記事を表示

FlutterとAWSで始めるサービス開発 (5)AWS Cognitoでログイン

# はじめに
前回の「[(4)AWS Cognitoへの新規アカウント登録](https://qiita.com/makotomi/items/d2e399d16c0931ad3228)」では、Cognitoユーザープールに新規のアカウントを追加しました。今回はそのアカウントを利用してログインを行いたいと思います。

# 前回からの変更点
前回のコードからの変更点を順に説明します。

## ログインセッション

ログインセッションを保存するためのグローバル変数を追加しました。

“`dart
CognitoUserSession session;
“`

## MaterialAppのroutesにログイン結果画面用の定義を追加

__’/TopPage’__という名前で、ログイン後に遷移する画面の定義を追加しました。

“`dart
routes: {
‘/’: (_) => new MyHomePage(),
‘/TopPage’: (_) => new TopPage(),

元記事を表示

デフォルトのRDSキーで暗号化されたスナップショットの共有

## 概要
RDSのスナップショットを共有する際、デフォルト以外のAWS KMSを利用した暗号化であれば、問題なく行える。
[AWS 公式 – 暗号化された Amazon RDS DB スナップショットを別のアカウントと共有する方法](
https://aws.amazon.com/jp/premiumsupport/knowledge-center/share-encrypted-rds-snapshot-kms-key/)

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629414/737e46cd-4f8c-5cb3-6dfa-cab28d5f0f5e.png)

ただ、デフォルトの暗号化キーで暗号化されたスナップショットを共有(上図のShare)できない。
予想ですが、デフォルトの暗号キーを別アカウントに共有できないためだと思われる。

>デフォルトの AWS KMS 暗号化キーを使用して、暗号化されたスナップショットを共有することはできません。

とAWS公式も無理だと言っていますが

元記事を表示

AWSサービスのログまとめ

## はじめに
業務でAWSの各サービスログを使って、ログ分析基盤を構築することが多く
その都度、AWS公式サイトやクラスメソッドさんのDevelopers.IOのお世話になっているので
その情報を一覧性のある表にまとめてみました。

## AWSサービスログ一覧
| サービス名 | 取得可否 | ログの内容 | CloudWatch Logs | S3 | CloudTrail | 公式サイト | 参考情報 |
|———|———|———|———|———|———|———|———|
| Amazon Elastic Compute Cloud (EC2) | 可 | OS上のあらゆるログ(CloudWatchエージェント→CloudWatch Logs) | ● | × | × | [CloudWatch エージェントを使用して Amazon EC2 インスタンスとオンプレミスサーバーからメトリクスとログを収集する][01] | [EC2インスタンス内のログをCloudWatch LogsとS

元記事を表示

【AWS EC2】ec2-userにログイン中、 $ mysql -u root -p でmySQLにログインしようとした時に、 Access denied for user ‘root’@’localhost’ (using password: ) エラーが出た場合の解決方法

AWS EC2にRailsアプリをデプロイするための準備として、DB(MySQL 5.7)に接続時に少しだけハマったので備忘録的に残しておきます。
同じようなエラーが起きた方の助けになれば・・・。

下記コマンドでDBへ接続する。

“`
$ mysql -u root -p
“`

“`
Enter password:
“`

あれ、パスワードって何だったっけ?
それらしい文字列を入力してみるて接続を試みるが、案の定下記のようなエラーが発生。

“`
Access denied for user ‘root’@’localhost’ (using password: yes)
“`

これは困った・・。そもそも設定した覚えもない?

パスワードを確認するには以下のコマンドで可能。一度確認してみよう。

“`
cat /var/log/mysqld.log | grep password
“`
するとまたこのエラー(catはファイルの中を確認する時のLinuxコマンド)。

“`
Access denied for user ‘root’@’localhost’

元記事を表示

Railsアプリで画像の保存先をS3に変更する。その1

## はじめに
画像を保存する機能を持つアプリでは、アプリのディレクトリ内に画像が保存されていました。
今回の記事では画像の保存先をS3に変更してみます。

## バケットを作る
バケットとは、S3で画像が保管される場所のことです、まずはバケットというものを作りましょう。
まずはAWSにアクセスし、サービスからS3を選択します。
![スクリーンショット 2020-06-10 12.37.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429077/207b8c06-22c8-d32d-555e-47c70fb0de4e.png)
遷移先でバケットを作成します。
![スクリーンショット 2020-06-10 12.40.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429077/84c11adf-742f-faf8-888e-fb5a9c89ec83.png)
バケットの名前を入力しましょう。この名前は一意になる

元記事を表示

AWS S3バケットからファイルを取得し、Lambdaのローカルに保存する

#ゴール
S3バケットに格納してあるファイルをLambdaのローカル(/tmpディレクトリ)に保存したいと思います。
今回はバケット(MyTestBucket)に保管したファイル(test_file.txt)を使用します。
ランタイムはPython 3.8です。

##ソースコード
“`
import os
import boto3

s3 = boto3.resource(‘s3’)

def lambda_handler(event, context):

bucket = s3.Bucket(‘MyTestBucket’)
bucket.download_file(‘test_file.txt’, ‘/tmp/test_file.txt’)
return os.listdir(‘/tmp/’)
“`

##結果
osモジュールのlistdir関数で、Lambdaの/tmpディレクトリにファイルが保存されているか確認しています。
テスト実行後のコンソールに表示された結果は以下の通りです。
![rapture_20200615181536.png]

元記事を表示

DiscordからMinecraftサーバーを立ち上げた話

# はじめに
こんにちは。陰キャ大学生です。
陰キャ大学生の私は友達がオンライン上にしかいません。そのため、よくオンラインゲームをします。今回はそのお話です。

大学生の私は生協マンションに住んでいるため、サーバーを立ててもポート解放できず遊べません。そのため、普段はAWSのEC2でサーバーを立てています。

このサーバーをボイスチャットツールのDiscordから起動及び停止できるようにすれば大変便利です。

それでは前置きが長くなりましたがどうぞ。

# EC2の準備
### 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275720/96a217fa-9239-419a-289b-d2316bf8540f.png)

– __discord-bot EC2 t2.microインスタンス__
– __game-server EC2 t2.largeインスタンス__

システムの概略はこのような感じです。ここでのポイントは

– discordのレスポンス用とサーバー用に2つのイン

元記事を表示

EFK (Elasticsearch + Fluentd + Kibana) を用いたELBアクセスログ解析基盤の作成

業務でEC2インスタンス上に短時間で作成する必要があったので、備忘録

AWSの構成図は一部省略しています。

## 構成

– t2.medium (vCPU: 2, Mem: 4GB, EBS: 30GB) x1

![YVlCypB.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/258445/b30c5a8b-5245-c58e-b472-45fb551eea56.jpeg)

## 構築手順

### ELBのログ書き出し設定

サービス->EC2->ロードバランサー->対象のELB を選択
説明タブの属性にあるアクセスログの設定からアクセスログを有効にし、出力間隔及びS3のバケットを指定する。

### Elasticsearch + Fluentd + Kibanaのインストール

#### Elasticsearch, Kibana

今回はAMIとしてAmazon Linux 2 (RHELベース) を選択したので、RPMリポジトリからインストールする。

元記事を表示

AmazonLinuxに作業用ユーザを追加するTeraTermマクロ

# Amazon LinuxをLaunchして最初にやりたい作業用ユーザの追加をTeraTermマクロでやる
## TeraTermマクロを用意する
“USERID” のところに、作りたいユーザ名を入れて、拡張子 “.ttl” で保存

“`
USERID = ‘hirohiro-kun’

sendln ‘sudo su’

wait ‘root’
sendln ‘adduser ‘USERID

wait ‘root’
sendln ‘usermod -G wheel ‘USERID

wait ‘root’
var3a = ‘echo “‘
var3b = ‘ ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers’
sendln var3a USERID var3b

wait ‘root’
sendln ‘su – ‘USERID

wait USERID
sendln ‘mkdir .ssh && chmod 700 .ssh && touch .ssh/authorized_keys && chmod 600 .ssh/authorized_ke

元記事を表示

[エラー]An error occurred while installing pg (1.2.3), and Bundler cannot continue.の解決法

# 背景
タイトルのエラーが発生し、路頭に迷い込んでいましたが、意外と簡単に解決したので一応記事にしておこうかなと思います。

## 解決策
結論、postgresql本体は入っていたが、develが入っていなかったよう。

“`
$ sudo yum install postgresql-devel
“`

## 最後に
自分の状況としては、本番環境のDBをpgにして、バージョン等を新しくしたので色々とごちゃごちゃしてややこしくなった結果、develを入れ忘れていたというような感じです。。
もし、同じ人がいたときように書いたんで参考までに。

元記事を表示

Web初心者がAWSを使ってサーバーレスwebアプリケーションを作成

## はじめに

現在修士1年でバイオインフォマティックス系の研究をしています.

卒論で開発した機械学習を用いた手法を論文化するためにwebアプリケーション化する必要があり,AWSを用いてサーバーレスwebアプリケーションを作成しました.

一ヶ月前まではhtmlすらほぼ触ったことがなく,javascriptやcssましてやAWSは使用したこともない完全なweb初心者でしたが,webアプリケーションを比較的簡単に実装コスト少なめで作成することができたのでその流れを紹介します.

web初心者だけどwebアプリを作成してみたい!といった方の参考になれば幸いです.(実装の詳細などは長くなるので全体的な流れだけ紹介します.)

### どんなアプリケーションを開発した?

今回開発したアプリケーションは以下のようなものです.

1. webページでユーザーからメールアドレスと予測対象のファイルを受け取る
2. 受け取ったファイルを前処理して予測
3. 予測結果をwebページでユーザーに表示

このうちAWSを用いたのは1と3の部分で,2の前処理と予測は処理が重いので研究室のサーバーを使

元記事を表示

Lambdaでmiddleware実装 Go編

初めてのGoでなれないところも多く悪戦苦闘していますが、共通処理を外に出してメンテナンス性やコード可読性をあげたいと思い、middlewareを実装してみました。

## middleware用のコード

“`golang:middleware.go
package middleware

import (
“github.com/aws/aws-lambda-go/events”
)

type Handler func(events.APIGatewayProxyRequest) (interface{}, error)

func Middleware(next Handler) Handler {
return Handler(func(request events.APIGatewayProxyRequest) (interface{}, error) {
return next(request)
})
}
“`
handlerについての公式ドキュメントはこちら
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg

元記事を表示

APIを提供するALBでメンテナンスモード(503)を実現する(CORSに対応する)

# APIを提供するALBでメンテナンスモード(503)を実現する(CORSに対応する)
この記事は

– APIをALBを使って解決している
– SPAとAPIのエンドポイントが違う(クロスオリジン)
– SPA側でメンテナンスレスポンスをハンドルしている

という状況での解決方法になります。
## はじめに

AWSのALBには固定レスポンスという機能があり、特定のステータスコードとbodyを固定で返却する事ができます。
コレを設定することで、アプリケーションがメンテナンスモードの時などに固定でメンテナンス画面を表示することが出来ます。

[固定レスポンスの設定方法](https://dev.classmethod.jp/articles/alb-fixed-response/)

ところが、SAP+APIのような構成のアプリケーションを使用している際、API側のALBで固定レスポンスを設定するとある問題が発生します。

**SPA+APIモデルのアプリケーションで固定レスポンスが出来ない**

ALBの固定レスポンスではメンテナンス中という旨のJSONを返却できます。しかし、以下

元記事を表示

aws technical essentials 2 をオンラインで受けた感想

# aws technical essentials 2 の感想
はい皆さんこんにちは

結論から言うとこの記事は
有料研修(結構高い)の
aws technical essentials 2を受けたので、これから受ける人の参考になればと記事を書いておきます。
・WordPressちょっと触ります
・時間は余裕ないです
・SQLの知識もあったほうが良いが、無くても良い。

# 詳細

資料が欲しい方はこの辺見てください。
https://aws.amazon.com/jp/training/course-descriptions/essentials2/

環境:
こんなご時世ですので、オンラインでの研修でした。

対象サービス:
EC2,RDS,IAM,AMI,snapshot,S3,Wordpress,ELB,AutoScale,CloudWatch,CloudWatch Logs,EBS

##まずはじめに
今回、aws technical essentials 2を受けていますが、
1は受けませんでした。
ある程度業務での前提知識があったのと、会社のお金だったので2だけにしまし

元記事を表示

OTHERカテゴリの最新記事