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

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

Amazon Linux 2 で PHP を簡単にアップデートする方法

Amazon Linux 2 の、ここ1年位の Amazon Linux Extra を使って、PHP をインストールしている人は、Amazon Linux Extra でパッケージの Disable & Enable をするだけで、結構簡単に PHP のアップデートができるという話です。

参考: [Amazon linux 2でのphpの更新方法](https://qiita.com/P__act2_tech/items/69a5b94ead8ee3edbc7e) (感謝!)

# 自分の環境

– AWS
– 開発用のサーバー
– Amazon Linux 2
– PHP 7.1 の Extra を導入
– 導入済みの PHP 一覧 `libmcrypt php php-bcmath php-cli php-common php-dba php-embedded php-enchant php-fpm php-gd php-gmp php-intl php-json php-ldap php-mbstring php-mysqlnd php-odbc php-opcache

元記事を表示

AWS認定ソリューションアーキテクトプロフェッショナルに合格するまで〜プロフェッショナル編〜

## はじめに

[AWS認定ソリューションアーキテクトプロフェッショナルに合格するまで〜アソシエイト編〜](https://qiita.com/odayushin/private/6245e89244eeca7fb2ef)の続きです。今回はプロフェッショナル編です。
SAA取得後4ヶ月でSAPも無事一発で合格することができました。

## SAP試験について

詳細は[公式ページ](https://aws.amazon.com/jp/certification/certified-solutions-architect-professional/)を参照。

### 難易度
SAA試験の上位試験で、AWS認定試験最難関との噂。
>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/360735/4e0e10e2-37c3-8b03-85c9-db96e46b346c.png)
[AWS認定](https://aws.amazon.com/jp/certification/)より抜粋

受験対

元記事を表示

【中編】Rails+Nuxt+MySQL+Dockerで作ったWEBサービスをECS・ECR・CircleCIで自動テスト・デプロイしてterraform化する

#この記事を書くにあたって
AWSについての知識が全くなかった状態からポートフォリオを作成し、個人的にAWSへのデプロイと、CircleCIの自動デプロイが一番難しかったので、備忘録・これからポートフォリオを作るよ・これからAWS使うよって方向けの記事があれば良いなと思い書きました。

私が作ったポートフォリオの概要は
[【AWS?Docker?】ポートフォリオで必要な知識を自分なりに分かりやすくまとめる【terraform?CircleCI?】](https://qiita.com/Shogo1222/items/8b8fc4c65632844a453f)

この記事の前身となる記事は
[【前編】Rails+Nuxt+MySQL+Dockerで作ったWEBサービスをECS・ECR・CircleCIで自動テスト・デプロイしてterraform化する](https://qiita.com/Shogo1222/items/d90b3fa01a2dca14aeeb)

是非ご覧いただけると有り難いです。

第一弾:[【前編】Rails+Nuxt+MySQL+Dockerで作ったWEBサービス

元記事を表示

[AWS] 踏み台サーバ不要!ローカルPCから、Private Subnet上のEC2インスタンスにssh/scpする

# はじめに
この記事では「[[AWS] Private Subnet内のEC2インスタンスにローカルPCのターミナルからSession Managerでアクセスする](https://qiita.com/herohit-tool/items/85ccfd7799474c81fb6a)」の内容を改善し、もっと簡単に環境を構築できる手順を解説します。

そして、何がセキュアかというと、Private Subnetに配置したEC2インスタンスに直接接続できる、という点に注目したいと思います。そう、踏み台サーバが不要なのです。

# 事前準備
まず、最初にクライアント環境に以下のツールが必要ですので、必要に応じてご用意ください。

– [AWS Cli](https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2.html)
– [Session Manager Plugin for the AWS CLI](https://docs.aws.amazon.com/ja_jp/systems-manager/la

元記事を表示

AWS IoT Greengrass CoreをRaspberry Piにサイレントインストールする手順

こちらにある `gg-device-setup-latest.sh` スクリプトを利用します。サイレントインストールの元情報もここを参考にしています。

https://docs.aws.amazon.com/greengrass/latest/developerguide/quick-start.html

以下の項目を組み合わせてサイレントインストールします。

# 事前準備
SSHを有効化して、作業フォルダを作成します。

“`sh
mkdir ~/work
cd ~/work
“`
作業PC側で、[以下のワンライナーでAWS認証情報を取得](https://qiita.com/yomon8/items/937855d2aa2f14ff47db)します。

“`sh
aws sts get-session-token –query ‘Credentials | {A:AccessKeyId,B:SecretAccessKey,C:SessionToken}’ –output yaml | awk ‘NR==1{print “export AWS_ACCESS_KE

元記事を表示

Glueに関して

### ETLに関して
普段取得しているデータというのはそのままでは分析することが出来ないです。それは取得したデータにはデータフォーマットがばらばらであったり、非構造化データがあったりするからです。そのため、ETLという処理が必要になってきます。ETLとは「Extract」「Transform」「Load」の略になります。簡単にETLの説明するとさまざまな形式のデータを一定の形式に統一して保存する処理のことです。 一般的に、データウェアハウスにデータを保存する際の前処理として行われます。AWSのサービスではGlueがこれに当たります。

### Glueに関して
AWSのGlueはデータの抽出や変換、ロードなどを簡単に行える完全マネージド型のサービスになります。サーバーレスであるため、自分たちでインフラ周り管理する必要がないです。Glueは大きく3つの機能に分かれます。「データカタログ」、「サーバーレスエンジン」、「オーケストレーション」です。

データカタログとは…メタデータを管理するリポジトリ機能のこと。このデータカタログを作成する方法は3つあります。「Glueクローラー」「Glu

元記事を表示

CloudFormationでEC2を作成

## はじめに

前回はCloudFormationでVPC周りを作ったので、
CloudFormationでも実現するようにしていきたいと思います。

CloudFormationの書き方としてはレイヤ毎に分けて書くのが推奨なので、
SecurityGroup / EC2 の作成のYAMLをそれぞれ書きました。内容についてはコメント記載しています。
みなさんの役に立ったら嬉しいです。

VPC周りのリソースを引っ張って構成しているので、SecrutiyGroupとEC2のデプロイする前にVPCをデプロイしてから実施してください。
[VPCの記事はこちらです。](https://qiita.com/nnagashima/items/b4931a584677c80a02bf)

## SecurityGroupのYAML

“`console
# 最新のテンプレートの形式バージョンは 2010-09-09 であり、現時点で唯一の有効な値です。

AWSTemplateFormatVersion: 2010-09-09

# 本テンプレートの説明です。

Description:
S

元記事を表示

【Rust】rusoto_dynamodbが使いやすくなるdynomiteの紹介

# はじめに

RustでDynamoDBを扱うときは[rusoto_dynamodb](https://rusoto.github.io/rusoto/rusoto_dynamodb/index.html)を使いますが、
[dynomite](https://lessis.me/dynomite/dynomite/index.html)というCrateを組みあわせると非常に使いやすくなります。
カッコよく言えば、ハイレベルなインターフェースを提供してくれます。

DynamoDBの`Books`というテーブルに項目を作成するコードを、
「rusoto_dynamodbのみで書いた場合」と「dynomiteを使った場合」で比較してみます。

## rusoto_dynamodbのみで書いた場合

rusoto_dynamodbでテーブルに項目を作成するときは、
`PutItemInput`構造体のインスタンスを生成する必要があります。
作成したい項目の情報は`HashMap`でitemにセットします。

“`rust
pub struc

元記事を表示

AWS Global Acceleratorを使ってAWS ECSのIP固定をやってみた

## 背景
大人の事情に伴い、とある環境においてはアクセス先(AWSの各種リソース)のIPを予め固定しておく必要があった。
今回の対象はAWS ECS(Fargate)とAPI Gatewayであり、超簡略化して書くと以下のような感じである。
![Screen Shot 2020-09-09 at 17.01.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102733/7bbd87e9-2f5c-818d-ea7f-aa6150d5fd93.png)

「AWSへのアクセス元を絞る」といったケースはよく聞くが、「AWSリソースのIPを固定する」というケースは初めてだったので、その調査結果をまとめる。

## 結論
結論から言うと、[AWS Global Accelerator](https://aws.amazon.com/jp/global-accelerator/?blogs-global-accelerator.sort-by=item.additionalFields.createdDa

元記事を表示

CloudFront 運用で覚えておきたいこと

CloudFront でコンテンツをキャッシュし、システム負荷の軽減・レスポンス速度の向上を図ることも多いと思います。
私自身も最近、CloudFront で CDN 環境を構築したばかりです。
運用フェーズに入り、構築時には気付けなかった CloudFront の設定・仕様を今後の為にまとめました。

## 覚えておきたいこと
* [オブジェクトのキャッシュ設定](#オブジェクトのキャッシュ設定)
* [カスタムエラーページのキャッシュ設定](#カスタムエラーページのキャッシュ設定)
* [オリジンとの通信でhttpとhttpsを有効にするときの注意](#オリジンとの通信でhttpとhttpsを有効にするときの注意)
* [S3 オリジンでオブジェクトが存在しないとき 403 エラーが返ってくる](#S3 オリジンでオブジェクトが存在しないとき 403 エラーが返ってくる)
* [デフォルトのルートオブジェクトの指定](#デフォルトのルートオブジェクトの指定)
* [アクセスログのステータスがゼロ](#アクセスログのステータスがゼロ)

## オブジェクトのキャッシュ設定
ラジオボ

元記事を表示

CircleCI + Capistrano + AWS(EC2) + Railsで自動デプロイしてみた

# はじめに
先日、Capistranoを使って自作のポートフォリオをAWSにデプロイしたので、CircleCIと組み合わせて自動デプロイしてみました。

筆者はプログラミング学習を始めて4ヶ月ぐらいですが、一週間ほどで実装できました。

**ポートフォリオにCircleCI/CDを組み込んでみたい!**という方の参考になれば嬉しいです。

ご指摘等あれば、コメントいただければ幸いです。

# 前提
– Railsアプリ作成済
– CIrcleCIによる自動テストを導入済
– Capistranoを使ってAWSにデプロイ済

CircleCIとCapistranoに関しては別の記事でまとめています。

[CircleCIでSystemSpec(RSpec)とRubocopを走らせる](https://qiita.com/YK0214/items/bbed63ea7ca5367dae2f))
[Capistrano + AWS(EC2) + Rails で簡単デプロイ](https://qiita.com/YK0214/items/355ba23f7bf7758e232d)

# 手順

元記事を表示

ウサギでもできるWindows上のAWS CLIによるSnapShot取得(マルチボリューム)

前回はWindows OS上で動作するツールからVSS Snapshotの取得を実行するところまで実施してみました。
今回はVSSではなく、通常のSnapShotを取得するところを、おさらいしてみたいと思います。

また、複数のドライブ(ボリューム)にまたがってDBのデータなどを同時に保存している場合は、同時にSnapShotを取得しないと、整合性が取れないバックアップとなってしまいます。そのため、一回のAPIコールで複数のボリュームのSnapShotを取得することができる機能を利用することになります。
それは[マルチボリュームスナップショット](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-creating-snapshot.html)という機能です。
Windows OSが動作するインスタンスからSnapShotを取得するには、AWS APIの操作が必要になるため、当然ですがAWS CLIを利用することになります。
AWS CLIによるスナップショットの作成は[create-snapshots](https:/

元記事を表示

AWS CloudFrontのキャッシュ設定が新しくなっていた

## 概要

* 以前は CloudFront ではキャッシュ設定を個別のパスに対する Behavior でTTL設定などを毎回設定する必要があった
* 設定に`Use a cache policy and origin request policy`の選択肢が現れ、cache policy を作って使い回せるようになった

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144064/295ef624-8ab0-3371-b41b-f73d8637afaa.png)

## もっともベーシックなCache Policy と Origin Request Policy

以下のようにすでに組み込み(Managed)な Cache Policy が利用可能です。
既存の Policy の設定を見ることで、どういう設定ができるかみていきます。

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

元記事を表示

OSの基本設定 ~複数バーチャルホストの設定まで~

#はじめに
AWSのEC2にてインスタンス(サーバー)を建てた際にOSの基本設定をしたので、その手順を記録します。ほぼ確実にサーバー建てるたびに設定すると思うので、
**ターミナルでコマンド手打ちするのがめんどくせー!と思ったらコピペでがんがん使って下さい。**
(インスタンス再作成しまくってたとき手打ちするのがだるすぎた)

1.時間の変更 2.言語変更 3.コマンド履歴の表示変更 おまけ.複数バーチャルホストの設定
以上の4つを行います。

#開発環境
Amazon Linux 2 AMI (HVM), SSD Volume Type (AWSアカウント登録済み)
どのサーバーでも設定方法はそれほど変わらないと思いますが、設定ファイルやディレクトリがなければ、ググって確認してみてください。

##1.時間の変更
サーバー作成後、作成したキーペアに権限を与えてssh接続します。

“`ターミナル
//自分に読込・書込みの権限を与える
chmod 600 ~/Desktop/[キーの名前]
ssh -i ~/Desktop/作成したキーペア名 ec2-user@インスタンスと紐付

元記事を表示

AWSを使ってアプリケーションを公開する手順(4)データベースの作成

#はじめに
AWSを使ってアプリケーションを公開する手順を記載していく。
この記事ではデータベースの作成を行う。

#データベースを作成する
WEBアプリケーションのデータを保存するためにデータベースを作成する。

##データベースの種類
データベースの種類には以下のようなものがある。
– 階層型データベース
– ネットワーク型データベース
– リレーショナルデータベース

この中で最も利用されているのがリレーショナルデータベースである。
リレーショナルデータベースを管理するソフトウェアをリレーショナルデータベースマネジメントシステム(RDBMS)という。
RDBMSの一つにMySQLがある。
MySQLはOracle社が開発・提供をしているRDBMSで、データベースの作成、編集、削除などを行うことができる。
オープンソースソフトウェアとして公開されており、誰でも無償で利用することができます。
Ruby on Railsと併せて利用することができるため、本稿ではMySQLを用いてデータベースを作成していく。

##MySQLをインストールする
以下のコマンドを実行し、MySQLをインス

元記事を表示

【AWS】CDKでECS Clusterを構築しよう

[【AWS】CDKでECRを構築しよう](https://qiita.com/homines22/items/71e5b596e3edab46f062)のECS Clusterバージョンです
前提などは省きますので[前回の記事]((https://qiita.com/homines22/items/71e5b596e3edab46f062))を参照してください :pray:

# 環境

![language](https://img.shields.io/badge/language-python-blue.svg) ![python3.8](https://img.shields.io/badge/python-^3.8-blue.svg) ![pipenv](https://img.shields.io/badge/package_manager-pipenv-blue.svg)

# インストール

“`bash
pipenv install aws_cdk.aws_ec2 aws_cdk.aws_ecs
“`

# 実装

## props/ecs_cluster.py

元記事を表示

【Rails】本番環境でのデータベースをリセット

## はじめに

####【前提】
・Railsを使用してアプリケーションを開発
・AWSを使用
・EC2(AWSが提供する仮想サーバ)にてWebサーバを作成

## 既存のデータベースをリセット
今まで私自身ローカル環境にて開発を行うにあたり、DBをリセットしたいことがあった場合
“`rails db:riset“`を使用し、DBの再作成を行なっておりました。

今回デプロイ後ですが、マイグレーションファイル等に変更を色々と加えたため、
一度本番環境でもリセットし、再構築しようと考えました。

## 本番環境でのデータベースリセット

“`ruby
RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rails db:drop
“`
このコマンドで本番時でのDBをリセットすることができます
(本番環境でのDBリセットは、実務ではありえるのでしょうか・・)

#### 再度データベースの内容を反映させる

“`ruby
rails db:migrate RAILS_ENV=product

元記事を表示

Serverlessで複数の関数をどう管理できるか検証した時のメモ

## 前提
AWS LambdaでPythonを動かします。個人開発用ではなく、複数人で複数の関数を複数の環境で実行するユースケースを想定しています。

## 調べたこと
* プロジェクトの作成(入門)
* デプロイ
* Pythonパッケージ管理周りの設定
* 環境ごとに設定を管理する方法
* 1つのリポジトリで複数種類のfunctionを管理する時の構成
* その他所感

“`
$ python -V
Python 3.8.1

$ serverless -v
Framework Core: 1.82.0
Plugin: 3.8.3
SDK: 2.3.1
Components: 2.34.9
“`

## プロジェクトの作成
[公式のQuickStart](https://github.com/serverless/serverless#quick-start)で入門しました。

AWS認証設定のやり方はいくつか方法がありますが、今回の用なユースケースだとserverless.ymlを以下のように設定する形になります。

“`serverless.yml
provider:

元記事を表示

AWS Summit Online 2020 Tokyoメモ

# AWS-21:モダンアプリケーションのためのアーキテクチャデザインパターンと実装

https://resources.awscloud.com/aws-summit-online-japan-2020-on-demand-aws-sessions-1-82341

## モダンアプリケーションをどう実装するか

* ゲートウェイパターン
* バックエンドサービスへの呼び出しが多い場合
* アプリケーションのエンドポイントはロールベースアクセス制御で保護
* AWSではAPI GatewayとCognitoを使う
* バックエンドサービス
* バックエンドサービスをアタッチされたリソースとして扱い、アプリケーションを再デプロイしなくても切り替えられるようにする
* ポリグロットパーシステンス
* 用途に応じたデータストアや、開発者のスキルセットを考慮して選択する
* サービス間の安定性を高めるデザイン
* カスケード障害防止する
* タイムアウト
* スロットリング
* リトライ

元記事を表示

AWSを使ってアプリケーションを公開する方法(3)EC2インスタンスの環境構築

#はじめに
AWSを使ってアプリケーションを公開する手順を記載していく。
この記事ではEC2インスタンスの環境構築を行う。

#必要なツールのインストール
EC2インスタンスの環境構築を行うために様々なツールをインストールする。

##「.ssh」ディレクトリに移動する
下記コマンドを実行し「.ssh」ディレクトリに移動する。

“`
cd ~/.ssh/
“`

##ssh接続
以下のコマンドを実行してEC2インスタンスにsshでアクセスする。
(ダウンロードしたpemファイル名が「xxx.pem」、ElasticIPが123.456.789の場合)

“`
ssh -i xxx.pem ec2-user@123.456.789
“`

##yumコマンドを実行しパッケージをアップデート
以下のコマンドを実行してパッケージをアップデートする。

“`
sudo yum -y update
“`

###パッケージとは
– パッケージはLinuxOSの動作に必要な各種プログラムやファイルをまとめたもの。
– バイナリ型式のプログラムおよびそのプログラムを動作させるのに必要な

元記事を表示

OTHERカテゴリの最新記事