- 1. The PutObject operation requires non-empty parameterのエラー対応について
- 2. .NET5.0製のREST APIサーバーを、AWS CodePipelineでビルドしてコンテナ化してECSでデプロイする。
- 3. ALBでCookieをもとに公開範囲を限定する
- 4. EC2サーバー構築の概要【備忘録】
- 5. AWS EC2を自動的にバックアップを取って復元させる方法
- 6. AWSにデプロイ後、Vueファイルの更新が反映されない時の対処法
- 7. 社内ルーターのログをEC2に転送してみた
- 8. リアルタイム機械学習推論におけるインフラストラクチャのデザイン
- 9. AWS SSMでFTPソフトを使用して、ローカルマシンからPrivate EC2へファイル転送
- 10. Amazon s3 にIPアドレス制限をかけるときの注意点
- 11. Terraform/TerrafomrerでAWS既存リソースをインポートする
- 12. Lightsail 上の WordPress に ads.txtを導入する
- 13. 【AWS】AWSを勉強していく中で「?」ってなった単語をまとめていく② -EC2編-
- 14. awsロードバランサー http https利用方
- 15. codebuildでdockerをビルドした時にrate limitsが表示された件
- 16. Amazon CloudWatch LogsのデータをS3にExportする時にハマった
- 17. cloudwatch agent と logs の違い
- 18. AWS Data WranglerをAWS Access keyとSecret Access Keyを使う方法
- 19. ServerlessFrameworkを触ってみた
- 20. LambdaでS3のPDFを画像化して保存(Docker,Python)
The PutObject operation requires non-empty parameterのエラー対応について
下記の記事を参考にs3へ画像を保存する途中でThe PutObject operation requires non-empty parameterのエラーが出たのでその対処法です。
https://qiita.com/nakasan773/items/9436e9b1c60831120aba
##参考にした記事
https://stackoverflow.com/questions/64751415/the-putobject-operation-requires-non-empty-parameter
##確認手順
https://qiita.com/nakasan773/items/9436e9b1c60831120aba
上記記事を参考にcomposerで必要なものを入れたりバケットを作ったり.envを書き換えます。
その後、
“`php
php artisan config:cache
もしくは
php artisan cache:clea
.NET5.0製のREST APIサーバーを、AWS CodePipelineでビルドしてコンテナ化してECSでデプロイする。
先日、個人で開発している.NET5.0製のREST APIサーバーをAWS上で動かすにあたり、コンテナ化してECSで管理することにしました。AWSが用意してくれている仕組みに頼ることで、高い品質と高い作業効率を両立できるためです。
この記事では、その際行った設定の概要と設定について記載します。
# 概要
## 構成と作業の流れ
APIサーバーの構成は下記のようになります。
Internet → CloudFront → EC2(ECS管理) → RDS
参照専用のAPIのため、CloudFrontでキャッシュが利くようにしています。それ以外はAPIサーバーでよく用いられる構成と思います。
このうちの”EC2(ECS管理)”とある個所で、.NET5.0製のコードを動かす。それが今回の目的です。作業の流れは次のようになります。
1. GitHub上のコードを取得する
2. 取得したコードをビルドし、さらにコンテナ化する
3. 作成したコンテナをデプロイするこの3点をAWS CodePipelineで実現しました。
# 設定の実際
## CodePip
ALBでCookieをもとに公開範囲を限定する
# はじめに
サービスを開発していると、社内の人だけ見れるように公開したいということが多くあると思います。
その際に、接続元のIPをNetwork ACLやSecurity Groupで絞ってアクセスを制限するという方法があります。これは、社内ネットワークがしっかり構築されていてIPが統一されればいいですけど、そうでない場合各自のIPを許可していくのは面倒かなと思います。
そこでCookieでアクセスを絞れば各自ブラウザにセットするだけでいいので良いかなと思いました。それを実現するために行ったことを記載します。
# ALBのリスナールールを利用する
アクセスの制限はALBのリスナールールで行います。
リスナールールについてはこちら
https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/listener-update-rules.html– host-header
– http-request-method
– path-pattern
– source-ip
– htt
EC2サーバー構築の概要【備忘録】
#はじめに
AWSの仮想サーバー構築用クラウドサービス「EC2」を用いて、PHPサイトを立ち上げた時に調べたことのまとめ。
全体の流れ・用語等についての記事であるため、具体的な手順については割愛しています。#目次
– 全体の流れ
– 項目別の詳細
– 用語
– 参考文献#全体の流れ
1. AWSにサインアップ
1. EC2インスタンスを作成
1. インスタンスをSSH接続で操作する
1. Apache・PHP・MariaDBをインストール
1. テスト用PHPファイルをアップロード
1. Elastic IPを割り当て
1. 各種設定を変更#項目別の詳細
####1. AWSにサインアップ・2. EC2インスタンスを作成
手順通りに進めるだけなので割愛。
####3. インスタンスをSSH接続で操作する
作成したインスタンスを操作する際には、端末からSSH接続をする。
SSHクライアントとして、今回はTera Termを使用する。
接続画面ではホストにパブリックDNS、ユーザーにec2-user、認証方式にSSHを選択し、インスタンス作成時に取得した秘密鍵を指定する
AWS EC2を自動的にバックアップを取って復元させる方法
EC2のライフサイクルマネージャーを使うと、スナップショットを定期的に作成することができます。設定方法と復元方法の手順を解説します。
流れ的には
(1) ライフサイクルマネージャーでスナップショットを作成
(2) スナップショットからAMIを作成、AMIからEC2を作成
となります。
急に言われても無理なので事前に練習しておきましょう。# 手順
## (1) EC2インスタンス
今回のケースはWindowsのインスタンスで、Cドライブ30GB、Dドライブ40GBを使います。
## (2) ライフサイクルポリシーを作成
EC2のライフサイクルマネージャーを選びます。
AWSにデプロイ後、Vueファイルの更新が反映されない時の対処法
#EC2内のvueファイルを更新しても、ブラウザに反映されない。
既にAWSにデプロイ済みのLaravelで作成したプロダクトについて、git pullで変更点をEC2に持って来た際に、ファイル内のコードは変更が反映されているのに、ブラウザで見ると反映されない事態が発生しました。
phpのファイルは問題なく変更が反映されているのに、なぜvueは反映されないのか。
ローカルで確認すると、期待通りに表示できています。#結論 app.jsの中身が更新できていませんでした。
よくよく確認するとmargeが前後した関係で、app.jsが古い状態になっていました。レアケースかもしれませんが、一応シェアしておきます。
社内ルーターのログをEC2に転送してみた
# やりたいこと
* 社内で使用しているYamaha RTX1200のログをEC2に転送したい# 環境
* Windows10
* Teraterm Ver4.105
* RTX1200
* AmazonLinux2# 前提知識
* AWSでVPCおよびVPNを作成できること
* Vim等のLinuxの基本操作ができること# 構成図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/730991/21c15f1e-14ce-84b4-31d0-8fb4e009e4f9.png)
> [Yamaha公式サイトより引用](https://network.yamaha.com/setting/router_firewall/cloud/amazon_vpc/setup_rt)
# 手順
* RTX1200を初期化“`RTX1200
# cold start
Password:
RTFS formatting… Done.
Restarting …
“`* RT
リアルタイム機械学習推論におけるインフラストラクチャのデザイン
[Infrastructure Design for Real\-time Machine Learning Inference \- The Databricks Blog](https://databricks.com/blog/2021/09/01/infrastructure-design-for-real-time-machine-learning-inference.html)の翻訳です。
> この記事は、HeadspaceのシニアソフトウェアエンジニアであるYu Chenによるものです。
[Headspace](https://www.headspace.com/)のコア製品は、マインドフルネス、瞑想、睡眠、エクササイズ、フォーカスコンテンツを通じてユーザーの健康、幸福を改善することにフォーカスしたiOS、Android、webベースのアプリケーションです。ユーザーの生涯の旅において、一貫性のある習慣を確立するために、適切かつパーソナライズされたコンテンツをレコメンデーションすることで、ユーザーのエンゲージメントを高めるために、機械学習(ML)モデルは我々のユーザー体
AWS SSMでFTPソフトを使用して、ローカルマシンからPrivate EC2へファイル転送
## これは何
AWS SSMでCyberduck(FTPクライアントソフト)を使用して、Private EC2へファイル転送してみました。
FTPソフトはWinSCPとか他のでもいけると思います。(動作検証はしてませんが)## 早速やってみた
**IAMロールを作成**
AmazonSSMManagedInstanceCore ポリシーを含むロールを作成![スクリーンショット 2021-09-10 16.26.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1740345/028bf891-92f7-dc59-7be4-65904bdd9ef0.png)
**EC2へアタッチする**
先ほど作成したロールをEC2にアタッチします。
**AWS CLI v2のインストール、configureコマンドで情報入力**
今回は、direnvを使用し、環境変数を定義しました。
こんな感じで“`
export AWS_ACCESS_KEY_ID=””
export AWS_SECRE
Amazon s3 にIPアドレス制限をかけるときの注意点
##目的
災害対策として、オンプレサーバのバックアップを、クラウドにも保存する。いわゆるディザスタリカバリ。
###クラウドサービスの選定
Amazon s3を選定。理由は、オンプレサーバのバックアップ先(NAS)にs3と連携できる機能が標準で付いていたため。
###ざっくりな流れ
AWS側でs3バケット作成
↓
オンプレ側でs3への接続設定##s3バケット作成
妙な言い回しでひっかかる設定項目があったが、既に先人の知恵がございましたので、ここでの説明は割愛。
そして先人に盛大なる感謝。
[S3のブロックパブリックアクセスが怖くなくなった](https://zenn.dev/ymasutani/articles/019959e7c990b1)
セキュリティを確保するため、オンプレサーバのグローバルIPからs3へのアクセスのみ許可するようなポリシーを設定します。(JSON形式で)
“`
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Deny”,
Terraform/TerrafomrerでAWS既存リソースをインポートする
## はじめに
Terraformを使ってみると`Terraformでコードを書く` よりも `既存リソースをTerraformにインポート`することが結構あります。
公式のドキュメントを読めばやり方はわかります。ただ、少しわかりづらい箇所もあるので細かい部分も説明しながらインポート手順を説明していきます
## 前提
* AWSアカウント作成済
* AWSリソース作成済(今回は[こちらの記事](https://qiita.com/YK0214/items/59bc0e5ae89f68af74b3)で作成したlambda関数をリソースとして使用します。他のリソースでも構いません)
* terraform インストール済 (参考: https://dev.classmethod.jp/articles/beginner-terraform-install-mac/)
* terraformer インストール済 (参考: https://beyondjapan.com/blog/2020/05/terraformer-import-existing-infrastructur
Lightsail 上の WordPress に ads.txtを導入する
# はじめに
[Amazon Lightsail](https://aws.amazon.com/jp/lightsail/) 上の WordPress に Google Adsense の設定ファイル (ads.txt)を導入します。
導入しないと、以下のようなエラーが出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/0f9a7547-f524-8efa-ace8-c5b98b5157ac.png)
# 手順
## ads.txtファイルのダウンロード
Google AdSense のダウンロードリンクからads.txtをダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/0f9a7547-f524-8efa-ace8-c5b98b5157ac.png)
ads.txtを開くと次のような1行が書いてあります。
“`te
【AWS】AWSを勉強していく中で「?」ってなった単語をまとめていく② -EC2編-
#前回の続き
https://qiita.com/nao0725/items/618ac7efc72db923a1fc
#目的
* 自分用のメモ
* 単語の意味と役割を掴んでイメージを把握する#EC2を運用する上で出てきた単語
##EC2
* Amazon Elastic Compute Cloud
* AWSのクラウド上でサーバーを実行するためのサービス
* 単一ではなく複数の仮想サーバー(インスタンス)を実行する
* EC2を利用することで、OSを乗せた仮想環境をクラウド上にすばやく作ることができるhttps://techplay.jp/column/537
##インスタンスタイプ
* 用途別に集められた「インスタンスファミリー」と、CPUなどのスペックを示す「インスタンスサイズ」から構成されている
* インスタンスファミリーの数字は「世代」を表していて、数字が大きければ大きいほど新しい###インスタンスファミリー
* 「汎用」「コンピューティング最適化」「メモリ最適化」「高速コンピューティング」「ストレージ最適化」の5種類に分類される
* それぞれ
awsロードバランサー http https利用方
AWSでSSL化の際httpアクセスをhttpsへリダイレクトするしないのロードバランサー(リスナー)の設定
リダイレクトさせる設定
リダイレクトさせない設定
参考記事:https://qiita.com/
codebuildでdockerをビルドした時にrate limitsが表示された件
# 概要
2020年10月からdocker hubのリポジトリからpullする時に未ログインした状態でpullすると任意のIP単位で制限をかけるような仕様を追加した。
これを解決するにはdocker loginをするしかない。
また、code buildはawsのマネージドサービスで動いているため、数回動かしただけでrate limitsエラーが表示されてしまう。
このエラーを回避するためにはcode buildのbyildspec.yamlでコンテナをビルドする前にdocker loginをする必要がある。詳しくは以下。
https://www.docker.com/increase-rate-limits?utm_source=docker&utm_medium=web%20referral&utm_campaign=increase%20rate%20limit&utm_budget=
https://docs.docker.com/docker-hub/download-rate-limit/
https://aws.amazon.com/jp/blogs/devo
Amazon CloudWatch LogsのデータをS3にExportする時にハマった
# はじめに
AWSのログサービスである「Amazon CloudWatch Logs」内のテキストログをダウンロードするためにS3にエクスポートしようとした際に、しょーもないことでハマったので共有します。# TL;DR
Exportするログの期間をちゃんと指定しよう。# ハマったこと
![Screen Shot 2021-09-10 at 23.12.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534248/f521d343-a6a5-eab7-4da0-2d642c134e4c.png)CloudWatch Logsのコンソールから `Export data to Amazon S3` を選択すると上記のような画面に飛び、ここでログのExportの設定ができる。各設定項目は以下の通り
| 項目 | 内容 |
| — | — |
| Stream prefix | ExportするLog stream名 |
| S3 bucket name | Export先のS3のバ
cloudwatch agent と logs の違い
## 勉強前イメージ
agentはEC2にインストールしてとるやつ
logsはただ単にログ監視?それともagentからとってくる値???## 調査
### cloudwatch agent とは
cloudwatchではCPUなど見れますが、
メモリやディスク容量などは見ることが出来ません。
その際に使用されるのが、clodwatch agentになります。
こちらはエージェントをEC2インスタンスにインストールし、データを取得します。### cloudwatch logs とは
EC2やCloudTrail、Route53などから
ログファイルをモニタリングし、保存することが出来ます。
cloudwatch logsで使用中のサービスの各ログを一元管理することが出来ます。
また、ダッシュボードでのログデータのし可視化も出来ます。## 勉強後イメージ
詳細まで見てないし、表面上しか見てないけど
agent → サーバ内に入って詳細を取得
logs → サービス全体からログを収集
って感じがする。
これ見てて、cloudwatch の標準・詳細・カスタムがあやふやに
AWS Data WranglerをAWS Access keyとSecret Access Keyを使う方法
AWS Data WranglerでAWS アクセスキーとシークレットアクセスキーを使う方法が見つからなかったので、コード見てみました。
`s3.read_parquet()` や `athena.read_sql_query()` など、だいたいのメソッドのには `boto3.Session` を引数で渡せます。
“`python
def read_sql_query(
# —-省略 —-
boto3_session: Optional[boto3.Session] = None,
# —-省略 —-
) -> Union[pd.DataFrame, Iterator[pd.DataFrame]]:
“`
> 引用元 : https://github.com/awslabs/aws-data-wrangler/blob/2.11.0/awswrangler/athena/_read.py#L607例えば `athena.read_sql_query()` で言えば以下のように書けばAWS Access KeyとAWS Secret Access
ServerlessFrameworkを触ってみた
ServerlessFrameworkのインストールから基本的な設定・操作方法を確認していきたいと思います。
今回はAWSをプロバイダとしてPython3でサービスを作成します。# ■ インストール
### # Serverless Frameworkのインストール
node.jsのインストールはnvmで行います。“`bash
# nvm インストール
# https://github.com/nvm-sh/nvm#installing-and-updating
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash# 最新のltsをインストールしてグローバルに設定
nvm install –lts
nvm use –lts# インストールされているか確認
node -v
npm –version# serverless frameworkのインストール
sudo npm install -g serverless
sls –version
“`
LambdaでS3のPDFを画像化して保存(Docker,Python)
# はじめに
LambdaでPdfを画像化します。windowsであればpopplerのstatic buildがあるので比較的簡単にできますが、Lambdaの環境ではコンテナを使わないとその方法では実行できません。コンテナの勉強を兼ねて作りました。
# 前提
– Dockerの実行環境
– AWS CLIとaws configureの設定# やること
– Dockerイメージの準備
– ECRの準備
– Lambdaの作成**Dockerイメージの準備**
以下のようなファイル構成です。
“`
CreatePdfThumbnail
│ app.py
│ Dockerfile
│ env.txt
└─ requirements.txt
“`Dockerfileは以下のようになっています。
“`Dockerfile
FROM public.ecr.aws/lambda/python:3.6
# ベースイメージはPython3.6環境を使いたいのでpublic.ecr.aws/lambda/python:3.6RUN y