実現したいこと
AWS上で特定のサーバ複数台が停止している際に別の特定のサーバ複数台も停止するLambdaを作成したい
前提
プログラミング初心者です。
Lambdaにて特定のサーバが停止していることをトリガーにほかの特定のサーバも停止するスクリプトの作成を
検討しています。
Environmentというタグが01のサーバにてrunningステータスのものが一台もない場合は、
Environmentタグ02のサーバをすべて停止したいと考えております。
###調査したこと・試したこと
https://tex2e.github.io/blog/infrastructure/aws-stop-ec2
こちらのページのスクリプトを参考に、コードを作成していますが、エラーが発生しており
どう直せばいいかわからない状態です。
やりたいことに沿う形で直し方がわかる方がいらっしゃればご教示下さい。
発生している問題・エラーメッセージ
{
"errorMessage": "Syntax error in module 'lambda_function': unindent does not match any outer indentation level (lambda_function.py, line 19)",
"errorType": "Runtime.UserCodeSyntaxError",
"stackTrace": [
" File "/var/task/lambda_function.py" Line 19\n instances = ec2.instances.filter(Filters=filters)\n"
]
}
該当のソースコード
import boto3
ec2 = boto3.resource('ec2')
def lambda_handler(event, context):
# create filter for instances in running state
filters = [
{
'Name': 'instance-state-name',
'Values': ['running']
},
{ # EC2のタグ「Environment」の値が「01」
'Name': 'tag:Environment',
'Values': ['01'],
}
]
instances = ec2.instances.filter(Filters=filters)
StoppedInstances = []
for instance in instances:
StoppedInstances.append(instance.id) print (instance.id) if len(response['Reservations']) <= 0: instance_ids = [] for instance_dic in response['Reservations']: instance_ids.append(instance_dic['Instances'][0]['InstanceId']) response = client.stop_instances(InstanceIds=instance_ids) print('[+] stop ec2 on region "%s"' % region['RegionName']) print(response) continue
stop_ec2()

あなたの回答
tips
プレビュー