この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
最初に書く
協栄情報の陸です。AWSの初心者です。この記事は、日々の学習と発生した問題を記録するために使用されます。記事の中に問題を解決するには遅すぎる場所があるかもしれませんが、解決策を知った後、問題に解決策を追加しますので、ご安心ください。
初めに
今日行った実験は、CloudWatchのルールを作ってみました。 設定した時間に従います。 EC2インスタンスを自動的に起動してシャットダウンします。
まず、EC2やクラウドウォッチのログを操作する機能を持つポリシーを作成します。
ここではjson形式で作成するかどうかを選択します。
ポリシー名を入力し、EC2とCloudWatch Logsのポリシーかどうかを確認する
その後、新しいロールを作成します。
サービスセレクトラムダ
先ほど作成したポリシーを選択します。
ロール名を入力し、確認してロールを作成します。
ラムダページで、新しいラムダ関数の作成を選択します。
関数名を入力し、言語はpythonを選択し、先ほど作成したロールを選択します。
コードを書いて、それをデプロイし、それをテストするには、テストする前にec2インスタンスの状態を確認します。
テストに成功した後のec2インスタンスの状態を確認します。
CloudWatchのインターフェイスに移動し、ルールを選択して新規作成します。
スケジュールを選択し、コーン式にチェックを入れ、EC2インスタンスを開始またはシャットダウンする期間を入力します。
次にターゲットを追加し、ラムダ関数を選択し、関数は先ほど作成した関数を選択します。
コーン式に注意してください、それぞれこれを行うには2つの方法があります:Seconds Minutes Hours DayofMonth Month DayofWeek YearとSeconds Minutes Hours DayofMonth Month DayofWeek
その後、ルールの名前を入力し、作成を選択します。
その後、設定した時間を待ち、EC2インスタンスの状態が変わったかどうかを確認します。
Python Code:
import boto3
region = "ap-northeast-1"
instances = ['i-01fc1f9d1731adcaf','i-0be583ae4b64d8447','i-0bee7ef208e4c21cc']
ec2 = boto3.client('ec2',region_name = region)
def lambda_handler (event , context):
# start
ec2.start_instances(InstanceIds = instances)
print("start the instances" + str(instances))
# stop
ec2.start_instances(InstanceIds = instances)
print("stopped the instances" + str(instances))
ポリシ
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"ec2:Start*",
"ec2:Stop*"
],
"Resource": "*"
}
]
}
問題
コードをテストしている間、以下のような問題が発生しました。
最初のエラーは、句読点を間違えてコードを書いてしまい、大文字小文字の区別がつかなくなってしまったことです。
第二のエラーは、トウモロコシ表現の各位置の意味を理解していなかったために生じたものであり、これが誤りにつながった。
まとめ
個人的には、この実験をするには我慢が必要だと思います。 特に文字に注意すること、その他の注意点としては、CloudWatchで設定した時間が来てもすぐにEC2インスタンスが起動しなかったり、シャットダウンしなかったりすることがあります。