EC2 インスタンスのスナップショットを作成する

● EC2 インスタンスのスナップショットを作成する

「EC2」→「Elastic Block Store」→「ボリューム一覧から対象のディスクを選択」→「アクションからスナップショットを作成」

説明欄に後から見たときにわかるような説明を追記しておきましょう(日本語はNGです)

これで実行すると、スナップショットの作成が開始されます。30 GBで約10分程度で作成されます。

こうなると作成完了です。

● 作成したスナップショットの削除

「EC2」→「Elastic Block Store」→「スナップショットから対象のスナップショットを選択」→「削除」
添付ファイル1
No.2025
01/29 08:48

edit

添付ファイル

PHPでファイル名を指定してS3ストレージから署名付きURL(signedURL)でダウンロードさせる

● PHPでファイル名を指定してS3ストレージから署名付きURL(signedURL)でダウンロードさせる

$s3 = \Storage::disk('s3');
$client = $s3->getDriver()->getAdapter()->getClient();
$new_filename = urlencode( "テストファイル.png" );       // ファイル名を指定
$command = $client->getCommand('GetObject', [
    'Bucket'                        => env('AWS_BUCKET') ,
    'Key'                           => "{$dir}/{$file}" ,
    'ResponseContentDisposition'    => "attachment; filename=\"{$new_filename}\"" , // ファイル名を指定
]);
$expiry = "+10 minutes";
$request = $client->createPresignedRequest($command, $expiry);
$signed_url = (string) $request->getUri();
return redirect( $signed_url );

No.1997
05/17 10:18

edit

EC2 インスタンスに Elastic IP で 固定IPアドレスを設定する

● EC2 インスタンスに Elastic IP で 固定IPアドレスを設定する

●1. Elastic IP の作成

・AWS Console へログインする
・EC2 へアクセスする
・左メニューの「ネットワーク&セキュリティ」の下の「Elastic IP」をクリックする
・右上の「Elastic IPアドレスの割り当て」をクリックする
・遷移した画面でそのまま「割当」ボタンをクリックする

●2. EC2インスタンスへの割り当て

・「アクション」のところ「Elastic IPの関連付け」を選択する
・「インスタンス」にEC2インスタンスを選択、「プライベートIPアドレス」にIPを選択する
・「関連付ける」ボタンを押す
No.1935
12/21 15:20

edit

Mac に Amazon AWS をターミナルから操作する AWS CLI をインストールする

● Mac に Amazon AWS をターミナルから操作する AWS CLI をインストールする

● 1. AWS CLI をインストールする

公式 : https://amzn.to/2JoyPPO

https://awscli.amazonaws.com/AWSCLIV2.pkg からインストーラーをインストールする

● 2. AWS CLIのインストールの確認

aws --version

このような文字列が返ってくればインストールは成功しています

aws-cli/2.1.4 Python/3.7.4 Darwin/19.6.0 exe/x86_64

● 3. AWS CLI の設定(IAMユーザーの追加)





こちらの画像のようにIAMユーザーを設定します。 設定完了後に画面に表示される「アクセスキー」「シークレットアクセスキー 」を保存しておきます。

● 4 .AWS CLI の設定

aws configure

設定例

AWS Access Key ID : <先ほど保存したアクセスキー>
AWS Secret Access Key : <先ほど保存したシークレットアクセスキー >
Default region name : ap-northeast-1
Default output format : json

● 4 .AWS CLI のコマンド

(うまく値が返ってこないときは権限不足を疑いましょう)

・IAM / ユーザー一覧の表示

aws iam list-users

・IAM / グループ一覧の表示

aws iam list-groups

・S3 / バケット一覧の表示

aws s3 ls
添付ファイル1
IAM_01.png ( 92.6 KBytes ) ダウンロード
添付ファイル2
IAM_02.png ( 204.4 KBytes ) ダウンロード
添付ファイル3
IAM_03.png ( 123.7 KBytes ) ダウンロード
No.1913
11/30 14:09

edit

添付ファイル

Amazon AWS S3 へ画像をアップロードするたびに自動で画像サイズを小さくする

● Amazon AWS S3 へ画像をアップロードするたびに自動で画像サイズを小さくする

● Amazon AWS Lambda の設定を行う

Lambdaとは

Lambdaとはサーバーの管理を意識することなく(=サーバーレスと言います)、サーバープログラムを実行させる Amazon のクラウドサービスです

1. Amazon AWS コンソールにログインする

https://aws.amazon.com/jp/console/

2. 「Lambda」を検索して Lambdaのページに移動する

3. 「関数の作成」をクリックする

● ローカルでの 「aws-lambda-image」のテスト

1. aws-lambda-imageのインストール

git clone https://github.com/ysugimoto/aws-lambda-image.git
cd aws-lambda-image
npm install .
npm audit fix

2. config.json の書式チェック

 npm run test-config

エラーなく表示されればokです。

● 設定

次のコマンドを実行してオプションをセットします。

npm config set aws-lambda-image:profile default
npm config set aws-lambda-image:region eu-west-1
npm config set aws-lambda-image:memory 1280
npm config set aws-lambda-image:timeout 5

↓ こちらの設定はオプションです。変更したい場合に実行します。

npm config set aws-lambda-image:name lambda-function-name
npm config set aws-lambda-image:role lambda-execution-role

● AWS lambdaへのデプロイ

npm run deploy

● 実行ハンドラの作成

S3バケット「your-bucket-name」  
S3フォルダ「test」  
処理する拡張子「png」  

の場合 このコマンドを実行します。

npm run add-s3-handler --s3_bucket="your-bucket-name" --s3_prefix="test/" --s3_suffix=".png"

lambdaへ反映させます

npm run update

引用 : https://bit.ly/39qpx0x
https://bit.ly/3qdVBuM

No.1912
11/30 14:59

edit

AWSの EC2 サーバを夜間停止して月額費用を安くする(AWS Lambda不要)

● AWSの EC2 サーバを夜間停止して月額費用を安くする(AWS Lambda不要)

CloudWatch Manager を使用して次の3つのオペレーションだけで
「EC2サーバの自動停止・自動起動」が行えます

・IAMから「自動停止・起動用ロールの作成」
・CloudWatchから「自動停止イベントルールの作成」
・CloudWatchから「自動起動イベントルールの作成」


● 1. IAMから「自動停止・起動用ロールの作成」する

・AWS Console へログインする
・IAM へアクセスする
・左メニューの「アクセス管理」の下の「ロール」をクリックする
・「ロールの作成」ボタンをクリックする

・(ロール設定 1)「ユースケースの選択」のところ「System Manager」を選択する
・(ロール設定 1)「次のステップ」ボタンをクリックする

・(ロール設定 2)「ポリシーのフィルター」のところ「AmazonSSMAutomationRole」を入力する
・(ロール設定 2)一覧リストに「AmazonSSMAutomationRole」が絞り込まれて表示されるので左のチェックをつける
・(ロール設定 2)「次のステップ」ボタンをクリックする。

・(ロール設定 3)「次のステップ」ボタンをそのままクリックする。(この画面では何も登録しない)

・(ロール設定 4)「ロール名と」「ロールの説明」に入力して「ロールの作成」ボタンをクリックする


・(信頼関係の追加)ロールの追加が完了し、完了画面に遷移した後で「信頼関係タブ」をクリックして「信頼関係の編集」ボタンをクリックする
・(信頼関係の追加)jsonを次のように変更する
        "Service": "ssm.amazonaws.com"

  ↓

        "Service": [
          "events.amazonaws.com",
          "ssm.amazonaws.com"
        ]

これを設定しないとCloudWatchルールイベント作成時「既存のロールを使用」の選択一覧リストに表示されません


● 2. CloudWatchから「自動停止イベントルールを作成」する

・AWS Console へログインする
・CloudWatch へアクセスする
・右上のメニューから現在のリージョンを確認し、違う場合は使用したいリージョンに変更する
・左メニューの「イベント」の下の「ルール」をクリック
・「ルールの作成」ボタンをクリックする
・(ルール設定)「イベントソース」のところ(イベントパターン、スケジュール)から「スケジュール」を選択する
・(ルール設定)「Cron式」を選択して、スケジュールをUTCのCron式で入力する
・(ルール設定)「ターゲット」のところ「ターゲット追加ボタン」をクリックする
・(ルール設定)「EC2 StopInstances API 呼び出し」を選択する
・(ルール設定)「インスタンス ID」のところ「i-xxxxxxxxxxxxxxxxx」形式のインスタンスIDを入力する
・(ルール設定)もしロールがなければ 「この特定のリソースに対して新しいロールを作成する」を選択する
・「設定の詳細」ボタンをクリックする
・次の画面で「名前」「説明」を入力して「ルールの作成」ボタンをクリックする

Amazon CloudWatch のCron式

毎日 日本時間で 11:30 に実行する場合-9時間 して 次のように指定します

分 時 日 月 曜日 年
30 2 * * ? *

月曜 〜 金曜日 毎日 日本時間で 09:00 に実行する場合-9時間 して 次のように指定します

分 時 日 月 曜日 年
0 0 ? * MON-FRI *

月曜 〜 金曜日 毎日 日本時間で夜 24:00 に実行する場合-9時間 して 次のように指定します

分 時 日 月 曜日 年
0 15 ? * MON-FRI *

UTC時間確認方法

日本のタイムゾーンがセットされている UNIX マシンで UTC 時刻を表示させるコマンド

date -u -R

● 3. CloudWatchから「自動起動イベントルールを作成」する

自動停止設定の仕方と全く同じです。

違うのは次の設定のところです

「ターゲット」を SSM Automation を選択する
「ドキュメント」を AWS-StartEc2Instance

● 4. linux マシンの起動時間を調べる

last reboot

● 5. CloudWatch の 自動実行がうまくいっていない時は

・停止や起動には 2〜3分かかることがあるので 2〜3分待ってみましょう
・EC2マシンの時刻がずれていないかチェックしましょう。
ずれている場合は修正しましょう

● 6. Amazon Time Sync Service を使って時刻を合わせる(手動)

sudo ntpdate 169.254.169.123
添付ファイル1
No.1906
02/15 21:12

edit

添付ファイル

Amazon の Route53 で TXTレコードを複数登録する

● Amazon の Route53 で TXTレコードを複数登録する

Route53で普通に 複数TXTレコードを作成しようとすると

Tried to create resource record set [name='xxxx.xxx.', type='TXT'] but it already exists]

というエラーが表示されます。

そこで複数登録するには一つのTXTレコードに改行して複数の項目を設定します

"v=spf1 a:xxxxxxx.xxx.com -all"
"google-site-verification=xxxxxxxxxxxxxxxxxxx"
No.1851
08/31 18:33

edit

EC2インスタンスの cpu を調べる

● EC2インスタンスの cpu を調べる

cat /proc/cpuinfo

結果例

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 63
model name      : Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
stepping        : 2
microcode       : 0x43
cpu MHz         : 2399.900
cache size      : 30720 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
bogomips        : 4800.19
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

cpuの型がわかったら cpu bech サイトで見てみましょう。

https://www.cpubenchmark.net/cpu.php?cpu=Intel Xeon E5-2676 v3 @ 2.40GHz&id=2643

No.1810
07/05 15:51

edit

Laravel で amazon S3 のファイル操作を行うメソッド一覧

● Laravel Amazon S3 の設定

パッケージのインストール

composer require aws/aws-sdk-php
composer require league/flysystem-aws-s3-v3

.env

AWS_ACCESS_KEY_ID=XXX....................
AWS_SECRET_ACCESS_KEY=XCM.................................................
AWS_DEFAULT_REGION=ap-northeast-1
AWS_BUCKET=<バケット名>

AWS_DEFAULT_REGION は 使用中のS3が所属しているリージョンを一覧(https://amzn.to/3bAd1Jh)から選んで指定します。

● LaravelでS3へファイルのアップロード

$path = \Storage::disk('s3')->put('/testdir/', $file, 'public');
<ディレクトリ名> , <ファイルデータ>,<public または private>
// サーバーのファイルをアップロードする場合
$path = \Storage::disk('s3')->put($upload_path, file_get_contents($tmp_url), 'public');
 
// ブラウザからPOSTされたファイルをアップロードする場合
$path = \Storage::disk('s3')->put($upload_path, $request->file('upfile'), 'public');

戻り値 $path には ディレクトリ名とファイル名のパスが返ります。

● LaravelでS3へアップロードしたファイルのURLを取得する

$url = \Storage::disk('s3')->url("testdir/i9WBM4ag2gJ83rmKYDR8DBW12XxsWiaXah8V5voh.png");

● LaravelでS3バケット内のファイル一覧を取得する

files : ファイル一覧を取得 allFiles : 下の階層のファイル一覧も取得

$list = \Storage::disk('s3')->files('');
$list = \Storage::disk('s3')->allFiles('');
$dir_list = \Storage::disk('s3')->directories('/');

● LaravelでS3ファイルを削除する

// ファイル削除
$disk->delete(【バケットのrootディレクトリからの相対パス】);

● LaravelでS3のディレクトリごと(ディレクトリ内のファイルも一緒に)削除する

\Storage::disk('s3')->deleteDirectory('testdir');

● LaravelでS3ファイルをコピーする

\Storage::disk('s3')->copy($old_path, $new_path);

● LaravelでS3ファイルを移動(またはリネーム)する

\Storage::disk('s3')->move($old_path, $new_path);

● LaravelでS3ファイルの公開非公開を変更する

\Storage::disk('s3')->setVisibility($file_path, 'public');  // 公開にする
\Storage::disk('s3')->setVisibility($file_path, 'private'); // 非公開にする

● Laravelで amazon S3 ファイルを 別のバケットにコピーする

$disk = Storage::disk('s3');
if (!$disk->move('bucketOne/testFile.jpg', 'bucketTwo/testFile.jpg')) {
   throw new \Exception('File could not be moved.');
}
No.1759
05/19 09:07

edit

Amazon AWS / Route53 で IP逆引き設定を行う

*1. まず IP アドレスを調べる

( test-my-server.com ) ( IPアドレス 111.222.333.444 ) というドメインでの例

dig test-my-server.com

次のように返ってきます。

;; ANSWER SECTION:
test-my-server.com.      300     IN      A       111.222.333.444

*2. 逆引きを調べる

dig -x 111.222.333.444

次のように返ってきます。

;; ANSWER SECTION:
123.456.789.12.in-addr.arpa. 300 IN     PTR     ec2-12-345-678-999.ap-northeast-1.compute.amazonaws.com.

ec2-12-345-678-999.ap-northeast-1.compute.amazonaws.com が 返ってきます (まだ逆引きが設定できていない。)

*3. 逆引きゾーンを作成する

逆引きゾーン 333.222.111.in-addr.arpa

DNS の PTR レコードの書き方

1  IN  PTR  hogehoge.com.
(これが333.222.111.in-addr.arpaゾーンのレコードである場合、 111.222.333.1のホスト名は hogehoge.com であることを表す。 )

なので

AWS - Route53 から

名前 タイプ
444 PTR-ポインタ test-my-server.com.

としてレコードセットの作成を行います。

No.1675
01/23 14:41

edit

Amazon AWS / Route53 で 逆引き申請を行う

● Amazon AWS / Route53 で 逆引き申請を行う

https://console.aws.amazon.com/support/contacts?#/rdns-limits

Email address
→ <メールアドレス>

Use case description
→ rDNS registration

Elastic IP address - optional
→ <逆引き登録するIPアドレス>


Reverse DNS record - optional
→<逆引き登録するドメイン名>

参考 : http://bit.ly/35UTZdZ
http://bit.ly/3abrBYe
http://bit.ly/3ac3xEM

No.1657
01/15 20:57

edit

EC2 インスタンスのディスク種類(EBS-backed instance )( Amazon EC2 Instance Store-Backed )を確認する

EC2 インスタンスのディスク種類は事前に確認しておきましょう!

AMI タイプ - Amazon Elastic Compute Cloud

Ec2ダッシュボードから「AMI」→「パブリックイメージを選択」し「ルートデバイス」を見ることで、

EBS-backed instance 
Instance Store-Backed

のどちらかを判別することが出来ます。

添付ファイル1
No.1628
11/22 12:42

edit

添付ファイル

Amazon AWS 請求アラートを作成する

● Amazon AWS 請求アラーム(アラート)を作成する

AWS を作成して一番最初にするのは .. 「請求アラーム」です

「AWSトップ」→「Billing」→「Billingの設定」→「請求アラームを管理する」を選択すると「CloudWatch」に移動します。

続けて以下のように設定します。

・ナビゲーションペインで、[アラーム]、[アラームの作成] の順に選択します。

・[メトリクスの選択] を選択します。[すべてのメトリクス] タブで、[請求]、[概算合計請求額] を選択します。

・[概算請求額] の横にあるチェックボックスをオンにして、[メトリクスの選択] を選択します。

・[Conditions (条件)] で、[Static (静的)] を選択します。

・[Whenever EstimatedCharges is (EstimatedCharges が次の時)] で、[Greater (大きい)] を選択します。

・[than (より)] には、アラームをトリガーするために超える必要がある金額 (たとえば 200) を入力します。
(注記:当月の現在の料金がプレビューグラフに表示されます。_

・[Next] を選択します。

・[通知] で、アラームが ALARM 状態のときに通知するための SNS トピックを選択します。

(同じアラーム状態または複数の異なるアラーム状態について複数の通知を送信するには、[Add notification (通知の追加)] を選択します。)

・完了したら、[次へ] を選択します。

・アラームの名前と説明を入力します。名前には ASCII 文字のみを使用します。続いて、[次へ] を選択します。

・[Preview and create (プレビューして作成)] で、情報と条件が正しいことを確認し、アラームの作成] を選択します。

引用 : https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html

No.1621
11/13 17:20

edit