- 1. スマホにAWS Consoleアプリをインストールして課金状態などを確認する
- 2. AWS EC2インスタンスからのS3のバケットとElastiCasheのRedisへ疎通確認をする
- 3. AWS は ”銀行” に例えるとわかりやすい説 ②
- 4. そんな請求アラート設定で大丈夫か? 大丈夫だ 問題ない 10万円溶かす
- 5. [UE4] DedicatedServer を Windows と Linux で構築する
- 6. iOSアプリ開発者がAWS認定ソリューションアーキテクト(SAA-C02)を取得した際の備忘録・AWS小ネタまとめ
- 7. アレクサスキルを開発したときのリアルタイムメモ
- 8. [AWS]SessionManagerを踏み台の代わりに利用する
- 9. Amplify でサインアップしてきたユーザーを特定のグループに自動で追加するようにする
- 10. AWS S3に保存しているファイル名を取得する(1000件以上)
- 11. サーバレス ServerlessFramework・API Gateway・Lambda・DynamoDB・TypeScript・Express ページングありの掲示板をつくった ローカルで試せる
- 12. たった1人でEC2&RDSのバックエンドをLambda&DynamoDBに移行した話
- 13. Amazon SES でプライベートサブネット内からメールを送信する際の注意点(2020年11月時点)
- 14. Laravel + AWS S3で画像アップロードを行う
- 15. 推論をFargateで実行する
- 16. 独自のコンテナを作り、ECRに登録する
- 17. kaggleをAWS/SageMakerで実践する
- 18. 自前のXGBoostコードをSageMakerコードに変換する
- 19. 自前のKerasコードをSageMakerコードに変換する
- 20. LightGBMをSageMakerの独自コンテナで実行する
スマホにAWS Consoleアプリをインストールして課金状態などを確認する
AWSの課金情報はSlackに飛ばしているものの、こまめに確認することが必要だな、と実感する出来事がありました。
それは別記事で書くことにして・・・。手持ちのSmartphone(iPhone)にAWS Consoleを入れたので、備忘として記載します。
## インストール〜認証
App Storeを起動して、**aws console**で検索。
出てきました。
**入手**を押してインストールします。
![20201103_IMG_2941.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244560/471456b8-93a6-22d6-f6ea-9231309845a4.png)
インストールが完了したらアプリを起動します。
![20201103_IMG_2942.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244560/5253d21e-2c94-73d1-e23c-d7a10021b9d9.png)
AWS EC2インスタンスからのS3のバケットとElastiCasheのRedisへ疎通確認をする
# 目的
– 疎通確認方法のメモを記載する。あくまでも方法の一つを紹介するものであり本方法で確認できないもしくは不十分な場合もある。
# 詳細
1. S3疎通確認
1. EC2インスタンスにssh接続して下記コマンドを実行する。当該インスタンスから接続可能なS3バケットの一覧が表示されるので一覧の中に接続先のバケット名があればインスタンスからバケットが見えていることになる。“`terminal
$ aws s3 ls
“`
1. ElastiCasheのRedis疎通確認
1. EC2インスタンスにssh接続して下記コマンドを実行する。当該インスタンスからElastiChaseのRedisへログインすることができればインスタンスからElastiCasheのRedisに通信ができていることになる。“`terminal
$ redis-cli -h ElastiCasheのエンドポイント
“`
AWS は ”銀行” に例えるとわかりやすい説 ②
前回の記事は[こちら](https://qiita.com/souhub/items/e7bf33513f60fa4e9e8e)です。①の設定をそのまま引き継いでいます。(オマケはやっていない状況です。)
前回までは Availability Zone A にしかサブネットがなかったので、銀行員も A にしかいませんでした。なので Availability Zone C にも受付と銀行員を追加していきます。
この続きでマルチAZ化していきます。## WebサーバーのマルチAZ化 (受付窓口と銀行員の数を増やす)
窓口が1つだけではこの銀行員が急に倒れてしまったりした時、お客さんに対応できなくなってしまいます。そこで受付場所をもう一つ増やして、そこにもう一人銀行員を配置することにします。すなわち受付窓口が2つで銀行員が2人いる銀行にします。
また、新しくロードバランサが出てきます。これは受付の状況を常に把握し仕事を2人の受付役の銀行員に振り分ける現場監督のような存在です。
新しく増やすものと銀行に置き換えた時の役割の対応は次の通りです。| AWS | 銀行 |
|:——-
そんな請求アラート設定で大丈夫か? 大丈夫だ 問題ない 10万円溶かす
# 事の始まり
今回2回目の高額請求です!
前回はRDSの起動しっぱなしで起きました。
![スクリーンショット 2020-10-30 1.32.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/516091/fd6f187a-338a-5c1c-2d15-827607c95e5f.png)Billingの設定で請求アラートを設定すれば、よいと学んだので、その設定をしました。
しかし…
SlackやLINE, 電話で事足りる世の中になり、メールを見なくなる毎日。
そして、今回事件が起きました…。
![スクリーンショット 2020-10-30 1.01.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/516091/aabbdd36-5db0-b0e3-48fe-52d335810a0d.png)たすけてー AWSの偉いひとー。
メール通知だけだと、ダメだと思い知ったので、一番良い請求アラートの
[UE4] DedicatedServer を Windows と Linux で構築する
Linux で DedicatedServer 建てたいよォ!
ということで、いろいろ試したことをメモしておきます# この記事は
+ UE4.25 で確認します
+ AWS EC2 を利用します
+ C++ビルド環境が必要です# Windows環境で動作を確認する
まずはエディタ上で動作することを確認しましょう
![3aa51d51363dc4d28f0666adec0ef373.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41105/e817382f-bcd2-4d83-ba2e-5834b963f51f.png)
[選択ビューポート] x [スタンドアローンゲーム] x [Play Offline] x [Play As Client] x [プレイヤー数]
これらの組み合わせをそれぞれ動作確認するので、結構タイヘン。。## エディタ外部からの起動
PIEで起動すれば全てのサーバー、クライアントのプロセスをトレースできます
これはこれで便利ですが、CLI1, CLI2, SERV と複
iOSアプリ開発者がAWS認定ソリューションアーキテクト(SAA-C02)を取得した際の備忘録・AWS小ネタまとめ
## はじめに
今夏のコロナの影響もあって一時だけリモート勤務になり
所属する会社のサポートで[Architecting on AWS](https://aws.amazon.com/jp/training/course-descriptions/architect/)の
オンライントレーニングを受講しました。せっかくなのでAWS認定ソリューションアーキテクト
(SAA-C02)を取得してみましたという備忘録と
モバイルアプリ開発にも関連したAWSまわりの小ネタをメモまでに。![aws-certified-solutions-architect-associate (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6691/d266e20b-9ed1-90bc-48a6-2beeb3dee94b.png)
## AWSとの関わりレベル
* 普段はiOSメインで開発
* 担当案件のバックエンドはAWSで各リソースがどんな働きかを広く浅く知ってる程度
* サーバーサイドは大昔にオンプレでインフ
アレクサスキルを開発したときのリアルタイムメモ
赤外線
http://www.optdevice.jp/ir/obniz IR LED
https://obniz.com/sdk/parts/InfraredLED/README.md赤外線リモコンのフォーマット
https://os.mbed.com/users/shintamainjp/notebook/remote_ir_ja/
http://elm-chan.org/docs/ir_format.htmlアレクサスキル
https://medium.com/crowdbotics/how-to-build-a-custom-amazon-alexa-skill-step-by-step-my-favorite-chess-player-dcc0edae53fbオペアンプ
https://akizukidenshi.com/catalog/g/gI-09406/ad
https://developer.amazon.com/en-US/docs/alexa/custom-skills/understanding-custom-skills.html
smar
[AWS]SessionManagerを踏み台の代わりに利用する
踏み台サーバの構築、運用はそれなりに面倒ですが、
AWS SystemsManagerの「SessionManager」を利用すると
同様の事が簡単に行えます。踏み台サーバに比べて制限もあるので完全に代替は出来ませんが
多くのケースでは十分では無いかと思います。
Windows,Linuxをサポートしており、とても便利なサービスなのでご紹介です。## SessionManagerの良い点
* IAMを利用した一元的なアカウント管理、アクセス制御が出来る
* 踏み台サーバの構築が不要。
* パブリックIPアドレスが不要でEC2にアクセスが可能
* インバウンドポートを開く必要が無い、SSHキー管理も不要
* アクセスログ、操作ログの記録監査が容易
* 無料良い点は色々ありますが個人的には面倒なアクセスログ、操作ログの
記録、監査が簡単に出来る点がとても魅力的だと思います。
個人学習用途では費用のかかるパブリックIPが不要になるところもいいですね。## SessionManagerの導入
導入は以下の流れになります。詳細は環境によって異なるので公式ドキュメントを参照ください。
Amplify でサインアップしてきたユーザーを特定のグループに自動で追加するようにする
# はじめに
とあるアプリケーションで、管理者ユーザーと一般ユーザーとで提供する機能を分けたいと思った時に、どう実現するのが良いか調べたら、Cognito ユーザープールのグループ機能を使って権限管理すると良いらしいということだったので、Amplify でその辺を自動構成する方法を調べました。
以下のような運用を考えていました。
1. 一般ユーザーはアプリケーションからサインアップできるようにしたい
2. 管理者ユーザーは数人なので Cognito ユーザープールに直接追加すれば良いサインアップを利用するのは一般ユーザーなので、サインアップしてきたユーザーは一般ユーザー用のグループに自動で追加するようにします。
# amplify auth add
`amplify auth add` コマンドを実行して、以下のように選択していきます。
グループへの自動追加の構成以外はデフォルト値をそのまま選んでいます。
“`sh
$ amplify auth add
“`“`
Do you want to use the default authentication an
AWS S3に保存しているファイル名を取得する(1000件以上)
# やりたいこと
AWS S3のとあるバケットのとあるフォルダ以下に保存しているファイル名を全て知りたい。
このとき、とあるバケットのとあるフォルダ以下にはファイルが1000件以上ある。**注意点**
list_objectは1000件までしか取得しないので、ファイル情報を取得する処理を工夫する必要がある。## 方法
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html
に記されている通り。# コード
※awsのコンフィグは設定しておく。
※python3で実行する。“`python:sample.py
import boto3MY_REGION = ‘リージョン名’;
MY_BUCKET = ‘バケット名’;# バケット以下のディレクトリ
TARGET_PATH = ‘tmp/YYYY/MM/DD/’;client = boto3.client(‘s3’, region_name=MY_REGION)
paginator = client.get_pa
サーバレス ServerlessFramework・API Gateway・Lambda・DynamoDB・TypeScript・Express ページングありの掲示板をつくった ローカルで試せる
## 成果物
https://serverless.itsumen.com※アタックしてクラウド死を狙う奴が出てくるからバックエンドは格安のVPSを使っている。
## リポジトリ
https://github.com/yuzuru2/aws_serverless_framework
## ローカル開発環境セットアップ
Javaをインストールしておく
“`bash
$ git clone https://github.com/yuzuru2/aws_serverless_framework.git serverless
$ cd serverless#フロントエンド起動
$ cd frontend
$ npm i
$ npx sls dynamodb install
$ npm run dev#バックエンド起動
$ cd backend
$ npm i
$ npm run dev#初期データを入れたい場合
$ cd backend
$ npm run init
“`
http://localhost:8080 にアクセスする## 使用ライブラリ周り
たった1人でEC2&RDSのバックエンドをLambda&DynamoDBに移行した話
先日お仕事でスマホアプリのバックエンドを移行する機会をいただきました。
システムのフルリニューアルは初めての経験だったので色々と学びが多くありました。
せっかくなので知識を共有したいと思います。# サマリー
## 概要
こんな感じのプロジェクトでした。– 開発期間 9ヶ月
– 体制 1人開発
– API数 約100
– バッチ数 約10
– その他の移行対象(DBデータ,管理コンソールetc)## 移行の目的
バックエンドの移行の主な目的は以下でした。– 内製化によって開発速度を上げる
– 内製化するために社内のスキルセットに合う言語・アーキテクチャにする
– AWSコストの削減## 移行前後の違い
|| 移行前 | 移行後 |
|—|—|—|
|実行環境|EC2|Lambda & Api Gateway|
|フレームワーク|Rails|なし|
|メインDB|RDS(PostgreSQL)|DynamoDB|
|バッチの仕組み|Rails(SideKiq)|AWS Batch/Lambda|# 実作業前の準備
## 現状把握
私は移行対象の元のシス
Amazon SES でプライベートサブネット内からメールを送信する際の注意点(2020年11月時点)
## はじめに
DX 技術本部 の yu-yama です。
ややハマりしたので、同じ楔を踏む人が減ることを祈り、UP します。## TL;DR
AWS SDKではなく、[SMTP インターフェイス](https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/send-using-smtp-programmatically.html)を使用して送信しましょう。
2020年11月現在、 AWS SDK の Amazon SES API を用いて Amazon SES のメールを送信することはできません。## Amazon SES が東京リージョンにきました
![sesmail.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534812/85281b20-8064-72b3-c332-ff38b3f943f2.png)
[Amazon SES 東京リージョン対応のお知らせ \| Amazon Web Services ブログ](https
Laravel + AWS S3で画像アップロードを行う
# はじめに
現在作成中のアプリケーションにて、画像をアップロードできるようにしようと思います。
そこで今回、Laravel + AWS S3で画像アップロードの処理を実装したので簡単にご紹介します。# 流れ
やることは大きく分けると2つ(AWS側の設定とLaravel側での設定+実装)***1.AWS側の設定***
– S3でバケットを作成
– S3の権限を持ったIAMユーザーの作成***2.Laravel側の設定+実装***
– AWSの認証情報を.envに記載
– S3のパッケージをインストール
– 処理の実装(すでに画像URL保存用のカラム追加済み)# S3とは?
初めてS3を触る人からしたら、S3ってなんぞやと思いますので軽くまとめます。> Amazon Simple Storage Service はインターネット用のストレージサービスです。また、ウェブスケールのコンピューティングを開発者が簡単に利用できるよう設計されています。
Amazon S3 のウェブサービスインターフェイスはシンプルで、いつでも、ウェブのどこからでも容量に関係なくデータを格納
推論をFargateで実行する
正直、Fargateもサービス仕様の変更が著しいため、SageMakerの利用をおすすめします。
(SageMaker専門家は、Fargateに詳しくない可能性があり、ベストのアーキテクチャを描けない可能性がある)
SageMakerではなく、Fargateで推論を実施する場合<参考>
[初心者向け]言われるままにFargate初めて触ったので、忘れないための記録
https://dev.classmethod.jp/cloud/aws/fargate-my-first-step/【AWS ECS】タスク実行時のキャパシティープロバイダーを設定する【2019/01】
https://qiita.com/tegnike/items/64f7ba9501144bf6bb17![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/575432/5b64d496-d4e9-39cd-8d5d-af63fbe1eb49.png)
なんでAWSのエラーメッセージはこんなにも意味不明なんだ。
独自のコンテナを作り、ECRに登録する
SageMakerであらかじめインストールされていないライブラリを使いたい場合、
prophetなど。
ライブラリインストール済みのコンテナを作りたいときがあります。
(既存コンテナで起動時にインストールしてもよい??)どのようにカスタムコンテナの環境を用意し、ECRに登録すればよいのでしょうか?
1.EC2を作成する
AWSのEC2でインスタンスを作成する手順
https://qiita.com/Quikky/items/2897573a42fd71cfc47fサブネット
IAMロール
セキュリティグループ
の設定は忘れずに!2.コンテナイメージを作成する
dockerコマンド実行時の「Got permission denied while trying to connect to the Docker daemon socket」AmazonECRとEC2を使って手元でビルドしたDockerイメージをAWS上でサクッと動か
kaggleをAWS/SageMakerで実践する
# Kaggleを一人でやることの苦しみ
自分のプログラムが合っているのか、不安になる。。
CVの組み方すら間違っていたら、指針が全てパーソロ金とったことないが、とるなら2-3ヶ月は時間とって集中しないと難しい感覚。
(1ヶ月では無理だった。ソロ銀)・リサーチの時間が足りない
・実装の時間が足りない
・検証の(以下略)圧倒的な実装力 + 最短の最善手を選ぶセンス が必要。
(一人だと時間が足りないので、できれば3ヶ月前から参加する)# 2020/7/1 M5感想
https://www.kaggle.com/c/m5-forecasting-accuracy・検証を効率的に実施するために、MLパイプラインの整備は重要。
・モデリングはデバッグが難しい(コード的には通るので発見しにくい)ので、
なるべく自分のコードを書かないよう、既存のライブラリを有効活用しながら、進める必要がある。
・スパースな時系列は本質的に予測が難しい(ポアソンlossを利用)
・平均の寄与度が高かった。
・recursive forecastはやめたほうがいい。day to day model
自前のXGBoostコードをSageMakerコードに変換する
PoCやKaggleで書くコードを、SageMakerで仕組み化する場合にどうコードを変換するのかわかりにくかったので、まとめる。
# 変換前
乳がんの二値分類をXGboostを用いて判別したコード。
[こちら](https://blog.amedama.jp/entry/2019/01/29/235642)のサイトを参考にさせていただいた。“`py
#!/usr/bin/env python
# -*- coding: utf-8 -*-import xgboost as xgb
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score“””XGBoost で二値分類するサンプルコード”””
# 乳がんデータセットを読み込む
dataset = datasets.load_breast_cancer()
x, y = dataset.dat
自前のKerasコードをSageMakerコードに変換する
前回に引き続き、MLPをKerasで構築した場合、SageMaker用にどう変換するのか、記載していく。
Neural Netの場合は、
・変数のスケーリング[0,1]が必要
・欠損値の補完が必要
・カテゴリ変数はone-hot-encodingする
等の前処理が必要になる。# 自前のKeras
“`py
from keras.layers import Dense, Dropout
from keras.models import Sequential
from sklearn.metrics import log_loss
from sklearn.preprocessing import StandardScaler# データのスケーリング
scaler = StandardScaler()
tr_x_scale = scaler.fit_transform(tr_x)
va_x_scale = scaler.transform(va_x)
test_x_scale = scaler.transform(test_x)# ニューラルネットモデルの構築
model
LightGBMをSageMakerの独自コンテナで実行する
元ネタの通りに実行したところ、いくつかつまずくポイントがあったのでメモ
# 元ネタ
Amazon SageMakerでLightGBMが使えるコンテナイメージを作ってみた
https://dev.classmethod.jp/articles/sagemaker-container-image-lightgbm/# やりたいこと
[こちらのXGBoost](https://qiita.com/Roe/items/2b760c908c4dadcfe098)のLightGBM版(下記)を、SageMakerで実行する。ビルトインコンテナではLightGBMは対応していないため、カスタムコンテナが必要。“`py
# SageMaker ノートブックインスタンス上で実行する場合、LightGBMをインストールする必要がある。
!pip install lightgbm
“`
lightgbmをインストールしたら、ノートブックインスタンス上でも以下のコードを動かすことができる。“`py
#!/usr/bin/env python
# -*- coding: utf-8 -*-