Lambda関数URL に独自ドメイン

● 1. 【AWS Cloud Front】Lambda関数URLに Cloud Front の URLを割り当てる

1. 「AWS Console」 → 「Cloud Front」へ移動

2. 「ディストリビューションを作成」からURLにlambda関数を指定して作成する。

3. 作成された URL でLambda関数が実行されることを確認する。

● 2. 【AWS Rouite53】AWS以外で取得管理しているドメインを AWS で使用できるようにする。(NSサーバを AWS Rouite53 にする)

1. 「AWS Console」 → 「Route 53」へ移動

2. 「ホストゾーンを作成」からドメイン名を入力し、作成する。

一覧に NS のホスト名が表示されるのでコピーする

(例)

ns-xxx.awsdns-44.com.
ns-xxxx.awsdns-10.co.uk.
ns-xxx.awsdns-58.net.
ns-xxxx.awsdns-40.org.

ドメインを管理しているサービスのNSサーバのところを書き換える。 (これで対象のドメインの名前解決が AWS Route53 になります。)

● 3.【AWS Certificate Manager】独自ドメインに対してSSL証明書を発行

1. 「AWS Console」 → 「Certificate Manager」へ移動

2. 証明書をリクエスト

3. CNAMEを作成

● 4. 【AWS Rouite53】Route 53のホストゾーンに、CloudFrontURLを指すエイリアスレコードを作成する

1. 「AWS Console」 → 「Route 53」へ移動し対象となるホストゾーン(ドメインを選択)

2. 「レコードを作成」 → 「ウィザード」→ 「シンプルルーティング」

No.2487
03/11 16:09

edit

aws CDK

● mac へ aws-cdk のインストール

・1. aws cli コマンドのインストールまた更新

https://awscli.amazonaws.com/AWSCLIV2.pkg

・2. aws cli コマンドの確認

バージョン確認
which aws
aws --version

例えば以下のように返ってきます

/usr/local/bin/aws
aws-cli/2.11.21 Python/3.11.3 Darwin/22.3.0 exe/x86_64 prompt/off

・3. aws cdk コマンドのインストール

npm install -g aws-cdk

・4. aws cdk コマンドの確認

バージョン確認
cdk --version

例えば以下のように返ってきます

2.80.0 (build bbdb16a)

● aws のユーザーを確認する

printenv | grep AWS
aws sts get-caller-identity
cat ~/.aws/config 

新しいプロファイルを作成する場合は次のコマンドを実行します
<プロファイル名>のところは IAM ユーザー名にしておくとわかりやすいと思います

aws configure --profile <プロファイル名>

プロファイルを変更するには

export AWS_PROFILE=<プロファイル名>

● aws-cdk を init する

言語: typescript で initします

mkdir my-first-infra && cd my-first-infra
cdk init --language typescript

● cdk コマンド

・CDK App のリスト表示

cdk ls

● cdk に S3を追加する

・1. S3 の追加

lib/my-first-infra-stack.ts

以下の内容に修正します

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';

export class MyFirstInfraStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // S3 を追加する
    const bucket = new s3.Bucket(this, 'CreateBucket', {
      bucketName: "test-bucket-2023-05-24",
      versioned: true
    });
  }
}

・2. シンセサイズ

npm run build
cdk synth

・3. cdk bootstrap の実行

最初に1度必要です(CDKに必要な権限を作成します。)

cdk bootstrap aws://<12桁のアカウント番号>/<リージョン名>

✅ Environment aws://<12桁のアカウント番号>/<リージョン名> bootstrapped.
と出ればokです。

・4. デプロイ

npm run build
cdk deploy

● cdk deployするのに必要な権限とは?

デプロイするには AdministratorAccess が必要ですが、直接 IAMユーザーの権限には持たせないで、assume role できるようにしておくと良いでしょう。手順としては次のとおりです。
・IAM ユーザーを作成する
・ポリシー AdministratorAccess を持つ IAM ロールを作成する
 ・IAMユーザーに次のようなポリシーを許可する
{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "sts:AssumeRole",
			"Resource": "arn:<IAMロールのarnをコピペで貼り付ける>"
		}
	]
}```



[AWS CDK でデプロイするときの最小権限について考えてみる \| DevelopersIO](https://dev.classmethod.jp/articles/cdk-minimum-deploy-policy/)


###・5. 追加されたことを確認する

aws s3 ls


###・5. CloudFormation から スタックを 削除

cdk destroy

削除すると CloudFormation から対象のスタックを削除します。
なお、S3 バケットなどは残ります。

[AWS CloudFormationスタック強制削除ツール \- 365歩のテック](https://go-to-k.hatenablog.com/entry/delstack)


###・6. CloudFormation から スタックを 削除時に  空のS3 バケットを削除する設定

**lib/my-first-infra-stack.ts** に `removalPolicy: RemovalPolicy.DESTROY` を追加します。

import as cdk from 'aws-cdk-lib'; import {RemovalPolicy} from 'aws-cdk-lib'; import {Construct} from 'constructs'; import as s3 from 'aws-cdk-lib/aws-s3';

export class MyFirstInfraStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) {

super(scope, id, props);

// S3 を追加する
new s3.Bucket(this, 'my-second-bucket', {
  versioned: true,
  removalPolicy: RemovalPolicy.DESTROY,

}); } }



# ● DynamoDB と ロールを追加するスタックのサンプル

MySampleTable と MySampleRole を追加します。

import as cdk from "aws-cdk-lib" import { RemovalPolicy } from "aws-cdk-lib" import as dynamodb from "aws-cdk-lib/aws-dynamodb" import * as iam from "aws-cdk-lib/aws-iam" import { Construct } from "constructs"

export class InfrastructureStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) {

super(scope, id, props)

// DynamoDB
const table = new dynamodb.Table(this, "MySampleTable", {
  partitionKey: { name: "id", type: dynamodb.AttributeType.STRING },
  tableName: "my-sample-table",
  removalPolicy: RemovalPolicy.DESTROY,
})

// role
const role = new iam.Role(this, "MySampleRole", {
  assumedBy: new iam.ServicePrincipal("lambda.amazonaws.com"),
})
role.addToPolicy(
  new iam.PolicyStatement({
    resources: [table.tableArn],
    actions: [
      "dynamodb:GetItem",
      "dynamodb:PutItem",
      "dynamodb:UpdateItem",
      "dynamodb:DeleteItem",
    ],
  }),
)

} }


No.2352
01/19 17:02

edit

EC2 のやりがちな Elastic IP address not attached による請求に対応する

● 1. EC2 の Elastic IP へ移動する

AWSコンソール → EC2 → Elastic IP

● 2. 不要なグローバルIPを削除する

削除したいIPアドレスにチェックをつけ
IPアドレスの解放を行う

以上です。

No.2353
05/24 13:23

edit

AWS CLI を aws-vault を使って安全に使用する

● aws-vault とは?

cat ~/.aws/credentials は 平文のまま保存するので少々危険です
aws-vault を使用しましょう

● 1. aws-vaultのインストール

brew install --cask aws-vault

● 2. aws-vaultのインストールの確認

aws-vault --version

● 3. aws cli の代わりに aws-vault で認証情報のプロファイルを設定する

aws cli の場合、次のコマンドで設定を行いますが .....

aws configure --profile <プロファイル名>
aws cli の代わりに aws-vault で認証情報のプロファイルを設定します

aws-vault の場合、次のコマンドで設定を行います

aws-vault add <プロファイル名>

aws_access_key_idaws_secret_access_key を入力します。

Enter Access Key ID: AKIAXXXXXXXXXXXXXXXX
Enter Secret Access Key:

続けてパスワード入力を促されるのでパスワードを入力します。 入力すると次のようなメッセージが出て完了します

Added credentials to profile "xxxxxxxxxxx" in vault

作成したキーを確認する

aws-vault ls

● 3. aws cli の代わりに aws-vault で aws コマンドを実行する

・1. AWS CLI でアクセスできることを確認する

aws s3 ls

バケットが表示されることを確認する。(もちろんあらかじめS3バケットを作成しておいてください)

・2. ~/.aws/credentials をリネームして AWS CLI でアクセスできないようにする

mv ~/.aws  ~/___OFF___.aws
aws s3 ls

Unable to locate credentials. You can configure credentials by running "aws configure". エラーとなることを確認する。

・3. aws-vaultから AWS CLI コマンドを実行する

aws-vault exec <プロファイル名> -- aws s3 ls

これでコマンドが無事実行できれば成功です!!!

No.2343
05/12 14:16

edit

AWS をコマンドから操作する AWS CLI

● 1. AWS CLIのダウンロード

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

・1-1.AWS CLIインストールの確認

which aws
aws --version

以下のように返ってくればインストールok

/usr/local/bin/aws
aws-cli/2.11.17 Python/3.11.3 Darwin/22.4.0 exe/x86_64 prompt/off

● 2. AWS CLI の設定

次の2つの設定が必要です。設定しましょう。

2-1. アクセスキーを作成する ( ~/.aws/credentials )
2-2. 認証情報のプロファイルを設定する ( ~/.aws/config )

引用 : https://bit.ly/424HSsx

・2-1. アクセスキーを作成する

AWSコンソールログイン → IAM → ユーザー →(対象のユーザー選択)→ セキュリティ認証情報→ アクセスキーの作成
から作成します。


               ↓

               ↓

最後にCSVファイルをダウンロードします。ダウンロードしたファイルは ~/aws_cli/ にでも保存しておきましょう。


・2-2. 認証情報のプロファイルを設定

コマンドラインから次のコマンドで設定を行います
<プロファイル名>のところは IAM ユーザー名にしておくとわかりやすいと思います

aws configure --profile <プロファイル名>
aws configure
AWS Access Key ID [None]: <アクセスキーID。ダウンロードしたCSVからコピーする>
AWS Secret Access Key [None]: <シークレットアクセスキー。ダウンロードしたCSVからコピーする>
Default region name [None]: <リージョン。例 : us-west-2>
Default output format [None]: json

作成されたプロファイルの確認

cd ~/.aws
ls -la
cat config
cat credentials

これでとりあえずの準備が完了です
プロファイルを削除するにはファイルごと削除するか、エディタで開いて対象のプロファイルを削除します。

・2-3. 平文の ~/.aws/credentials を暗号化して使用する AWS vault

cat ~/.aws/credentials

とすればわかるように、いくら自分のローカル端末とは言え平文のままでは危険です。
aws-vault を設定しましょう。

aws-vault を使って AWS のアクセスキーを暗号化して扱おう | microCMSブログ

● 3. AWS CLI コマンドの実行

・3-1. プロファイルを設定して実行する(プロファイルの設定が1度ですみます)

S3 の ディレクトリ一覧を取得する

export AWS_PROFILE=my-profile
aws s3 ls

通常は .bash_profile にでも指定しておきます

.bash_profile

# AWS CLI
export AWS_PROFILE=my-profile

・3-1. プロファイルを都度設定して実行する(プロファイル毎回指定)

S3 の ディレクトリ一覧を取得する

aws s3 ls --profile my-profile

プロファイルを先に指定してもokです

aws --profile my-profile s3 ls 

ユーザー情報を取得

aws sts get-caller-identity

● プロファイルを切り替え関数を作成する(要:fzf)

引用 : https://bit.ly/48MPfHJ

faws で切り替えコマンドが起動します。

function faws() {
  local profile=$(aws configure list-profiles | sed "/default/d" | sort | fzf )
  export AWS_PROFILE="$profile"
}

● プロファイルを切り替えるユーティリティーコマンド awsp

https://github.com/johnnyopao/awsp

● aws s3 のコマンド一覧

よく使うコマンド

バケット(フォルダ)内のファイル数とファイルサイズの合計を取得

aws s3 ls s3://[バケット名]/[フォルダ名]/  --recursive --human --sum

S3上のファイルをローカルにダウンロードする

aws s3 cp s3://【バケット名】/【フォルダ名】/  ./

S3上のフォルダ内のすべてのファイルを一括でをローカルにダウンロードする

aws s3 cp s3://【バケット名】/【フォルダ名】/  ./   --recursive

カレントディレクトリ内の sample.txt を S3 の backet-name/fonder-name にアップロードする

aws s3 cp ./sample.txt s3://backet-name/fonder-name

カレントディレクトリごと backet-name/fonder-name にアップロードする

aws s3 cp ./ s3://backet-name/fonder-name --recursive
# バケットの一覧を表示する
aws s3 ls

# バケットの内容を表示する
aws s3 ls s3://{バケット名}/{パス}

# バケットを作成する
aws s3 mb s3://{バケット名}

# バケットを削除する(空でない場合は削除されない)
aws s3 rb s3://{バケット名}

# バケットを削除する(空でなくても削除される)
aws s3 rb s3://{バケット名} --force

# バケットの内容をローカルのフォルダと同期する(追加・更新のみで削除されない)
aws s3 sync {フォルダパス} s3://{バケット名}/{パス}

# バケットの内容をローカルのフォルダと同期する(削除もされる)
aws s3 sync {フォルダパス} s3://{バケット名}/{パス} --delete

# ローカルのファイルをバケットにコピーする
aws s3 cp {ファイルパス} s3://{バケット名}/{パス}

# ローカルのファイルをバケットに移動する
aws s3 mv {ファイルパス} s3://{バケット名}/{パス}

# バケットのファイルを削除する
aws s3 rm s3://{バケット名}/{ファイルパス}

# バケットのフォルダを削除する
aws s3 rm s3://{バケット名}/{フォルダパス} --recursive

引用元 : https://bit.ly/44wCXCn

● IAM ユーザーの作成

もしIAMユーザーがない場合はIAM ユーザーの作成をしましょう

AWS コンソールにログインしたら、IAM で検索して移動し、以下のリンクからユーザーを作成します。

直接IAMユーザーを作成する場合は「IAMユーザーを作成します」を選択します

管理者権限を持ったIAMユーザーを作成する場合は以下の例のようにユーザーグループ「AdminUserGroup」を作成します。
(その後、IAMユーザー作成完了後に作成したユーザーに対してユーザーグループを設定します)

管理者権限を持ったIAMユーザーに請求—ボードへのアクセスを許可する場合は次のURLから設定を変更します

https://console.aws.amazon.com/billing/home#/account
( クリック後に画面の下の方までスクロールして、「AM ユーザー/ロールによる請求情報へのアクセス」を探します )

添付ファイル1
IAM-01.png ( 48.6 KBytes ) ダウンロード
添付ファイル2
IAM-01.png ( 25.9 KBytes ) ダウンロード
添付ファイル3
添付ファイル4
添付ファイル5
添付ファイル6
添付ファイル7
No.2334
03/11 09:31

edit

添付ファイル

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
07/13 10:02

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