- 1. 【AWS SOA】Systems Managerでインスタンスを起動させよう
- 2. 【AWS】AWS CDKでECRを構築する
- 3. 【VueSlsApp】LambdaでPYTHONPATHを指定して外部ライブラリをシンプルに使う
- 4. EBSをルートボリュームにアタッチする
- 5. 【体験記】AWS Solution Architect Associateに合格した
- 6. Lambdaでお金のかかりそうなインスタンスの稼働状況をSlackに投げる
- 7. Amazon ECS 及び AWS Fargate概要
- 8. 【iSCSI】SANの構築
- 9. 【AWS】【S3】レプリケーションのレプリケーションはできないし、複数宛先へのレプリケーションもできない
- 10. 本番環境で画像アップロード時のエラー:「Permission denied @ rb_sysopen – /var/www/rails/app/tmp/uploads/cache/xxxxxx」への対処法
- 11. cdk deploy 時に Cannot retrieve value from context provider vpc-provider … と言われる
- 12. AWS CDKでELBのタイムアウト設定を変更する
- 13. ECSのタスク切り替えを速くしたい時の設定
- 14. Amazon S3 互換の Wasabi hot cloud strage を使う
- 15. AWS Chatbot を使ってlambdaにpayloadを渡すときに Unexpected character (”’ (code 39)) でハマった
- 16. サーバー構成とは。サーバー構成を聞かれたら。(AWS編)
- 17. CodeBuildでバッチビルド(並列ビルド)を導入しようとしたけどできなかった話
- 18. Blue/GreenデプロイメントではRoute53の加重ルーティングを使うといいらしい
- 19. AWS EC2 AmazonLinux2インスタンスにMailCatcherを導入する
- 20. TypeScript + Jestでaws-sdkをmockする
【AWS SOA】Systems Managerでインスタンスを起動させよう
#はじめに
現在AWS SOA試験対策のため、色々勉強しています。今回はSOAによく出るとされるSystems Managerを取り上げたいと思います。私はSAAはすでに合格しているのですが、SAAにはあまりこちらのサービスは登場しないため、他のサービスと比べて試験対策向けの記事が少ないです。ひとまずSystems Managerでインスタンスを起動させる所まで進めていきたいと思います。#Systems managerとは?
AWSでインフラストラクチャを可視化し、制御するためのサービス。Systems Managerを使用すると、AWSリソース全体の運用タスクを自動化が可能。Amazon EC2インスタンス、Amazon S3バケット、Amazon RDSインスタンスなどのリソースをアプリケーションごとにグループ化し、運用データを表示できる。#手順
##SSM Agentを開くため、EC2インスタンスの作成
AMIで「Amazon Linux 2 AMI」を選択。次のステップに進む。
![スクリーンショット 2020-09-05 10.25.25.png](https://q
【AWS】AWS CDKでECRを構築する
みなさんAWS CDK使っていますか?
私はCFnを使用していたのですがYAMLで書くのがいろいろ辛くなってきたので、最近AWS CDKに乗り換えましたという訳で今回は、AWS CDKを使ったECRの構築方法を書いていきたいと思います
# 環境
![language](https://img.shields.io/badge/language-python-blue.svg) ![python3.8](https://img.shields.io/badge/python-^3.8-blue.svg) ![pipenv](https://img.shields.io/badge/package_manager-pipenv-blue.svg)
# 前提
以下のコマンドがインストール済み
– pipenv
– aws-cdk# ディレクトリ構成
“`
.
├── Pipfile
├── Pipfile.lock
├── README.md
├── app.py # CDKのPython用メインスクリプト
├── cdk.json # CDKのコンフィグ
├── cd
【VueSlsApp】LambdaでPYTHONPATHを指定して外部ライブラリをシンプルに使う
注:本記事はnote記事の転載です。内容の更新があった場合noteのほうを更新します。qiita記事が古くなってきている場合、noteもご確認ください。
https://note.com/thiroyoshi/n/nfcb0be8c0a22
—
こんにちは。thiroyoshiです。
今回は、LambdaでPythonライブラリを使うときのちょっとしたテクニックを紹介したいと思います。これをVueSlsAppに組み込みました。見た目などは何も変わらないですが、ソースがシンプルになるのでオススメです。
VueSlsAppのことをご存じない方は、以下の紹介記事とマガジンからどうぞ。
https://note.com/thiroyoshi/n/na16112b4ec1bデプロイしてあるものは、以下から実際に触ってみてもらえます。
https://vueslsapp.thiroyoshi.com/VusSlsAppのリポジトリは以下です。
https://github.com/thiroyoshi/vueslsapp**目次**
– LambdaでPythonライブ
EBSをルートボリュームにアタッチする
## 構成
– Amazon Linux 2## やること
`/dev/xvda` を指定する
【体験記】AWS Solution Architect Associateに合格した
はじめに
—2019年5月(*)にSolution Architect Associate(SAA-C01)認定試験を受験し合格しました。
今回のブログ記事では合格体験記として、試験に向けて勉強したことなどについて記載していきたいと思います。
今後、受験される方のお役に立てれば幸いです。(*)2020年3月より試験問題が改訂されました。本記事ではあくまで当時の合格体験記として記しておりますのであらかじめご了承ください。
受験を決めた当時の筆者のレベル
—業務では主にオンプレミスで構築されたインフラ環境の運用・保守を行っており、AWSをはじめとしたパブリッククラウドを用いた業務経験は全くありませんでした。
また、インフラ運用・保守経験自体も1年6か月程であったため決して知識が豊富であったわけではありません。(これから受験される方の勇気づけになれば幸いです・・・)認定試験を受験することに決めた理由としては、現職で受けたクラウドコンピューティングトレーニングがきっかけでした。
スケーラブルなインフラ環境構築、DevOpsを用いた運用に興味を持ち、「AWSの案件に携わりた
Lambdaでお金のかかりそうなインスタンスの稼働状況をSlackに投げる
# なぜそんなことがしたいのか
開発中にいろんなテストで高いインスタンスを立ち上げたりすることがあると思いますが、たまに、稀に、うっかり、落とし忘れて帰ることがあるかもしれません。
まぁ次の日に気づけばダメージは少ないでしょう。ところが連休前だったりとか、しばらく気づかなかったりしたらどうでしょう。そこそこの金額が積みあがって、場合によっては始末書を書くハメにならないとは言い切れません。AWSには、請求額でアラートを投げる仕組みがありますが、それは既に「ヤバいところまで積みあがってしまった」ことが分かるだけで、予防にはなりません。1ヶ月の予算を3日で使ってしまったとして、後どうするねんていう話ですよ。
そもそも帰る前に確認しろよって話ですが、それをルール化したりチェックリスト作ったりして100%守れますかって話ですよ。確認したリージョンが違ってたとかあるあるじゃないですか。
プログラマーという生き物は、自分がやりたくないことを機械にやらせる為にプログラムを書くものでしょう?
ええ、じゃあやってやりましょう。# AWSのことはAWSで
awscliでインスタンスの状態が
Amazon ECS 及び AWS Fargate概要
Amazon ECSとAWS Fargateの概要についてまとめる。学習目的兼備忘録。
## Amazon ECS
* コンテナオーケストレーター
* コンテナのデプロイ、スケーリング、クラスター管理などをサポートするサービス
* 様々なAWSサービスとの連携をサポート
* コンテナの起動タイプは、EC2起動タイプとFargate起動タイプから選択
* EC2起動タイプ:ECSコンテナエージェントを実行し、クラスターに登録されているEC2インスタンス
* Fargate起動タイプ:下記参照。### Amazon ECSの主要要素
![ECS_Component.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/586535/a79d5254-4abe-e1bc-1dd2-f470dbba4e6d.png)
* **タスク**
* タスク定義に基づいて起動するコンテナの集合
* タスク内のコンテナは同一ホスト上で実行
* **タスク定義**
* コンテナ群定義
*
【iSCSI】SANの構築
##目標
iSCSIを利用してSANを構築(AWS環境上に構築)し、動作を確認する。##はじめに
学習のためAWSネットワーク上にiSCSIによるSAN構築をしてみたのですが、AWSには高速ネットワークストレージのEBSがあるので、
そこに自らSANを構築するメリットが正直あるのか私にはわからないです。。ただ学習用のハンズオンということでご容赦頂ければと思います。##前提
・AWS EC2サーバ2台が構築済みであること(ターゲットとして利用する側のEC2にはデータボリューム**/dev/sdb**をアタッチし、セキュリティグループで**3260番ポート**を開けておく)##利用環境
仮想マシン : **AWS EC2サーバ 2台**
OS(AMI) : **Red Hat Enterprise Linux 8 (HVM), SSD Volume Type**##iSCSIとは
TCP/IPネットワーク上でSCSI接続を利用可能にする仕組みです。
iSCSIを利用することローカルストレージ同然にネットワーク上のストレージを利用することが可能となります。
また、iSCSI等
【AWS】【S3】レプリケーションのレプリケーションはできないし、複数宛先へのレプリケーションもできない
#はじめに
S3にはセイムリージョンレプリケーションという機能があります。
https://aws.amazon.com/jp/about-aws/whats-new/2019/09/amazon-s3-introduces-same-region-replication/
この機能を利用して、ログを特定のアカウントに集約して分析に使っちゃうなんてのはどう?的なことが公式のブログに書いてあったりもします。
https://aws.amazon.com/jp/blogs/news/aggregating-logs-with-s3-same-region-replication/一方で、争いの絶えない社会で人間は色々なことを要求します。
例えば、ある一連のシステムから出るログのうち、* システム運用と、セキュリティ監視で用途別のアカウントにログ集約したい。だから2箇所に同時にレプリケーションしたい。
* 監査目的、あるいは業界のルールを満たすために、XX年ログを保管したい。
* ログ保管と分析の役割を持つ組織がそれぞれ存在し、ログ
本番環境で画像アップロード時のエラー:「Permission denied @ rb_sysopen – /var/www/rails/app/tmp/uploads/cache/xxxxxx」への対処法
Rrailでアプリを作りAWSの本番環境でデプロイが完了し、動作確認で画像を投稿しようとしたら以下のエラーが出ました。
“`Permission denied @ rb_sysopen – /var/www/rails/app/tmp/uploads/cache/xxxxxx“`
権限周りでエラーが起こっているらしいです。
調べたところ[こちらの記事](https://qiita.com/4EAE_Learner/items/1e0824a71cb4eb41780a)が参考になりました。私の場合EC2にSSHログインし、対象フォルダまで移動、権限の変更で解決できました。
(usernameは適宜変更して下さい。 “whoami” というコマンドで確認できます)“`
$ ssh app_name_key_rsa
$ cd /var/www/rails/app/tmp/uploads/cache
$ ls -la
drwxr-xr-x 2 root root 6 8月 14 00:44 .
drwxr-xr-x 4 root root 32 8月 14 00
cdk deploy 時に Cannot retrieve value from context provider vpc-provider … と言われる
# 環境
– node @12.18.3
– npm @6.14.6
– aws-cdk @1.61.1# 事象
`cdk init` で作成したプロジェクトで、
`cdk deploy`時に以下のエラーメッセージが表示され、デプロイを進めることができない。“`
Cannot retrieve value from context provider vpc-provider since account/region are not specified at the stack level. Either configure “env” with explicit account and region when you define your stack, or use the environment variables “CDK_DEFAULT_ACCOUNT” and “CDK_DEFAULT_REGION” to inherit environment information from the CLI (not recommended for production sta
AWS CDKでELBのタイムアウト設定を変更する
# はじめに
https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-elasticloadbalancingv2.ApplicationLoadBalancer.html
新規で作る時は初期化の際に`idleTimeout`として設定ができる
ecsPatternsだと自動的にALB等の初期化が終わっている
既存のリソースのtimeout設定を変える方法が調べづらかったのでシェア# やり方
“`
ec2Service.loadBalancer.setAttribute(‘idle_timeout.timeout_seconds’, ‘3600’)
“`CDKのドキュメントを読めば分かる通り、ELBのインスタンスに `setAttribute` というメソッドが生えているのでこれを使う
第一引数がkey
なんの属性を変えるか指定する
どういった属性が変えられるかは↓のドキュメントを御覧ください
https://docs.aws.amazon.com/ja_jp/elasticloadbalanci
ECSのタスク切り替えを速くしたい時の設定
ECSで新しいタスク定義をデプロイしたときに、デフォルトだと新旧のタスクが30秒共存した後に、旧タスクが落ちる。
以下の設定で旧タスクが落ちる時間を調整できる。[タスクのターゲットグループ] -> `Group details` -> `Attributes` ->
`Deregistration delay`ダウンタイムなしでスパッと切り替えてくれたら嬉しいけど、ECSでは無理かな。
Amazon S3 互換の Wasabi hot cloud strage を使う
NTTPCコミュニケーションズのwebarenavpsを利用しているが、[AmazonS3互換かつ低価格な、Wasabiオブジェクトストレージ]の無料キャンペーンがあったので、Wasabiを使ってみた。
– WebARENA Wasabi オブジェクトストレージ最大1TB分相等額(税込834円/月)が年内無料
– データの保管先は、NTTPCではなくWasabiのサーバで国内にはない
– S3互換なので、awscliからアクセス可能(一手間必要)
– ブラウザから直接ファイル参照ができる。動画も配信できる。!!!
– AmazonS3は、データ保存量に加え転送量でも課金されるが、Wasabiは転送量課金がなく、データ保存量課金のみ。そして834円/月・1TB。年額10,008円# Wasabiのアカウント作成
キャンペーン案内メールに従い応募したら、アカウント作成用の情報がメールできたので、これで自分専用のサブユーザを作成した、* WasabiURL: https://console.wasabisys.com/#/subuserLogin
* ルートアカウントメール又はエ
AWS Chatbot を使ってlambdaにpayloadを渡すときに Unexpected character (”’ (code 39)) でハマった
AWS Chatbot を使ってSlackワークフローからlambdaをinvokeするときにpayloadがうまく渡せなかったケース。
slack上で実行したコマンド
“`
@aws lambda invoke –log-type Tail –payload ‘{}’ –function-name tempFunctionName –region ap-northeast-1
“`以下のようなエラーが出ました。
“`
but unfortunately the service returned an exception:
> Could not parse request body into json: Unexpected character (”’ (code 39)): expected a valid value (number, String, array, object, ‘true’, ‘false’ or ‘null’)
at [Source: (byte[])”‘{}'”; line: 1, column: 2] (Service: AWS
サーバー構成とは。サーバー構成を聞かれたら。(AWS編)
#はじめに
未経験でのエンジニア転職活動を初め、準備をしている中でよくある質問集をみていました。
その中の一つにこれは答えられないし、確かめないと!と思った内容がありました。『ポートフォリオのサーバー構成を教えてください。』
サーバー構成???独学でもスクールで学んだ時も、サーバー構成なんて深く気に留めたことはなかったので、何をどう答えたらいいのかわかりませんでした。(お恥ずかしい)
サーバー構成を聞かれたら で早速Google検索。以下のように同じような質問をなさっている方がいました。
https://teratail.com/questions/15235回答として、
`自前/レンタル`
`OSとバージョン`
`CPUとメモリ(わかれば)`
`SSLの有無(場合により)`
`使用できる言語のバージョン (PHPなど)`
`データベースの種類`
などを意味しているらしく、この辺りを把握して答えられればいいらしい…らしい…加えて、PCに詳しい父親にサーバー構成とはなんぞや。と尋ねたところ、
「どこの部分に対してのサーバー構成について尋ねられてるかによる。」
だそ
CodeBuildでバッチビルド(並列ビルド)を導入しようとしたけどできなかった話
# 概要
元々、単一のLambda関数のビルドからデプロイまでをCodeBuildを利用して行っていたのですが、Lambda関数をいくつか追加する要件が発生したため、一つのCodeBuildから複数のアプリケーションをビルドし、それぞれのLambda関数にデプロイをできるように変更しました。
この時点では特にデプロイ時間も気にならないほど速かったため直列でビルドする定義で設定を行いました。並列ビルドも考えたのですが、これを行うためにはCodePipelineでビルドステージを複数作る必要があり、インフラ定義もいじらないといけないため、作業ボリュームが見合っていないと感じたため実施しない判断をしました。しかし、2020/7/30に「[AWS CodeBuild がビルドプロジェクトの並列実行と協調実行のサポートを開始](https://aws.amazon.com/jp/about-aws/whats-new/2020/07/aws-codebuild-now-supports-parallel-and-coordinated-executions-of-a-build-proje
Blue/GreenデプロイメントではRoute53の加重ルーティングを使うといいらしい
Blue/Greenデプロイメントすらもわからなかったので
自分の知識として。## Blue/Greenデプロイメントとは
従来のアプリと新バージョンのアプリ(テスト済み)を構築し、
ダウンタイムなしに従来のアプリから新アプリに切り替えていく方法。参考:[「Blue-Green Deployment」とは何か、マーチン・ファウラー氏の解説](https://www.publickey1.jp/blog/14/blue-green_deployment.html)
## AWSで実現するBlue/Greenデプロイメント
Blue/Greenの構築方法は下記のawsのドキュメントがある。
[AWS のブルー/グリーンデプロイ](https://aws.amazon.com/jp/quickstart/architecture/blue-green-deployment/)その環境をRoute53でルーティングし、加重ルーティングすることで新バージョンのテストもできるらしい。
(aws SSA-C02の勉強にて学んだこと)
AWS EC2 AmazonLinux2インスタンスにMailCatcherを導入する
# 目的
– MailCatcherの実装方法をまとめる。
# 前提条件
– 下記、または下記に準ずる方法でCentOS7のPCが構築されていること。
– [Cent0S7をPCにインストールする](https://miriwo.hatenablog.com/entry/2020/08/09/144030)# 前提情報
– 本説明で実行するコマンドは特筆しない場合、CentOS7のPCにssh接続を行い実行する物とする。
# 読後感
– MailCatcherを起動しブラウザから確認することができる。
– 筆者は下記作業後のインスタンスに対しMailCatcherの導入を実施する。
– [AWS EC2 AmazonLinux2だけでLaravelのアプリをデプロイする](https://qiita.com/miriwo/items/b39d1ac6289c54cc2cfd)
– `http://インスタンスのグローバル(パブリック)IPv4アドレス:1080`でMailCatcherをブラウザで表示することができる。# 概要
1. インスタンスの
TypeScript + Jestでaws-sdkをmockする
## この記事について
最近よくTypeScriptでAWSのリソース操作を行うのですが、動作確認を行うたびにリソースを作ったり消したりするのが面倒くさいと感じていました。
ましてやユニットコードなんて書いてもその時のリソース状況にがっつり依存するなあ・・・と少しナイーブになっていました。そんな中、最近やっとaws-sdkのモック化に成功したのでメモとして残しておきます。
動作確認元のDynamoDBテーブル定義や詳細は[この記事](https://www.ooooouchi.info/entry/2020/09/04/094500
)を参照してください。
CloudFormationの内容と実プロジェクトのリポジトリを記載しています。## Jest
https://jestjs.io/
Facebook製のテストフレームワークです。
概要や基本的な書き方は[この記事](https://qiita.com/chimame/items/e97883fd46b67529d59f)が参考になります。## Jest導入
“`sh
yarn add jest @types/jes