AWS関連のことを調べてみた2022年12月30日

AWS関連のことを調べてみた2022年12月30日
目次

AWS CodeStarのDjangoプロジェクトでgunicorn再起動設定

AWS CodeStarで作成したDjangoプロジェクトが初期設定のままだとEC2インスタンスを再起動した時に自動でgunicornが起動しないので起動するように設定変更

### supervisod.confを修正
パスを変更
“`
[program:djangoproject]
command = /home/ec2-user/environment/bin/gunicorn -b 0.0.0.0:80 ec2django.wsgi
“`

### サービス化するファイルを作成
djangoはお好きな名前に変更
“`
sudo vi /etc/init.d/django
“`
“`
#!/bin/sh
# chkconfig: 2345 99 10
# description: start django
# processname: django

start() {
echo “start”
source /home/ec2-user/environment/bin/activate
export LD_LIBRARY_PA

元記事を表示

EC2にデプロイしたLaravelからRDS (SQL Server)へ接続する

# はじめに(前提条件)
この記事では、AWS上でRDS (SQL Server)を作成し、EC2インスタンスからマイグレーションが成功することを目標とします。
そのためEC2でのLaravelアプリのデプロイは完了しているものとします。

Webサーバはnginxを使用しています。
# RDSのDBインスタンス設定
## データベースの作成
それではまずデータベースを作成します。
公式サイトに手順が分かりやすく載っていたのでそちらに沿って作っていきます。
SSMSからの接続まで説明されているのでせっかくなので接続できるか確認しておきましょう。

https://aws.amazon.com/jp/getting-started/hands-on/create-microsoft-sql-db/
## セキュリティグループの設定
次に、EC2からアクセスするために必要な設定をします。
先程作成したDBインスタンスのページを開き、「接続とセキュリティ」タブからVPCセキュリティグループの
リンクをクリック
![image.png](https://qiita-image-store.s3

元記事を表示

Glueのジョブのモニタリングとデバッグ(OOM例外とジョブの異常のデバッグ-Driver)を試してみた

# 背景・目的
Glueでエラー時のデバッグと対応を試してみます。
本ページは、ドキュメントの「[OOM 例外とジョブの異常のデバッグ](https://docs.aws.amazon.com/ja_jp/glue/latest/dg/monitor-profile-debug-oom-abnormalities.html)」を元に実践してみます。

# まとめ
多くのファイルを扱う場合、それぞれタスクごとにアサインされ、それらのタスクをトレースするためにDriverで多くのメモリを使用します。
(Driverのメモリの仕様状況は、Glueの画面で確認ができます。)
多くのファイルを取り扱うことでDriverのメモリの使用率が高くなっている場合には、読み込むファイルをグループ化する。
これにより、メモリ使用率が下がる可能性があります。

# 実装
## ドライバー OOM 例外のデバッグ
本シナリオは、Sparkジョブで多数の小さいファイルを読み込んだ際に、Sparkドライバのメモリ不足によるエラーが発生するシナリオを試します。
S3上の100万ファイルを読み込み、書き出すだけのプログ

元記事を表示

Session Manager をローカルから利用するときに、セキュアな環境にするときの考慮点

# はじめに

EC2 インスタンスや、Systems Manager で管理しているオンプレミスのマシンにリモートアクセスができる Session Manager という機能があります。従来は踏み台サーバーを使ってリモートアクセスを実現していたことが多かったと思いますが、踏み台サーバー自体に Public IP を持たせている場合はセキュリティ的にちょっときになります。こういった課題感をマネージドサービスで解決するのが、Session Manager という機能です。具体的な使い方は[こちらの記事で検証](https://qiita.com/sugimount-a/items/d9ac9427bdc01e05770f)をしました。

ただ、これでもセキュリティ的に気になる点はまだあります。ラップトップに AWS CLI を入れてリモートアクセスする構成を考えたときに、ラップトップに格納するアクセスキー・シークレットキーの取り扱いが気になります。仮に、大きな権限を持たせたアクセスキーが漏洩してしまったときに大変なことになるので、適切な管理が必要です。

この「適切な管理」で対処した方が

元記事を表示

【AWS】AWS12冠達成をして考える、アプリエンジニアのAWS資格優先順(案)

# はじめに
先日でAWS全12資格を全て取得でき、12冠達成できました。
特にSAPからProfessional資格、Speciality資格を1年以内に取りきれたので頑張ったなぁと思います。

| 合格日 | 資格名 | スコア |
|:-:|:-:|:-:|
|2019-09-14|CLF-C01_AWS Certified Cloud Practitioner|874|
|2019-10-20|SAA-C01_AWS Certified Solutions Architect – Associate|739|
|2021-02-21|DVA-C01_AWS Certified Developer – Associate|775|
|2021-03-07|SOA-C01_AWS Certified SysOps Administrator – Associate|839|
|2022-02-19|SAP-C01_AWS Certified Solutions Architect – Professional|808|
|2022-05-04|DAS-C01_AWS Certifi

元記事を表示

【AWS CDK】高権限ロールの利用通知をカスタム Construct 化してみた

# はじめに

当社では、[AWS Control Tower](https://docs.aws.amazon.com/ja_jp/controltower/latest/userguide/what-is-control-tower.html) を導入しており、外部認証基盤と[AWS IAM Identity Center](https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/what-is.html)(旧 AWS SSO)を連携して、マルチアカウントのユーザー管理を行っています。

高権限の[アクセス権限セット](https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/permissionsetsconcept.html)を利用した際に通知したいというケースがありましたので、再利用できるようにCDKでカスタムConstruct化しました。

## 通知イメージ

![通知イメージ](https://qiita-image-st

元記事を表示

AWS CLI で MFA を有効化してみた

# はじめに

[前回の記事](https://qiita.com/sugimount-a/items/1e8fdd1c9c965e2fa839)では、セルフサービスな MFA 環境を作るための IAM Policy の方法を学びました。今回は、AWS CLI から MFA を利用するときの方法を整理したいと思います。

 

まず、前提知識として整理すると、AWS のマネージメントコンソールで MFA を有効化する設定項目があります。

![image-20221229120242464.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1002774/45502778-7fc1-9c34-4405-2074083e0ce4.png)

 

これを有効化すると、マネージメントコンソールにログインするときに、MFA 認証が求められます。

![image-20221229120000886.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws

元記事を表示

CloudWatch Logsで複数行をひとまとめにする【Laravel】

# CloudWatch Logsが見づらい!
![qiita用.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290902/cccf1ea4-a18c-c953-d99f-dbfa5e5cb216.png)

EC2インスタンスで吐き出されるログをCloudWatchLogsに集約しているのですが、そのログがけっこう見づらくて困っておりました。
具体的には上記画像のように一つのエラーログが人まとまりにならず、複数行にわかれてしまうことです。
一つのエラーがひとまとまりになれば、何件エラーがあったとか、ログの境目が一瞬でわかるのに…と悩んでおりましたがしょうがないと思っておりました。
今回はLaravelで吐き出されるログをまとめたいと思います。

# multi_line_start_patternでまとまりを作ることが可能

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-Co

元記事を表示

個人的によく使うOpenSearchのREST APIまとめ

Amazon OpenSearch Service (以下、OpenSearch)を触っていた際に、API周りでかなり苦戦したので個人用にまとめておく。

# !! 注意 !!

本内容はAmazon OpenSearch Service ver 1.2での挙動です。
OpenSearch ServerlessやElasticsearch、OSSのOpenSearchでは挙動が異なる場合があるのでご注意ください。

# 事前準備

API実行に必要な情報を環境変数に登録しておく。

“`bash
$ ENDPOINT=”OpenSearchのVPCエンドポイント”
$ USERNAME=”aesadmin” # OpenSearch Dashboardsのログインユーザー名
$ read -sp “Please input your password: ” PASSWORD # ログインパスワード
“`
OpenSearchのVPCエンドポイントに関してはAmazon OpenSearch Serviceのコンソールから確認可能。
![image.png](https://qiit

元記事を表示

Amplifyチュートリアル(Vue.js)をやってみた

# はじめに
Amplifyがどのようなものか、あまり理解できていないので、チュートリアルをやってみました。
色々な方がチュートリアルを紹介されていますが、内容が古くなっていたりしていたため、公式(?)のチュートリアルをなぞってやってみました。
(自分のメモがてら記録を残したものになります。)

:::note warn
AmplifyやVueは初心者のため、内容を理解できていない部分があります・・・。(写経です)
(もっと丁寧に解説されている方もいらっしゃるかと思いますが、極力コマンドの結果出力なども入れてみました。)
:::
# 対象のチュートリアル

https://docs.amplify.aws/start/getting-started/installation/q/integration/vue/

# 1. Prerequisites
## 環境

環境要件
“`
Node.js v14.x or later
npm v6.14.4 or later
git v2.14.1 or later
“`
ローカル環境
Windows10 + Windows Termina

元記事を表示

【TIPS】cloud9でpythonのコマンドを打つとエラーが出たのでバージョンを上げる

# やりたいこと
cloud9でテスト環境を作成した際にpythonのコマンドを確認すると以下のようなエラーが出た。pythonのバージョンが古そうな感じがしているのでアップグレードをして対応したい。

“`
hogehoge:~/environment/python $ python -v
import _frozen_importlib # frozen
import _imp # builtin
import ‘_thread’ #
import ‘_warnings’ #
import ‘_weakref’ #
# installing zipimport hook

~~~~長いので省略
“`

# 手順

“`
$ git clone https://github.com/pyenv/pyenv.git ~/

元記事を表示

PythonであるLambda関数から別のLambda関数を呼び出す

最近あるLambda関数から別のLambda関数を呼び出す処理をする際に少し調べたのでメモ。

# 環境

| ランタイム | Python 3.9 |
| — | — |

# 今回の想定ケース

特定のLambdaから別のLambdaをまるごと呼び出す処理を想定。
今回は、以下の`testFunction01`から`testFunction02`を呼び出すような処理を実現していく。

“`python:testFunction01
def lambda_handler(event, context):
print(‘[testFunction01] testFunction01’)
“`

“`python:testFunction02
def lambda_handler(event, context):
print(‘[testFunction02] Called by testFunction01’)
return {‘message’: ‘called by testFunction01’}
“`

# 実現方法

基本的には[inv

元記事を表示

エンジニアになって4年経過 / ここまでやってきたこと

# はじめに
2018年、30代実務未経験 妻子持ちでSES企業へ転職し、初めてエンジニアになってから今まで、ロースキルではありながらもエンジニアというものはなかなか大変な職業だったので(今もエンジニアですが)、これから30代で実務未経験からエンジニアになろうとしている方の一助になればと思い、僕が学んできたことを出し惜しみせずに紹介しようと思います。

ちなみにエンジニアとひとくくりにしておりますが、ソフトウェア保守運用、インフラ保守運用、インフラ運用設計が主になります。

# 目次
[1.はじめに](#はじめに)
[2.エンジニア1-2年目](#エンジニア1-2年目)
[3.エンジニア3-4年目](#エンジニア3-4年目)
[4.現在](#現在)
[5.最後に](#最後に)

# エンジニア1-2年目
31歳SES企業に未経験で入社しました。(2018.7~2020.11)
ローでレガシーな案件にアサインしています。
– 1.5ヶ月Javaの研修
– 0.5ヶ月SQLの研修
-> BIツールの保守改修案件 -> 1ヶ

元記事を表示

(備忘録)AWSのS3を使い、画像をアップロードする方法

# データの保管とは?
* Webアプリケーションでは、毎日たくさんのユーザーより写真や動画がアップロードされてる。
* そのデータはユーザーがいつでも見返すことができるように蓄積しないといけない。
* その時、使うサービスを「ストレージサービス」という。

# ストレージサービスとは?
* インターネット上でデータを保存する場所を提供するサービス
* AmazonのS3はその体表的なサービス提供者

# Heroku、Renderなど、デプロイサイト利用(経由)し、リリースしたサイトに関して、ストレージサービスが必要となる理由
* Userがアップロードした画像などデータは、アプリがデプロイまたは再起動(自動更新)される度に、消えてしまう仕様になっている為
* 但し、有料バージョンはその限りではない。

# AWS、S3の無料使用期間
* 12ヶ月間、一定の使用量までは無料で利用できる
→S3の場合、以下が無料で使える
①5GBの容量
②20,000 件のGetリクエスト
③2,000 件のPutリクエスト
※今後変わる可能性はあり

* 無料枠でS3を利用する際は以下に注意
①不

元記事を表示

AWS Lambdaの再試行回数によって処理を分岐させる方法

業務の都合でAWS Lambdaの処理を再試行回数によって分岐させる必要が出てきたので、その実装を含めシェアします。

# 実現できることのイメージ
※Lambdaは最大2回まで再試行を設定可能です。

“`Java
if (再処理回数 == 0) {
// 処理A
} else if (再処理回数 == 1) {
// 処理B
} else {
// 処理C
}
“`

# とりあえず考えられる方法
基本的に以下の方法は **「Lambdaが再試行されるときはリクエストIDが同じになるのでそれをどうカウントするか」** という考え方が基になっています。

なお、リクエストIDはUUIDっぽいので、他のリクエストIDとは被ることはないという前提です。

– CloudWatch Logsのログを読み取ってリクエストIDをカウントする ([参考](https://zenn.dev/shimo_s3/articles/c2895880138d19))
– DynamoDBなどのDBに記録しつつそれを読み取ってリクエストIDをカウントする ([参考](https:

元記事を表示

EC2フリート とは

## 勉強前イメージ

EC2ってことはわかるけど・・・

## 調査

### EC2フリート とは

AWS EC2インスタンスをの起動する方法の一つで
スポットインスタンスとオンデマンドインスタンスを組み合わせて定義できるものになります。

EC2インスタンスを使用する方法に [スポットインスタンス](https://qiita.com/miyuki_samitani/items/4cebf928334ee60c5219) というものがあります。
スポットインスタンス とはスポットインスタンスとはEC2の空いているキャパシティを活用して
オンデマンドインスタンスより安く使用するインスタンスの購入方法を指します。
しかし、空いているインスタンスがスポットインスタンスになるため、空きがなくなると停止される可能性があります。

そこで有用になるのがEC2フリートになります。
AWSからスポットインスタンスを落とします、と通知があってEC2が止まってしまうとサービス自体が止まってしまう可能性があります。
それだと困ってしまうので、オンデマンドインスタンスを立ち上げる設定ができるのが `E

元記事を表示

MinecraftサーバをAWSで立ててみた #2

# はじめに
この記事は [MinecraftサーバをAWSで立ててみた](https://qiita.com/tonomin/items/de6eb87857fb7abc1d24) の第2回の記事となります。

今回は前回作成したインフラ環境のIaC化を実施してみます。
AWSのインフラ環境のIaCといえば **CDK** ですね。
ということでCDKの作成をやってみましたのでまとめておきます。

今回は、CDK全般のまとめでそこそこの量になったので、Minecraftサーバのためのサブネットやリソースと詳細まとめは次回にします。

# 目次

1. [モチベーション](#Chapter1)
1. [CDK作成](#Chapter2)
1. [参考文献](#reference)



# モチベーション
前回が事実上Minecraftサーバの動作確認だけだったのに、早速CDKを作っていく理由的なものを残しておこうと思います。

これから個人でサーバ構築・運用を試してい

元記事を表示

AWS IAM で、セルフサービスな MFA 環境を作ってみた

# はじめに

AWS のマネージメントコンソールでは、MFA の設定が出来ます。これによってセキュリティレベルを上げることが出来ます。

一点考えないといけないのが、誰が MFA を設定するのか?という点です。AWS を使う人が小規模な場合は、一部の管理者が代わりに MFA の設定を行うことで、MFA の設定を強制化できるでしょう。AWS の利用が大規模になったときはどうでしょうか?全員分の MFA の設定を管理者が行うのは大変です。

そこで、利用者がセルフサービスで MFA の設定を出来るようにすることがのぞましいです。要件を整理するとこんな感じです

– AWS のサービスを利用するためには、強制的に MFA を有効化させたい
– 管理負担の軽減の観点で、自分自身の IAM User に、セルフサービスの MFA デバイスの紐づけを許可させたい。
– 管理者が IAM User を作成したあとに、利用者に ユーザーに ID と Password を展開するときには、**MFA の設定は入っていない。MFA 無しでも、ログインして MFA の有効化が出来る環境が必要**

元記事を表示

使わないRDSをできるだけ停止しておきたい~AWSコスト削減

# はじめに
あなたはAWSを使用していますか?
もちろん、使用していますよね。
今や、世の中のWEBサービスを見渡せば、必ずAWSが目に入ってきます。
にもかかわらず、ほんの1年前まで私はAWSが何なのかさえ良く分かっていませんでした。
たぶん業界を一歩離れると、「AWS?名前は知ってるし、ロゴ的にAmazonに関わる何かだということも知ってるけど…」みたいな人も多いのではないかと思います。
そんな超初心者の私も今年IT業界の扉をたたき、AWSの中に入る機会が増えてきたので最近やったことを記事にしてみました。

## 電気料金とAWS請求料金は上がり続けるのか
会社のインフラチームから、「君の使ってるアカウントのAWS料金高すぎぃ!」って怒られました。(多少盛っています)

1か月以上ログインしてないんだけど、どうして!?
あ、停止したはずのRDSが起動してるじゃん!

そういえば停止するときに、「1週間後に再起動するからね!」って言われた気がするけどすっかり忘れていました…

### RDSの料金についておさらい
RDSの料金には、ざっくり以下のタイプがあります。
1. サーバーイ

元記事を表示

AWS OrganizationsでメンバーアカウントにAWSアカウント名を取得させる

## やりたいこと
AWS Organizationsを運用している際、メンバーアカウント内の動的処理で自身の「AWSアカウント名」を取得したい。
(ユースケース:各アカウント内からアラートメールを送信する際に、メール件名にアカウント名を追加するときなど)

## 対応方法
アカウント名を動的取得するには基本的に`organizations:DescribeAccount`のアクションが必要となります。
ただし、こちらはOrganizationsの管理アカウントでしか利用できませんでした。

そのため

* 別途DynamoDBやS3にアカウント情報を定期保存するなど別の保存領域を使って取得する
* メンバーアカウント毎のIAMロールを管理アカウントに用意して、AssumeRoleしてもらう

などあまり美しくない方法しかなかったのですが、「Organizations の委任管理者機能」のポリシー調整でシンプルに実現出来ました。
「Organizations の委任管理者機能」については以下クラスメソッドさんの記事が分かりやすいのでご参照ください。

https://dev.class

元記事を表示

OTHERカテゴリの最新記事