- 1. Amazon Linux2にMySQLをインストールする
- 2. Amazon Linux2で構築するときの初期設定
- 3. Pre-Signed URLでS3に直接ファイルをアップロードする
- 4. フォトクリエイトのチーフエンジニアを退任しました
- 5. 【Terraform】for_each で AWS SSM パラメータストア に パラメータを一括登録する
- 6. AWSソリューションアーキテクト学習方法
- 7. 素人がWebサービスを作る備忘録(実装編)①
- 8. FargateからのEFSマウントを試す
- 9. mithrilとbulmaを使ったSingle Page Application(SPA)開発環境のテンプレ
- 10. クロスアカウントで s3 バケットを非同期コピーするコンテナを定時実行する
- 11. AWS Lambda + API Gatewayで世界へこんにちはする
- 12. NATゲートウェイを使おうとしたら何か勘違いしていた
- 13. 初心者が爆速で理解するAWS Cognitoで認可認証する開発の流れ
- 14. AWS WorkSpaces が使っている IP リスト
- 15. AWS CodeBuild でビルドの成功率が下がったとき
- 16. Github ActionsでAWS Lambda用のコマンドをBuildする
- 17. 個人でAWSのアカウントを作成してみた
- 18. SAML 認証による一時的な認証情報で boto3 を利用する
- 19. AWS初心者の自分でも、RailsアプリをAWS EC2にデプロイ成功できた方法
- 20. AWS CodeStarを試してみる
Amazon Linux2にMySQLをインストールする
こんにちは!zltnです。
Amazon Linux2にMySQLをインストールしたときに行なったことについて紹介します。# 事前準備
Amazon Linux2にはデフォルトでMariaDBがインストールされています。“`
# yum list installed | grep mariadb
mariadb-libs.x86_64 1:5.5.64-1.amzn2 installed
“`ちなみにMySQLはインストールされていません。
“`
# yum list installed | grep mysql“`
MariaDBはMySQLと互換性があるので、どちらもインストールすると競合を起こします。
そのため、MySQLをインストールするためにMariaDBを事前にアンインストールしておきます。“`
# yum remove mariadb-libs
# yum list installed | grep mariadb“`
# MySQLのインストール
MySQLがイ
Amazon Linux2で構築するときの初期設定
初めまして、zltnです。Qiitaデビューしました。
Amazon Linux2を利用してサーバーを構築する機会があったので、行なった初期設定について書きます。# 初期設定
初期設定では以下を行ないました。– timezoneの設定
– localeの設定
– Hostnameの設定
– 時刻同期設定
– サービスの自動起動設定# timezoneの設定
Amazon Linux2を起動時のデフォルトの設定を確認します。
Local timeはUTCになっています。“`
# timedatectl status
Local time: Fri 2020-04-10 01:04:44 UTC
Universal time: Fri 2020-04-10 01:04:44 UTC
RTC time: Fri 2020-04-10 01:04:44
Time zone: n/a (UTC, +0000)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ:
Pre-Signed URLでS3に直接ファイルをアップロードする
# S3にファイルをアップロード
S3にファイルをアップロードするときLambdaやEC2経由にすることが多いかと思いますが、大容量のファイルだとS3に直接アップするほうが効率が良さそうです。
そういった場合はPre-Signed URLを取得して直接S3にファイルをPUTしてやると良さそうです。# Pre-Signed URLの取得
以下のコードでPre-Signed URLが取得できます。“`js:Lambda
const s3 = new AWS.S3()
const params = {
Bucket: ‘<バケット名>‘,
Key: ‘<ファイルパス>‘,
Expires: 100 // 期限(秒)
}async function getPresignedUrl(){
return new Promise((resolve,reject)=>{
s3.getSignedUrl(‘putObject’, params, (err, url) => {
if (err) {
reject(err)
}
フォトクリエイトのチーフエンジニアを退任しました
## はじめに
先日、ツイート[^tweet]しましたが、2020年3月末で、フォトクリエイトさんとの業務委託契約を終了しました。
自動的に、チーフエンジニアも退任ということになりました。過去に、チーフエンジニアになりましたという記事[^chief_engineer]を書いた以上、チーフエンジニアでなくなりましたという記事も必要だろうということで、振り返りしてみようと思います。
## やってきたこと
フォトクリエイトでやってきたことについては、アドベントカレンダーなどに記事を投稿しているので、興味ある方はご覧になってください。– [Symfony2のプロジェクトにひたすら機能テストを書いた話](https://qiita.com/imunew/items/9fc2cdb184d7ffd4682c)
– [リモートワークの業務委託だけどチーフエンジニアになりましたという話(Photocreate Advent Calendar 1日目 )](https://qiita.com/imunew/items/257c943cb92661629b96)
– [ららびゅう座談会を開催しま
【Terraform】for_each で AWS SSM パラメータストア に パラメータを一括登録する
# はじめに
TerraformでAWSの環境構築を行う際に`for_each`を利用して**AWS SSM (System Manager) パラメータストア**にパラメータを一括登録する方法を備忘録として投稿させていただきます。
# terraform
“`hcl:variables.tf
variable “list” {
description = “AWS SSM パラメータストアに登録する名前と値のセット”
type = map(string)
default = {
“DB/HOST ” = “xxxxx”
“DB/USER” = “xxxxx”
“DB/PASSWORD” = “xxxxx”
“DB/DATABASE” = “xxxxx”
}
}
“`“`hcl:main.tf
resource “aws_ssm_parameter” “list” {
for_each = var.listname = “/${each.key}”
value = each.v
AWSソリューションアーキテクト学習方法
#はじめに
本記事は社内でAWSやろうぜ!という空気が生まれたので、
それに伴い作成した学習ガイダンスとして作成しました。
内容は書きすぎず極力シンプルに書いておきます。
※先人様の情報ソースや公式に一杯書いてありますしね。#AWS経験
– 提案、製品比較、自己学習で触った程度。ガッツリは触ってないです。むしろ触りまくりたいお年頃。#試験難易度
– 初学者が初受験合格は難しいかもしれない。
– 開き直って一度落ちて感覚掴む程度がちょうど良いかと。
※一回落ちました。#取得したAWS資格
– AWS 認定ソリューションアーキテクト – アソシエイト
– AWS 認定 SysOps アドミニストレーター – アソシエイト
※次はAWS 認定ソリューションアーキテクト – プロフェッショナルを取得予定。#学習方法
◆ポイント
実環境を可能な限り触ること。※必須ではないですが、イメージはつきやすくなると思います。##基本編
– 概要→詳細→理解の流れで把握すること。
– 次の流れが一番内容を理解しやすいと思う。
* **概要:Blac
素人がWebサービスを作る備忘録(実装編)①
#はじめに
今回は[前準備編](https://qiita.com/bArUsan1Gou/items/28c60172bb840299cea7)、[設計編](https://qiita.com/bArUsan1Gou/items/a8e86bd31a1e141be47e)の続きです。そちらに筆者のスキルレベルやこの記事の目的などが書いてありますので、先にお読みください。#実装にあたって
ここから実装に入っていくわけですが、稚拙な設計となっている為、かなりの回数の手戻り作業が発生することが見込まれます。その辺りもうまくいかなかった理由と改善策をまとめつつまとめていきたいと思います。
そして、実装にあたり個人的にまとめておきたいと思った昨日の追加などは別途記事にしてまとめていきたいと思います。(その方があとで見返すのとかも楽だし、、、)そして差し当たり、
・ユーザー管理機能
・投稿機能
・投稿一覧、投稿詳細機能
・画像ファイルアップロード機能
・ページネーション機能or無限スクロール機能
・DBテーブルのリレーション管理
・単体、統合テストこの辺のrailstu
FargateからのEFSマウントを試す
EFSがFargateで使えるようになったようです。
https://aws.amazon.com/jp/about-aws/whats-new/2020/04/amazon-ecs-aws-fargate-support-amazon-efs-filesystems-generally-available/これはストレージ依存を脱しきれないもろもろのコンテナ化が捗りますね!
というわけで軽く動作確認してみました。
## 試す構成
最小限の手間で、FargateのコンテナからEFSの中身が読めていることを確認します。* Fargateでhttpdコンテナを起動し、web閲覧できるようにしておく
* コンテナはドキュメントルートにEFSをマウントしておく
* 編集確認用にEC2を用意&EFSをマウントしておくこの状態を作った上でEC2からEFS内のファイルを読み書きし、httpdをweb経由で閲覧することでFargateコンテナからEFSが読めることを確認します。
なお、通常Fargateをweb公開する際はALBを経由しますが、ここでは一時的なテスト目的のためコンテナの
mithrilとbulmaを使ったSingle Page Application(SPA)開発環境のテンプレ
# 画面イメージ
![mithril.spa.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/361945/a8eb1e42-6928-1a54-64cf-8ae93cc6b2da.gif)
***
# ご紹介したいこと
– mithrilを使うとページを高速に切り替える事ができます。
– mithrilは、WEBブラウザ上で稼働するクライアントサイドのjavascriptライブラリです。
– mithrilで作ったサービスは、コストの低いS3で24時間/365日提供が可能です。***
# 開発環境について
– 開発サーバーは、Amazon EC2上に作成します。
– vscodeのremote-sshまたはssh上でtmuxとvimを使って開発します。
– 開発サーバーは、お金がかからないよう利用しない時間には停止させます。***
## 仕上がり予定“`bash:tree
├── LICENSE
├── README.md
├── package-lock.json
├── p
クロスアカウントで s3 バケットを非同期コピーするコンテナを定時実行する
# 1. はじめに
* こんな感じで S3 バケットのバックアップを定期的に取りたい。
* バックアップ元の S3 バケットとバックアップ先の S3 バケットを異なるAWSアカウントにしたい。
* バックアップ元の S3 でオブジェクトファイルが削除されても、バックアップ先のオブジェクトファイルでは削除したくない。
* バックアップバッチ用のEC2(常時起動)ではなく、コンテナ(バックアップ処理時間だけ起動)で実行したい。* [S3 の レプリケーション機能](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/replication.html)で実現できるかどうか少し調べてみたけど、次の理由で今回は見送りした。
* バックアップ元の S3 バケットにはすでにオブジェクトが入っている。
* [既存のオブジェクトをレプリケーションする場合は、AWS サポートへ対応を依頼しないといけない。](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/repli
AWS Lambda + API Gatewayで世界へこんにちはする
## はじめに
サーバーレスってなんだろう?
という疑問を解決すべく、ある程度勉強したのちにAWS Lambda + API Gatewayで遊んでました。
その中で、とりあえず Lambd aとAPIGatewayの使い方はなんとなくわかってきたので、基本であるHello Worldwpやってみます!## 手順
###(1)AWS Lambdaで関数を作成「関数を作成」をクリックします
![スクリーンショット 2020-04-09 14.33.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539611/42ed640c-1584-3446-3a7f-3ba886cde11c.png)
「1から作成」を選択します。今回は、関数名を「helloWorld」とします。
![スクリーンショット 2020-04-09 14.05.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539611/6e9a267a
NATゲートウェイを使おうとしたら何か勘違いしていた
プライベートサブネットからインターネットへアクセスする方法としてNATゲートウェイが利用できます。
特殊なAMIを使うことでNATインスタンス(実はEC2インスタンス)をつくる方法もありますが、AmazonではNATゲートウェイの方を推奨しているみたいなのでこちらを紹介します。#構築した検証環境
NATゲートウェイの使い方をあまり調べずに安直に下の図のような構成を作ろうと考えました。![QIITA用1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612635/f1ebfd32-68d3-cbaf-07ec-594f9e6daf48.png)
NATインスタンスではパブリックサブネットに新しくインスタンスを作って設定を変えなきゃいけないのに、NATゲートウェイではプライベートサブネットの0.0.0.0/0のターゲットをNATゲートウェイのIDにするだけでいいんだ。
そんな誤った考えで検証環境を構築し、ping amazon.comを実行しましたが当然帰ってきません。
tracer
初心者が爆速で理解するAWS Cognitoで認可認証する開発の流れ
# はじめに
初めまして、テクロスでAWSを勉強中の学生アルバイトです。
今回はCognitoとその他AWSサービスを用いたアプリ開発の流れみたいなものをようやく理解したので整理して置いておきます。# Cognitoとは
認可、認証を司るAWSサービスです。
**認証を担当するのがUser Pool**、**認可を担当するのがIdentity Pool**です。
[AWS Cognitoの公式ドキュメント](https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/what-is-amazon-cognito.html)
(最初公式ドキュメント見たときは「なんだこの分かりにくいドキュメントは!」とか思ってたけどある程度理解してから読むと「詳しくて助かる」ってなる。公式ドキュメントってそんなもんか)### 認証とは
多分一番わかりやすいのがE-mailアドレスとpasswordでユーザー確認をするものですね。
UserPoolを使いこなすことで、さらにFacebook等のアカウントを使ってユーザー確認する
AWS WorkSpaces が使っている IP リスト
AWS WorkSpace が利用している IP レンジが 2020/4/20 から増える(た)。
Starting on April 20, 2020, Amazon WorkSpaces will use an expanded list of Amazon EC2 public IP address ranges for its PCoIP gateway servers.
## Asia Pacific (Tokyo)
18.180.178.0 – 18.180.178.255
18.180.180.0 – 18.180.181.255
54.250.251.0 – 54.250.251.255## US East (N. Virginia)
3.217.228.0 – 3.217.231.255
52.23.61.0 – 52.23.62.255## US West (Oregon)
44.234.54.0 – 44.234.55.255
54.244.46.0 – 54.244.47.255## Asia Pacific (Seoul)
3.34.37.0
AWS CodeBuild でビルドの成功率が下がったとき
##CodeBuildでビルドするときに、なぜかビルドに成功する確率が低くなりました。
同じコードで成功するときと失敗するときがあり、
失敗する確率が高くなって、時間のロスを感じましたが、対処法を明記します。
とても簡単です。
CodeBuildのビルドは、同時にいくつでも実行可能なので、
ビルド作業を繰り返して、同時に5個~10個くらいビルドすれば、
どれかのビルドは成功します。それでオッケーです。
同時にビルドするとこんな感じです。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531595/b98cc5ee-3285-136f-0a8b-6c7887227775.png)明確な原因が分かる人いたら教えてください。
Github ActionsでAWS Lambda用のコマンドをBuildする
AWS Lambda で Python や Node のスクリプトを書いていると、「あー、この Linux コマンド使えたら便利なのに」と思うときが時々あります。
そういうときに、便利なBuild用Dockerコンテナを先日作成しました。
→ [AWS Lambda で実行できるコマンドを作成する環境を作ってみた](https://qiita.com/qualitia_cdev/items/4aebb1e22be9afab0a16)
今回は、これをgithub actionsにして公開してみたので、その使い方をご紹介します。
https://github.com/marketplace/actions/aws-lambda-build-and-pack
## Buildスクリプトの作成
今回もAWS Lambda上でdigコマンドを動かしてみたいと思います。
### デフォルトのディレクトリ構造
“`
.
|– src
| `– build.sh
|– output
`– .github
`– workflows
`– build.ya
個人でAWSのアカウントを作成してみた
直近の業務で使ったことがあったので、試しにアカウントを作成してみました!
現場ではすでにIAMユーザまでが用意されている状態でしたので、
今回最初からの設定は初めて触るものでしたのでとても厄介でした。なお、IAMの設定(のちに出る安全のためにやること全部やるとこ)まで実施しています。
被害出ているようなので念のため。説明については省略します。
※公式での説明の通り実施したので…感じたことや、注意する点について述べていこうと思います。
ここでは最初のユーザを作るまでですので、
AWSでお金はかかっておりません。#事前に用意すべきもの
・スマートフォン(電話番号が割り振られているもの)
・クレジットカード
・複雑なパスワード3つ(できれば紙媒体で)#アカウントについて
まず初めにここを読みながら登録していきます。
https://aws.amazon.com/jp/register-flow/
※基本全部入力必須と考えてよいです。##AWS アカウントの作成
「AWS アカウント名」はのちにルートユーザ名で使いますので任意の文字列でよいです。
ここで
SAML 認証による一時的な認証情報で boto3 を利用する
弊社では全社員が G Suite のアカウントを持っており、AWS マネジメントコンソールにアクセスする際は Google を Identity Provider として SAML 認証してシングルサインオン [^sso] をしている。この場合、STS の Assume Role という仕組み [^assume_role] を使って一時的な認証情報を入手し、フェデレーションユーザとしてマネジメントコンソールにアクセスすることになる。マネジメントコンソールにアクセスするために社員ごとに IAM ユーザを作成する必要がなくなるため、アカウント管理の手間が削減できる。
[^sso]: [G Suite アカウントを用いた AWS へのシングルサインオン | AWS Startup ブログ](https://aws.amazon.com/jp/blogs/startup/techblog-saml-gsuite/)
[^assume_role]: [IAMロール徹底理解 〜 AssumeRoleの正体 | Developers\.IO](https://dev.classmethod.jp/
AWS初心者の自分でも、RailsアプリをAWS EC2にデプロイ成功できた方法
#はじめに
備忘録も兼ねて、RailsアプリをAWSにデプロイする手順をまとめました。筆者自身、ずっとデプロイをHerokuに頼り切っていたのもあり、そろそろHeroku以外の方法でデプロイをしてみたいなと思い、試みた次第です。
この記事では、非常に解説が丁寧な世界一丁寧なAWS解説シリーズベースにデプロイ作業を進めていき、途中で詰まった箇所をところどころ訂正していきます。概念などの詳しい説明は上記記事を見ていただくのが早いです。なお、この記事では、コマンドは全てMacでの使用を想定しています。ご了承ください。
また、作業の過程で開発環境(local)でのコマンド操作と、EC2インスタンス内でのコマンド操作(remote)に分かれるので、ターミナルを2ウィンドウ用意しておくと捗るかと思います。#1.ざっくりとした流れ
この記事では、AWSのRDSを利用せず、EC2インスタンスにDBのシステムそのものをインストールする方式を採用して
AWS CodeStarを試してみる
# はじめに
あるプロジェクトで初めてLambdaの開発を行った。
Eclipseで開発していたが、AWSと連携するわけでもなく、ローカルでの修正のたびに、AWSにログインして手動で上書きするという流れでやっていた。(非常に非効率的)
CodeStarを活用することで上記が解消されるらしいので試してみる。本資料は大まかに以下を行っています
– CodeStarでのプロジェクトの作成とローカルでの開発準備
– コードを編集し、アプリケーションの自動ビルド、自動デプロイを実行
– ユニットテストを追加して、自動テストを実行# 前提
ルートユーザ、「AWSCodeStarFullAccess」管理ポリシーを持つユーザで実施してください。# プロジェクトの作成
– 「プロジェクトを開始する」を押下
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545707/bb42d1b2-b834-33fd-0b7f-10572bd3ee69.png)– CodeStar用のサービスロールを作