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

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

【AWS】EC2に紐づくEBSボリュームを差し替える

## はじめに
AWS上で構築していたGNS3サーバ(UbuntuOS)の2台目が必要になったので、AMIを取得して複製したところ、インスタンスのステータスチェックが失敗しました。
20201128_EC2のボリューム差し替え_01.PNG
これまでに1,2回しか出会ったことがない事象、たまたまかな?と思いEC2を停止起動したり、AMIを取得しなおして再作成してもダメでした。
色々調べた結果、起動に失敗するEC2のEBSを正常なEC2に紐づけて、/var/log/messages を確認してみることにしました(AWSコンソール上で見ることができるシステムログは確認済み)

## 目次
1. [EC2からEBSをデタッチする](#Chapter1)
1. [問題のあるEBSを正常なEC2にアタッチする](#Chap

元記事を表示

【Tips】TerraformでAPI Gatewayを構築しているときに出る ConflictException の回避手段

# はじめに
Terraform で API Gateway を構築していて、メソッドや統合を多用していると、たまに

“`
Error: error deleting API Gateway Integration Response (xxxx-xxxxxxxxxx-xxxxxx-PUT-500): ConflictException: Unable to complete operation due to concurrent modification. Please try again later.
“`

みたいな感じでエラーが出て悩まされることがある。

これはおそらく、API Gateway を更新する API(Terraform が裏で叩いていると思われるもの)が、並列処理に対応していない(処理を排他している)と考えられる。
Terraform はお利口なので、依存関係のないリソースについてはなるべく並列で処理をして高速化をしてくれる。この仕様が仇になって、排他処理しているところに並列でAPIを叩きんでエラーになっているようだ。

# 対処策
## その1: もう一度

元記事を表示

Cloud9は172.17.0.0/16に気を付けろ!

## 言いたいこと

– Cloud9を使うときはVPCのCIDRに172.17.0.0/16は禁物
– VPCピア接続でも影響あるからね

## Cloud9トラブルシュートから抜粋

10月29日に[AWS Cloud9 のトラブルシューティング](https://docs.aws.amazon.com/ja_jp/cloud9/latest/user-guide/troubleshooting.html)に以下が追記されました。(英語版はもっと前に追記されてました)

>VPC の IP アドレスが Docker で使用されているEC2 環境ため、 に接続できない
>
>問題: EC2 環境の場合、Amazon VPCクラスレスドメイン間ルーティング IPv4 (CIDR) ブロックを使用する (仮想プライベートクラウド) 172.17.0.0/16 で EC2 インスタンスを起動すると、その環境を開いたときに接続が停止することがあります。
>
>原因: Docker では、同じブリッジネットワークに接続されたコンテナが通信できるようにするブリッジネットワークと呼ばれるリンクレイ

元記事を表示

[rails]突然自動デプロイが反映されなくなった

#何が起きたのか

よくわかりませんが、調べたところEC2に問題があった
自動デプロイしてたら突然変更が反映されなくなった

#解決方法

よくわかりませんが突如起こった出来事ですので
とりあえずAWSのマネジメントコンソールにログインしてEC2インスタンスを再起動
再起動後は以下のコマンドでNginxとdbを起動。

“`
$ sudo service nginx start 
$ sudo systemctl restart mariadb

“`

その後 自動デプロイする 完 (勝手にunicornは起動されるであろう )

“`
bundle exec cap production deploy
“`

#補足
###EC2に問題がある場合の確認すべきところ

基本的に以下のどれかがどうにかこうにかなっていることが多い説
( unicorn,db,nginx…)

なのでエラーログみてもよくわからなかったらコマンドでいろいろ確認してみよう

“`
データーベースの状態を確認
sudo systemctl status mariadb
“`

元記事を表示

[AWS][goofys][Docker] バックアップを考える

AWS EC2 上でのバックアップの仕組みを作ったので覚え書き。

バックアップとしては、特定のディレクトリを tar ball にアーカイブできればよいという単純な要件だけど、ちゃんと定時の仕組みにしようとすると面倒くさいものだったりします。

– 固めた tar ball はどこに置くのか?
– バックアップのサイクルは?(日次など)
– 世代管理も必要ですよね?

他に、個人的な要望として、以下のようなものもありました。

– OS へのセットアップはしたくない
– できるだけ docker コンテナで~

ということで、以下の形で構成。

– 格納先は S3 バケットへ
– S3 へのアクセスは goofys マウントで
– goofys マウントを docker コンテナ上で
– バックアップのシェルスクリプトの実行を busybox コンテナ上で
– 世代管理は自前のスクリプトで

すべてコンテナ上で実現したので、いくらかの設定ファイルとスクリプトだけ用意するだけで済みました。
世代管理のスクリプトは自前で面倒ですが、一度作っておくと再利用できて便利です。

通常、OS

元記事を表示

ECSコンテナに接続する方法

#意外と忘れるコンテナ接続
本番環境のコンテナに入ってDB操作したりデバッグしたり…

久しぶりにやろうとしたらど忘れしていたのでこの記事を書くに至りました。

#接続までの手順

– セキュリティーグループの**インバウンドルール**変更
– EC2インスタンスの**Public IP** / **Public DNS**を確認
– “`ssh -i /path/to/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com“`コマンドでECSコンテナにssh接続

#それでは始めます
##インバウンドルールの変更

“`EC2“` > “`セキュリティーグループ“` > “`該当のセキュリティーグループ“` > “`インバウンドルールを編集“`

“`ssh“`タイプの“`ソース“`を「 マイIP 」に変更する

この変更をしていないと後でssh接続したとき以下のエラーが出るため必要な手順です

“`
ssh: connect to host [自分のPublic IP]

元記事を表示

AWS CDK で AWS アカウントのユーザーを一気に100個作る

# はじめに

– AWS CDK を使って一気にAWSアカウントのユーザーを100個 (+adminアカウント3つ) 作るソースを公開[^2]
– TypeScript によるパスワード生成器を実装し、生成器で得られた文字列を 作成したAWS アカウントの初期パスワードとして設定
– 使い道は謎・・・というより自己満足

[^2]: [AWS アカウントに対する最大のユーザー数は5000](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_iam-quotas.html)

# ソース

– [ takanassyi/simple-iam-user-management (GitHub)](https://github.com/takanassyi/simple-iam-user-management)

# 前提条件

– CDK のセットアップが完了していること[^1]

[^1]: [AWS CDK Intro Workshop の Prerequisites](https://cdkworksh

元記事を表示

EC2でSambaを構築してファイル共有を確認する

#はじめに
AWS初心者が、練習目的でEC2を使ってSambaを勉強・構築した際の情報・手順をまとめた物です。
SambaでWindows用ファイルサーバとして構築し、Windowsのクライアントからファイル共有をしてみます。
同じような情報は既にあるので、解説を細かくしすぎず、かつ少し余談を交えた記事にしています。

###目的
– Sambaを構築して、構築・ファイル共有の流れと感覚を掴む。
– さらっとやってみる。
– WindowsServerをリモートで操作してみる。

#構成図
![練習用samba構成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/3e5af24d-9c16-328a-9997-dccd1f8592a3.jpeg)

– EC2 OS:AmazonLinux2  (ファイルサーバー用) ポート:22(SSH)・445(TCP)
※ファイル共有用に445だけ開けていますが、その他の機能を使う場合は対応した他のポートも開ける必要があります。

– EC2 OS:W

元記事を表示

AWS LambdaからPythonを実行してみた

# やったこと
AWSの勉強がてら、「[QiitaマイページからLGTM / View / ストック数の一覧を確認できるようにしてみた](https://qiita.com/koob/items/20881aa910eaa2cad3a9)」で作ったpythonファイルをAWS Lambdaから定期実行できるようにしてみました。
(過去記事ではHerokuで定期実行させていました)

ちょうど同じ時期に[AWS Lambdaでpythonプログラムの定期実行](https://qiita.com/hiiii/items/0f442a2284cfdce7fbcf)という記事が上がっていたので、全体の流れはこちらを参考にさせていただきました。

ところどころ追加で調べた箇所があるので、この記事はそちらをメインにした内容になります。
また例によって、AWSアカウントは作成済みとします。

ちなみに料金の方は
> AWS Lambda の無料利用枠には、1 か月ごとに 100 万件の無料リクエスト、および 40 万 GB-秒のコンピューティング時間が、それぞれ含まれます。

とあるので今回のよう

元記事を表示

【初心者向け】転職にも活用できるAWSの前提知識を解説

「AWSって何するの?」

結論、**インフラ構築**です。

今回はIT業界で多く利用されているAWSについて、初心者向けにわかりやすく解説していこうと思います。

最後まで読んでみて、もし良いなと思ったら、記事を書く励みになるので、ぜひLGTMをお願いします!

## AWSについて
冒頭でもお伝えした通り、AWSとはインフラ構築をクラウド上で行う、非常に便利なツールの一つです。

「インフラ構築って?」
「クラウドって?」

これらを解説していきます。

### インフラ構築について
まずIT業界で言うインフラとは、物理的なコンピュータやサーバー、データベースなどの事を指します。そしてインフラ構築とは、これらの物理的な機器をインターネットに接続し、Webやアプリケーション上での利用ができるような環境を、構築をする事を意味します。

厳密に言えば、もっといろいろあるのですが、ここではAWSについての説明がメインなので割愛します。

### オンプレミスとクラウド
次にクラウドについてですが、その前にオ

元記事を表示

EC2でyum install時に「Another app is currently holding the yum lock;」で実行できない

# 背景
“`yum update -y“`実行時に以下文言が出て、実行できなかった。

“`
$yum update -y
Another app is currently holding the yum lock;
“`

#原因
yum実行中に以下ロックファイルが作成され、残っているため

“`
/var/run/yum.pid
“`

# 対処法
以下コマンドでロックファイルを削除すればOKです。

“`
rm /var/run/yum.pid
“`

# 参考
https://onoredekaiketsu.com/yum-sleeps-and-cant-be-executed/

元記事を表示

AWS SAM CLIをLinux、macOSにインストールする

# AWS SAM CLI

## 準備

※参考:[Installing the AWS SAM CLI on macOS](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install-mac.html)
※参考:[AWS CLIをmacOSにインストールする](https://qiita.com/homelan/items/297d52ac2b1d65c1e769)

1. AWSアカウントを用意する。
1. Administrator権限を持つIAMユーザーを用意する。
1. IAMユーザーのアクセスキー、シークレットアクセスキーを払い出す。
1. credentialsファイル、configファイルを作成する。
1. Dockerをインストールする。
1. Homebrewをインストールする。
1. SAM CLIをインストールする。

## 共通

1. Linux、WSL2、macOSで次のコマンドを実行し、`brew`をイ

元記事を表示

【AWS】用語を整理しながら学ぶAWS – part3

# はじめに

この記事では
AWSのあんなことやこんなことについてまとめた記事です。
ベストプラクティスや間違いがあれば、書き直していく予定です。
今回は
NATゲートウェイの設定
サーバの設定
他、重要な用語について整理してみました。

参考図書:[さわって学ぶクラウドインフラAmazon Web Services 基礎からのネットワーク&サーバー構築](https://www.amazon.co.jp/dp/B084QQ7TCF/ref=cm_sw_r_tw_dp_U_x_-vD5EbQCMD1A9)

——————————–
# NATゲートウェイとは

NetworkAddressTranslation
要はアドレスの読み替えです。

> グローバルアドレスからローカルアドレスへの読み替え
> AWSで例えるとパブリックIPからプライベートIPへの変換
> Ciscoなどでは静的か動的かというところまで分かれるのでここでは割愛

よく、インフラエンジニアのお姉さんに
NAPTのことをNATだと注意されましたが
実際のところ、近年で

元記事を表示

AWS LambdaでAPI開発するときのパターン集

# 結論
AWS LambdaでAPI開発をする場合は以下の4パターンが考えられます。それぞれにメリットデメリットがあるので、要件やメンバーのスキルセットなどをもとに選択することになると思います。

###① Functions(別ソース)パターン
![functions pattern.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234396/a37a57da-4ab4-b301-72d9-ca3b41abfaea.png)

###② Functions(同一ソース)パターン
![functions pattern2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/234396/0f854adb-be5a-a915-2004-4e9c453e331b.png)

###③ WebFrameworkパターン
![proxy integration pattern.png](https://qiita-image-sto

元記事を表示

AWSのIAMユーザーでCostExplorerやBillingにアクセスできないとき

## 困っていたこと
IAMユーザで請求情報にアクセスできない

毎回ルートユーザになって確認

## 問題点
– めんどくさい

アカウント切り替えが本当に手間だった

– セキュリティ的にまずい

ルートユーザ使うのはNG

## 解決策

Googleで検索したところ、3秒で解決。

#### やり方

①ルートユーザでログインし、AWSコンソールから「マイアカウント」に移動

②[IAM ユーザー/ロールによる請求情報へのアクセス] の横の[編集] をクリック

③[IAMアクセス有効化]チェックボックスをオンにし、[保存]をクリック

④IAMユーザで請求情報にアクセス可能に

下記リンク参照
[AWS公式ドキュメント アクセス許可の管理の概要](https://docs.aws.amazon.com/ja_jp/awsaccountbilling/latest/aboutv2/control-access-billing.html)

## まとめ

なんで今までやらなかったんだろう。。。。

元記事を表示

aws cliでs3に再帰的にファイルをアップロードする時の記述

たまにしか使わなくて毎回忘れるのでメモとして残します。

# 再帰的にアップロードする記述
“`bash
aws s3 cp ローカルのディレクトリ名 s3://バケット名/フォルダ名 –recursive
“`

アップロードのときにpublic read付ける場合は`–acl public-read`をつける

“`bash
aws s3 cp ローカルのディレクトリ名 s3://バケット名/フォルダ名 –recursive –acl public-read
“`

# バケットから再帰的にダウンロードする記述
“`bash
aws s3 cp s3://バケット名/フォルダ名 ローカルのディレクトリ名 –recursive
“`

# バケットからバケットへ再帰的にコピーする記述
応用してバケットからバケットへも出来ます。

“`bash
aws s3 cp s3://送信元バケット名/フォルダ名 s3://送信先バケット名/フォルダ名 –recursive
“`

# ついでにファイル数とかの確認
アップロードしたファイルの数があってるか等の確認に使

元記事を表示

Serverless Frameworkを使用して AWS Lambdaにデプロイ

## 環境
* Mac OS Catalina 10.15.7
* AWS Lambda
* Serverless Framework standalone (
* Framework Core: 2.11.1 (standalone)
* Plugin: 4.1.2
* SDK: 2.3.2
* Components: 3.3.0

## Serverless Framework スタンドアロンのインストール
nodeのバージョン依存に関係なく使用するため、npmでのインストールではなくスタンドアロンを使用した
[Get started with Serverless Framework Open Source & AWS](https://www.serverless.com/framework/docs/getting-started/) に記載の通り

“`
curl -o- -L https://slss.io/install | bash
“`

## AWSのクレデンシャルの設定

[AWS – Credentials](https:

元記事を表示

AWS Lambda boto3でCognitoのユーザーを削除する

# はじめに
AWS LambdaでCognitoのユーザーを削除します。
ランタイムは`python`です。
環境変数`COGNITO_MAX_RESULTS`には、`50`を指定します。
ユーザープールの数が50以下である事を想定しています。
Cognitoからユーザーを削除する場合、ループ処理となり、たまにコケることがあるため、リトライ処理を追加しています。

**Lambdaのスクリプト**

“`python:Lambda
import os
import boto3

cognito = boto3.client(‘cognito-idp’, region_name=’ap-northeast-1′)

def handler(event, context):

user_pool_name = ‘ユーザープール名’
user_ids = [‘ユーザーID’]

# Cognitoからユーザーを削除する
response = delCognitoUser(user_pool_name, user_ids)

return respo

元記事を表示

AWS Lambda boto3でWAFのIP setsを更新する

# はじめに
AWS LambdaでWAFのIP setsを更新します。
ランタイムは`python`です。
WAFは`CLOUDFRONT`のものとなるため、AWSリージョンはバージニア北部の`us-east-1`となります。
WAFのIP Setsの更新は、渡したIPアドレスのリストで上書きされるので、登録・更新・削除が同じメソッドとなります。
リスト`ip_adresses`は重複していても問題なく、WAFに登録されます。

**Lambdaのスクリプト**

“`python:Lambda
import boto3

waf = boto3.client(‘wafv2′,region_name=’us-east-1’)

def handler(event, context):

ip_set_name = ‘IP Sets名’
ip_adresses = [‘IPアドレス’]

response = update_ip_addresses(ip_set_name, ip_adresses)

return response

def

元記事を表示

SmallTrainを使って簡単な転移学習を実行

今回は先日オープンソース化したGeek Guild社が提供しているSmallTrainを使って
簡単な転移学習を実行したレビューをします。
(本記事はGeekGuild様より依頼を受けて書いています)

記事作成にあたり公式HPに記載されているチュートリアルを参考にしています。

* [さあ、はじめよう](https://www.smalltrain.org/docs/getting-started/)
* [チュートリアル](https://www.smalltrain.org/docs/tutorials/)

## 作成するモデルの概要
SmallTrainの学習デモを応用して自作の熊の画像認識を行うモデル、熊: 0 , 哺乳類(猫,鹿,犬,馬): 1 , 乗り物(飛行機,車,船,トラック): 2 として認識するモデルを作成します。

## 環境構築
今回はAWSのGPUインスタンス上で実行しています。
方法については以下を参照してください。

* [AWSでGPUインスタンスを使う準備](https://www.smalltrain.org/docs/tutorials/tu

元記事を表示

OTHERカテゴリの最新記事