lambdaでAuroraを停止する
やりたいこと
lambdaでAuroraを停止したい!
ただし前回同様の手順で行おうとすると、エラーが出ます。
エラーは以下の通り。
'RDS' object has no attribute 'stop_db_cluster'
調べると以下がひっかかります。
https://github.com/boto/boto3/issues/1723
lambdaがデフォルトで使用するboto3にはまだstop_db_clusterが実装されていないということですね。
というわけで基本的には前回と同様の手順を踏みますが、lambda関数をデプロイする部分だけ変更します。
準備
デプロイ用のディレクトリを作成します。
$ mkdir stop-aurora
上記ディレクトリに以下のpythonのファイルをおきます。
import boto3
def lambda_handler(event, context):
dbcluster = 'testdb'
client = boto3.client('rds')
response = client.stop_db_cluster(DBInstanceIdentifier=dbcluster)
print(response)
return 0
デプロイパッケージの作成
以下のドキュメントにしたがってパッケージを作成します。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html
1.最新のboto3をダウンロードする
$ pip3 install boto3 -t ./stop-aurora
2.zip圧縮する
$ cd stop-aurora
$ zip -r stop-aurora .
ここで注意したいのは、ドキュメントにもある以下の内容です。
ディレクトリ自体ではなく、ディレクトリ内に含まれているディレクトリのコンテンツを圧縮します。ZIP ファイルの内容は、Lambda 関数の現在の作業ディレクトリとして利用できます (例: /project-dir/codefile.py/lib/yourlibraries)。この場合、/project-dir に含まれているコンテンツを圧縮します。
ディレクトリ自体を圧縮してしまうとlambda実行時に以下のエラーが出るので注意してください
"errorMessage": "Bad handler 'lambda_handler'"
3.aws cliで関数を作成する
以下のコマンドで作成できます。
$ aws lambda create-function \
--function-name stop-aurora \
--runtime python3.6 \
--role <lambda作成用ロール> \
--handler stop-aurora.lambda_handler \
--zip-file fileb://stop-aurora.zip
関数ができています!やったね!
あとは前回と同様の手順で実行できます。
Author And Source
この問題について(lambdaでAuroraを停止する), 我々は、より多くの情報をここで見つけました https://qiita.com/aoi1/items/af9bcc5081d8b6659e4f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .