- 1. AWSCDKでVPCをデプロイする
- 2. なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか
- 3. AWS EKSを使用したKubernetes自動構築ツール作った
- 4. AWS Amplify を日本語化してみた
- 5. AWS ENI (Elastic Network Interface)について
- 6. ALB を利用したサーバー負荷分散、可用性向上に向けた取り組み – Nextcloud 環境の構築を通じて AWS での環境構築を体験する④
- 7. AWS Lake Formationの概要を図と用語で整理する
- 8. Amazon Transcribeでmedia formatが一致しないと言われる
- 9. Terraform で特定のキュー(AmazonSQS)にしかアクセスできないポリシーを作成する
- 10. AWSのRDSからdumpをとる方法
- 11. AWS EC2 Amazon Linux 2 + Docker + Jenkins
- 12. Amazon Linux から Amazon Linux 2 への移行中 xpath ではまった話
- 13. Hoge
- 14. Fuga
- 15. Gero
- 16. Foo
- 17. Bar
- 18. Baz
- 19. AWS Route53で無停止サブドメイン委任(すでにサブドメイン以下にCNAME等のレコードが存在するケース)
- 20. AWS Route53でサブドメインを取得し、SESで使用する
- 21. Cloudwatchのチュートリアルを読み解く
- 22. Development on AWS受講までの事前準備 in MacPC
- 23. ~S3(Simple Storage Service)~ AWS学習メモ ~
- 24. Terraformのtfstateファイルを消すとどうなるか
- 25. AWS SAA 備忘録
- 26. 鍵を埋め込んだ EC2 インスタンスから取得した AMI に別の鍵を指定して起動しても以前の鍵が残るので対処します。
AWSCDKでVPCをデプロイする
# はじめに
AWSCDKはTypeScriptやPythonといったプログラミング言語でCloudFormationのテンプレートを生成できるフレームワークです。
今回はAWSCDK(TypeScript)でVPCをデプロイする書き方を紹介していきます。## 必要なパッケージ
VPC関係の定義は `@aws-cdk/aws-ec2` にあります。
“`terminal
$ npm i -D @aws-cdk/aws-ec2
“`## Stackファイルを書く
“`ts
import cdk = require(“@aws-cdk/core”)
import {
DefaultInstanceTenancy,
RouterType,
Vpc,
Subnet,
CfnInternetGateway,
CfnVPCGatewayAttachment
} from “@aws-cdk/aws-ec2”export class CreateVPCStack extends cdk.Stack {
constructor(scope: cdk
なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか
この記事は個人ブログのうち技術に関する箇所のみを抜粋した転載です。
[なぜ僕たちはサーバレスでJavaを諦めTypescriptを採用したか -Junks, GC cannot sweep-](https://munchkins-diary.hatenablog.com/entry/2020/02/05/002748)またブログには書いたのですが、諸事情により先に英語版が存在します。
こちらも書いたのは僕なので、剽窃などではないことはご了承ください。\[元記事\]: [Why we replaced Java with Typescript for Serverless](https://dev.to/csohei/why-we-used-typescript-instead-of-java-on-serverless-39e2) in [dev.to](https://dev.to)
## はじめに
**サーバレス(serverless)**は昨今もっとも注目を集める設計手法の一つで、おそらく多くの開発者が大なり小なり自分のプロダクトに応用し始めているのではないでしょうか
AWS EKSを使用したKubernetes自動構築ツール作った
## Kubernetes構築構築ツール作りました!!!
やっと出来ました[k8s構築ツール](https://github.com/arthur-maki/eks_env_tool/tree/feature-add_iam_and_vpc)(仮)です!長かった。。Ansibleとシェルスクリプト触ったの久々だしTerraformは初めて触るしで時間にして丸々4日くらいかかりました。。## k8s環境構築ツールを作ろうとした理由
* 半年くらい前に少しだけ触ってたが本格的にk8sの知識が必要になりく勉強する必要が出てきたため。
* 一々手動で環境構築するのが手間だと感じたため## AWS EKSを使用した理由
### k8s勉強用のVM作るのは難易度が高そう
VMを使用してk8s環境作ろうとするとMaster Node用とWorker Node用にVMを複数作成してそれぞれネットワーク接続できるようにして更にもっと作業して。。と今の自分の保有スキルに対して作業難易度が高めかなぁと思ったからです。(ただ今はネスぺの勉強もしてるので近いうちに挑戦してみたいです!)### AWS
AWS Amplify を日本語化してみた
# はじめに
このページでは Amplify の初期画面で作成した認証画面を日本語化するための方法をまとめました
※ 翻訳するメッセージについては以下のページを参考にさせていただきました。
# 開発環境
* Windows 10
* nodist(nodeのバージョン管理)
* node 12.13.0
* VSCode# Amplify で多言語化対応する
## I18n で言語設定をしてみる
Amplify には I18n ライブラリが初めから用意されている。
そのためライブラリを import することで、多言語化対応することが可能ということがわかった。【参考】
https://aws-amplify.github.io/docs/js/i18nということで、前回の投稿したソースコードを少し修正してみた。
“` main.js
import Amplify from “aws-amplify”;
import { I18n } from “aws-ampl
AWS ENI (Elastic Network Interface)について
## ENI (Elastic Network Interface) とは
VPC上で実現する仮想ネットワークインタフェースで、物理的な環境におけるNIC(Network Interface Card)のこと。NICの場合は、サーバーに複数枚挿すことで、サーバーが担う複数の役割に応じてIPアドレスを複数持たせたり、異なるセグメント間で1台のサーバーを動作させたりすることができる。ネットワークインターフェイスには以下の属性を含めることができる。
– VPC の IPv4 アドレス範囲からのプライマリプライベート IPv4 アドレス
– VPC の IPv4 アドレス範囲からの 1 つ以上のセカンダリプライベート IPv4 アドレス
– プライベート IPv4 アドレスごとに 1 つの Elastic IP アドレス (IPv4)
– 1つのパブリック IPv4 アドレス
– 1 つ以上の IPv6 アドレス
– 1 つ以上のセキュリティグループ
– MAC アドレス## ENI の基本
– インスタンスにアタッチしたり、インスタンスからデタッチしたり、別のインスタンスにアタッチ
ALB を利用したサーバー負荷分散、可用性向上に向けた取り組み – Nextcloud 環境の構築を通じて AWS での環境構築を体験する④
「Nextcloud 環境の構築を通じて AWS での環境構築を体験する」 の第 4 回となります。
これまでの記事は下記からどうぞ。* 【第 1 回】[EC2 と RDS を利用した Nextcloud 環境の構築](https://qiita.com/S_Katz/items/756ca04ecece844ce503)
* 【第 2 回】[ElastiCache サービスの導入](https://qiita.com/S_Katz/items/280642e437c709052781)
* 【第 3 回】[EFS ファイルサーバーへの移行](https://qiita.com/S_Katz/items/5b5f37db29c3f800e610)# はじめに
今回は、[前回記事](https://qiita.com/S_Katz/items/5b5f37db29c3f800e610) で作成した環境構成のうち、Web サーバーを複数台構成することにより負荷分散ならびに可用性の向上を図ります。これを実現するために AWS のロードバランシングサービスを利用します。
また、可用
AWS Lake Formationの概要を図と用語で整理する
[AWS Lake Formation](https://aws.amazon.com/jp/lake-formation/)をざっくりと理解するために基本的な概念とコンポーネントを、図と用語で整理してみます。
# AWS Lake Formationとは?
– **AWSでデータレイクを構築・運用するためのマネージドサービス**
– 実体は、ほぼAWSの各種サービスをラップしたもの(Glue, IAM, S3, etc..)
– データレイク専用にアクセス制御を行うために、IAMとは別に独自の権限管理機構を持つ
– **実データも保持しセキュリティ向上と権限管理が簡単に行えるAWS Glue**という印象
– IAMやGlueを個別に駆使してデータレイクを構築・運用するよりデータレイクに特化していて扱いやすい# ざっくりした概念図
図にするとかなりシンプル。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50056/3f3012ba-2336-0e40-
Amazon Transcribeでmedia formatが一致しないと言われる
AWSの文字起こしサービスであるTranscribeが日本語対応したので使い始めたが、下記のような「media formatが指定したのと違うよー」と言われて困った。
“`
Failure reason
The media format that you specified doesn’t match the detected media format. Check the media format and try your request again.
“`拡張子を変えたり、ffmpegでメディア情報を確認したりした結果、どうやらAmazon Transcribeでジョブをコピーすると、前に指定したメディアのメディア情報が引き継がれるらしいことが判明。
私の場合では、下図のように「Input file format」がwavを入れても「mp4」から変わらずでした。
Terraform で特定のキュー(AmazonSQS)にしかアクセスできないポリシーを作成する
特定のキュー(AmazonSQS)にしかアクセスできないポリシーを Terraform で作成したメモです。
“`
$ aws sqs get-queue-url –queue-name accessible-queue
{
“QueueUrl”: “https://ap-northeast-1.queue.amazonaws.com/${AccountID}/accessible-queue”
}
$ aws sqs get-queue-url –queue-name inaccessible-queue
An error occurred (AWS.SimpleQueueService.NonExistentQueue) when calling the GetQueueUrl operation: The specified queue does not exist or you do not have access to it.
“`“`tf:main.tf
########################
## AWS Provider
#######
AWSのRDSからdumpをとる方法
## やりたいこと
ローカルのデータベースを本番のもので置き換えて動作検証がしたい。
そのためにRDSで作成している本番DBからdumpをとりたい!## やりかた
本番DBとローカルでsshトンネルを開通させる→dumpをとるコマンドを実行。### ポートフォワーディング(トンネル開通)とは?
https://www.clear-code.com/blog/2014/9/12.html
今回はローカルのポートから踏み台サーバーを経由してDBに接続する。## 実行コマンド
### ポートフォワーディング
必要な情報の取得方法は後述します。“`
ssh -N (実行ユーザーのuser name)@踏み台のIPアドレス -L ローカルのポート番号:DBのエンドポイント:DBのポート番号
“`
必要によって以下のオプションを指定
`-i: 秘密鍵の指定`
`-f: バックグラウンドで実行`#### DBのエンドポイント・ポート番号
AWS EC2 Amazon Linux 2 + Docker + Jenkins## 概要
AWSのEC2(Amazon Linux2)でDockerでJenkins環境を構築する
### Dockerのインストール
“`bash
$ sudo yum install -y docker
$ sudo service docker start
“`### 自動起動を有効にする
“`bash
$ sudo systemctl enable docker
“`### docker imageのダウンロード
“`bash
$ sudo docker pull jenkins/jenkins:lts
“`### docker imageの起動
“`bash
$ sudo docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
“`### 初期パスワード
先ほどのコマンド実行すると↓みたいなのが出力されるのでメモしておく
“`bash
*************************************************************
Amazon Linux から Amazon Linux 2 への移行中 xpath ではまった話
Amazon Linux AMI (2018.03) のサポート期間が2020年12月31日まで延びましたが、目下、過去の遺物を Amazon Linux 2 へ移行しています。
これはそんな中起きた問題で、結論は単純にxpathの演算子の優先順位を勘違いしていたという話です。
自分だけの勘違いではなく、まわりにも何人かいたので、もしかしたら有用かなと思って書きました。皆さんは、このhtmlの2番目のh3のテキスト “Fuga” をxpathで取りたいときにどう書くでしょうか。
“`html:test.html
Hoge
Fuga
Gero
Foo
Bar
Baz
“`私とそのまわりの何人かは何の違和感もなくこう `’//h3[
AWS Route53で無停止サブドメイン委任(すでにサブドメイン以下にCNAME等のレコードが存在するケース)
免責: DNSの専門家ではないので、よりよい方法があればぜひ教えてください!
# 背景
親ドメイン(例: hiroga.cc)のHosted Zone内でサブドメイン(例: sub.hiroga.cc)に関するレコードを管理していましたが、Hosted Zone内の見通しが悪くなってしまったので、サブドメインを分割します。
すでにレコードがあるケースの手順が調べても見当たらなかったため、備忘録とします。# 手順
1. サブドメイン用のHosted Zoneの作成
2. サブドメイン用のHosted Zone内へ、親ドメインのHosted Zone内のレコードをコピー
3. サブドメインのHosted Zoneに対するNSレコードの作成
4. 親ドメインのHosted ZoneのNSレコードのTTLが過ぎるまで待つ。
5. 親ドメインのHosted Zone内の、2.でサブドメイン側にコピーしたレコードの削除# 注意点
– 手順2.の段階で親ドメイン内のレコードを削除してはいけません。名前解決ができない時間が発生しますし、最悪悪意ある第三者が同様のレコードを公開するリスク
AWS Route53でサブドメインを取得し、SESで使用する
## 参考記事
https://qiita.com/tanakaworld/items/94f1ba66801100f6a44f## Route53でサブドメインの取得
### Route53レコードセットの作成
– 名前:適当な値を入力
– タイプ:Aを選択
– 値:192.168.0.1と192.168.0.2(環境に合わせてください)を入力し、レコードセットの保存を選択### SES設定
– Identity Management => Domains を選択– Verify a New Domain を選択
– Generate DKIM Settingsにチェックを入れる。
– Domain:先ほど作成したサブドメインの値を入力
– Verify This Domain を選択– Use Route 53を選択
– Create Record Setsを選択しばらく待ってから
– Identity Management => Domains を選択
– サブドメインを選択
– Verification Status、DKIM Status、Enable
Cloudwatchのチュートリアルを読み解く
# はじめに
DVAの試験範囲でもあるということで、今日はCloudwatchのチュートリアルをやってみました。
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/PublishMetrics.html
# 用語の解説
Cloudwatchを語る上で覚えておく必要のある用語をまとめます。
– データポイント :
– 個々のデータ(CPU使用率で言うと10%、20%のような具体的な値)– メトリクス :
– データポイントを時系列順にまとめたセット– ネームスペース(名前空間) :
– 発行されたメトリクスを格納するコンテナ(論理的な入れ物)
– 任意の名前に設定可能(デフォルトのネームスペースは無し)
– ただしAWSサービスのメトリクスではAWS/のネームスペースが使用される(例:AWS/EC2) – ディメンション :
– メトリクスを一意に識別する名前と値のペアネームスペースとディメンションの使い分けがいつも混同するの
Development on AWS受講までの事前準備 in MacPC
# 概要
AWSトーニング受講にあたり、事前準備として自前のMac端末に色々導入した時のログを残す# 目的
・最低限の開発環境をここで揃えるようにする
・開発の初歩の初歩で詰まる方向け
・アウトプットの練習# 何ができればよいのか
まず、事前に用意すべき環境は
①RDPクライアントからWindowsサーバーへの接続
②Linuxサーバーへの接続その他用意した方が良さそうなもの
③Homebrewのインストールとりあえず上記3つができればよい事にする
# ①RDPクライアントからWindowsサーバーへの接続
こちらを参考にダウンロードと手順に従い、MacからWindowsへリモートデスクトップ接続をできるようにする。詰まりポイントは特にないはず。
# ②Linuxサーバーへの接続
こちらも、Windowsの場合はTeratermなどの専用のターミナルを用意する必要があるが、幸いMacには標準のターミナルが用意されている
そのため、以下を参考にsshロ
~S3(Simple Storage Service)~ AWS学習メモ ~
#S3の特徴、保存形式
【特徴】
・ユーザーがデータを保存しても自動でAWS側で拡張してくれる。
・高い耐久性
・通信やデータ保存時に暗号化【保存形式】
・バケット = オブジェクトの保存場所で名称はユニーク
・データサイズは0KB~5TBまで保存可能## ストレージの種類
【オブジェクトストレージ(S3、Glacier)】
・安価で高い耐久力をもつオンラインストレージ
・オブジェクト形式でデータを保存【ブロックストレージ(EBS、インスタンスストアなど)】
・EC2にアタッチして活用するディスクサービス
・ブロック形式でデータをする
・高速・広帯域幅【ファイルストレージ(EFS)】
・複数のEC2インスタンスから同時にアタッチ可能な共有ストレージサービス
・ファイル形式でデータを保存##整合性モデルの特徴
・データの更新・削除に整合性モデルを採用している
・同時書き込みはタイムスタンプ処理を実施する##S3のアクセス管理
【IAM、ユーザーポリシー】
・IAMユーザーに対してアクセス権限を設定
・一時的にユーザー権限を管理【バケットポリシー】
Terraformのtfstateファイルを消すとどうなるか
Terraformを実行してリソースを作成するとtfstateというファイルが作成されます。
以下公式ドキュメントより
https://www.terraform.io/docs/state/purpose.html
https://www.terraform.io/docs/state/index.html>Terraformは、管理対象のインフラストラクチャと構成に関する状態を保存する必要があります。Terraformはこの状態を使用して、実世界のリソースを構成にマッピングし、メタデータを追跡し、大規模なインフラストラクチャのパフォーマンスを向上させます。
>Terraformは通常、構成を使用して依存関係の順序を決定します。ただし、Terraform構成からリソースを削除する場合、Terraformはそのリソースを削除する方法を知っている必要があります。Terraformは、構成にないリソースのマッピングが存在することを確認し、破棄する予定です。ただし、構成が存在しないため、構成のみから順序を決定することはできません。
>正しい動作を保証するために、Terrafor
AWS SAA 備忘録
#AWS SAA まとめ
AWS SAA受けるにあたり、一旦知識をまとめてみました。
個人の勉強用のため、読みづらかったり、情報が誤っている可能性もあるのであまり信用せず。。※ちなみに自分は受験登録時に名前登録間違えて受験すらできませんでした。。。(0次試験敗退)お金も帰ってこないのでみなさん気をつけてね。。。来週リベンジしよう。。
##ネットワーク
###VPCについて####IGW
– インターネット側への出口
– 各VPCに一つだけアタッチ可能
– 単一障害点とはならない
– ルーティングでIGW(0.0.0.0)と繋がっているものがパブリックサブネット####NATゲートウェイ
– プライベートIPをグローバルに変換
– NATインスタンスとの違いは冗長化されている点####VGW
– オンプレミスとの接続点
– 各VPCに一つだけアタッチ可能
– 一つで複数のDirectConectやVPNと接続可能####サブネット,ルートテーブル
– サブネット作成後にAZを指定する。作成後は変更できない
– サブネット一つに対し、一つのルートテーブルを作成する
鍵を埋め込んだ EC2 インスタンスから取得した AMI に別の鍵を指定して起動しても以前の鍵が残るので対処します。
★AWS 備忘録シリーズ
共通ミドルウェアやアプリケーションを Amazon EC2 へ事前インストールを行い、 Amazon Machine Image(AMI)を取得するという営みをしていると思います。
その際、鍵を埋め込んで EC2 インスタンスの起動をしていると、以前の鍵の情報が残り続けることはご存知でしょうか。
特に、本番や開発といった環境ごとや EC2 に割り当てている機能ごとに鍵を分けている場合に直面しやすい問題です。
※本稿では AWS 提供の AMI に何がしかの設定を入れて、いろんな機能を設定するためのもとになる AMI を**ベース AMI** と呼称します
## 鍵が複数埋め込まれる流れ
1. ベース AMI を作成する担当者は定期的に AWS 提供の AMI に AMI 作成担当者用の鍵を使って EC2 を起動(**1本目**の鍵が埋め込まれる)
2. その EC2 インスタンスに必要なミドルウェアなどをインストール
3. AMI を取得
4. 3で取得した AMI をインフラ構築担当者に伝達
5. インフラ構築担当者はその AMI の ID と