- 1. はじめに
- 2. インスタンスタイプについて
- 2.2.11. [AWS] Amazon Linux に Apache(2.4系) + PHP(7.4系) + phpMyAdmin(5.2系) をインストール
- 2.2.12. 単一ファイルLambdaのデプロイ用PowerShell
- 2.2.13. AWSのデータベースについて学び直した話
- 2.2.14. PythonでMariaDBに接続
- 2.2.15. step functions Mapを使用して動的に並列処理してみた
- 2.2.16. AWS Cloud9でMariaDBを使用する方法
- 2.2.17. TerraformでIAMユーザーを作成する際にKeybaseを使わずGPG鍵をファイル(Gitリポジトリ)で管理するようにしたのでそのメモ
- 2.2.18. EC2の暗号化について②
- 2.2.19. ACMで「*.*.example.com」のような2階層サブドメインのワイルドカードSSL証明書を作りたかった
- 2.2.20. AWSのエンコードされたエラーメッセージをデコードして読みやすくするメモ
Error: Reference to undeclared input variable
netwrok.ftを作成して、terraform planを実行しました。
以下のエラーが発生。
変数定義ができていないことが原因“`
Error: Reference to undeclared input variable
on network.tf line 12, in resource “aws_vpc” “vpc”:
12: Name = “${var.project}-${var.environment}-vpc”
““terraform.tfvars ファイルが存在し値が設定されているか確認した。
問題ない。main.tfファイルでの変数の定義を確認。
変数の名前がタイプミスでした。
修正して再度、terraform planを実行。
正常を確認。
SageMaker Studio で他人の App を削除させない
# 概要
前回「[特定の IAM ユーザにだけ SageMaker Studio のユーザを使えるようにする](https://qiita.com/harusamet/items/f09a1d471f1d394269aa)」からの続きで SageMaker Studio を使う IAM ユーザの権限についてです。
AmazonSageMakerFullAccess 権限があると SageMaker Studio の他のユーザの App を消すことができます。App は Jupyter ノートブックの Docker image のようなものなので、再度ノートブックを起動すれば App は戻ってきますが、途中の実行結果などメモリにあった情報は消えてしまいます。App が多すぎて消したい場合に、誤って他人の App を消してしまわないよう、DeleteApp を自ユーザの App に対してのみ実行できるようにします。
削除画面(deleteと入力して Deleteボタンポチーであっさり消えます)
![Amazon_SageMaker_-__Private_Browsing_2.jpg]
リザーブドキャパシティ とは
## 勉強前イメージ
キャパシティを先に予約しておく感じ?
インスタンスではなく。## 調査
### リザーブドキャパシティ とは
DynamoDBのスループットの容量に対して発生するコストで、
3年間の契約と引き換えに最大76%の節約ができます。### 購入方法
– DynamoDBへ移動
DynamoDBのリザーブドキャパシティへ移動し、
キャパシティの購入を行います。![1DynamoDB · AWS Console – Google Chrome 2021-08-20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/4690b2f0-6614-fa35-615c-802d20686e66.png)
– キャパシティタイプ
予約するキャパシティタイプの選択を行います。
書き込みユニットと読み込みユニットの2つ選択できます。![2DynamoDB · AWS Console – Google Chrome 2021-08-20.png](https://q
AWS構成図を作成し、サーバー周りについて初心者なりにまとめてみました・・・。
AWS構成図
今回AWS構成図というものを作ってみました。
ポートフォリオをデプロイしてみたものの、正直何をやってるのか・・・・
「私は今一体何を立ち上げているのか・・・」状態だったので、
基本を勉強しつつ、以下の表が何なのかわかるように、
まとめていきたいと思います。
サーバー周りはとても難しく感じます。:fearful:![スクリーンショット 2021-08-20 17.05.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/0ef6c701-e78f-0dce-3d60-eb9aa5bd5adc.png)
まずは基礎知識の確認
サーバーについて
:fist:サーバーって何?
→
サービスを提供するコンピュータのこと:fist:WEBアプリケーションで必要になるサーバーは?
→
WEBサーバー、APサーバー、DBサーバー:fist:WEBサーバーって何?
→
WEBクライアントのリクエストを受け取り、静的コン
【AWS】EC2 で Windows サーバーを立て Mac からリモートデスクトップで操作する
# はじめに
AWS で Windows サーバーを立て、Mac で RDP(リモートデスクトッププロトコル) で Windows の EC2 に接続する手順を記す。# 1. MicroSoft Remote Desktop をインストールする。
MicroSoft Remote Desktopは Mac のアプリ。
AppStore からインストールできる。下記からインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1890211/cecb1e0b-cbb8-ac32-e7ba-e1fe3b50a394.png)
# 2. AWS で EC2 を起動する
VPC ・ サブネット の設定などは普通に Linux の EC2 を起動し Web サーバーを立てるような時と同じ。`EC2 > インスタンスの起動` よりEC2の起動画面に移動する。
### AMI は Windows を選択する。
無料利用枠の対象のAMIでよい。![image.png](http
terraformで二段階認証を使用する
# 目的
– terraform実行時、任意のロールに権限委譲したうえで、任意のユーザのMFAで生成されたワンタイムキーを要求させる# 前提
– [Authenticator](https://chrome.google.com/webstore/detail/authenticator/bhghoamapcdpbohphigoooaddinpkbai?hl=ja)を使用して2段階認証コードを生成している# 環境
– terraform“`bash
$ terraform version
Terraform v1.0.5
on darwin_amd64
“`– MacOS
“`bash
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.7
BuildVersion: 19H2
“`
– awscli“`bash
$ aws –version
aws-cli/2.1.38 Python/3.8.8 Darwin/19.6.0 exe/x86_64 prompt/off
“`# 方法
– t
Elastic BeanstalkにTypescript+Expressのアプリをデプロイ
AWS Elastic Beanstalk(以下EB)を使ってNode.jsアプリをデプロイしようとしてつまづいたので、備忘録として残しておく。
# アプリケーションの概要
* Typescript+Expressで書かれたNode.jsアプリケーション。
* ローカルでは`ts-node`を使って起動している。# デプロイしようとして失敗
[EBのドキュメント](https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_nodejs.container.html)には
> Procfile を指定しない場合、package.json ファイルを指定すると Elastic Beanstalk は npm start を実行します。これを指定しない場合、Elastic Beanstalk は app.js または server.js をこの順序で探し、実行します。
と記載されていたので、特に何もしなくても`npm start`が実行されて、`ts-node`でサーバが起動すると思って
【AWS SAM CLI】GoからRubyへの移行
# はじめに
AWS SAM CLIでランタイムにGoを使っているプロジェクトがありましたが、プロジェクトを作った人は退職してしまいました。
私含め、他のメンバーはRubyでの開発が主であり、Goの知識が薄い状態です。
そこで、GoからRubyに書き直してメンテナンスしやすくした時にやった事をまとめました。# 環境
* SAM CLI, version 1.27.2
* ランタイム, go1.x => Ruby2.7# 1. Rubyプロジェクトの初期化
`sam init`コマンドを使って新規のRubyプロジェクトを立ち上げました。
ディレクトリ構成は下記のようにしました。“`text
sam_cli
|
|– sam-app-go # Goで書かれたプロジェクト(既存)
|
|– sam-app-ruby # Rubyで書かれたプロジェクト(新規)
“`以下は対話型でruby2.7のランタイムを指定して作成している例です。
“`bash
Which template source would you like to use?
1 – A
特定の IAM ユーザにだけ SageMaker Studio のユーザを使えるようにする
# 概要
AmazonSageMakerFullAccess を与えられた IAM ユーザは、SageMaker Studio の画面を開くと、Studio の全ユーザプロファイルを見てアクセスすることができます。これを特定のIAMユーザにしか開けないようにします。
例えば、IAMユーザ A には、Studio のユーザプロファイル X のみにアクセスを許可し、他のユーザプロファイル Y, Z にはアクセスを許可しないというものです。
# IAM ユーザを準備します
**ユーザを操作できる管理者権限でログインしておきましょう。**
ひとまず AmazonSageMakerFullAccess を与えたIAMユーザを作成して、SageMaker に関しては、ある程度何でもできるユーザにしておきます。
まず IAM のユーザ画面にアクセスして、右上のボタンからユーザ追加
![スクリーンショット_2021-08-20_15_49_09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/279199/
EC2のインスタンスタイプについて
はじめに
今まで意識してこなかったEC2のインスタンスタイプの種類や特徴、インスタンスタイプの選び方についてまとめてみた。
インスタンスタイプについて
そもそも
インスタンスタイプとはユースケースごとに選択できるCPUやメモリなどの組み合わせのこと。
EC2インスタンスはCPUやメモリ、ストレージの組み合わせなどによってさまざまなタイプがあり、現在のインスタンスタイプは約300ほどもある。ネーミングポリシー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1881328/1de6eeda-76fe-698b-55a2-edbdc57d98c6.png)
- インスタンスファミリー
インスタンスタイプを用途別に分類したもの。
グループとしては大きく「汎用」「コンピューティング最適化」「メモリー最適化」「Accelerated Computing」「ストレージ最適化」に分かれる。- イ
[AWS] Amazon Linux に Apache(2.4系) + PHP(7.4系) + phpMyAdmin(5.2系) をインストール
**■ 前提条件**
EC2インスタンス(Amazon Linux)、RDSインスタンス(Mysql)が起動状態であること##Apacheのインストールと設定
“`
・Apacheインストール
$sudo yum install -y httpd・Apache起動
$sudo systemctl start httpd・自動起動設定
$sudo systemctl enable httpd・自動起動になっているか確認
$sudo systemctl is-enabled httpd
→ “enable”が返ってくればOK・apacheのVer確認
$httpd -v
→ Server version: Apache/2.4.48 ()・apache に ec2-user グループを追加
$sudo gpasswd -a apache ec2-user
→ Adding user apache to group ec2-user・ec2-userグループに追加されたことを確認
$id apache・ドキュメントルートを変更
(※htmlというデ
単一ファイルLambdaのデプロイ用PowerShell
# 背景
Lambdaのデプロイって関連するオブジェクトがある場合や複数ファイルで構成されている場合は、
SAMとかserverlessを使うのが、メリットを多く受けられますが、
単一ファイルのシンプルなLambdaの場合は設定ファイルを書くほうが手を取られてしまいますよね# 対応方法
Lambdaのデプロイって、zipファイルを作ってAWSにアップロードすれば良いので、スクリプト書いたほうが早いと思い書いてみました“`powershell:upload.ps1
if((Test-Path app.zip) -eq “True”){
Remove-Item app.zip
}
Compress-Archive -Path .\app.py -DestinationPath app.zip
aws lambda update-function-code –function-name [Lambda名] –zip-file fileb://app.zip –profile [AWSプロファイル名]
“`# 所感
やっている内容はシンプルなので、処理の説明は不要か
AWSのデータベースについて学び直した話
##背景
MySQLについての基礎を学習した後、AWSでのデータベース機能について知りたくなり、本を買って読んでみた。
あくまで学習の補助メモ機能として記載しているので、文が整っていない場合もある。ご了承いただきたい。###読んだ本
[AWS認定 データベース・専門知識](https://booklive.jp/product/index/title_id/971824/vol_no/001)###読んだ章
今回読んだのは3章。NoSQLについて記載されていた章だった。
MySQLについての基礎は概ね理解してきたが、NoSQLのしかもAWSサービスについて知らないことが多すぎるので、読みながら学習し直した。##はじめまして、NoSQL
この章は大きく分けて2つのサービスについて説明が書いてある。
1つ目はDynamoDBについて、もう一つはDocumentDBについてである。###DynamoDBとは?
一言で言うと、AWSが提供するフルマネージド型のNoSQLサービスのこと。
特徴としては、**低レイテンシーである**こと、また**マルチリージョンに対応**しているこ
PythonでMariaDBに接続
#概要
AWS Cloud9にて、Pythonでデータ収集し、MariaDBにデータ保存しておくためのスクリプトを作成しました。—
#依存関係
環境の条件となります。
>- Python – one of the following:
– CPython >= 3.6
– Latest PyPy 3
– MySQL Server – one of the following:
– MySQL >= 5.6
– MariaDB >= 10.0—
#モジュールをインストール
“`shell
$ pip install PyMySQL
Defaulting to user installation because normal site-packages is not writeable
Collecting PyMySQL
Downloading PyMySQL-1.0.2-py3-none-any.whl (43 kB)
|████████████████████████████████| 43 kB 3.8 MB/s
step functions Mapを使用して動的に並列処理してみた
DMMデータインフラ部に所属している[yuua](https://qiita.com/yuua0216)です
DMMデータインフラ部では、一部プロダクトにて[aws step functions](https://aws.amazon.com/jp/step-functions/) を活用してプロダクト開発を行っております。# 背景
複数のサイトを運営しており、その際のデータを収集するため一部APIリクエストを使用しています
その際に正しい値がPOSTされているかを毎回手動でチェックしていたため
こちらをStep functionsを使用し並列に自動で行うための仕組みを作成しました。# 構成
今回はStep functionsのMapがどういうものなのかをわかりやすくするため
数値のListを生成し偶数か奇数かを判定する簡易的なLambda関数を実装し、step functionsで並列処理します#概要
AWS Cloud9の環境にてMariaDBの初期設定、データベースの作成、テーブルの作成、カラムの作成という一連の作業ができることの確認をします。
今回使用するMariaDBは、AWS Cloud9に最初からインストールされているものを使用います。—
#yum アップデート
“`shell:
$ sudo yum -y update
“`—
#MySQLのバージョンを確認
“`shell:
$ mysql –version
mysql Ver 15.1 Distrib 10.2.38-MariaDB, for Linux (x86_64) using EditLine wrapper
“`—
#MariaDB-Server をインストールする
`sudo systemctl start mariadb` とかを使えるようにするためです“`shell:
$ sudo yum install mariadb-server
“`—
#/etc/my.cnfの編集
文字コードにUTF-8を利用するための設定を行なってくだ
TerraformでIAMユーザーを作成する際にKeybaseを使わずGPG鍵をファイル(Gitリポジトリ)で管理するようにしたのでそのメモ
TerraformでIAMユーザーを作成する機会があったのですが、そのパスワードやシークレットキーを扱うリソースではGPG鍵を渡す必要があるみたいです。
[aws_iam_user_login_profile](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_user_login_profile)
[aws_iam_access_key](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_access_key)諸事情でKeybaseを使わずにGPG鍵のファイルをリポジトリで管理したのでその記録を残します。
環境はmacOS Catalinaです。GPG周りを解説するためtfファイルについては割愛します。
# リポジトリで管理する場合のディレクトリ構成例
“`text
.
├── backend.tf
├── main.tf
├── provider.tf
EC2の暗号化について②
#はじめに
前回の記事(https://qiita.com/chanmuuuu20/items/7f78e1002a53b936f135)
で稼働中のEC2の暗号化の設定方法について書きました。
前回は、EC2のAMIを取り直して新たにEC2を作成するやり方でしたが、
今回は、稼働中のEC2の再作成ではなく、暗号化したEBSに付け替えるやり方でやってみます。#設定方法
基本的な考え方は前回と同じです。
今回はEBSのsnapshotを取得して、取得したsnapshotのコピー時に暗号化、
暗号化されたsnapshotからEBSを復元して、EBSを付け替えるというもの。(1)対象のEC2の確認
・対象のEBSが暗号化されていないことを確認
・あとでデバイス名が必要になるので確認しておく
![スクリーンショット 2021-08-20 11.12.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575134/e40073a1-3d61-2fc2-134c-d6dac098452e.png)
(2)
ACMで「*.*.example.com」のような2階層サブドメインのワイルドカードSSL証明書を作りたかった
## やりたかったこと
– 以下のような2階層のサブドメインに対応したSSL証明書を1枚で発行したかった。
– `example.com`
– `api.example.com`
– `stage.example.com`
– `api.stage.example.com`上記を達成するために`*.*.exmaple.com`をACMに登録しようとしましたが、AWSさんに怒られます。
公式ドキュメントにもこのような要件への対応は不可能みたいなことが書かれていますね。
https://docs.aws.amazon.com/ja_jp/acm/latest/userguide/gs-acm-request-public.html
## 解決法
残念ですが、ACMではSS
AWSのエンコードされたエラーメッセージをデコードして読みやすくするメモ
毎度調べてるので、自分のためのメモ
# エンコードされたAPIエラー
コンソールやCLIでの操作時やCloudTrailなんかで見かけるこいつ。“`
“errorMessage”: “You are not authorized to perform this operation. Encoded authorization failure message: むにゃむにゃむにゃ”,
“`# どうしてエンコードしちゃうのさ
余計なことを・・・!と思っていた時期が私にもありました。ドキュメントに書いてあった
https://docs.aws.amazon.com/STS/latest/APIReference/API_DecodeAuthorizationMessage.html
> The message is encoded because the details of the authorization status can contain privileged information that the user who requested the operati