- 1. CloudFront => Rails で直結する場合は X-Forwarded-Proto ではなく X-Forwarded-SSL ヘッダを付けると良い
- 2. Elastic BeanstalkにSwagger UIをBitbucket Pipelinesでデプロイする
- 3. AWS VPC Subnet内の未使用IPアドレスをリストアップするPythonスクリプト
- 4. VMware Cloud on AWS環境でストレッチクラスタを作成してみた (#2後編 – 4ホスト構成)
- 5. Draw.ioでAWSの構成図を描く
- 6. DeepRacer 報酬関数 all_wheels_on_track
- 7. make(旧integromat)を使ってLambdaを実行する
- 8. EC2 の Retirement 対応でインスタンスの停止・起動ではなく再起動をしたらハマった
- 9. RedshiftMLでtitanic
- 10. AWS EC2 AmazonLinux2 yarnコマンドを実行できるようにする
- 11. lambdaでセキュリティグループのインバウンドルールを変更する
- 12. 【AWS】EC2内にDockerをインストールする一番簡単な方法!
- 13. SFTPは禁止して、SSHは許可する
- 14. 【個人開発】ドキュメントサイトをVuePressとAWS Amplifyを使って簡単構築!
- 15. 【Github Actions】本番環境だけコンフリクトが起こる
- 16. AWSトラブルシューティング AWS上でコンテナ起動時に「standard_init_linux.go: exec user process caused: exec format error」が発生
- 17. クロスアカウントアクセス環境のAWSをZABBIXで監視する
- 18. 【AWS】ALBに4XX、5XXエラーコードのトラブルシューティングについて
- 19. Ansibleの個人的メモ (Terraform + Ansible)
- 20. あるあるアプリサーバーの各種タイムアウト値まとめ
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
ストレッチクラスタの概要は下図もご参考ください。
> 
Draw.ioでAWSの構成図を描く
# はじめに
AWSの構成図を描く機会があったので、Draw.ioというツールを使って描いてみました。
結構きれいに書けたので、簡単な完成イメージを用いて描き方を紹介します。# 完成イメージ
本記事を読めばこのようなイメージで簡単に構成図が描けるようになります。
# 手順
Draw.io使ったことある方は[2. 描き方](#2-描き方)からどうぞ。## 1. Draw.ioの初期設定
### Draw.ioにアクセス
下記にアクセスします。
https://app.diagrams.net/### 保存先・新規作成/読み込み設定
アクセスすると保存場所を聞かれるので適当に選択します。
本記事ではDeviceを選択します。
車両がトラック内にあるのかトラック外にあるのかを示す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に代替しても同じことができると思います。
## 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にフォーカスしています。
# 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をインストールすることができます。
は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)
実際の環境は下記の様にZABBIXが存在するAWSアカウントと監視対象のAWSアカウントが異なっていることがあります。
この時、Asuume Roleの作成やAWS CLIでAsuume Roleを使用する設定が必要となるため、権限設定周りを中心に記載します。
# IaCツールの使い分け
ひとくちにIaCツールといっても、得意分野が異なるので
– プロビジョニングツール
– 構成管理ツール### プロビジョニングツール
ネットワーク作成やサーバー配置などの***インフラの大まかな区分***の作成・変更が得意。プロビジョニングツールの例
– CloudFormation
– Terraform### 構成管理ツール
ミドルウェアのインストールやLinuxサーバの設定などの***インフラの細かな設定***の作成・変更が得意。構成管理ツールの例
– Chef
– Ansible(仮公開。後ほど追記)
あるあるアプリサーバーの各種タイムアウト値まとめ
## 概要
実務でよく使う AWS のサービスや、サーバーアプリケーションについて、タイムアウトの時間を整理したので、備忘メモ。
## 構成

## シーケンス図
[![alt](http://www.plantuml.com/plantuml/png/bP9FQp8n48Vl-oboV8NNBr2A-0TQ2jA2BVIW8Z4xgy4usIRPgj–ayJiciKUUjemloUJ9zaPMyUDQuwggEahXQmvEZPJ4kZ3BHDXrGjrKpuPVGMgB9pKjPA2EwbnhdavvOgZ0ED9hhOP-hgJUFO1-aKMDP_lpoy-Qavs9nah2dOrOSFHYCvyOFyMyDM0TGCVLQ5C1-HrBfpyvWx2qOoXfgM2oZ5THNZPtMNzPYHvB82N