- 1. Action Textで画像が投稿されない問題を解決した話。
- 2. Active Storageで投稿した画像をS3に入れようとしたら権限関係で詰まった話。
- 3. Gateway Load Balancer とは
- 4. 改善:OpenAPIをS3ホスティングにベーシック認証追加
- 5. 【AWS】インスタンスの購入方式
- 6. AWS Organizationを使った環境別アカウントの作成とスイッチロールの導入
- 7. goofysでAmazon S3をLinuxサーバにマウントする
- 8. AWSを理解する[通信の仕組み編]
- 9. Spring-Bootアプリをパソコンを切ってもEC2上で起動させておく手順(デーモン化)
- 10. 【コピペ】AWS Cloud9でLaravel環境を構築その弐
- 11. GithubActionsでOpenAPIをS3へアップロードしホスティング
- 12. EC2って何ぞや??
- 13. EC2の一覧を必要な情報だけ絞ってS3へ日次保管
- 14. 【AWS CLI】【DynamoDB】パーティションキーの部分一致で項目を絞り込んだ上で出力する方法
- 15. L4 L7ロードバランサーの違いを30秒で
- 16. 【AWS】インスタンスファミリーの種類
- 17. AWS資格取得者がAZ-104: Microsoft Azure Administratorを受験する際の効率的な勉強方法(2021年5月合格)
- 18. AWS Certified Machine Learning – Specialtyを取得するまでにやったこと
- 19. CentOS6.xでAmazon EFSとの通信経路をTLS暗号化した時のメモ
- 20. 【AWS】S3とRoute53についてまとめてみた
Action Textで画像が投稿されない問題を解決した話。
本番環境でActionTextで投稿された画像をAWSのEC2煮上げた画像をS3のバケットの中に保存しておくようにしたのですが、そこで本番環境でS3の方に保存されないというもんだいがおきました。
慌てて検証ツールを見てみるとそこでCROSの処理の問題であるというエラーメッセージが出てきました。
私その時CROSについて全く知らなかったので改めてググって調べてみました。#CROSとはなにか
ブラウザがオリジン(HTMLを読み込んだサーバのこと)以外のサーバからデータを取得する仕組みです。
今回で言うところの、EC2でHTMLLを読み込まれていますが、画像に関してはS3にあるのでS3からHTMLとして画像を持ってくるといったことが必要になってきます。
その時に役に立つのがCROS処理です。##出典
https://dev.classmethod.jp/articles/cors-cross-origin-resource-sharing-cross-domain/#今回の失敗
S3のCROS処理のポリシーを書いておくべき所が空欄だったので、保存ができませんでした。
#解決
Active Storageで投稿した画像をS3に入れようとしたら権限関係で詰まった話。
AWSのS3に投稿された画像を保存できるようにしよとした時にかなり苦戦したのでそのお話をさせていただければと思います。
S3の権限については学習したはずなのにそのことについてすっかり忘れてしまっていたのでそのお話をさせていただければと思います。まず、どうやってアクセス権限を得ることができるのかというと、
1つ目として、
“`
EDITOR=”vi” bin/rails credentials:edit
“`
コマンドを使用してシークレットアクセスキーとアクセスキーを入れて環境変数を有効にするコマンドである“`
source ~/.zshrc
“`コマンドを打って環境変数を有効化します。
2つめは、S3のコンソールに行って
バケットからアクセス許可の項目に行っていただいて、そこにあるバケットポリシーにJSON形式でコードを書いて許可するやり方です。
私は以下のようにしてアクセスを許可しました。それは、
“`
{
“Version”: “2012-10-17”,
“Id”: “Policy1544152951996”,
“Stat
Gateway Load Balancer とは
## 勉強前イメージ
ALB作る時に新しいの見つけた。
なんのやつなんだろう## 調査
### gateway load balancer とは
AWS Gateway Load Balancer 、略して GWLB は
元々サードパーティのセキュリティ製品などをAWSで利用する場合はNLBやVPC Peering、NATして連携したりしていました。
GWLBとGateway Load Balancer Endpoint(GWLBE) を利用することで
スケーラブルで可用性の向上を図ります。下記はロードバランサー作成時の画面です。
新しくGateway Load Balancerが追加されているのが確認できると思います。![1ロードバランサーの作成 _ EC2 Management Console – Google Chro.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/4fba5b43-4bff-b21c-c010-51715178acef.png)
### 構築のイ
改善:OpenAPIをS3ホスティングにベーシック認証追加
# やりたいこと
– [前回の記事](https://qiita.com/icck/items/b3b3d8a24aa2508a5ea2)で未解決だった課題を解決したい
– **Before**
– s3を直接参照している、閲覧制御が出来ていない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216527/6254869a-73a4-a780-79fd-91525016bc7d.png)– **After**
– CloudFront + Lambda@Edge 経由に変更し、ベーシック認証を追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216527/f53af173-2a80-de95-31f6-b05f87179a8d.png)# CloudFrontの設定
– [AWS S3で公開している静的サイトにBasic認証をかける](https://qii
【AWS】インスタンスの購入方式
#プログラミング勉強日記
2021年5月16日#インスタンスの購入方式
インスタンスの購入方式に応じて割引価格が提供されるので、用途に応じて割引価格を利用した方がいい。##オンデマンドインスタンス
通常のインスタンス購入方式で、何も設定しなければオンデマンドインスタンスが起動される。長期契約はなく、コンピューティング性能に対して秒単位や時間単位で料金を支払う。起動・停止・休止・開始・再起動・終了などを自由に制御できる。##リザーブドインスタンス
1年または3年の期間を長期利用する予約する。キャパシティーを予約したうえで事前支払いをするか、後で支払うかを設定することができる。また、特定のAZまたはリージョンで使用するキャパシティーを予約できる2パターンある。割引率はインスタンスの種類や支払い形態に応じて違うが、通常のオンデマンド料金に比べると大幅に割引される。##リザーブドインスタンスの特徴
リザーブドインスタンスにはスタンダードとコンバーティブルという2つのタイプがある。| | スタンダード | コンバーティブル |
|:–:|:–:|:–:|
|
AWS Organizationを使った環境別アカウントの作成とスイッチロールの導入
# AWS Organizationを使ったアカウントの整備とスイッチロールの導入
## したいこと
– 一つのAWSアカウントに本番環境や検証環境のサービスを同居させたくない
– 本番環境、ステージング環境、検証環境等を完全に分離させたい
– 検証環境は開発エンジニアがEC2等インスタンスを作成、削除を許容したいが本番環境はインフラエンジニアだけ許可などの制御がしたい
– 環境ごとにIAM発行する手間をなくしたい
– スイッチロールを使用しIAM1つだけで済むようにしたい## AWS Organizationを使い環境ごとのグループ・アカウントを作成
– グループ・アカウントを環境ごとに作成
– それぞれのアカウントは独立するので検証アカウント内は本番アカウント内のサービスは表示されないので間違ったサーバー変更は起き得ない**アカウントイメージ**
| アカウント | 内容 |
|:———–|:————|
| 支払いアカウント | 頂点に存在、本番、開発、検証の費用をまとめて払う為だけのアカウント |
| 本番ア
goofysでAmazon S3をLinuxサーバにマウントする
##はじめに
goofysを使用してLinuxにAmazon S3をマウントしてみました。s3fsより動作が速いという特徴があるようです。
https://github.com/kahing/goofys#benchmark##環境
・新規構築したAmazon Linux 2を使用
・EC2のIAMロールにS3FullAccessを付与している##設定手順
###1. goofysのインストール
最初にgoとfuseをインストールします。“`
$ sudo yum install -y golang fuse
“`
続いて、goofysをインストールします。
記事投稿時点での最新バージョン(v0.24.0)を使用します。“`
$ sudo wget https://github.com/kahing/goofys/releases/download/v0.24.0/goofys -P /usr/local/bin/
$ sudo chmod 755 /usr/local/bin/goofys
“`###2. マウント
マウントポイントのディレクトリを作
AWSを理解する[通信の仕組み編]
#概要
はじめに、この記事はAWS初学者が備忘録として作成しています。
ですが、私のような初学者のために少しでもなればと思い、公開しています。
不適切や、わかりにくい点を見つけた場合はご指摘頂ければ幸いです。1. [ネットワークを構築する](https://qiita.com/enuii3/items/103c4b9b0db472f36ddb)
2. [webサーバーソフトをインストールする](https://qiita.com/enuii3/items/a68f42563a6331b89db3)
3. [webサーバーにWordPressをインストールする](https://qiita.com/enuii3/items/cfd0053a27ab2ccb052d)
4. [通信の仕組みを理解する](https://qiita.com/enuii3/items/7f1196c28ae740c91482)?今ここ
5. [S3を使って公開する](https://qiita.com/enuii3/items/db930446f334db3ce1da/)#TCP/IPとは
##IPアド
Spring-Bootアプリをパソコンを切ってもEC2上で起動させておく手順(デーモン化)
configurationタグの箇所3行を記入したjarファイルを作ります。これにより後述のsystemd enableとstartが実行可能になります。
“`pom.xml
org.springframework.boot
spring-boot-maven-plugin
true
“`
ここからの手順はHogeをご自身のアプリ名に読み替えて下さい。
“`
sudo vi /etc/systemd/system/Hoge-0.0.1-SNAPSHOT.service“`
vimでUnitを作成します。vimの編集の際には一度aを押してINSERTと表示されてる状態にし下記スク
【コピペ】AWS Cloud9でLaravel環境を構築その弐
前回、Cloud9でLaravel環境を構築した。
[【コピペ】AWS Cloud9でLaravel環境を構築その壱](https://qiita.com/_bobtabo_/items/9fc5a4d35ec1b5bfeaf4)
だけど、MySQLに外部接続できなかったので、設定する。# マシンスペック
* Mac mini 2018
* macOS Catalina(10.15.x)
* Intel Core-i7 3.2GHz 6コア
* メモリ 32GB
* SSD 512GB# Laravel環境
* Nginx 最新版
* PHP(PHP-FPM) 7.2.x
* MySQL 5.7
* Composer 最新版
* Laravel 5.6# やること
* Cloud9のEC2インスタンスのMySQLに外部接続する# 前提
[【コピペ】AWS Cloud9でLaravel環境を構築その壱](https://qiita.com/_bobtabo_/items/9fc5a4d35ec1b5bfeaf4)は構築済み。# EC2インスタンスのMySQLに外部接続
GithubActionsでOpenAPIをS3へアップロードしホスティング
# やりたいこと
1. GithubのmainブランチへOpenAPIの`yaml`をpushするとGithubActions起動
1. `redoc-cli`が動作。`yaml`→`html`を生成
1. s3バケットへ`html`をコピー
1. s3を参照しOpenAPIがブラウザ上から見れるように
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216527/0051006f-ee15-2bef-c3aa-e791693e8175.png)# 構築手順
## s3バケット作成とサイト確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216527/6e5eece8-0e9b-124d-14e5-131cffa7fa73.png)
~~~ bash:CloudShell
# バケット作成
$ aws s3 mb s3://<<バケット名>>
make_bucket: <<バ
EC2って何ぞや??
EC2ってよくわからないので、勉強したことを書いてみた。
## EC2とは
EC2とはAmazon Elastic Computing CloudというAWSのサービスの1種。
ちなみにElasticとは、「伸縮自在な」という意味で、需要に応じて必要な分だけ使えるということ。## EC2の特徴
### 必要な時に必要な数だけ稼働できる
EC2は、インスタンスという仮想サーバーのようなものを起動させて使用することができる。
オンプレミス環境では事前に需要を予測して必要な分のサーバーをずっと稼働させることになるが、需要が少ない時は使わないサーバーを稼働させ続けることになり、無駄なコストがかかってしまう。
しかし、EC2インスタンスは、稼働数が需要に応じて柔軟に変化するため、サーバーの過不足が少なくなる。### インスタンスタイプが変更可能
EC2インスタンスには、インスタンスタイプというものがあり、メモリの最適化、高速コンピューティングといった利用目的や、必要なスペックに合わせて設定する。
インスタンスタイプは,’t2.micro’のように(ファミリー)(世代).(性能)の形式
EC2の一覧を必要な情報だけ絞ってS3へ日次保管
### 実装の方法
LambdaのPython(boto3)を使います。
1日1回実行するトリガーとして、EventBridgeを使います。### 実装できると何がうれしいのか
**1点目**
EC2のdescribe_instances APIは、取得結果が冗長なデータ構造となっていて、Javascriptなどで取り込んだ時にやや扱いにくいです。
特に、`Reservations[*].Instances[*]` の階層の深さと、タグの構造が `[{‘Key’: ‘タグキー名’ }, {‘Value’: ‘タグの値}]` となっている点が冗長でしょうか。
階層を単純な1次元配列(Pythonのリスト)とし、欲しい情報だけに絞ることで、プログラムから扱いやすくなります。**2点目**
AWSのAPI/CLIでは、**”現時点の”**EC2の一覧を取得できますが、**”x月x日時点の”**EC2の一覧を取得したいとなった場合に、急に困ることになります。
1日1回Lambdaを実行して蓄積しておくことで、簡単に調べられるようになります。### IAMロールの作成
IAM
【AWS CLI】【DynamoDB】パーティションキーの部分一致で項目を絞り込んだ上で出力する方法
## はじめに
DynamoDB から CLI で項目を取得する際、通常は[`aws dynamodb query`](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/query.html)を使用するかと思います。
しかし、`aws dynamodb query`でパーティションキーを用いた絞り込みを行う場合、上記のページにあるように完全一致(`=`)しか使用することができません。
そのため、パーティションキーを部分一致で絞り込んだ上で項目を出力したい場合は、代わりに[`aws dynamodb scan`](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/scan.html) を使用する必要があります。
## 結論
例えば、以下のように「`your_partition_key`の値が`foo`から始まる」条件で検索したい場合、
1. command を query から scan に変更
2. `–key-condition-expre
L4 L7ロードバランサーの違いを30秒で
## L7ロードバランサ
HTTP/HTTPSなどのアプリケーション層(urlなど)をみて負荷分散できる。
ロードバランサがapplicationサーバーと通信を行う。
applicationサーバーから見た送信元ipは、ロードバランサのものになる。AWSではALB – Application Load Balancer などで使用される。
## L4ロードバランサ
HTTP/HTTPSなどのアプリケーション層をみて負荷分散できない。
ロードバランサが送信先のipをapplicationサーバーに書き換える。
applicationサーバーから見た送信元ipは、クライアントのものになる。AWSでは、NLB – Network Load Balancer などで使用される。
【AWS】インスタンスファミリーの種類
#プログラミング勉強日記
2021年5月15日
[昨日の記事](https://qiita.com/mzmz__02/items/b8711c388f29dd547166)の続きで、インスタンスファミリーについて詳細に説明する。#インスタンスファミリー
インスタンスの性能を決定するか・どういった目的のインスタンスを決定するかというものはインスタンスファミリーによって決まる。
インスタンスファミリーは以下の5つの種類から選択する。##汎用
バランスが取れたコンピューティングで、様々なものに使うとき、ほかの4つの仕組みでやりたいものがないときなどに使われる一般的なもの。ウェブサーバーやコードレポジトリなど、インスタンスのリソースに同じ割合で使用するアプリに最適なインスタンス。
ファミリー:A1, M5, T3など##コンピューティング最適化
機械学習やハイパフォーマンスコンピューティングなどの高性能なコンピューティングをEC2で実行したいときに使用する。
ファミリー:C5, C6gなど##メモリ最適化
メモリ内の大きなデータセットを処理するワークロードに対して
AWS資格取得者がAZ-104: Microsoft Azure Administratorを受験する際の効率的な勉強方法(2021年5月合格)
「AZ-104: Microsoft Azure Administrator」に合格したので、その勉強方法を記載したいと思います。
#■[AZ-104: Microsoft Azure Administratorとは](https://docs.microsoft.com/ja-jp/learn/certifications/exams/az-104)
Azureの管理者用の資格です。サーバやコンテナの構築・管理、監視やバックアップ方法等、Azueの全般的な内容を包括しており、ほかのAzure資格に派生する中核的な資格のように思います。AZ-900を取得したあとに取得するのが順番的には良いかと思います。公式には以下の証明となることが記載されています。
>この試験の受験者は、Azure のコア サービス、Azure ワークロード、セキュリティ、およびガバナンスについて十分に理解しているとともに、Azure の管理に関する少なくとも 6 か月の実務経験が必要です。さらに、このロールには、PowerShell、Azure CLI、Azure portal、Azure Resource
AWS Certified Machine Learning – Specialtyを取得するまでにやったこと
![aws-certified-machine-learning-specialty.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/58697/e178cbd4-97d5-dfb8-1161-a27442063420.png)
先日(2021/5/11)、AWS Certified Machine Learning – Specialtyを受験して合格したので、それまでに行った勉強方法を紹介します。
# 筆者のスペック
前提条件の私のスペックです。
#### 機械学習の知識
AI系のスタートアップでソフトウェアエンジニアをしています。
しかし、データサイエンティストやMLエンジニアではないので機械学習の用語はある程度知っている程度で、そこまで詳しいわけではないです。最近は主にIoTやWeb周りをやることが多いので、少し機械学習関連の仕事からは遠ざかってました。#### AWSの知識
AWSに関しては今の会社に入社して以来、1年半ぐらい使っています。メジャーサービスはほぼ使っていて、今年の3月ぐ
CentOS6.xでAmazon EFSとの通信経路をTLS暗号化した時のメモ
CentOS6.xでAmazon EFSとの通信経路をTLS暗号化してNFSマウントする機会があったのでその時のメモです。
## 注意
ここで述べている内容は個人のテスト環境でNFSマウントした時の手順であり、実際の商用環境などで性能や動作を保証するものではありません。## 前提
CentOS6.xにstunnelパッケージがインストールされて**いない**こと。
今回stunnelはCentOS6.x標準のパッケージより新しいものをコンパイルして/usr/local/bin/stunnelとしてインストールするため既存のstunnelパッケージがインストールされていると正常に動作しない可能性があります。## 依存パッケージ
amazon-efs-utilsをインストールには以下のパッケージに依存しますが、CentOS6.xで提供されているパッケージはバージョンを満たしていないためamazon-efs-utilsツールを導入することができません。
| パッケージ | 必須バージョン | CentOS6.x |
| ———- | ————–
【AWS】S3とRoute53についてまとめてみた
## S3とは?
Simple Strage Serviceが正式名称であり、Sが3つ並ぶことからS3と呼ばれます。
オブジェクトストレージサービスであり安価で非常に耐久性が高いです。## オブジェクトストレージ(HTTPS接続)とは?
HTTPSのプロトコルで通信するためセキュリティは非常に強固です。
ただEBS(ブロックストレージ=SCSI(スカジー)接続)やEFS(ファイルサーバー=LAN接続)と比べて読み書き速度が遅いです。
ですが、多数の大きなファイルを取り扱うのに向いており、またAPIを使用した開発も簡単です。### S3のイメージ構造
バケットの下にフォルダやデータを設置する。
頂点のフォルダを**バケット**、フォルダーを**プリフィクス**、データを**オブジェクト**という。![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/838372/96c88e04-bd83-b1fa-beb8-0d255cca198c.png)
例えば、バケット名が**sample**