- 1. AWSクレデンシャル情報取得のベストプラクティス(AWS SDK for Go)
- 2. S3で静的ホスティングしているWebサイトをHTTPS化する
- 3. SQSとmessage queingのメモ書き
- 4. ICSアプローチに基づくドメイン駆動設計の戦略的設計
- 5. 未経験者がWell Architected Frameworkを意識して自分なりにアーキテクチャ設計・構築をしてみた。<VPC、ELB編>
- 6. 未経験者がWell Architected Frameworkを意識して自分なりにアーキテクチャ設計・構築をしてみた。<アーキテクチャ設計編>
- 7. Laravel Envoy+CircleCIでEC2にデプロイ
- 8. Chalice を使って AWS Lambda 上に Flask/Bottle のようにWebアプリケーションを構築する
- 9. CloudWatchでよく使うドキュメント
- 10. AWS VPC Traffic Mirroring ~ demo
- 11. Google Cloud Certified – Professional Cloud Architect に合格しました
- 12. AWS EC2 起動テンプレートのユーザーデータを使用して Pytorch用 jupyter notebook の自動起動設定をする
- 13. copirot initしたapplicationを削除する。
- 14. Auto Scaling で追加したEC2 インスタンスにパブリックIP を割り振る
- 15. 【解説】ポートフォリオ(NotePro)
- 16. Glue+AthenaでMySQLとDynamoDBのデータをJOIN+分析する
- 17. AWS認定SysOpsアドミニストレータ(SOA)を取得しました
- 18. Amazon SES経由のバウンスメールをCakephp3のWebアプリで受け取る際にハマったポイント
- 19. NUXTJS公式のS3とCloudFrontを使用してAWSへデプロイするには?をdocker-composeで実行する
- 20. AWS ECS Fargateにシンプルなアプリをデプロイする
AWSクレデンシャル情報取得のベストプラクティス(AWS SDK for Go)
# はじめに
ECS(Fargate)でAWS SDK for Goを使ってAWSサービスを操作した際に、最初は勢いで作ったものの本当にこれでいいんだっけ?とモヤモヤしたことがあったので、クレデンシャル情報取得の優先順位とベストプラクティスについてまとめます。# 結論
いきなりですが、下記がベストプラクティスとされる優先順位です。
詳細について後述します。“`
1. ECSでアプリを実行している場合、タスクロール
2. EC2でアプリを実行している場合、EC2のIAMロール
3. 認証情報ファイル
4. 環境変数
“`# Sessionの生成
まず、AWSサービスを使うためのsessionを生成します。
今回はリージョンのみ指定しています。“`
sess, err := session.NewSession(&aws.Config{
Region: aws.String(“ap-northeast-1”)},
)
“`# クレデンシャル情報取得の優先順位
上記のようにクレデンシャル情報の指定がない場合、以下の優先順位で認証情報を取得します。“`
S3で静的ホスティングしているWebサイトをHTTPS化する
最近、AWSを少し触っていて、Amazon S3の静的ホスティング機能を使ってWebサイトを作ってCognitoでログイン機能を付けてみたりして遊んでいたのですが、
![sakuzyo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/693048/1f2ec5c8-a60a-bcf4-b42a-d836de620cc9.png)
####これちょっと恥ずかしい!
Chromeだとわざわざ保護されていないことを晒上げてくれます!やったー!(笑)
でも、今時SSL化されてないWebページの方が珍しいですし、S3でホストしているWebサイトをhttps化(SSL化)してみることにしました。#はじめに
この記事では、AWS Certificate Manager(以下「ACM」)とAmazon CloudFrontを利用してSSL証明書を発行・設定して、https接続できるようにしてみます。Amazon S3で静的ホスティングをしていて、Amazon Route 53で独自ドメインを管理してルーティン
SQSとmessage queingのメモ書き
# MessageQueueとは
端的にいうと異なるソフトウェアでデータの通信を行うため使う機構です。
一般的なRESTAPIの構造だと、requestをしたらresponseが返るまで処理が行えません。そのため非同期の処理を行うことはできません。
なので、ソフトウェア間の通信を一旦 MQに格納して、双方の任意のタイミングで送受信を行えるようにするのがMQの思想です。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179800/8179299c-5806-16e9-3651-dcc7f7a09295.png)
(AWSサイトより引用)# SQS
Amazonが提供しているMessageQueueのサービスで二つのタイプからMQを構築することができます。## standard
性能を重要視した代わりに、順番の保証を捨てたMQです。無限に近いスループットを持っていますが、
その代わりに、値を重複して返したり、順番もずれちゃう可能性があるため
冪等性を持った処理などに向いて
ICSアプローチに基づくドメイン駆動設計の戦略的設計
ドメイン駆動設計の**戦略的設計**では、主に**マイクロサービス**形式によるサービス指向アーキテクチャ(SOA)を使用したクラウドを使用した分散型システムを使用する。
海外では**マイクロサービス**の設計の失敗事例が数多くあり、設計思想に何らかの欠陥があるのではないかと考えた。
事例を研究した結果、アメリカ式のドメイン駆動設計の**戦略的設計**に問題があるという結論に達した。
アメリカ式のドメイン駆動設計の**戦略的設計**は、テクノジーに偏重した高スペック重視の設計方法。
スペックを高めるために、クラウド上の外部サービスを使用した結果、設計が複雑化し、サービスが追加されるほど複雑化が加速し、分散システムが破綻する。
**マイクロサービス**形式による分散型システムにはシンプルで簡易な設計思想が必要である。
そこで、ロシア式のドメイン駆動設計の**戦略的設計**である**ICSアプローチ**を使用する方法を紹介したいと思う。#ICSアプローチ
##ICSアプローチとは
**ICSアプローチ**とは**Information(情報)、Cyber(サイバー)、Synergy(相
未経験者がWell Architected Frameworkを意識して自分なりにアーキテクチャ設計・構築をしてみた。<VPC、ELB編>
#はじめに
この記事は、実務未経験者がロールプレイング形式でアーキテクチャの設計、構築を行うといった記事です。
よろしければ[<準備編>](https://qiita.com/mkoki0422/items/9fc0b5d44ff7367994f1
)[<アーキテクチャ設計編>](https://qiita.com/mkoki0422/items/33b60250527dbc92b518)もご覧くださいませ。#前回までのあらすじ
前回は問題点を洗い出し、具体的な改善案を提案、アーキテクチャの設計を行いました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/666664/f9c593aa-9fbb-fc07-39ba-48011c373741.png)今現在のアーキテクチャはこれですので、どんどん構築していきます!
![スクリーンショット 2020-09-20 23.06.06.png](https://qiita-image-store.s3.ap-northeast-1.a
未経験者がWell Architected Frameworkを意識して自分なりにアーキテクチャ設計・構築をしてみた。<アーキテクチャ設計編>
#はじめに
この記事は、実務未経験の大学生がロールプレイング形式でアーキテクチャの設計、構築を行うといった記事です。
よろしければ[<準備編>](https://qiita.com/mkoki0422/items/9fc0b5d44ff7367994f1
)もご覧くださいませ。#前提条件の確認(ロールプレイング中)
+ インフラエンジニアは4人
+ 4人でインフラの構築、運用を行なっていかなければならない
+ 自動化が重要
+ 構築までの期間は1ヶ月#問題点
現環境の構築に携わったエンジニアにヒアリングを行い、現環境の問題点を整理しました。
Well-Architected フレームワークを元にアーキテクチャを考えた時に、現時点でのアーキテクチャでは以下の様な問題点が挙げられます。###セキュリティ
+ 通信にSSLが適用されていない
+ セキュリティグループが適切に設定されていない(全てがフルオープンになっている)
+ DDos等の一般的なセキュリティ対策を行なっていない
+ データの暗号化が行われていない
+ リソースに対する権限管理が曖昧である
Laravel Envoy+CircleCIでEC2にデプロイ
## 概要
Laravel EnvoyとCircleCIを利用して、EC2にデプロイするということを試してみました。
https://laravel.com/docs/8.x/envoy
GithubのmasterブランチにマージされたらEC2上の本番サーバに、developブランチにマージされたらステージングサーバにデプロイされる想定です。## 前提
### 設定
* AWS上に本番環境(production)とステージング環境(staging)がEIPが割り当てられたEC2として存在する
* EC2からgit pull可能
* Githubでmasterとdevelopのブランチが存在するリポジトリ
* Githubのリポジトリにpushした際CircleCIが実行されるよう連携済み### バージョン
PHP: 7.4.7
Laravel Envoy: 2.3.1## 手順
### Laravel Envoyの設定
“`bash
$ composer require laravel/envoy
“`今回簡易的に以下のようにEnvoy.blade.phpを作成しま
Chalice を使って AWS Lambda 上に Flask/Bottle のようにWebアプリケーションを構築する
# はじめに
小規模なWebアプリケーションを作成する場合、Pythonでは [Flask](https://flask.palletsprojects.com/en/1.1.x/) や [Bottle](https://bottlepy.org/docs/dev/) を利用できる。
これらのフレームワークは「どのURLに対して」「どのプログラムを動かす」といった対応を Python のデコレータで対応させることで実現できる。
例えば、以下の Flask アプリケーションでは `/` にHTTPアクセスした時に `Hello, World!` を返すWebサーバーを実装しており、ルーティング・レスポンス応答が非常に分かりやすい。“`python:Flaskの公式ページから引用
# https://flask.palletsprojects.com/en/1.1.x/quickstart/
from flask import Flask
app = Flask(__name__)@app.route(‘/’)
def hello_world():
return ‘He
CloudWatchでよく使うドキュメント
CloudWatch設定作成時にドキュメントを探すのが手間なのでざっくりした作成の流れと共にまとめます。
###サーバーで CloudWatch エージェントをインストールして実行する
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.htmlドキュメントに従って、任意のディレクトリにダウンロードをしてインストールを行います。
インストールが完了すると、以下ディレクトリが作成されます。
“`
/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d
“`インストールが失敗する場合は以下を確認
①インスタンスにロール「CloudWatchAgentServerRole」が割り当てられているか
②プロファイルが設定されているか###ウィザードを使用して CloudWatch エージェント設定ファイルを作成する
https://d
AWS VPC Traffic Mirroring ~ demo
VPCトラフィクミラーリングでネットワークトラフィックを検査する。
EC2を2インスタンス使用して、片方のネットワーク利用をもう片方でモニタする。
概要についての簡単な説明は↓を参考にさせていただきました。
[【初心者】AWS VPC Traffic Mirroring を使ってみる](https://qiita.com/mksamba/items/3e3fad914c708d9c9379)#1.CloudFormationによる環境準備#
“`yaml
AWSTemplateFormatVersion: ‘2010-09-09’
Description: ‘For making 2 of Amazon Linux (EC2) on a VPC. ‘
Mappings:
AWSInstanceType2Arch:
t3.medium:
Arch: HVM64
t3.micro:
Arch: HVM64
t3.small:
Arch: HVM64
AWSRegionArch2AMI:
ap-no
Google Cloud Certified – Professional Cloud Architect に合格しました
# 資格取得に向けて
昨日 (2020/09/22)、タイトルの通り Google Cloud Certified – Professional Cloud Architect を取得しました
勉強期間は約 2 ヶ月ですこの嬉しさを忘れないうちにこれから受けようと思っている方に自分なりにアドバイスなどを残します
> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/353538/bb38d0a2-d02e-8270-f7b3-fb0962ba6493.png)
> かっこいい…
## 想定する読者
– Google Cloud Certified – Professional Cloud Architect を受けようと思っている
– AWS Certified Solutions Architect – Associate を取って次、何を受けようか悩んでいる## 本人スペック
– 今年 3 月に AWS Certified Solutions Architec
AWS EC2 起動テンプレートのユーザーデータを使用して Pytorch用 jupyter notebook の自動起動設定をする
# はじめに
EC2の起動テンプレートにスクリプトを書いておくと、インスタンス作成時に自動的にスクリプトが実行されます。`Deep Learning AMI (Ubuntu 18.04) Version 34.0 – ami-0302aadfa73a0d917`を使用し、ディープラーニングが実行できるjupyter notebookを自動で起動する設定をします。# 手順
起動テンプレート設定画面を開きます。![スクリーンショット 2020-09-23 22.12.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211712/7136a90b-0a8e-4cfb-a5b4-9796a3af9c19.png)
`起動テンプレートを作成`を選択。`高度な詳細`を開く。
![スクリーンショット 2020-09-23 22.13.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211712/4e57666d-0
copirot initしたapplicationを削除する。
“`
copilot app delete
“`
Auto Scaling で追加したEC2 インスタンスにパブリックIP を割り振る
小ネタです。AWSコンソールから設定する方法について書きます。
# 困っていたこと
Auto Scaling で追加したEC2 インスタンスに`パブリック IPv4 アドレス`が割り振られない。いろいろ調べたところ、Auto Scaling > [高度な詳細] > [IPアドレスタイプ] で設定できそうなのに、AWSコンソール上に見当たらなくて困っていました。
![https___qiita-image-store.s3.amazonaws.com_0_256859_ab5b9840-0761-3887-b7e6-9f5864e65079.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/c0fc0ed4-ab89-3090-831c-a3721f602a1c.png)
画像引用:[AWS勉強会(3) / Auto Scalingチュートリアル – Qiita](https://qiita.com/zaki-lknr/items/cea4885f04853d3f8878)# 解決策
【解説】ポートフォリオ(NotePro)
# URL
[NotePro](https://notepro.work/)# 概要
デバイス内に散らばった情報を一つにまとめることできるWEBアプリケーション# 制作背景
日頃から私自身で困っていたことを解決したいという考えから作成いたしました。“`
1.以前Twitterいいねした投稿がいいねしすぎてすぐに見つからない
2.YouTubeでためになったことをスクショしたはいいものの、フォルダのどこにあるのかすぐに見つからない
3.どうせなら参照リンクもまとめたい
4.某投稿サイトなどはあるが何かによりすぎて気軽な投稿はできそうにない雰囲気がある
5.まとめたものにいいねをもらいたい!!!!
“`
### 1.以前Twitterいいねした投稿がいいねしすぎてすぐに見つからない
Twitterでは気軽にいいねができすぎて、本当に必要な時、***いいねした投稿が見つからない***ことが皆さんも結構あるのではないでしょうか。
また、Twitterアカウント自体複数持っている方も結構いるのではないでしょうか。そうなると尚更、見つかりずらくなります。
noteとしてまとめる時間
Glue+AthenaでMySQLとDynamoDBのデータをJOIN+分析する
## 目標
サーバーレス技術やマイクロサービスが台頭している昨今、DBをサービスごとに分けるケースが多くなってきています。
本記事では、RDBとDynamoDBの両方を活用しているあなたが、分析レポートを作成するケースを想定します。
AWSを使ってETLし、両DBのデータをAthenaによりクエリするサンプルを作成していきます。## 構成図
データはRDSとDynamoDBに存在することが前提となります。
Glueの機能のみでS3へ`parquet`化したデータをETLします。
AthenaでRDSのデータとDynamoDBのデータをクエリでJOINします。![glue_dynamo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/466431/0187ad8a-a521-91e7-6555-024883c02ba1.png)
## Glueの作成
それではAWSリソースをTerraformで作成するサンプルをみてみましょう。
### ジョブの作成
#### 共通
Glue用のIAM
AWS認定SysOpsアドミニストレータ(SOA)を取得しました
AWS認定SysOpsアドミニストレータ アソシエイト(SOA)を受験し無事合格しました。
資格取得までに参考にしたものを投稿します。![ 2020-09-23 14.59.00.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290588/0b9dfe5c-0505-9788-0764-dcfb9ce50345.jpeg)
## 私のAWSの知識
クラウドプラクティショナーに合格しました。
https://qiita.com/gdtypk/items/fa87750ec9278eb0db9aソリューションアーキテクトに合格しました。
https://qiita.com/gdtypk/items/52d96a5af0a05f06ebc4デベロッパーアソシエイトに合格しました。
https://qiita.com/gdtypk/items/4cfcf3c74b9faf3893aa業務では、EC2,RDS,Lambda,S3を軽く触っている程度になります。
## やったこと
2週間、業務
Amazon SES経由のバウンスメールをCakephp3のWebアプリで受け取る際にハマったポイント
こんにちは、**[テックデザインカンパニーのマイロプス](https://mylops.jp/?utm_source=qiita&utm_medium=social&utm_campaign=200923&utm_content=q_tr)**でエンジニアをしています後河内です。
以前、こちらに、[Amazon SES経由のバウンスメールをWebアプリで受け取る](https://qiita.com/ushirog/items/1ef744f977d6f211908e)という記事を書きました。
こちらの記事ではCakePHP2でのバウンスメールの受け取り方法を書かせていただきましたが、同様のことをCakePHP3のWebアプリで実施する必要が別の案件で実施したいという要望が出てきました。
当初はCakePHP2で一度実装したことなので、CakePHP3でも簡単にできると思ったのですが、その実装の中でハマった点がありましたので、備忘録もかねてそのことについて書いていきます。バウンス情報をWEBアプリにPOSTするところまでは、以前の記事、[Amazon SES経由のバウンスメール
NUXTJS公式のS3とCloudFrontを使用してAWSへデプロイするには?をdocker-composeで実行する
# はじめに
公式ドキュメント内の`AWS: S3 バケットと CloudFront Distribution の設定`をdocker-composeで簡単にデプロイする方法をまとめたいと思います。[(公式ドキュメント)S3 と CloudFront を使用して AWS へデプロイするには?](https://ja.nuxtjs.org/faq/deployment-aws-s3-cloudfront/)
AWS(S3,CloudFront)の設定については[こちら](https://qiita.com/h-matsufuji/items/969bcacf8bb72ecc7108)を参考に作成してください。
# 1.ファイル構成
“`
nuxtapp/docker-compose.yml
nuxtapp/Dockerfile
nuxtapp/deploy.sh
nuxtapp/gulpfile.js
“`※`deploy.sh`と`gulpfile.js`は公式の手順通り作成してください。
# 2.Docker化に必要なファイル準備
“`Dockerfile:D
AWS ECS Fargateにシンプルなアプリをデプロイする
## 概要
シンプルなGo言語アプリケーションを、AWSのECS Fargateにデプロイする手順を紹介します。Fargateって最近聞くけど試したこと無い、これから試してみたい、という人向けの内容です。
また、Goでなくともにもコンテナ化できれば、同じ手順で構築できると思います。※この記事は、2020/9月時点のコンソールを元に書かれています。
## 環境
– Go言語 1.14.3
– Mac OS X 10.15.4
– AWS CLIは設定済み## ECS Fargateとは
まずECS(Elastic Container Service)は、AWSが提供するコンテナオーケストレーションのサービスです。ECSはAWSの他サービスとも連携しやすく、インストールや管理等が不要である点から、既にAWSを活用しているチームやスモールスタートしたいチームに向いていると言えます。コンテナオーケストレーションはKubernetes(k8s)が有名ですが、k8sの学習コストや定期的なバージョンアップ運用などが気になる場合には、ECSも選択肢になるでしょう。
ECSではコ