2016-01-06 36 views
8

ラムダ関数の中にbashスクリプトを書くことはできますか? awsドキュメントでは、Python、NodeJS、Java 8で書かれたコードを実行できることを読んでいます。bashスクリプトをAWSラムダ関数内に書くことができます

Bashを使用することは可能かもしれませんが、具体的な証拠はありません。

+0

ラムダ関数の中にbashスクリプトを書きたいと思っていますか?または、ラムダ関数としてbashスクリプトを使用しますか?どちらも違います。 – helloV

+0

@helloVラムダ関数としてbashスクリプトを使用したいと考えています – user5241806

+0

私が提案した解決策があなたのために働くかどうか教えてください。 – helloV

答えて

5

Amazon Lambda - Pythonを使用してシェルコマンドunameの出力をキャプチャできました。

以下はコードベースです。

from __future__ import print_function 

import json 
import commands 

print('Loading function') 

def lambda_handler(event, context): 
    print(commands.getstatusoutput('uname -a')) 

これは、詳細については、出力

START RequestId: 2eb685d3-b74d-11e5-b32f-e9369236c8c6 Version: $LATEST 
(0, 'Linux ip-10-0-73-222 3.14.48-33.39.amzn1.x86_64 #1 SMP Tue Jul 14 23:43:07 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux') 
END RequestId: 2eb685d3-b45d-98e5-b32f-e9369236c8c6 
REPORT RequestId: 2eb685d3-b74d-11e5-b31f-e9369236c8c6 Duration: 298.59 ms Billed Duration: 300 ms  Memory Size: 128 MB Max Memory Used: 9 MB 

がリンクをチェックし、表示 - https://aws.amazon.com/blogs/compute/running-executables-in-aws-lambda/

5

あなたが述べたように、AWSはバッシュを使用してラムダ関数を作成する方法を提供していません。

本当にbash関数が必要な場合は、任意の言語でbashスクリプトを "ラップ"できます。ここで

は、Javaでの例です。

Process proc = Runtime.getRuntime().exec("./your_script.sh"); 

ビジネスのニーズに応じて、パフォーマンスの低下を避けるために、ネイティブ言語(PythonやNodeJS、Javaの)を使用して検討すべきです。

6

何か助けになるかもしれない、私はNodeを使用してbashスクリプトを呼び出しています。スクリプトとnodejsファイルをzip形式でラムダにアップロードしました。次のコードをハンドラとして使用しました。

exports.myHandler = function(event, context,callback) { 
 
    const execFile = require('child_process').execFile; 
 
    const child = execFile('./test.sh', (error, stdout, stderr) => { 
 
    if (error) { 
 
     callback(error); 
 
    } 
 
    callback(null,stdout); 
 
    }); 
 
}

はあなたが必要とするデータを返すために、コールバックを使用することができます。

1

'child_process'ノードモジュールを使用して可能です。

const exec = require('child_process').exec; 

exec('echo $PWD && ls', (error, stdout, stderr) => { 
    if (error) { 
    console.log("Error occurs"); 
    console.error(error); 
    return; 
    } 
    console.log(stdout); 
    console.log(stderr); 
}); 

これにより、現在の作業ディレクトリが表示され、ファイルが一覧表示されます。

関連する問題