質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

2602閲覧

Lambda上でAWSCLIを動かしてタグ付きEBSスナップショットを取得したい

y.c

総合スコア13

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2019/06/28 07:06

編集2019/06/28 07:07

#前提・実現したいこと
Lambda上でAWSCLIを動かしてタグ付きEBSスナップショットを取得。

発生している問題・エラーメッセージ

Lambda上でAWSCLIを動かしてS3 Syncするを参考にさせて頂き、lambda上でAWSCLIが操作可能になり。

次に
AWSCLIでタグ付きEBSスナップショットを取得するを参考にさせて頂きlambda_function.pyに

Python

1import subprocess 2import os 3 4def lambda_handler(event, context): 5 cmd = '''./aws ec2 create-snapshot --volume-id vol-xxxxxxxxxxx --tag-specification 'ResourceType="snapshot",Tags=[{Key="Name",Value="TESTSS"}]' --description "addtagsnapshot" ''' 6 result = subprocess.run( 7 cmd.split(" "), 8 stdout=subprocess.PIPE, 9 stderr=subprocess.STDOUT 10 ) 11 print(result.stdout.decode())

と入力してLambda上で実行してみたのですが

lambdaのログは

START RequestId: bae3a9d7-c7b6-458e-a08f-fc89202766c5 Version: $LATEST Error parsing parameter '--tag-specifications': Expected: '=', received: ''' for input: 'ResourceType="snapshot",Tags=[{Key="Name",Value="TESTSS"}]' ^

と帰ってきてしまい実行することができませんでした。

思うこと

Lambda上でAWSCLIを動かしてS3 Syncするの記事のlambda_function.py

import subprocess def lambda_handler(event, context): cmd = './aws s3 sync s3://<src bucket name> s3://<dest bucket name>' result = subprocess.run( cmd.split(" "), stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) print(result.stdout.decode())

このコードを改良すれば実行することができると思うのですが、私の現在の実力だとどうして良いのか分からず、どうかお力添えいただけますと幸いです。
よろしくお願いいたします。

補足情報

Python 3.7.2
aws-cli/1.16.185 Python/3.7.2 Linux/4.4.0-151-generic botocore/1.12.175



気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2019/06/28 11:41

「=」を期待していたが「'」だったのでエラーということですので、cmd 文字列の中の「'」「"」を削除するとどうなるでしょうか? シェルが実行するのではないので、「'」「"」をそのままコマンド引数として受け取っているのではないでしょうか。
y.c

2019/06/29 06:11

ご返答ありがとうございます。 cmd文字列の中の「'」「"」を削除して cmd = '''./aws ec2 create-snapshot --volume-id vol-xxxxxxxxxxxxx --tag-specification ResourceType=snapshot,Tags=[{Key=Name,Value=TESTSS}] --description addtagsnapshot ''' と実行してみたところ無事に実行するとことが出来ました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問