AWS関連のことを調べてみた2021年02月12日

AWS関連のことを調べてみた2021年02月12日
目次

AWSクラウドプラクティショナー試験対策 AWSクラウドの概念編

# はじめに
 この分野は「AWS認定クラウドプラクティショナー」という書籍によると、本試験の26%を占めるらしいです。つまりここを覚えるだけで知識0から26点は取れるという訳ですね。



# クラウドの概念とメリット

【クラウドとは】
 クラウドとは、「インターネット経由で他のコンピュータを使えるよ」ということです。その際に利用した分だけ支払うもの(従量課金制という)であるというのが特徴として1つ挙げられます。

【オンプレミスとは】
 自分たちで買うサーバーのことです。(厳密にはそうではありませんが、ここではそういうことにします)。OSのインストールやら、サーバーを保管する場所の管理やらで手間がかかります。

【AWSクラウドを使うメリット】
1.サーバー費用が、固定費ではなく変動費になる
 自社でサーバーを買った場合、サーバーを設置する場所や、サーバーそのものは「固定費」として支払わなければなりません。しかし、AWSを使用すれば、厳重に管理されたサーバーを使わせてもらうだけなので、それらの費

元記事を表示

Dodkerコマンドのエラー: docker-compose up ができない(またはAWSのAmazon ECRからイメージをプルできない)

## Dockerが起動できない
こんな感じのエラーが出て、Dockerを起動できなくなりました。

“`bash
work_space $ docker-compose up -d

Traceback (most recent call last):
File “site-packages/urllib3/connectionpool.py”, line 677, in urlopen
File “http/client.py”, line 1252, in request
File “http/client.py”, line 966, in send
File “site-packages/docker/transport/unixconn.py”, line 43, in connect
ConnectionRefusedError: [Errno 61] Connection refused

During handling of the above exception, another exception occurred:

(〜中略〜)

docke

元記事を表示

マルチAZでCronクラスタを構築する(サンプルコードあり)

# 概要
シングルEC2で動いているCronバッチサーバを冗長化したいが、サーバーレス化する時間がない・・・
そんな時に既存のアプリ資産やCron資産を流用できるよう、EC2でマルチAZ Cronクラスタを構築したという話です。

# 環境
マルチAZ EC2(2台)
Linux(CentOS6,7かAmazonLinux,AmazonLinux2を想定)

# Cronのクラスタ機能
最近のCron(cronie)には実はアクティブ-スタンバイクラスタを実現するための機能が備わっています。
今回はその機能を使います。
ですがこれはあくまで、2台あるサーバのどっちでCronを動かすか、という判断をするための機能があるだけで、

– ハートビート通信
– フェールオーバ制御
– クラスタ仮想IP

といったHAクラスタに付きまとう種々の機能は無いので、このへんを作っていきます。
ただ、年1くらいで発生するAZ障害を考慮すると、普通のHAクラスタと異なり、ハートビート通信が途切れることを前提に考える必要があります。なので基本EC2間の通信に依存した判定は行わず、それぞれが独立して動く必要が

元記事を表示

[AWS][IAM][AssumeRole] マルチアカウントにおけるユーザ管理を考える

AWS コンソールへのログイン管理を整理した(している)ので、覚え書き。
書いているのは以下の範囲。

– AWS コンソールへのログイン管理
– 複数の AWS アカウント(マルチアカウント)を集約

要件はこんな感じ。
(アカウント数は少ないけど、今後増えたときに展開しやすいようにしたい)

– 踏台アカウント方式を利用
– AWS コンソールへのログインは MFA 認証を有効化
– 設定を Terraform でコード化

記事が長くなるので、方針検討編と実装編を分けることにしました。

実装編はこちら (予定)

## 方式検討

マルチアカウントなユーザ管理にはいくつか方式があって、次の記事で分かりやすく整理されています。

AWSのマルチアカウント管理ことはじめ ログインの一元化の設計

– 外部 ID プロバイダ連携
– AWS Organizations + AWS SSO
– 踏台アカウント ★採用

今回は AWS Organizations が利用できないケースな

元記事を表示

JMeter +JSR223 Sampler(Java)でCognito認証を通してみた

#記事について
JMeter + JSR223 Sampler(Java)でCognito認証を通す処理を行った際の備忘録的なもの

JMeterでAWS SDK for Javaを呼び出して処理をすると行った記事がなかなかなかったので、今後の自分や同じような箇所で躓いた人のために書き残しておこうと思い記事にした。

# 必要になった経緯
JMeterでAPIのパフォーマンステストを実施してするためにログイン + その後のAPI実行の処理のシナリオを設定していた。
ログインの認証処理の箇所にCognitoが使用されており、APIを実行するためにCognitoの認証を行いIDトークンを取得する必要があった。
テスト当初はaws-cliで認証処理を実装していたシェルスクリプトを`OS Process Sampler`で呼び出していたが、ちょっと強い負荷を与えるために1,000スレッドに増やして実行したところ、IDトークンの取得処理に30秒以上かかったり本体のメモリが不足したり(一応16GB積んでいるマシン)でテストにならなかった。マシンがメモリ不足となりフリーズしてしまい、電源を強制終了し

元記事を表示

Cloud9 の Git visual source control integration を試してみた

# はじめに
Cloud9 はお手軽に統合開発環境を用意できて素晴らしい。
でもやっぱり、ローカルで VS Code 立ち上げたりした方がプラグインが充実していて良い感じだったりする。
とは言え、Cloud9 で開発せざるを得ない状況というのも発生するわけで、使い方をちゃんと知っておくと強力な武器になることは間違いない。

そんな中、2021/2/10 に [Git visual source control integration というのがローンチされた](https://aws.amazon.com/about-aws/whats-new/2021/02/aws-cloud9-launches-visual-source-control-integration-for-git/)らしいので、これは試してみなければなるまい!

# Git visual source control integration って何だ?
要は、VS Code の Source Control と同じだ。
Cloud9 の以下のボタンで参照できる、リポジトリの状態確認ができる機能だ。

![キャプチャ1

元記事を表示

【AWS】EC2でExpressアプリケーションを動かす

# はじめに
趣味でAWSを触ってみようと思いその時調べたことを一通りまとめておこうと思います

# 環境
### AWS側

| 種類 | バージョン |
|:–:|:–:|
| Linux/UNIX | Amazon Linux 2 AMI |
| Git | 2.23.3 |
| nvm | 0.37.2 |
| Node | 14.15.5 |
– nvm(Node Version Manager) ・・・ Nodeのバージョンを手軽に変更できるもの

### ローカル
| 種類 | バージョン |
|:–:|:–:|
| Windows | Pro |
| Tera Term | 4.97 |

# インスタンスの作成
今回はAmazon Linux 2を選択します
![ap-northeast-1.console.aws.amazon.com_ec2_v2_home_region=ap-northeast-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310163/86954f6

元記事を表示

【AWS初心者向け】パブリック/プライベートサブネットを持つ基本的なネットワーク構成を構築してみる

#やりたいこと
以下構成図に示されるネットワークを作成する。
![qiita0211_2_route.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684883/ded6858b-7f3e-045f-b179-d5ef786db9f4.png)

・パブリックサブネットとプライベートサブネットを持つVPCを作成する。
・パブリックサブネットに踏み台サーバー、NAT gatewayを設置する。
・プライベートサブネットのEC2インスタンスには踏み台サーバ経由のみアクセス可能にする。

#作成開始
##流れ
1.VPC作成
2.internet gateway作成
3.サブネット作成
4.EC2インスタンス作成
5.NAT gateway作成
6.ルートテーブル作成

###1.VPC作成
VPCのコンソール画面を開き、左側のナビゲーションペインからVPCを選択する。
※VPCウィザードを使用することでサブネットなども一度に作成可能だが、今回は勉強のため一つずつ手動で作成する。
![image.png](h

元記事を表示

[AWS]boto3でEIPを変更する(取得→関連付け→開放まで)

boto3を使用してEIPを変更する(取得→関連付け→開放まで)方法です。

[公式ドキュメント](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/ec2-example-elastic-ip-addresses.html)

## インスタンスIDで指定
“`python
import boto3
from botocore.exceptions import ClientError

ec2 = boto3.client(‘ec2’)
try:
filters = [
{‘Name’: ‘instance-id’, ‘Values’: [‘i-xxxxxxxxxxxxxx’]}
] #EC2のインスタンスIDでフィルターする
addresses = ec2.describe_addresses(Filters=filters)
address_list = addresses[“Addresses”]
address = address_list[0] if

元記事を表示

AWS AmplifyとIonicでさくっと認証画面を作成する

## はじめに

AWS AmplifyとIonic(Angular)を組み合わせて簡単に認証画面を作成します。

## AWS Apmlifyとは

AWSのサービスと連携したWebアプリ・モバイルアプリを構築するためのサービスです。
> [https://aws.amazon.com/jp/amplify/](https://aws.amazon.com/jp/amplify/)

## Ionic Frameworkとは

>Ionic Frameworkは、Webテクノロジー(HTML、CSS、JavaScript)を使って、高性能かつ高品質なモバイルとデスクトップアプリケーションをつくるためのオープンソースのUIフレームワークです。
>
>Ionic Frameworkは、フロントエンドにおけるUXと、アプリケーションにおけるUIインタラクション(操作性、インタラクション、ジェスチャー、アニメーション)に特化しています。学びやすく、Angularをはじめとしたライブラリ・フレームワークと一緒に使うことができます。また、フレームワークなしで簡単なJavaScriptのコードだけ

元記事を表示

Bubble用のAPIを AWSで Lambda と API Gateway を使って作成する

# 概要
– Bubble の API Connector から呼び出す先のAPIを作成する
– サンプルとして、名前と回数を受け取り、挨拶を返すAPIを作成する
– Bubbleからのパラメタは`queryStringParameters`に入る
– AWSを使う
– Lambdaを使うと、サーバのことを考えずにコードを実行できる
– API Gatewayを使うと、APIの構築、デプロイ、管理ができる。URLを割り当ててくれる。
– (本番運用の際はセキュリティを考慮する)

# Lambda関数の作成(Python)

## 関数の作成
– Lambdaの画面を開く
– 「関数の作成」ー「一から作成」
– 以下で作成
– 名前: greeting
– ランタイム: Python 3.8

![image01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/142577/d849335d-ed83-61ed-bf64-e021e0aee439.png)

元記事を表示

【AWS】スナップショットが削除できない

備忘録
リージョン変更の時に作ったスナップショットが削除できないという事象が発生してしまった為、その解決方法について以下に記載しました。

リージョン変更についてはこちら↓
https://qiita.com/yvichrou211/items/c85aacdc45ea1811387b

### これから流れ
1.スナップショット削除で出たエラー文を見る
2.AMIとは
3.AMIの登録解除
4.スナップショットの削除
5.スナップショットについて

## 概要
スナップショットはAWSの課金対象だという事で、削除を試みる。

## 1.スナップショット削除で出たエラー文を見る
EC2左側のメニュー Elastic Block Store のスナップショットをクリック
不要になったスナップショットを削除しようと、スナップショットの アクション -> 削除をクリック
スナップショットを削除してもいいですかと、表示になり「はい、削除する」をクリックしても
スナップショット削除中のエラーが出る。

エラー文をよく見ると
 is currently in use by ami-”AMI名”  

元記事を表示

Amazon ECRからローカル環境にコンテナイメージをPullする方法 メモ

* ステージング環境などにデプロイ中のイメージを使ってローカル環境でアプリの動作確認したいケースがあったため、備忘録として手順をメモする。

## 手順

### 前提条件

* AWS CLI及びdockerはインストール済みであるものとする。
* ECRへアクセス可能なIAMユーザーからアクセスキー/シークレットを払い出し、`aws configure`コマンドで事前に認証情報をセットしておくこと。

### 1. ECRログイン用パスワードを取得し、dockerログインする。

“`sh
aws ecr get-login-password –region ${your_region} | docker login –username AWS –password-stdin ${your_aws_account_id}.dkr.ecr.${your_region}.amazonaws.com
“`

* `aws ecr get-login-password`でログイン用パスワードを取得する。
* dockerコマンドの`–password-stdin` オプショ

元記事を表示

【初心者】AWS AutoScalingについて(ハンズオン①:起動テンプレートの作成)

#はじめに

**AWS AutoScaling**・・EC2を処理負荷に合わせて、増やしたり減らしたりすることができる便利なサービス
[公式サイト](https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html”AWS AutoScaling”)

設定するときにはあらかじめ、**起動テンプレート**(何を)**オートスケーリンググループ**(どこで)**スケーリングポリシー**(どんな状態の時に)を設定します。

#具体例

スーパーでのレジ待ちを想像してみましょう。

![レジ画像(1人).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/9d8b07fa-7e36-1eca-a4d3-e5da15db9273.png)

今は店員さん1人に対して、お客さん1人なので問題なく対応することができます。
しかししばらくすると…

![レジ画像(3人).

元記事を表示

S3 SELECTでCloudTrail証跡オブジェクトを検索してみる

S3 SELECTを使ってCloudTrailの証跡オブジェクト(JSONでS3に吐かれる)をクエリーする必要に迫られたが、意外にサンプルがなかったのでまとめておく。

### やりたいこと
– CloudTrailのファイルの中身をサクッと見たい。
– ダウンロードはしたくない。Athenaを準備するほどでもない。

### S3 SELECTの入出力設定
|カテゴリー|項目|値
|:—|:—|:—|
|入力設定|フォーマット|JSON|
||JSONコンテンツタイプ|行|
||圧縮|GZIP|
|出力設定|フォーマット|JSON|

### サンプルクエリー

“`sql:300行取得

SELECT * FROM s3object s LIMIT 300
“`

“`sql:指定したイベント情報を取得
SELECT s.eventTime, s.sourceIPAddress, s.userIdentity.arn, s.awsRegion, s.eventName, s.eventSource, s.eventType,s.eventCategory, s.e

元記事を表示

CloudFront でオリジンに Authorization ヘッダを送る設定をしようと思うとエラーが出て設定できない

# 経緯

CloudFront のバックにあるオリジンサーバーに対して `Authorization` ヘッダを送信する設定をしたい。 しかし、この設定を実施しようと Origin Request Policy の `Header: whitelist` とした後、Authorization を指定すると “The parameter Headers contains Authorization that is not allowed” というエラーになる。

![SnapCrab_NoName_2021-2-11_2-45-40_No-00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502582/48bbe840-6536-40ed-27c0-df7aa673c855.png)

なお、これを CloudFormation でやると “Invalid Parameter” としか出てこないので原因の特定にものすごい時間がかかった。

# 対処方法

一応、公式でも説明されている。

http

元記事を表示

【IAMロール】なぜCloud9は他のAWSサービスにアクセスできるのか?

#疑問に思ったこと
Organizationsの管理アカウントのCloud9から、CLIでメンバーアカウントの作成を試みました。
やりたかったメンバーアカウントの作成は無事完了したのですが、その時こんな疑問がわいてきました。

「なぜ、Cloud9はメンバーアカウントを作成できるの?」

コンソールを操作していたIAMユーザーはadmin権限を持つものでした。
が、Cloud9から何らかのリソース作成を試みる場合、肝心なのはIAMユーザーの権限ではなくCloud9の権限だと思います。
理屈を理解したいと思い、ちょっと調べてみました。

#確認内容
元々持ってた知識に触れ、そこから実際に確認した内容を見ていきます。
##前提知識
大まかに以下の認識は持っていました。
・IAMユーザーは私達人間がAWSの操作を行うために存在するもの。
 →IAMユーザーには、IAMポリシーをアタッチしたIAMグループに所属させることでアクセス権限を与える。
・IAMロールはAWSサービスなどがAWSの操作を行うために存在するもの。
 →AWSサービスには、IAMポリシーをアタッチしたIAMロールを付与する

元記事を表示

aws s3 cp –recursiveとsyncだとcpのほうを使ったほうがいいっぽい

Dockerコンテナ内でs3からsyncオプションでファイルをダウンロードしていたが、よくわからないけど途中でこける。
s3 cp –recursiveに変えたら通った。

元記事を表示

AWS EC2インスタンスとは?

# インスタンスとは?

インスタンスとはオンプレミス環境の上のサーバーに相当する。
インスタンスには様々なOSやタイプの選択が可能。

# インスタンスとして利用できるOS種類一覧

・Amazon Linux
・CentOS
・RedHat Enterprise Linux
・Ubuntu Server
・Fedora
・Debian
・Gentoo Linux
・FreeBSD
・Windows Server

# EBS-Backedインスタンス
OSを含むルートデバイス情報をEBSに格納したインスタンス。
AWSで**推奨**されている。
EC2インスタンス稼働中の変更はEBSに記録されるため、**インスタンスが停止しても変更内容は保持される。**

#インスタンス料金

インスタンスタイプに応じた時間毎料金に起動時間を乗じた従量課金制
例えばt2.microc($0.0152 /1 時間)を20日使用の場合

**$0.0152 /1 時間× 24時間 × 20日 = $7.296**

となる。

元記事を表示

Route53を使って、色々なルーティングを試してみた。

#はじめに
Route53はAWSのDNS(Domain Name System)サービスです。
DNSとはドメイン(例:google.co.jp)とIPアドレス(例:172.217.161.35)を紐づけてくれるシステムのことです。

Route53には様々なルーティングポリシーがあります(以下表参照)。

|ルーティングポリシーの種類|簡単な説明|
|:–|:–|
|シンプルルーティング|単一のリソースに対してルーティングを行う|
|加重ルーティング|複数のリソースに対して、指定した比率でルーティングを行う|
|位置情報ルーティング|ユーザーの位置に基づいて、リージョンを選択してルーティングを行う|
|レイテンシールーティング|一番応答時間が短いリージョンのルーティングを行う。|
|複数値回答ルーティング|複数のリソースに対して、ランダムにルーティングを行う(最大8つのレコードを使用することができる)|
|フェイルオーバールーティング|プライマリとセカンダリにルーティングを分けて、プライマリのヘルスチェックに失敗すると、セカンダリにルーティングを行う。|

本記事では、上記の中

元記事を表示

OTHERカテゴリの最新記事