一覧に 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 になります。)
https://awscli.amazonaws.com/AWSCLIV2.pkg
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
npm install -g aws-cdk
cdk --version
例えば以下のように返ってきます
2.80.0 (build bbdb16a)
printenv | grep AWS
aws sts get-caller-identity
cat ~/.aws/config
新しいプロファイルを作成する場合は次のコマンドを実行します
<プロファイル名>のところは IAM ユーザー名にしておくとわかりやすいと思います
aws configure --profile <プロファイル名>
プロファイルを変更するには
export AWS_PROFILE=<プロファイル名>
言語: typescript で initします
mkdir my-first-infra && cd my-first-infra
cdk init --language typescript
cdk ls
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
});
}
}
npm run build
cdk synth
最初に1度必要です(CDKに必要な権限を作成します。)
cdk bootstrap aws://<12桁のアカウント番号>/<リージョン名>
✅ Environment aws://<12桁のアカウント番号>/<リージョン名> bootstrapped.
と出ればokです。
npm run build
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
aws s3 ls
cdk destroy
削除すると CloudFormation から対象のスタックを削除します。 なお、S3 バケットなどは残ります。
AWS CloudFormationスタック強制削除ツール - 365歩のテック
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,
});
}
}
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",
],
}),
)
}
}
AWSコンソール → EC2 → Elastic IP
削除したいIPアドレスにチェックをつけ
IPアドレスの解放を行う
以上です。
cat ~/.aws/credentials は 平文のまま保存するので少々危険です
aws-vault を使用しましょう
brew install --cask aws-vault
aws-vault --version
aws cli の場合、次のコマンドで設定を行いますが .....
aws configure --profile <プロファイル名>
aws-vault の場合、次のコマンドで設定を行います
aws-vault add <プロファイル名>
aws_access_key_id と aws_secret_access_key を入力します。
Enter Access Key ID: AKIAXXXXXXXXXXXXXXXX
Enter Secret Access Key:
続けてパスワード入力を促されるのでパスワードを入力します。 入力すると次のようなメッセージが出て完了します
Added credentials to profile "xxxxxxxxxxx" in vault
作成したキーを確認する
aws-vault ls
aws s3 ls
バケットが表示されることを確認する。(もちろんあらかじめS3バケットを作成しておいてください)
mv ~/.aws ~/___OFF___.aws
aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure". エラーとなることを確認する。
aws-vault exec <プロファイル名> -- aws s3 ls
これでコマンドが無事実行できれば成功です!!!
https://aws.amazon.com/jp/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つの設定が必要です。設定しましょう。
2-1. アクセスキーを作成する ( ~/.aws/credentials )
2-2. 認証情報のプロファイルを設定する ( ~/.aws/config )
AWSコンソールログイン → IAM → ユーザー →(対象のユーザー選択)→ セキュリティ認証情報→ アクセスキーの作成
から作成します。
↓
↓
最後にCSVファイルをダウンロードします。ダウンロードしたファイルは ~/aws_cli/ にでも保存しておきましょう。
コマンドラインから次のコマンドで設定を行います
<プロファイル名>のところは 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
これでとりあえずの準備が完了です
プロファイルを削除するにはファイルごと削除するか、エディタで開いて対象のプロファイルを削除します。
cat ~/.aws/credentials
とすればわかるように、いくら自分のローカル端末とは言え平文のままでは危険です。
aws-vault を設定しましょう。
aws-vault を使って AWS のアクセスキーを暗号化して扱おう | microCMSブログ
S3 の ディレクトリ一覧を取得する
export AWS_PROFILE=my-profile
aws s3 ls
通常は .bash_profile にでも指定しておきます
.bash_profile
# AWS CLI
export AWS_PROFILE=my-profile
S3 の ディレクトリ一覧を取得する
aws s3 ls --profile my-profile
プロファイルを先に指定してもokです
aws --profile my-profile s3 ls
ユーザー情報を取得
aws sts get-caller-identity
faws で切り替えコマンドが起動します。
function faws() {
local profile=$(aws configure list-profiles | sed "/default/d" | sort | fzf )
export AWS_PROFILE="$profile"
}
https://github.com/johnnyopao/awsp
バケット(フォルダ)内のファイル数とファイルサイズの合計を取得
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 ls s3://{バケット}/{パス}/ --recursive --human --sum
# バケットを作成する
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 ユーザーの作成をしましょう
AWS コンソールにログインしたら、IAM で検索して移動し、以下のリンクからユーザーを作成します。
直接IAMユーザーを作成する場合は「IAMユーザーを作成します」を選択します
管理者権限を持ったIAMユーザーを作成する場合は以下の例のようにユーザーグループ「AdminUserGroup」を作成します。
(その後、IAMユーザー作成完了後に作成したユーザーに対してユーザーグループを設定します)
管理者権限を持ったIAMユーザーに請求—ボードへのアクセスを許可する場合は次のURLから設定を変更します
https://console.aws.amazon.com/billing/home#/account
( クリック後に画面の下の方までスクロールして、「AM ユーザー/ロールによる請求情報へのアクセス」を探します )
「EC2」→「Elastic Block Store」→「ボリューム一覧から対象のディスクを選択」→「アクションからスナップショットを作成」
説明欄に後から見たときにわかるような説明を追記しておきましょう(日本語はNGです)
これで実行すると、スナップショットの作成が開始されます。30 GBで約10分程度で作成されます。
「EC2」→「Elastic Block Store」→「スナップショットから対象のスナップショットを選択」→「削除」
$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 );
・AWS Console へログインする
・EC2 へアクセスする
・左メニューの「ネットワーク&セキュリティ」の下の「Elastic IP」をクリックする
・右上の「Elastic IPアドレスの割り当て」をクリックする
・遷移した画面でそのまま「割当」ボタンをクリックする
・「アクション」のところ「Elastic IPの関連付け」を選択する
・「インスタンス」にEC2インスタンスを選択、「プライベートIPアドレス」にIPを選択する
・「関連付ける」ボタンを押す
https://awscli.amazonaws.com/AWSCLIV2.pkg からインストーラーをインストールする
aws --version
このような文字列が返ってくればインストールは成功しています
aws-cli/2.1.4 Python/3.7.4 Darwin/19.6.0 exe/x86_64
こちらの画像のようにIAMユーザーを設定します。 設定完了後に画面に表示される「アクセスキー」「シークレットアクセスキー 」を保存しておきます。
aws configure
設定例
AWS Access Key ID : <先ほど保存したアクセスキー>
AWS Secret Access Key : <先ほど保存したシークレットアクセスキー >
Default region name : ap-northeast-1
Default output format : json
● 4 .AWS CLI のコマンド
(うまく値が返ってこないときは権限不足を疑いましょう)
aws iam list-users
aws iam list-groups
aws s3 ls
Lambdaとは
Lambdaとはサーバーの管理を意識することなく(=サーバーレスと言います)、サーバープログラムを実行させる Amazon のクラウドサービスです
https://aws.amazon.com/jp/console/
git clone https://github.com/ysugimoto/aws-lambda-image.git
cd aws-lambda-image
npm install .
npm audit fix
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
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
CloudWatch Manager を使用して次の3つのオペレーションだけで
「EC2サーバの自動停止・自動起動」が行えます
・IAMから「自動停止・起動用ロールの作成」
・CloudWatchから「自動停止イベントルールの作成」
・CloudWatchから「自動起動イベントルールの作成」
・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ルールイベント作成時「既存のロールを使用」の選択一覧リストに表示されません
・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
自動停止設定の仕方と全く同じです。
違うのは次の設定のところです
「ターゲット」を SSM Automation を選択する
「ドキュメント」を AWS-StartEc2Instance
last reboot
・停止や起動には 2〜3分かかることがあるので 2〜3分待ってみましょう
・EC2マシンの時刻がずれていないかチェックしましょう。
ずれている場合は修正しましょう
sudo ntpdate 169.254.169.123
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"
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
パッケージのインストール
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
から選んで指定します。
$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 には ディレクトリ名とファイル名のパスが返ります。
$url = \Storage::disk('s3')->url("testdir/i9WBM4ag2gJ83rmKYDR8DBW12XxsWiaXah8V5voh.png");
files : ファイル一覧を取得 allFiles : 下の階層のファイル一覧も取得
$list = \Storage::disk('s3')->files('');
$list = \Storage::disk('s3')->allFiles('');
$dir_list = \Storage::disk('s3')->directories('/');
// ファイル削除
$disk->delete(【バケットのrootディレクトリからの相対パス】);
\Storage::disk('s3')->deleteDirectory('testdir');
\Storage::disk('s3')->copy($old_path, $new_path);
\Storage::disk('s3')->move($old_path, $new_path);
\Storage::disk('s3')->setVisibility($file_path, 'public'); // 公開にする
\Storage::disk('s3')->setVisibility($file_path, 'private'); // 非公開にする
$disk = Storage::disk('s3');
if (!$disk->move('bucketOne/testFile.jpg', 'bucketTwo/testFile.jpg')) {
throw new \Exception('File could not be moved.');
}
( 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
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 が 返ってきます (まだ逆引きが設定できていない。)
逆引きゾーン 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. |
としてレコードセットの作成を行います。
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
EC2 インスタンスのディスク種類は事前に確認しておきましょう!
AMI タイプ - Amazon Elastic Compute Cloud
Ec2ダッシュボードから「AMI」→「パブリックイメージを選択」し「ルートデバイス」を見ることで、
EBS-backed instance
Instance Store-Backed
のどちらかを判別することが出来ます。
AWS を作成して一番最初にするのは .. 「請求アラーム」です
「AWSトップ」→「Billing」→「Billingの設定」→「請求アラームを管理する」を選択すると「CloudWatch」に移動します。
続けて以下のように設定します。
・ナビゲーションペインで、[アラーム]、[アラームの作成] の順に選択します。
・[メトリクスの選択] を選択します。[すべてのメトリクス] タブで、[請求]、[概算合計請求額] を選択します。
・[概算請求額] の横にあるチェックボックスをオンにして、[メトリクスの選択] を選択します。
・[Conditions (条件)] で、[Static (静的)] を選択します。
・[Whenever EstimatedCharges is (EstimatedCharges が次の時)] で、[Greater (大きい)] を選択します。
・[than (より)] には、アラームをトリガーするために超える必要がある金額 (たとえば 200) を入力します。
(注記:当月の現在の料金がプレビューグラフに表示されます。_
・[Next] を選択します。
・[通知] で、アラームが ALARM 状態のときに通知するための SNS トピックを選択します。
(同じアラーム状態または複数の異なるアラーム状態について複数の通知を送信するには、[Add notification (通知の追加)] を選択します。)
・完了したら、[次へ] を選択します。
・アラームの名前と説明を入力します。名前には ASCII 文字のみを使用します。続いて、[次へ] を選択します。
・[Preview and create (プレビューして作成)] で、情報と条件が正しいことを確認し、アラームの作成] を選択します。