AWS関連のことを調べてみた2022年03月15日

AWS関連のことを調べてみた2022年03月15日
目次

CloudFront => Rails で直結する場合は X-Forwarded-Proto ではなく X-Forwarded-SSL ヘッダを付けると良い

Rails + AWSで雑にhttps を立てたいと思い

CloudFront(https) => EC2(Railsアプリ/http)

という構成でアプリを作ると、 GET 以外のリクエストを投げるとこんなエラーが出る

“`
HTTP Origin header (https://xxx.cloudfront.net) didn’t match request.base_url (http://xxx.cloudfront.net)
“`

ApplicationController で適当にリクエストヘッダーを出力してあーでもないこーでもないとこねくり回してみたのだが・・・
“`
class ApplicationController < ActionController::Base before_action :env_log private def env_log request.headers.sort.reject { |k, _| k.to_s.include?('.') }.each { |k, v| logger.info "#{k

元記事を表示

Elastic BeanstalkにSwagger UIをBitbucket Pipelinesでデプロイする

物理サーバに置いていたSwagger UIをAWSに移した記録です。
ついでにドキュメントを更新したらBitbucket Pipelinesでデプロイまでやってくれるようにしました。
## Elastic BeanstalkにSwagger UIを置く
### 環境作成
Beanstalkの環境をDockerプラットフォームで作成します。
その他の設定はお好みで。
### docker-compose.ymlの用意
“`yaml:docker-compose.yml
version: “3”
services:
swagger:
image: swaggerapi/swagger-ui
container_name: swagger-ui
volumes:
– ./foo.yml:/usr/share/nginx/html/foo.yml
– ./bar.yml:/usr/share/nginx/html/bar.yml
environment:
URLS: “[{url:\”foo.yml\”,name:\”F

元記事を表示

AWS VPC Subnet内の未使用IPアドレスをリストアップするPythonスクリプト

# やりたいこと

サブネット内で未使用のIPアドレス(IPv4)をリストアップしたい。

社内で「EKS使っていると、セカンダリIPとかでランダムにIP消費されるので、各ENIで使用しているIPを愚直に確認するのはしんどい」という声があり、一発でうまいこと出せる機能がなさそうだったのでスクリプトを書きました。

ちなみに今回の対象は[IP Address Manager ](https://aws.amazon.com/jp/blogs/news/network-address-management-and-auditing-at-scale-with-amazon-vpc-ip-address-manager/)プールから作成していないVPCでした。

# スクリプト

書いたスクリプトはGitHubにあげました

https://github.com/shu85t/aws_describe_unused_ips

使うには以下が必要です
– Python3.8以上
– boto3
– AWSの権限
– ec2:DescribeSubnets
– ec2:Desc

元記事を表示

VMware Cloud on AWS環境でストレッチクラスタを作成してみた (#2後編 – 4ホスト構成)

# 1. はじめに
「[VMware Cloud on AWS](https://www.vmware.com/jp/products/vmc-on-aws.html)」でストレッチクラスタを作成したので、備忘録を前編と後編にまとめます。
後編である本稿は、前編で作成した「2ホスト構成のストレッチクラスタ」をスケールアップする手順、vCenterからみた構成画面をご紹介します。

前編では、ストレッチクラスタの概要、「2ホスト構成のストレッチクラスタ」の作成手順、vCenterからみた構成画面、および2ホスト構成における同時稼働可能な仮想マシン台数の制約についてご紹介しました。

https://qiita.com/sanjushi003/items/90e878528ef3526d5ba4

ストレッチクラスタの概要は下図もご参考ください。
> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/864151/79fb4bc1-7167-7980-49e7-ed2584bc137c.png)

元記事を表示

Draw.ioでAWSの構成図を描く

# はじめに
AWSの構成図を描く機会があったので、Draw.ioというツールを使って描いてみました。
結構きれいに書けたので、簡単な完成イメージを用いて描き方を紹介します。

# 完成イメージ
本記事を読めばこのようなイメージで簡単に構成図が描けるようになります。
![Cursor_と_AWS構成図_drawio_-_diagrams_net.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531728/5af0f44e-523b-30af-f0e4-e56e280e5177.png)

# 手順
Draw.io使ったことある方は[2. 描き方](#2-描き方)からどうぞ。

## 1. Draw.ioの初期設定
### Draw.ioにアクセス
下記にアクセスします。
https://app.diagrams.net/

### 保存先・新規作成/読み込み設定
アクセスすると保存場所を聞かれるので適当に選択します。
本記事ではDeviceを選択します。
![diagrams_net.png](htt

元記事を表示

DeepRacer 報酬関数 all_wheels_on_track

# all_wheels_on_track
[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/deepracer/latest/developerguide/deepracer-reward-function-input.html#reward-function-input-all_wheels_on_track)

車両がトラック内にあるのかトラック外にあるのかを示すBoolean型フラグです。
ホイールが1つでもトラックの外に出るとFalse、全てトラック内にある場合はTrueを返します。

# 実装
デフォルトの報酬関数にトラック内を走行すると報酬が貰えてコースアウトすると貰える報酬が減るように処理を追加しました。

“`
def reward_function(params):

# パラメータ取得
all_wheels_on_track = params[‘all_wheels_on_track’]

reward = 0

#トラックアウトすると報酬減
reward_on_t

元記事を表示

make(旧integromat)を使ってLambdaを実行する

## 1.はじめに
make(旧integromat, 以下本記事ではmakeで記します)からLambdaを呼び出す手順です。
ただそれだけなのですが、makeに関する情報が少なく難儀したので、やったことを書き留めました。

## 2.今回やること
こんな感じのパイプラインを作ってLambdaを実行します。
Slackのチャンネルに投げたメッセージをトリガーにして、OutgoingWebhooksからmakeのWebhooksを呼び出す。
WebhooksはSlackやGmailに代替しても同じことができると思います。

![スクリーンショット 2022-03-14 21.25.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278897/4f82290b-f3e2-c090-332e-6b27ad24e777.png)

## 3.アプリの設定
一般的な手順で各アプリに対して設定を行い、パイプラインを作ります。

### 3-1.Slack
適当なチャンネルを作成する。パブリックとプライベートど

元記事を表示

EC2 の Retirement 対応でインスタンスの停止・起動ではなく再起動をしたらハマった

# 背景

以下のようなメールが届いた。EC2 を動かしているハードウェアの問題で、期日までにインスタンスを停止→起動してほしいとのこと。

> EC2 has detected degradation of the underlying hardware hosting your Amazon EC2 instance (instance-ID: i-xxxxx) associated with your AWS account (AWS Account ID: xxxxx) in the ap-northeast-1 region. Due to this degradation your instance could already be unreachable. We will stop your instance after 2022-03-28 10:00:00 UTC. Please take appropriate action before this time.
>
> (中略)
>
> What do I need to do?
> We recommend t

元記事を表示

RedshiftMLでtitanic

# はじめに
2021年にGAされたRedshiftMLについて触ってみようと思い、皆さん大好きTitanicでやってみました。
参考にしたのは、いつもお世話になっているクラメソさんのブログ「[AWS RedShift MLでSQLを使った機械学習をする](https://dev.classmethod.jp/articles/aws-redshift-ml/)」です。(クラメソさんは別のデータで実施してます)
# 事前準備
### データ取得
Kaggleの[titanicデータページ](https://www.kaggle.com/c/titanic/data)から3つのファイルを取得。
・titanic_train.csv
・titanic_test.csv
・gender_submission.csv

### IAMロール作成&Redshiftクラスタ作成
(IMAロール系は詳しくなく)「AmazonS3FullAccess」、「AmazonSageMakerFullAccess」、「AmazonRedshiftDataFullAccess」を付けたRedshift用ロールを

元記事を表示

AWS EC2 AmazonLinux2 yarnコマンドを実行できるようにする

# 概要

– EC2のAmazonLinux2インスタンスにてyarnコマンドを実行できるようにする方法をまとめる。

# 前提

– 下記の記事を参考に当該のAmazonLinux2インスタンスにてnpmコマンドが実行できる状態になっていること。
– [AWS EC2 nvmを用いてNode.jsをインストールしてnpmコマンドを実行できるようにする](https://qiita.com/miriwo/items/2accf74a33e71d0a0d61)

# 方法

1. EC2インスタンスにssh接続を行い、下記コマンドを実行してyarnをインストールする。

“`terminal
$ npm install –global yarn
“`

1. インストール後に下記コマンドを実行してyarnコマンドが実行できる事を確認する。(command not foundがでなければOK)

“`terminal
$ yarn –version
“`

元記事を表示

lambdaでセキュリティグループのインバウンドルールを変更する

AWSに構築したシステムのセキュリティ設計として、セキュリティグループでインバウンド制限をすることは珍しくないと思います。システムの利用者が増えた・減った場合、セキュリティグループを更新する必要があり、通常はAWSコンソールで変更すれば良いですが、諸事情により非エンジニアがAWSコンソールを使わずに変更できるようにする必要があったので、その方法をメモしておきます。

# はじめに
設定する人がエンジニアではない想定だったので、WEBでセキュリティグループのインバウンドを追加・削除できるようにしました。全体のアーキテクチャは下記のような感じなのですが、この記事ではlambdaにフォーカスしています。

![provDiagram.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1989777/4c9dff3d-0b12-3990-03e8-3c8ee5cfe207.jpeg)

# lambdaでセキュリティグループの追加削除する
lambdaでboto3を使ってセキュリティグループへのIPアドレス追加、削

元記事を表示

【AWS】EC2内にDockerをインストールする一番簡単な方法!

# はじめに
皆さんがEC2内にDockerをインストールしたことがありますでしょうか?
もちろん公式[dockerのドキュメント](https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/)では、Dockerインストールする方法は紹介されており、スクリプトを実行すれば、手軽にインストールことができます。
実はAWSはもっと簡単な方法が提供されていることは皆さんご存知でしょうか?

# 結論
AWS側では非常に簡単なインストール方法が提供されており、
それはSystems Managerが提供しているRun Commandを利用することです!

Run Commandで“AWS-ConfigureDocker“を一発実行すれば、
EC2内にDockerをインストールすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/865613/b9f30a2d-d167-ff5c-f15e-6cb5c39

元記事を表示

SFTPは禁止して、SSHは許可する

## sshd_config編集

以下、CentOS 7 x86_64系が前提になります。

“`
# override default of no subsystems
#以下、コメントアウト
#Subsystem sftp /usr/libexec/openssh/sftp-server
“`

“`
#sshd再起動
systemctl restart sshd
systemctl status sshd
“`

“`
# 今回は、FTPクライアントソフトでSFTPできないことを確認。
# 以下、エラーメッセージ
状態:Using username “Linux User”.
状態:Connected to ”IP or Host”
エラー:FATAL ERROR: Received unexpected end-of-file from SFTP server
エラー:サーバーに接続できません
エラー:FATAL ERROR: Remote side unexpectedly closed network connection
“`

“`
# SSHはできる

元記事を表示

【個人開発】ドキュメントサイトをVuePressとAWS Amplifyを使って簡単構築!

# 概要
今回は個人開発したWebアプリケーションの使い方を説明するためのドキュメントサイトについてご紹介していきます。
簡単に説明すると、GithubとAWS Amplifyを連携させることでVuePressで構築したアプリケーションを自動でビルドして静的なWebサイトとして公開するような仕組みが簡単にできます。

# 利用した技術やサービス
## VuePress
[VuePress](https://vuepress.vuejs.org/)はVue.jsを使って作られており、Markdownの中でVueコンポーネントが使えるように拡張されています。
また、見やすくレスポンシブなドキュメントがMarkdownを書くだけで作成できます。

## AWS Amplify
[AWS Amplify](https://aws.amazon.com/jp/amplify/)は、モバイルアプリケーションやWebアプリケーションを安全に構築するためのプラットホームになります。
Gitベースのワークフローを備えた静的ウェブサイトと単一ページのウェブアプリケーションを、レポジトリと単純に接続するだけ

元記事を表示

【Github Actions】本番環境だけコンフリクトが起こる

# はじめに
某プログラミングスクールで作成した、ポートフォリオを改善しようとした際に躓いたので備忘録。
デプロイのおさらいも書いています。
スクール卒業後で、メンターに質問できずに困っている初学者に参考になれば幸いです。

また間違っているところがあればご教授お願いします。

# 環境
Ruby 2.6.3
Rails 5.2.6
本番環境 Nginx/Puma/Linux2/AWS EC2/MySQL

# エラーの状況
railsアプリをGithub ActionsでCI/CD設定し、デプロイ済み。
修正したい箇所があったので、
topicブランチで修正→developブランチにmerge&push→mainブランチにmerge&pushは問題なく成功している。

が、Github Actionsの画面で確認すると以下のエラーが生じている。

“`
Run echo “$PRIVATE_KEY” > private_key && chmod 600 private_key
Warning: Permanently added ‘***’ (ECDSA) to the li

元記事を表示

AWSトラブルシューティング AWS上でコンテナ起動時に「standard_init_linux.go: exec user process caused: exec format error」が発生

# 現象
* ECSでFargateを用いて自分で用意したコンテナを実行しようとしたところ、以下のエラーが発生しました。
“`
standard_init_linux.go:228: exec user process caused: exec format error
“`

# 原因
* 原因を調査したところ、ビルド環境とAWS Fargateでの実行環境とでCPUアーキテクチャが異なるため、でした。
* 最近、ビルド環境のマシンがM1Macになったため、ビルド環境のCPUアーキテクチャはarm、Fargate側はx86_64という状態。

# 対策
* ホストPC側でDockerビルドする際に、オプションでCPUアーキテクチャを指定する。
“`
docker build –platform linux/amd64 .
“`
*Dockerfile内で定義することもできそうです。
https://matsuand.github.io/docs.docker.jp.onthefly/engine/reference/builder/#from

元記事を表示

クロスアカウントアクセス環境のAWSをZABBIXで監視する

# 背景

下記記事でZABBIXからCloudWatch APIを使用してCloudWatchメトリクスを監視する方法を記載しました。
* [AWSのマネージドサービスをZABBIXで監視する](https://qiita.com/Toru_Kubota/items/fd29eec50875678c49e2)

![AWS-ZABBIX2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/e5bce587-14dc-5e7a-61a6-4ae5196ac4f1.png)

実際の環境は下記の様にZABBIXが存在するAWSアカウントと監視対象のAWSアカウントが異なっていることがあります。
この時、Asuume Roleの作成やAWS CLIでAsuume Roleを使用する設定が必要となるため、権限設定周りを中心に記載します。

![AWS-ZABBIX2-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com

元記事を表示

【AWS】ALBに4XX、5XXエラーコードのトラブルシューティングについて

# はじめに
AWSでALB→EC2への疎通がうまくできなかったら、よく4XXか5XXのエラーコードが返してきた経験があります。
4XX、5XXエラーコードは何を指しているか、またそのエラーコードが返してきた際に、
何を優先してトラブルシューティングするかをまとめていきたいです。

# 4XX、5XXエラーコード
結論から申し上げますと、
**4XXはクライアント側エラー**
**5XXはサーバー側エラー**
になります。

エラーコードの詳細内容は、下記のサイトをご覧いただければと思います。

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

# HTTP 502: Bad gateway
Wikipediaから参考すると、502エラーコードの意味は以下となります。
>502 Bad Gateway
>The server was acting as a gateway or proxy and received an invalid response from the upstream server.[63]

502

元記事を表示

Ansibleの個人的メモ (Terraform + Ansible)

# IaCツールの使い分け
ひとくちにIaCツールといっても、得意分野が異なるので
– プロビジョニングツール
– 構成管理ツール

### プロビジョニングツール
ネットワーク作成やサーバー配置などの***インフラの大まかな区分***の作成・変更が得意。

プロビジョニングツールの例
– CloudFormation
– Terraform

### 構成管理ツール
ミドルウェアのインストールやLinuxサーバの設定などの***インフラの細かな設定***の作成・変更が得意。

構成管理ツールの例
– Chef
– Ansible

(仮公開。後ほど追記)

元記事を表示

あるあるアプリサーバーの各種タイムアウト値まとめ

## 概要

実務でよく使う AWS のサービスや、サーバーアプリケーションについて、タイムアウトの時間を整理したので、備忘メモ。

## 構成

![timeout_infra構成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/529884/9c92a176-3d41-66a4-4ea2-1be3bc9a7d79.jpeg)

## シーケンス図

[![alt](http://www.plantuml.com/plantuml/png/bP9FQp8n48Vl-oboV8NNBr2A-0TQ2jA2BVIW8Z4xgy4usIRPgj–ayJiciKUUjemloUJ9zaPMyUDQuwggEahXQmvEZPJ4kZ3BHDXrGjrKpuPVGMgB9pKjPA2EwbnhdavvOgZ0ED9hhOP-hgJUFO1-aKMDP_lpoy-Qavs9nah2dOrOSFHYCvyOFyMyDM0TGCVLQ5C1-HrBfpyvWx2qOoXfgM2oZ5THNZPtMNzPYHvB82N

元記事を表示

OTHERカテゴリの最新記事