- 0.1. ⇒踏み台 on Azure⇒(VPN)⇒リモートホスト on AWSを実現する設定内容
- 0.2. 【AWS】受講予定の2021年 AWS Summit Online
- 0.3. Githubでのバージョン管理の流れ
- 0.4. [aws-cdk]変数展開をミスった結果スタックが消せなくなった(未解決
- 0.5. AWS CDK + SAMでローカル実行しているLambdaにattachしてデバッグ実行したメモ
- 0.6. AWS MFAの設定手順
- 0.7. Active Directory Connectorってなんだろ?
- 0.8. 【Rails&heroku】MySQLで出来てた「あいまい検索」がPostgreSQLで出来ない場合にやること
- 0.9. Cloud9上へzipをアップロードして、ファイルを解凍して環境構築しなおしてみた
- 1. 実施背景
- 2. 実施
- 2.1. AWS VPC + EC2 でWeb Server・DB Serverを構築する②
- 2.2. Google Cloud Functionsから地域制限をかけたAmazon CloudFrontへアクセスすると拒否される件について
- 2.3. boto3でCloudSearch検索ドメインに複合クエリを実行する
- 2.4. AWSでアプリをデプロイする方法(データベース作成編)
- 2.5. セッションマネージャでRDSに接続
- 2.6. AWSとAzureのサイト間VPNをスクリプトで有効化・無効化する
- 2.7. appsettings.jsonをReleaseやDebugで切り替える
- 2.8. AWS DynamoDBに接続する
- 2.9. Node.jsでAWSのパラメータストアから値を取得する
- 2.10. ポートフォリオのHTTPSの読み込みが遅いのを改善した話
- 2.11. Docker/Kubernetes構成のためのPython開発プロジェクトの雛形
⇒踏み台 on Azure⇒(VPN)⇒リモートホスト on AWSを実現する設定内容
## やりたいこと
Azureにある踏み台サーバとSite-to-Site VPN経由でAWSにあるリモートホストに接続する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481044/59aaa0b1-424c-215a-990f-61de40af4cfa.png)## 設定内容
### Azure
**VNETピアリング**
Azure VNET”10.30.0.0/16″⇒VNET”10.20.0.0/16″のピアリング設定
赤枠の設定でAzure VNET”10.20.0.0/16″のVirtual Network Gatewayを使用するようにする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/481044/b91ba219-7356-338b-057f-8bc3ea8cb7dc.png)
逆方向のAzure VNET”10.30.0.0/16″←VNET”10.20.0.0
【AWS】受講予定の2021年 AWS Summit Online
自分用メモ
# AWS Summit Online
オンラインでお家にいながら**タダ**でAWSに詳しくなれるイベントが今年も開催されるらしいのでさっそく登録しました。https://aws.amazon.com/jp/events/summits/online/japan/
AWSのオンラインカンファレンスはいつも平日ですね。
# Topics
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1203022/b28bef4c-d4b0-4543-f7aa-05fc92557f71.png)AWSの技術者による技術トークは気になりますね。
実際に操作しているところを見るデモも見てみようと思います。# セッション
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1203022/c4bfb33a-d930-dc81-a959-d2cbcfd07733.png)事例セッションが面白そう。
Githubでのバージョン管理の流れ
# Githubでのバージョン管理方法
Githubでバージョン管理をする際の流れについてまとめてみました。
個人の学習記録や開発をする際に確認してみてください。1.ターミナルを開き、管理したい、記録したいディレクトリまで移動
“`
$ cd 管理したいディレクトリ名
“`2.公開鍵と秘密鍵を作成
“`
$ ssh-keygen
“`実行後にパスフレーズの入力を求められますが、全て未入力でEnterキーでOKです。
3.公開鍵の出力
“`
$ cat ~/.ssh/id_rsa.pub
“`このコマンドを打つと内容が表示されるため、コピペする。
4.Githubを開く
– Settingsを選択し、SSH and GPG keysボタンをクリック
– 緑色のボタン、New SSH keyをクリック
– Titleに好きな名前の入力、Keyにコピペした公開鍵を貼り付け
– 入力後、Add SSH Keyを押す。これで公開鍵が登録されます。
5.ターミナルに戻り、Githubと接続する
下記コマンドを実行してください。“`
$ ssh g
[aws-cdk]変数展開をミスった結果スタックが消せなくなった(未解決
CDKでIAMロールを作成しようとした時に犯したミス・・・。
テンプレートリテラル使った変数展開は気をつけなければならない・・・:ghost:やらかした結果、スタックが削除できなくなった・・・。(まだ解決してない:sob:
まだ未解決なので以下は現状・・・
**環境**
– TypeScript
– AWS CDK 1.91.0# やりたかったこと
ロール名にpropsから受け取った値を使いつつスタックのクラス名でも付けてみようかなーと思い
以下のようなコードを書いた、つもりでいました。。。“`js
import * as core from “@aws-cdk/core”;
import * as iam from “@aws-cdk/aws-iam”;export interface SampleProps extends core.StackProps {
readonly hoge: string;
}export class SampleStack extends core.Stack {
constructor(scope: c
AWS CDK + SAMでローカル実行しているLambdaにattachしてデバッグ実行したメモ
## 概要
[前回はローカルでMongoを動かした。](https://qiita.com/hibohiboo/items/15db5256624c7a8e8b8c)
今回はローカルで実行しているlambdaにデバッグ実行を試してみる。
[ソースコード](https://github.com/hibohiboo/develop/tree/3d24d2fa86721ea5f6e18af170b1ee312835f0f6/tutorial/lesson/aws/typescript/projects/cdk_sample)## 環境
* Windows 10
* aws-cdk 1.95.0
* SAM CLI. 1.20.0
* VSCode 1.54.3## やること
* attachしてデバッグ実行
* launch.jsonの自動生成## フォルダ階層
“`yaml
– .vscode
– launch.json # VSCodeのデバッガ設定
– cdk # cdk用の設定フォルダ
– lib
– sa
AWS MFAの設定手順
## 前提
AWSのIAM払い出しが完了し、初めてのログイン## 環境
Windows10## インストールしたもの一覧
– Google Chromeに[Authenticator](https://chrome.google.com/webstore/detail/authenticator/bhghoamapcdpbohphigoooaddinpkbai?hl=ja)
– AWS-CLI(AWSCLIV2.msi)
– python(python-3.9.0-amd64.exe)## MFA有効化までの手順
1. AWSにログインしIAMのページへ
AWS内でIAMで検索しても辿り着ける
1. IAM->ユーザ->`自分のユーザ`に行く
1. 認証情報タブ->コンソールのパスワードで管理をクリック
コンソールへのアクセス:有効化
パスワードの設定:カスタムパスワード
を選択し、新パスワードを入力する
1. Google Chromeに[Authenticator](https://chrome.google.com/webstore/detail/
Active Directory Connectorってなんだろ?
# Active Directory Connectorってなんだろ?
AWSには**Active Directory Connector**というサービスがありますが、どんなサービスなんでしょうか?
ドキュメント等をながめて自分なりに概要をつかんでみました。## ドキュメントの前に
一応超ざっくりADについて勉強しておきましょう
[アクティブディレクトリ (Active Directory)とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典](https://wa3.i-3-i.info/word12420.html)より### アクティブディレクトリ (Active Directory)とは
– Windowsの元締めコンピュータさんによる縄張り制度のこと。
– Windowsのサーバさんに搭載されている、ネットワークにつながっているパソコンとかをまとめて管理するための仕組み
– 元締めコンピュータは、ネットワーク上で好き勝手やってる奴等を統括的に管理するのが使命
– 元締めコンピュータに対する1回の認証で、いろいろなパソコンとやり取りができるよう
【Rails&heroku】MySQLで出来てた「あいまい検索」がPostgreSQLで出来ない場合にやること
AWSでコード完成、いざherokuへデプロイ!・・・したけどエラー。
調べてみると、あいまい検索の部分がおかしいらしい。####【ページ内リンク】
[0.環境](#0環境)
[1.ソースコード](#1ソースコード)
[2.そもそもあいまい検索部分が原因だと分かった経緯](#2そもそもあいまい検索部分が原因だと分かった経緯)
[3.解決策](#3解決策)#0.環境
・AWS
・heroku/7.48.0 linux-x64 node-v12.16.2
・Rails 5.2.4.5
・ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
・MySQL 5.7.31
・PostgreSQL 9.2.24#1.ソースコード
“`rb:Example.rb
@teams = Team.where(“#{key} like ?”, “%#{value}%”)
“`
・いたって普通のあいまい検索。`key`がキー、`value`が値。
【例:`key = “id”`、`value = “(検索用に入力した値)”】
・MyS
Cloud9上へzipをアップロードして、ファイルを解凍して環境構築しなおしてみた
実施背景
「no space left on device」エラーが発生してしまい、ERBボリュームを増やそうとするも、重すぎてターミナルが動かなかったため、新たに環境を作り直すべく、今まで作っていたファイルをzipで移動させようと考えました。
本来であれば、gitからpullする方法が一般的かと思いますが、まだpushしていない資材があったため、今回はzipファイルをダウンロードしたのち、新たに構築したcloud9の環境にアップロードして解凍する手法を取りました。
実施
1.Cloud9環境構築
まず、cloud9上の環境を新たに構築します。
cloud9で環境構築した際の工程は下記に書きました。Railsチュートリアル6.0に沿って、AWSのCloud9上でRailsの開発環境作ってみた
https://qiita.com/GalaxyNeko/items/c9521c57e03f63e14f892.zipファイルをアップロード&解凍
cloud9上にzipファイルをアップロードします。
zupファイルの
AWS VPC + EC2 でWeb Server・DB Serverを構築する②
こんにちは!
TWクライアントチームで、フロントエンドエンジニアをやっていますTKと申します。普段はReact + TypeScriptな環境で、webアプリの開発を行っています。この記事は、前回の記事の続きになります。
https://qiita.com/TK-TW/items/5b13bde40357b0b763ee
前回は、EC2インスタンスを作成しsshで接続するまで行いました。今回は、前回作ったEC2インスタンスにnginxをインストールしWeb Serverとして機能するようにします。
筆者は、AWS初心者かつインフラ初心者ですので、暖かく見守っていただけると幸いです。アドバイスやコメント等もお待ちしております!
#手順
1. nginxインストール・起動
2. index.htmlを配置する#1. nginxインストール・起動
nginxをインストールします。
Amazon Linux 2にnginxをインストールする際には、amazon-linux-extrasからインストールするようです。
下記コマンドをEC2インスタンスの中に入って実行します。(EC
Google Cloud Functionsから地域制限をかけたAmazon CloudFrontへアクセスすると拒否される件について
# はじめに
どうもみなさん、こんにちは。いやー、最近こんな現象が出てきて困ったんすよね。
# 現象
日本リージョン(東京/大阪)にデプロイしたGoogle Cloud Functionsから、日本からの受付のみ許可するように地域制限をかけたAmazon CloudFrontにアクセスをしました。期待はもちろん成功なんですが、、、
![error](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/613908/cb5349ad-0ccd-c350-b71f-d0fdd94b1f90.png)
ジャジャーン!はい、キタコレ、拒否!!、、、きっと仲が良くないん(ry# CloudFrontってどうやって地理を判定しているの?
「[Amazon CloudFrontデベロッパーガイド]」を見ると、サードパーティのGeoIPデータベースを使っていますよってことです。あー、なるほど正確性は「**99.8%**」なのか。
![georestrictions-cloudfront-001.png](https://
boto3でCloudSearch検索ドメインに複合クエリを実行する
https://docs.aws.amazon.com/ja_jp/cloudsearch/latest/developerguide/searching-compound-queries.html
↑をboto3でやってみました。
“`python:cloudsearchdomain.py
import boto3endpoint_url = ‘https://search-todofuken-XXXXXXXXXXXXXXXXXXXXXXXXX.ap-northeast-1.cloudsearch.amazonaws.com’
cloudsearchdomain = boto3.client(
‘cloudsearchdomain’, endpoint_url=endpoint_url)query = “””
(and
prefecture:'{prefecture}’
city:'{city}’
(range
field=zip [{from_zip}, {to_zip}]
)
)
“””.format(prefecture=’宮城
AWSでアプリをデプロイする方法(データベース作成編)
# EC2の初期設定後本番環境でデータベースを作成する手順を紹介します(学習記録):fountain:
ここでは、MySQLから派生した「MariaDB」というデータベースを利用します。Amazon Linux 2を利用している場合、MariaDBは 「yumコマンド」からインストールできます。
“`
# EC2内で実行
[ec2-user@<自身のElasiticIP> ~]$ sudo yum -y install mysql56-server mysql56-devel mysql56 mariadb-server mysql-devel
“`
#### データベースの起動
・systemctlコマンド
systemctlコマンドは、Amazon LinuxやCentOSに含まれているもので、インストールしたソフトウェアの起動を一括して行えるツールです。“`
# データベースを起動
[ec2-user@<自身のElasiticIP> ~]$ sudo systemctl start mariadb# 確認
[ec2-user@<自身のElasiticIP> ~]
セッションマネージャでRDSに接続
案件で別契約のサーバのアプリケーションでDBを参照したいとの要望でためしてみました。
間違い等ありましたら、ご指摘ください!# TODO
別サーバからSSMでトンネリング
↓
PrivateSubnetのEC2からRDSにポートフォワード![ssm_rds.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429019/072ea2f7-d582-bf28-a854-f0f561537e26.png)
# 前提
* macOS v10.15.7
* Terraform v0.13.4
* RDSと接続元EC2(図①)は作成済# 手順
## 1. ローカル
ここでは、PrivateSubnetにトンネリング用EC2(図②)を作成します。
SSHキーを作成して、/www/www.pub
に公開鍵を貼り付けます。※Terraformのコードは一部抜粋になりますので、ご自身の環境に合わせて適宜変更して下さい。
“`tf:/modules/rds/output.tf
o
AWSとAzureのサイト間VPNをスクリプトで有効化・無効化する
# はじめに
AWSとAzureのサイト間VPNを開発で使用しています。
VMは必要なときだけ起動するようにしていますが、VPNについては常に有効な状態にしておくという使い方をしていました。開発が落ち着きVMを停止している時間が多くVPNの課金が目立つようになり、AWSで約3,700円、Azureで約3,000円の合計約6,700円が毎月発生していますので、微々たるものですが使わないときは止めておこうと思い立ち、スクリプトでの制御を行うようにしてみました。
オフィシャルで用意されているAPI(SDK)を叩いているだけなので、特に難しいことをやっている訳ではありませんが、一例としてご紹介します。
# 前提
* AWSとAzureのサイト間VPNを使用している。
* AWSおよびAzureのAPI(SDK)を実行できる状態になっている。
* 各クラウドのVPNやネットワークの設定、SDKを使用してのAPIの実行方法は本記事では省略致します。
* 本記事の内容は、動作を保障するものではありません。同様の方法で制御を行う場合は、環境のバックアップや動作の確認を必ず実施してください。
appsettings.jsonをReleaseやDebugで切り替える
AWSのElastic BeanstalkにASP.NET Core アプリケーションをデプロイする際、appsettings.jsonの切り替えが意外にも困ったのでまとめ。
appsettings.jsonとappsettings.Development.json、その他appsettings.xxxx.jsonなど「実行環境」の選択でappsettingsを切り替えることは簡単だが、ReleaseやDebugなど「ビルド構成」で切り替える機能は.NET Coreのアプリにはない。
いろんな方法があると思うが、csprojにmsbuildのコピーコマンドを手で追記することで、シンプルにビルド後にビルド後のディレクトリ内でappsettings.jsonをappsettings.xxx.jsonで上書きすることができた。“`xml:sample.csproj
AWS DynamoDBに接続する # AWS DynamoDBに接続する
AWS DynamoDBを使用するWebサイトを開発するにあたって、
まずはサイトからDynamoDBに接続するための設定を行う必要がある。
いくつか方法があるようだが、マシンにAWSへの接続情報を持たせる方法についてメモ。ローカルに開発環境を作成するための備忘録。
## AWS認証情報の取得
まずは、AWSに接続するためのアクセスキー(認証情報)を作成し、保存する。1.AWS マネジメントコンソール にサインインし、IAM コンソールを開く。
2.ユーザー→認証情報→アクセスキーの作成をクリック
3.アクセスキーが生成され、表示されるのでコピペするかCSVダウンロードするなりして保存## 認証情報をサーバーに設定する
取得したAWSアクセスキーを、サーバーの環境変数に設定する。
AWS_ACCESS_KEY_ID:<取得したAccess key ID>
AWS_SECRET_ACCESS_KEY:<取得したSecret access key>以上で、Webサーバーへの認証情報の設定は完了!
DynamoDBにつながるように
Node.jsでAWSのパラメータストアから値を取得する
# はじめに
シークレット系の情報をAWSのパラメータストアに格納し,それをNode.jsで呼び出してみました。
この記事はその際の備忘録になります。
誤っている箇所や修正したほうがいい箇所などありましたらコメントいただけますと幸いです。# AWSのパラメータストアとは
**AWS System Manager** の機能の一つ。
パスワードなどのシークレット系の情報をセキュアに保存することができます。公式ページ : [https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-parameter-store.html](https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-parameter-store.html)
# 必要なモジュールのインストール
[**AWS SDK for JavaScript**](https://docs.aws.amazon.co
ポートフォリオのHTTPSの読み込みが遅いのを改善した話
#HTTPS化したらやたらと読み込みが遅い時がある…
HTTPSでサイトにはアクセスできているのに、5回に一回くらい読み込みがされない…なんでだろうか?
##結論から言ってしまうと…
**ロードバランサーの役割をしっかり理解していないのが原因でした。**
##ロードバランサーとは?
ロード(load、負荷)+バランサー(Balancer、平衡を保つためのもの)で、サーバーやネットワークに関連する用語であり、装置の名称です。
この仕組みにより、**Webサイトへのアクセス集中やサーバー故障などの場合でも、アクセス中の利用者に安定したサービス提供を継続可能になります**。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/918117/f93fee75-6948-9897-30c0-092f3a2259bd.png)
まとめるとロードバランサーの役割は大きく2つです。
①パフォーマンスの向上
サーバの追加台数分、クライアントへの対応を処理可能②可用性が向上
特
Docker/Kubernetes構成のためのPython開発プロジェクトの雛形
# はじめに
PythonスクリプトをPipenv環境で開発し、実行するためのコンテナをEKS上で起動するというケースを想定しています。
次のソフトウェアを用います。
– vim(ほかのエディタでも構いません)
– venv
– Pipenv
– Python3.8
– Docker
– Amazon ECR
– Amazon EKS次の事項は扱いません。
– 各構成要素のPros/Cons的な話
– Amazon ECR/EKSのセットアップ(eksctlなどでクラスタを作れるようになっている必要があります)# 構成ファイル
“`text
.
├── Pipenv(Pythonの環境管理)
├── Dockerfile(Pythonスクリプトを動作させるコンテナを定義)
├── deployment.yaml(Kubernetes上でコンテナを動作させるデプロイメント定義)
├── src
│ ├── main.py(開発対象のPythonスクリプト)
“`# Python開発
サンプルスクリプト(./src/main.py)を作成して動作確認します。