AWS関連のことを調べてみた2022年08月24日

AWS関連のことを調べてみた2022年08月24日

Amazon Appstream2.0でMFCアプリを配信する

# はじめに
Senju Family、mPLATを簡単にお試し利用ができるmPLAT/Tourサービスでは、MFCアプリケーションである「千手ブラウザ」をインストール不要で手軽に、セキュアに利用できるよう、Amazon AppStream2.0を利用して配信しています。

AppStream2.0を利用してみて、主にオートスケーリング面で事前の想定通りの動作をしなかったり、直に端末にインストールして利用する場合と比べて、利用ができない機能などがあったため、整理してみました。

# 環境構築
AppStream2.0でのアプリケーション配信準備は、ImageBuilderでのイメージ化、Fleetの作成、Stackの作成とFleetとの紐づけ、UserPoolでのユーザーの作成と通常通り進めていきます。
もちろん千手ブラウザのアプリケーション自体に手を入れる必要はありませんでした。

# オートスケーリングの設定
## 事前の想定
+ 利用者の接続に応じてインスタンスが増え、5ユーザーまでが利用可能。
+ 同時利用が5ユーザーを超えた場合はエラー画面が表示される。
+ 2ユーザー目以降

元記事を表示

ALB/NLBアクセスログが出力できない時の注意点

# はじめに
ALB/NLBのアクセスログ出力設定時によくあるエラーとして、
以下例の通り出力先バケットの権限エラー(**Please check S3bucket permission**)が挙げられるかと思います。

本記事はバケット権限エラーに直面した際の確認観点を共有させていただき、同様のエラー対応に悩んでいるかたの救いになれば幸いです。

例)出力先バケットの権限エラー
![2022-08-13_10h54_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1764568/f2fde6f6-7bbd-b847-c35f-a493d9a26f5c.png)

# エラー発生時の確認観点

### ①S3バケットポリシーを付与しているか
アクセスログを出力するためには、出力先S3バケットポリシーを付与する必要があります。
※S3のバケットポリシーは[こちら](https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/applic

元記事を表示

AWSにてwebアプリケーション環境をCircleCI Ansibleで自動デプロイしてみた

## 実施の背景

* 知り合いがクラウド案件に従事しており、楽しそうに仕事をしていた。
* ネットワークエンジニアとして働くも、自分もクラウドへの興味が沸く。
* AWSについて2022年3月より学習開始。
* 2022年7月にSAA取得。
* 資格勉強で学んだ知識の落とし込み。
* Ansible、CircleCI、Dockerなどモダンな技術の使用してみたかった。

# 実施概要

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2641225/84376062-7338-b13e-9fcf-b13cb2a54259.png)

**EC2**

HTTP(80ポート)のトラフィックはELB経由のみ許可
VPCエンドポイント経由でS3に静的画像をホスト

**RDS**

MySQL(3306ポート)のトラフィックは、EC2にアサインしたセキュリティグループのみ許可

# 使用技術

**アプリケーション**

Railsを使用したアプリケーション(インフラにコミット

元記事を表示

バケットポリシーとユーザーポリシー

# S3バケットへのアクセス制限
S3バケットにはアクセス制限を設定できる。
アクセス制限には3つの方法がある。
バケット単位で制限する**バケットポリシー**、IAMユーザー単位で制限する**ユーザーポリシー**、**ACL**(アクセスコントロールリスト)がある。
## バケットポリシー
該当のバケットにアクセスできるユーザーを指定する。
対象ユーザーが多いときに使用。
## ユーザーポリシー
アクセスできるバケットを指定する。
バケットが多いときに使用。
## ACL(アクセスコントロールリスト)
自分以外のほかのAWSアカウントに対して、「読み取り」「書き込み」それぞれの操作を「許可」「拒否」できる一覧表のこと
# アクセス制限の対象と内容
**アクセス制限で設定する項目**
|項目|内容|
|-|-|
|リソース(何に対して)|制限の対象となるバケットやオブジェクト。Amazonリソースネーム(ARN)を使って、対象を識別する|
|アクション(何を)|実際にできる行動のこと。GET(取得)、PUT(配置)、DELETE(削除)など。アクションキーワードを使って指定|
|エフェ

元記事を表示

オブジェクトとバケット

# オブジェクトとバケット
バケットとはWindowsでいうドライブで、オブジェクトとはファイルのようなもの。
**バケットはフォルダではないので、バケット内にさらにこバケットを作ることはできない**。
バケットはAWSアカウント1つに100個まで作れる。
オブジェクトは単にファイルではなく、管理のためにメタデータがついている。
1つのバケットの格納できるオブジェクトの数や容量に制限はない。
S3はオブジェクトストレージなので、フォルダやディレクトリの概念はない。
格納されたオブジェクトは、バケット内に並列に並べられる。
# バケット作成と命名規則
バケット作成後はリージョンやバケット名の変更はできない。
他のS3ユーザーが使用しているバケット名は使用できない。
リージョンを変更したいときは、同じ名前で作成できないので、一度バケットを削除してから新たにバケットを作成する。
## バケットの命名規則
* バケット名の始まりと終わりはアルファベットか数字
* 3文字以上63文字以下
* DNS命名規則に従う必要がある
* IPアドレス形式のバケット名はつけられない
* 大文字やアンダーバー

元記事を表示

AWS Amplifyで既存Reactアプリをホストする

#### 既存のReactアプリをAWS Amplifyでホスティングするためのメモ

##### 1.AWS [Amplify ](https://aws.amazon.com/jp/amplify/)にアクセス
AWS Amplifyを使用してアプリをホストするを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653035/7927f74b-bbf3-8724-9ca5-fd827fd6618e.png)

##### 2. Githubを選択、その後は画像の通り進行

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653035/2659c103-d3ed-60db-9198-977819aa20a2.png)

##### 3. AWS AmplifyからGithubへのpermissionについて聞かれるのでAuthorizeする

![image.png](https:

元記事を表示

S3を使用する方法

# S3の操作
バケットの作成や各種設定など、基本的なS3の操作はマネジメントコンソールのS3ダッシュボードから行う。
オブジェクト(ファイル)のアップロードもダッシュボードから行える。
しかし、S3の場合は、日常的なファイルのアップロードを毎度マネジメントコンソールにログインしてから行うのは不便なので、
**APIやSDKを利用してアップロードできるようになっている**。
また、AWS Transfer for SFTPによって、SFTP(SSHで暗号化されたファイル転送のプロトコル)でもアクセスできる。
## APIとSDK
APIとはソフトウェアがやり取りするための仕様。
SDKとはある特定のソフトウェアを開発する際に必要なプログラムをまとめた開発ツール。
S3のマネジメントコンソールでできることは全て、APIやSDKで実行可能。
# S3サービスの機能
**S3サービスの用語**
|項目|内容|
|-|-|
|オブジェクト|S3で扱うエンティティの単位。(イメージ)テキストや画像などのファイルのこと|
|バケット|オブジェクトを格納されるコンテナ。全てのオブジェクトはバケットに

元記事を表示

ストレージクラスとは

# ストレージクラスとは
S3では借りられるストレージの種類が各種用意されている。ストレージ種類のことを**ストレージクラス**と言う。
ストレージクラスは、標準クラスやアクセスパターンに応じて階層(コストが異なる層のこと)を移動できるクラス、
あまりアクセスしないデータに適したクラスなどがあり、使用用途に合わせて選べる。
**バケット**(オブジェクトを格納するコンテナ)単位でなく、
オブジェクト(ファイル)単位でクラスを選択できる。
ストレージクラスの変更は手動でも行えるが、ライフサイクルポリシーを設定すると自動で行える。
# ストレージクラスの種類
## 標準(Standard)
標準は最もスタンダードなストレージクラス。
3つ以上のAZ(アベイラビリティーゾーン)にデータが保存されるため、99.9%の可用性(システムが稼働し続けること)が保証されている。
データの取り出しに料金はかからず、最小キャパシティ(最小値)料金なし、日割り計算なのでシンプルで使いやすい。
## Intelligent-Tiering(IT)
S3 Intelligent-Tieringでは、高頻度・低頻

元記事を表示

Nuxt.jsでロードバランサーを使ってスクリプトが404になっちゃう場合の回避策

Nuxt.jsをサーバー上でビルドするような環境においてSPAで使ってしまうと、複数サーバー構成でロードバランサーを使いたいとなった場合に読み込みスクリプトが404になってしまう場合があります。
これはNuxt.jsに限った話ではないですが、例えば以下のような`/login`のhtmlに書かれた後続のjsファイルを読み込む際にロードバランサーで振り分けられると、読み込み先サーバーにjsファイルが存在しない場合に404エラーとなってしまいます。

![スクリーンショット 2022-08-24 2.02.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144550/a81c44ec-02bf-b0b1-0b1e-12c7eca040c9.png)

### 回避策
ロードバランサーの効果は薄まってしまいますが、スティッキーセッションを設定することで404エラーを回避することができます。

![スクリーンショット 2022-08-24 1.30.37.png](https://qiita-image-s

元記事を表示

Amazon S3とは

# Amazon S3とは
**Amazon Simple Storage Service**(Amazon S3)はインテリジェントな**オブジェクトストレージサービス**
オブジェクトストレージとは、データをオブジェクト単位で管理する形式を指す。
Webサーバーや社内ファイルサーバーのように、インターネット上にデータを保存する場所が借りられる
容量制限ないので、将来を見越して借りる必要はない。
S3の特徴は、**多機能であること**。誰でも簡単に扱えるようにさまざま機能がある。
**Webサーバー機能とクエリ機能**が代表的な機能として挙げられる。
# 堅牢でインテリジェントなストレージサービス
S3は多彩な機能を備えてるだけでなく使いやすく堅牢であることが大きな特徴
**S3の特徴**
* スケーラビリティ
EC2と同じくスケールアップ・ダウンがしやすくなっている。
使用場面に応じたストレージクラスが複数用意されていて、
ライフサイクルポリシーを使用すれば自動的に移行できる。
* 可用性・耐久性
99.999999999%(イレブンナイン)のデータの耐久性があり、障害やエラー、脅

元記事を表示

需要に合わせてEC2の台数を増減「AutoScaling」

# Auto Scalingとは
**Auto Scaling**(オートスケーリング)とは、
サーバへのアクセス状態によってサーバーの台数を増やしたり減らしたりする機能
EC2以外のサービスに対応したAuto Scalingもある
AWSではEC2 Auto Scaling を単体で使用するばかりでなく、
CloudWatchからサーバーの負荷情報(CPU負荷、ネットワーク通信量など)
を使ってスケーリングに役立てることがある。
# 監視とインスタンス数の決定
Auto Scalingを開始するためには**AutoScalingグループ**(インスタンスの集合)を作成し、
グループにインスタンス(サーバー)の最小数と最大数を設定する。その中でインスタンスの数が増減する。
Auto Scalingグループには起動する際に必要なAMIやキーペア、セキュリティグループなどを設定する。
## インスタンスの増減の3つの方法
* EC2インスタンスが停止した場合に切り離して新しいEC2インスタンスを作る
* スケジューリングに基づきスケーリング
* CPUやネットワークの負荷を参照し、閾値を超

元記事を表示

【AWS】 (中級者向け) CodePipelineを使ったECSコンテナのデプロイ自動化 その3(CloudFormationでインフラコード化)

# 概要
CodePipelineでコンテナデプロイを実行するCICD構築をまとめました。
本記事は[【AWS】 (初心者向け) CodePipelineを使ったECSコンテナのデプロイ自動化 その2(CodeCommit, CodeBuild, CodePipeline)](https://qiita.com/ramunauna/items/114ffb3b5532cdb7fd2d)の続きです。
CodePipelineでのECSデプロイ環境をコード化し、CloudFormationで構築します。

# 目次
記事を3つに分割しました。
1. コンテナ構築 / 起動
1-1. Flaskアプリケーションの作成
1-2. ローカル環境でコンテナの作成 / 起動確認
1-3. ECRへイメージをプッシュ
1-4. ECSでコンテナ起動

1. CICDパイプラインの作成
2-1. CodeCommitの作成
2-2. CodeBuildの作成
2-3. CodePipelineの作成

1. 上記のコンテナ / CICDパイプライン

元記事を表示

【AWS】 (初心者向け) CodePipelineを使ったECSコンテナのデプロイ自動化 その2(CodeCommit, CodeBuild, CodePipeline)

# 概要
CodePipelineでコンテナデプロイを実行するCICD構築をまとめました。
本記事は[【AWS】 (初心者向け) CodePipelineを使ったECSコンテナのデプロイ自動化 その1(ECR, ECS Fargate)](https://qiita.com/ramunauna/items/6417925934441b9fdc78)の続きです。

実行されるパイプラインの流れは下記です。
1. CodeCommitにプッシュ
1. 特定のブランチへのプッシュをトリガーにCodePipelineを起動
1. CodeBuildにてビルドを開始
1. ECRリポジトリにイメージをプッシュ
1. ECS Fargateにデプロイ

コンテナはFlaskを実行するコンテナを構築します。
CICDに焦点をあてるため、簡単なソース更新にてデプロイ実行を確認します。

# 目次
記事を3つに分割しました。
1. コンテナ構築 / 起動
1-1. Flaskアプリケーションの作成
1-2. ローカル環境でコンテナの作成 / 起動確認
1-3. ECRへイメージを

元記事を表示

【AWS】 (初心者向け) CodePipelineを使ったECSコンテナのデプロイ自動化 その1(ECR, ECS Fargate)

# 概要
CodePipelineでコンテナデプロイを実行するCICD構築をまとめました。

実行されるパイプラインの流れは下記です。
1. CodeCommitにプッシュ
1. 特定のブランチへのプッシュをトリガーにCodePipelineを起動
1. CodeBuildにてビルドを開始
1. ECRリポジトリにイメージをプッシュ
1. ECS Fargateにデプロイ

コンテナはFlaskを実行するコンテナを構築します。
CICDに焦点をあてるため、簡単なソース更新にてデプロイ実行を確認します。

# 目次
記事を3つに分割しました。
1. コンテナ構築 / 起動
1-1. Flaskアプリケーションの作成
1-2. ローカル環境でコンテナの作成 / 起動確認
1-3. ECRへイメージをプッシュ
1-4. ECSでコンテナ起動 __←本記事はここまで__

1. CICDパイプラインの作成
2-1. CodeCommitの作成
2-2. CodeBuildの作成
2-3. CodePipelineの作成

1. 上記のコン

元記事を表示

AWSで遊ばない時間はNATゲートウェイを削除したい

# 背景
[AWSではじめるインフラ構築入門](https://www.seshop.com/product/detail/23455)を読んでAWSの再入門に励んでいるのですが、
NATゲートウェイのコストは馬鹿になりません。1円2円を求めてポイ活をしている私にとっては耐え難いレベルです。

使っている時間に課金されてしまうのは仕方ないとして、使っていない時間はNATゲートウェイを削除しておきたいものです。
ところがNATゲートウェイはルートテーブルなどの周辺機能にも影響を及ぼしており、手動で削除/起動するのは結構手間です。

そこで**AWS Lambda**を使ってNATゲートウェイの削除/起動を自動化してみます。

# 要件
要件は以下の通りです。
– NATゲートウェイの削除/起動や周辺機能の設定変更を自動化したい。
– 特定の時刻や曜日に自動起動するのではなく、オンデマンドで実行したい。手動でボタンをポチッとするイメージ。

# 前提
Lambda関数のランタイムは「Python 3.9」を選んでいますが、バージョンは大きな問題ではないでしょう。
CloudFormatio

元記事を表示

AnsibleにてGitHubのPrivateリポジトリからgit cloneする方法

# 経緯
・AWSのEC2で作成したサーバーに、railsのアプリケーションをAnsibleでデプロイしたかった。
・アプリケーションを公開したくなかったため、GitHubのリポジトリはPrivateにしていた。
・Ansibleのgit モジュールを使用するも、権限問題でNGとなる。
“`
Permission denied (publickey).
“`

# 概要

大雑把にまとめると、以下①~⑧を実行しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2641225/d3caccc1-bb10-1966-681d-53108b8ceb17.png)

## ①トークンを作成
* GitHubにて、Settings → Developer settings → Personal access tokens にアクセス

* 下記権限でトークンを作成
・repo
・admin:public_key
・user
・admin:gpg_key

## ②

元記事を表示

サーバーのデータをバックアップ「スナップショット」

# スナップショットとは
**スナップショット**(snapshot)とは、ある時点でサーバーのディスク状態を丸ごと保存したファイルやフォルダなどの集合
データやソフトウェアだけでなくOSや設定情報などの全て含む。
スナップショットの用途は、ソフトウェアやOSの更新時に何かあった時にすぐ戻せるようにバックアップとして取ることが多いですが、
自作のAMI(Amazon Machine Image)を使うためにも使われる

AWSではAmazon EBS(Elastic Block Store)ボリュームのデータをスナップショットとして保存できる。
ただ、1度目は丸ごと保存しますが、2度目以降は差分で保存する。
# EBSスナップショット作成の使い方
スナップショットはマネージドコンソールからボリューム単位(ストレージ丸ごと)を選択し作成。
この作成したスナップショットを元にEBSボリュームを作れば、新しいボリュームは元となったボリュームのコピーになる
AMIを作成したい場合はスナップショットから作成する
データライフサイクルマネージャー(Amazon DLM)を使用するとスナップショット

元記事を表示

Elastic Load Balancingとは

# ELBとは
**Elastic Load Balancing**(**ELB**)とは、AWSが提供するロードバランサー。
**ロードバランサー**とは、サーバーに集中するアクセス(トラフィック)を複数のサーバーやネットワークに振り分ける仕組み。
ひとつのサーバーにかかる負荷を分散させるので**負荷分散装置**と言う。
# ELBの種類
* ALB
* NLB
* CLB
の3種類が存在する
## ALB(Application Load Balancer)
HTTPおよびHTTPSに最適なロードバランサー。
OSI参照モデルにおけるアプリケーション層(具体的な通信を提供する層)で動く
要求コマンドなどの命令内容を見て判断するので、宛先のURLのディレクトリ単位で振り分けることもできる
インスタンスとロードバランサーとの通信を暗号化できる
ただし、振り分け先として静的IPアドレスを設定し、そのIPを持つホスト(機器)へ転送はできない
対応プロトコル:HTTP,HTTPS
## NLB(Network Load Balancer)
OSI参照モデルにおけるトランスポート層(送信された

元記事を表示

EC2 Laravel9 で Tailwind CSS を導入

# はじめに
ec2 laravelでTailwind CSSを導入する機会があったため、まとめます。

# 構築済み

下記記事で、EC2でlaravelを構築済み

https://qiita.com/hirai-11/items/ea6cfe997c254375e811

パブリックipでブラウザからアクセスすると、laravelのトップページが表示されます。
![スクリーンショット 2022-08-22 19.10.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/988747/558610e4-eea8-73d1-4e70-ae78378cabd3.png)

# nodeをインストール

npmを使用するため、下記記事を参考にEC2にnodeをインストールします。

https://docs.aws.amazon.com/ja_jp/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html

元記事を表示

SAA取得までの道のり

皆様こんにちは。
今回はSAAの認定を取得したので、それまでの道のりをお話しさせていただきます。

## はじめに
まず、自分がAWSを利用したり学習を始めたのが去年の9月からなので、AWS歴は約1年程度です。
クラウドサービスについてざっくりとした理解はあるものの、それがなんなのか説明しろと言われると口ごもるくらいのレベル感でした。

## 受験
CLFについては学習3ヶ月目で受験して一発合格だったので、そのままの勢いで7ヶ月目にSAA受験しました。
しかしあえなく撃沈。。。

点数についてはあと1~2問合っていれば合格という結果だったのですが、問題の手応えとしては全くわからないものもそこそこあったので、おそらく運によるところが大きかったのだと思います。
(*学習には[通称オレンジ本](https://www.amazon.co.jp/AWS%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-AWS%E8%AA%8D%E5%AE%9A-%E3%82%BD%

元記事を表示

OTHERカテゴリの最新記事