- 1. EC2インスタンスの容量がいっぱいになってしまった原因とストレージ拡張方法
- 2. AWSを使ってアプリケーションを公開する手順(2)EC2インスタンスの作成
- 3. SSMドキュメントからSSMパラメーターストアの値を参照
- 4. [AWS] Private Subnet内のEC2インスタンスにローカルPCのターミナルからSession Managerでアクセスする
- 5. WebページのボタンからAWS MediaLiveを起動させる
- 6. API Endpointのエントリポイント・コードの書き方
- 7. ECS上のコンテナアプリをCircleCIでCI/CDする
- 8. CloudFormation を使ってVPC + サブネット + EC2構成を作る
- 9. AWS Certificate Managerで長時間【検証保留中】となる原因
- 10. CodeBuild で AWS CLI 2 を使う
- 11. DRBDの性能検証(AWS編)
- 12. 通常のCloudFormationテンプレートをServerless Frameworkで読み込んで実行する
- 13. [失敗談] AWSでフリーゲームをやろうとしたけどできませんでした
- 14. クラウドサービスとは?
- 15. AWS RDSへのデータインポート
- 16. AWS EC2 AmazonLinux2 インスタンスの日時を日本に合わせる
- 17. AWS LakeFormationの使い所とサービス設計を理解する
- 18. AWSのARNからアカウントIDを抽出するワンライナー
- 19. AWSEC2でただrails sをするとこうなってしまう!解決策は・・・
- 20. SageMakerでElastic Inferenceを使用してPytorchのモデルをホストする
EC2インスタンスの容量がいっぱいになってしまった原因とストレージ拡張方法
事後報告なので思い出しながら書いていきます。
# なんかおかしい
EC2インスタンス上で、docker上でPython製APIを動かしてたんですが、
頻繁にssh接続が切れたりとおかしな状態が発生してました。
まあ開発環境やしええかと思ってたら、docker立ち上がらなくなってた。
おかしいなと思って、ファイルサイズ確認するとこれ“`
[ec2-user@ip-xxx-xx-xx-xxx ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.0G 60K 2.0G 1% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
/dev/xvda1 7.XG 7.XG 7.XG 96% /
“`やばいね。
“`/var/lib/docker“`のファイルサイズが出かかったので、
どうもdockerのイメージとかコンテナが圧迫してたみたいですね。
いらないものは消しましょう。“`
# コンテナ全
AWSを使ってアプリケーションを公開する手順(2)EC2インスタンスの作成
# はじめに
AWSを使ってアプリケーションを公開する手順を記載していく。
この記事ではEC2インスタンスの作成方法を記載する。# AWSアカウントのリージョンを設定する
リージョンはAWSの物理的なサーバの場所で、世界各地に存在する。
EC2を作成するにあたり、どのリージョンにEC2インスタンスを作成するか指定する必要がある。
今回は「アジアパシフィック(東京)」を選択する。
![01_AWSリージョン設定スクショ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654714/389a8ffa-8b3d-1df2-8fe9-fad292755e49.png)# EC2インスタンスを作成する
画面左上の「サービス」をクリックするとサービスの一覧が表示されるので、
「コンピューティング」の「EC2」をクリックする。
![02_EC2をクリックスクショ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654714/b8
SSMドキュメントからSSMパラメーターストアの値を参照
# やりたかったこと
以前投稿した [SSMドキュメントでCloudFormation Stackを作成してみた](https://qiita.com/nkrk/items/03995b41a024a38bb38e) の続きです。
作成済みのSSMドキュメントを複数アカウントに展開するにあたり、各アカウント用にSSMドキュメントを書き換える手間を減らすために環境固有の情報を外部化することになりました。[AWSのユーザーガイド](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/automation-variables.html) を見ても分かりづらい部分があったので手順をメモしておきます。
# もともとのSSMドキュメントの内容
一時サーバ用EC2インスタンスのCFn Stackを作成することで、自動で起動するためのSSMドキュメントです。
定期的に一時サーバ起動の処理が必要になるため、SSMドキュメント化することで同じ処理を繰り返し実行しやすくしています。以下のSSMドキュメントのyamlフ
[AWS] Private Subnet内のEC2インスタンスにローカルPCのターミナルからSession Managerでアクセスする
# はじめに
EC2インスタンスにアクセスするには、– Public Subnetに配置してsshでアクセスする
– Private Subnetに配置して、Public Subnet内のインスタンスを踏み台にして、そこからsshアクセスするなどがごく普通なアクセス経路ですが、Private Subnet上のEC2インスタンスに、ローカルPCのターミナルから直接アクセスする方法をまとめておきます。
# 準備
## VPC
### ルートテーブル
以下の設定で作成します。– 名前タグ:わかりやすい名称で
– VPC:デフォルトのVPCでOKですInternetGatewayにルーティングしていないことを確認してください。
### サブネット
以下設定で作成します。– 名前タグ:わかりやすい名称で
– VPC:デフォルトのVPCでOKです
– アベイラリティゾーン:指定なし
– IPv4 CIDRブロック:VPCのCIDR内の適当なCIDRを指定ルートテーブルは、上で作成したルートテーブルに関連付けるようにしてください。
### セキュリティグループ
以下設定
WebページのボタンからAWS MediaLiveを起動させる
##はじめに
ライブ配信で利用するAWS MediaLiveの起動・停止は
通常、AWSコンソールやCLIから操作することが多いと思います。ただ、開発者以外の人に操作してもらう場合は、それだとハードルが高いため、
Webページに配置したボタンから起動・停止を操作できるような仕組みを考えてみました。##構成図
S3にHTMLを配置して、CloudFrontで配信します。Web利用者はHTML上に配置されたボタンを押します。
すると、APIが実行され、Lambdaがキックされて、MediaLiveが起動・停止する仕組みになります。
![ScreenShot 2020-08-19 19.56.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277934/0fcc7cbd-7709-7c2c-fb19-6e6f01b1ac67.png)##MediaLive
今回、操作対象とするMediaLiveチャンネルは、1つとします。##IAM
Lambda用のIAM Roleを作成しておきます。
API Endpointのエントリポイント・コードの書き方
API Gatewayとかから飛んできたリクエストをLambdaでいい感じに処理する、よくあるバックエンドコード
この辺のいい感じの記述を模索してて最近こんな感じになっています。## 最近の自分の書き方
“`js
/**
* フォーマットに関してはこいつに任せる。
*/
const run = async(event, hoehoe) => {
// どでかいtry-catchで例外をアプリ内に封じ込める
try {
// 悩むけどこの辺の情報はこっちでいいかな
const name = event.pathParameters.name;// 処理は極力別クラスに任せる
const service = new Service(hoehoe);
const pet =service.getPet(name);// 仕様と対応するので正常系の出口は一箇所
return getSuccessResponse({
color: pet.color.value,
size: pet.si
ECS上のコンテナアプリをCircleCIでCI/CDする
# この記事について
イケてる開発をするためにはCI/CDは欠かせません。
特にAWSを使って本番環境を作っている場合、デプロイ操作をいちいちWebコンソールでぽちぽちしながら行うのは結構面倒です。そのため今回は、ECSを使ったコンテナアプリを、CircleCIを使ってCI/CDパイプラインにのせるための手順、主にCircleCIの設定周りについて詳しく解説します。
## 使用する環境・バージョン
macOS Mojave 10.14.5## 前提条件
GitHub, CircleCI, AWSのアカウントは取得済みの状態から始めます。## 読者に要求する前提知識
– ECSへの手動デプロイが問題なくできること、およびECS用語(タスク・サービス等)の理解
– gitの基本的な操作(add, commit, push, リモートリポジトリとの連携)
– CircleCIでのプロジェクト作成(GitHubリポジトリとの連携)ができる
– IAMユーザーの作成ができる# 構築するCI/CDパイプライン
![スクリーンショット 2020-08-19 23.56.23.png
CloudFormation を使ってVPC + サブネット + EC2構成を作る
SysOps のWeb問題集を解いていたら、やたらとCloudFormation の問題が出てきました。
「これは実際にさわってみたほうがよさそうだな」と感じたので、やってみました:raised_hands:「CloudFormation ってなんなの」という方は以下をご覧ください。
概要をつかむきっかけになれば、とてもうれしいです。
[【AWS】CloudFormation についてざっくりまとめる:学習メモ](https://note.com/kanade256/n/nbeb4a8ef3a4c)# この構成をつくるぞ
![aws-cfn.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/08938d52-db14-54d3-f243-e415bc8cd8ac.png)今回は諸事情(※)によりオハイオリージョンで作成します。
みなさま適宜お好きなリージョンでやってみてください。
※自社のsandbox環境で東京リージョンに作成しようとしたら、VPCの上限数に達していて作れなかった
AWS Certificate Managerで長時間【検証保留中】となる原因
AWS Route 53でドメインを購入した。その後、AWS Certificate Manager(ACM)で証明書を発行しようとしたら、ACM側で1日以上検証保留中(pending)となってしまった。
本来なら数分から30分程度で成功するという記事も見たので、これは何かがおかしいと思い原因を調べた。
# 原因
##
ドメインのネームサーバーと、ホストゾーンのネームサーバーが異なっていた。## 詳細
私はRoute 53が自動で作ったホストゾーンを削除し、新しくホストゾーンを手動で作り直してしまった。
ホストゾーンを作り直した際、レコード(タイプ:NS)に示されたネームサーバーと、ドメインに登録されたネームサーバーが異なっていた。これが原因だった。
私はTerraformで証明書を管理しようとして、ホストゾーンを何度も作り直していたので、このような事態に陥った。
# 解決方法
Route 53のコンソールに移動する。
左のメニューから「ホストゾーン」をクリック。該当のホストゾーンを選択し、そのレコード(NS)を見て、ネームサーバーを全てコピーする。
左のメニ
CodeBuild で AWS CLI 2 を使う
## はじめに
CodeBuild で使用できる AWS CLI のバージョンはデフォルトでは `1` です。
そのため、 `–output yaml` 等の一部のオプションが使用できません。
そこで、CodeBuild で AWS CLI のバージョンを `2` にアップデートする方法を調べました。## 概要
[Installing the AWS CLI version 2 on Linux](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html#cliv2-linux-upgrade) に則り `AWS CLI version 2` にアップデートするだけです。
“`buildspec.yml
version: 0.2phases:
install:
commands:
– curl “https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip” -o “awscliv2.zip”
DRBDの性能検証(AWS編)
# 1.はじめに
オンプレでのHAクラスタをクラウド上で実現する際、単純には共有ディスク構成を作ることができません(2020.8)。一応、AWSではマルチアタッチを使用して複数インスタンスにEBSを割当てたり、Azureでも同様な機能は提供されてはいますが、制約もあるためそのまま共有ディスクの変わりというわけにはいかないようです。
※上記AWS/Azureいずれの機能も(アベイラビリティ)ゾーンを跨いだ構成は組めません。– [Amazon EBSのマルチアタッチ機能とAzure Shared Disksを比較してみる](https://qiita.com/hayao_k/items/b978cd26622536000a6a)
– [EBS Multi-Attachの使いどころを考えてみた](https://dev.classmethod.jp/articles/ebs-multi-attach-usecase-thought/)通常のCloudFormationテンプレートをServerless Frameworkで読み込んで実行する
# きっかけ
AWS での Linux 踏み台ホスト作るときに、クイックスタートのテンプレートがあるのですが
できればServerless Frameworkで叩ける様にしたいと思ったけど
そのまま読み込めないのかなと探したら、素晴らしいプラグインあるじゃないですか!というこで記事に残しておく[AWS での Linux 踏み台ホスト – クイックスタート](https://aws.amazon.com/jp/quickstart/architecture/linux-bastion/)
[このクイックスタートのソースコードを見る](https://github.com/aws-quickstart/quickstart-linux-bastion)
# Serverless Plugin Nested Stacks
https://www.serverless.com/plugins/serverless-plugin-nested-stacksネストされたスタックを通常のcloudformationとして記述し、それらをサーバーレスフレームワークと簡単に統合します。
#
[失敗談] AWSでフリーゲームをやろうとしたけどできませんでした
## やりたかったこと
フリーゲームが大好きなのですが。
Macにしたため、Windowsのゲームができず辛かった。
なので、AWS のEC2サービスを使ったwindowsサーバーでゲームしたいと思った。## やったこと
AWSで t2.microというのが1年間無料枠で使えそうだったので選択。
「AWSでWindowsを立ち上げRDPで作業する方法(2018年版)」(https://qiita.com/peace098beat/items/0850a942e5843823b1bb)
を参考にさせていただき、windwosにリモート接続。t2.micro はCPU 1GBで不安でしたが、ストレージ自体は10GBくらいは行けるので、フリーゲームをやる分には容量は大丈夫だと思いました。
## ブラウザでつまづく
接続先のwindowsにはIEがあり、google choromeにデフォルトを変更しようとするが、IEがブロックしまくる設定になっている。
「googleサイトが危険です!」みたいなアラートがでまくる⇨安全サイトだよとaddしまくっていく。
Google Chromeダ
クラウドサービスとは?
##クラウドサービスは「どこ?」が分からないサービス
クラウドという言葉を耳にすると、多くの人が**「クラウド=雲」**を想像します。実は、この「雲」のイメージが先立ってしまい、クラウドの理解を妨げていることが多いようです。ここではまず一旦「雲」のことは忘れ、例えとして「ピザの宅配」を取り上げて、話をしてみます。宅配ピザを注文するとき、大体の方は、自宅の郵便受けに入っていたピザ屋さんのチラシを見て、電話で注文します。30分もすると、バイクに乗ったピザ屋さんが箱入りのピザを届けてくれます。
ここにはちょっとした不思議があります。多くの人は、ピザが自宅に届けられるまで、ピザ屋さんを見ることがありません。自分が電話したピザ屋さんがどこにあるのか?どんな場所でピザが焼かれているのか?そういったことが分からないまま注文しています。
クラウドサービスは、このような、「どこにあるのか?」「どんな場所で作られているのか?」「どこの人が作業をしているのか?」が分からないけれども利用できるサービスのひとつです。私たちは「どこ?」が分からなくても、多くの商品やサービスを利用しています。
##クラ
AWS RDSへのデータインポート
今回は、前回作成したAWS上のRDSにCSVデータのインポートを行った際の手順を以下に記載します。
## 前提
・前回作成したEC2インスタンスとRDSが起動されていること
・RDBにインポートしたいCSVファイルを作成されていること(**※文字コードはUTF8であること**)## CSVファイルをEC2に転送
① 前回作成したEC2インスタンスのパブリックIPアドレスをコピーしておきます。
![EC2インスタンス](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691277/dadd6b6e-3783-af52-9b2c-beb977298b1b.png)
② 次に、rLoginで接続情報の設定を行い、EC2に接続します。(ここでは、rLoginを使用していますが、Tera Term等の他のターミナルソフトでも構いません。)
![rLoginサーバ設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691277/5323e84f-
AWS EC2 AmazonLinux2 インスタンスの日時を日本に合わせる
# 目的
– AWS EC2 AmazonLinux2のインスタンスにて日時設定を日本に設定する方法をまとめる
# 実施環境
– ハードウェア環境(ssh接続元)
| 項目 | 情報 |
| — | — |
| 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 |– EC2インスタンス環境(ssh接続先)
| 項目 | 情報 | 備考 |
| — | — | — |
| インスタンス種類 | AmazonLinux2 | こちらの方法で構築→[AWS EC2 をMacで使ってみよう!](https://qiita.com/miriwo/items/a1ab84c098008e43d0
AWS LakeFormationの使い所とサービス設計を理解する
# なぜこの記事を書くのか
AWS re:Invent 2018 で歓声とともに発表されたAWS LakeFormationですが、約1年半経っても有効活用がされているという話をあまり聞きません。私は根本的にはLakeFormationの「サービス設計がよくない」ことが原因だと思いますが、そもそも情報が少なすぎることも要因の1つだと思います。(最近発売された書籍「[AWSではじめるデータレイク](https://www.amazon.co.jp/dp/491031301X)」もLakeFormationの説明は少ないです。)そのため、使い方・機能を、それぞれマクロ・ミクロの視点から少し整理してみようと思います。結果的にまとまりのよくない記事になってしまいましたが、利用判断の一助になれば幸いです。– なお本記事では以下の機能については触れません。
– 他社データカタログ機能との比較
– Blueprints機能
– GlueやIAMの互換性まわり
– 運用設計まずはマクロな視点から説明します。
# LakeFormationを利用したほうがいいケース
– 利
AWSのARNからアカウントIDを抽出するワンライナー
## 概要
AWSのARNを基に正規表現を使用してアカウントIDを抽出します。
ググっても見つからない&なんだかんだ使う場面が多いのでメモ## スクリプト
“`shell
echo| sed -e ‘s/^.*::\([0-9]*\).*$/\1/’
“`## 実行結果
“`shell
$ echo “arn:aws:iam::123456789012:role/one-liner-role” | sed -e ‘s/^.*::\([0-9]*\).*$/\1/’
123456789012
“`
AWSEC2でただrails sをするとこうなってしまう!解決策は・・・
“`ruby:ターミナル
[ec2-user@ip-172-31-38-149 fleamarket_sample_80d]$ rails s
Usage:
rails new APP_PATH [options]Options:
[–skip-namespace], [–no-skip-namespace] # Skip namespace (affects only isolated applications)
-r, [–ruby=PATH] # Path to the Ruby binary of your choice
# Default: /home/ec2-user/.rbenv/versions/2.6.5/bin/ruby
-m, [–template=TEMPLATE]
SageMakerでElastic Inferenceを使用してPytorchのモデルをホストする
# はじめに
記事「[Amazon Elastic Inference を使用して Amazon SageMaker で PyTorch モデルの ML 推論コストを削減する](https://aws.amazon.com/jp/blogs/news/reduce-ml-inference-costs-on-amazon-sagemaker-for-pytorch-models-using-amazon-elastic-inference/)」をもとにSageMakerでElastic Inferenceを使用してPytorchのモデルをホストしようとしたらハマったので、手順を解説します。
### Amazon Elastic Inferenceとは
GPUメモリが小さいGPUをEC2やECSタスクにアタッチすることで、機械学習の推論のホストを効率的にするサービスです。トレーニング時は必要だったメモリは、推論のホスト時はそこまで必要でないケースがほとんどです。GPUメモリは2GB, 4GB, 8GBと小さい代わりに、[コストを削減](https://aws.amazon.com/j