如何在aws lambda中执行bash命令

时间:2017-02-22 20:26:00

标签: python bash amazon-web-services amazon-s3 aws-lambda

我正在尝试在AWS lambda中安排一项工作,我从Json API获取数据。我想每次都将JSON文件传输到amazon S3。我已经设置了S3存储桶和具有正确IAM角色的aws lambda函数。我在Python中编写AWS lambda函数。代码在EC2实例上运行正常,但如果我把它放在AWS Lambda中,它就不会将文件传输到S3。

import os


def lambda_handler(event, context):
    #changing the directory to /tmp
    os.chdir("/tmp")
    print "loading function"
    #downloading file to 
    os.system("wget https://jsonplaceholder.typicode.com/posts/1 -P /tmp")
    #using aws-cli to transfer file to amazon S3
    os.system("aws s3 sync . s3://targetbucket")

我是aws lambda的新手。我没有收到任何错误,但它没有给我预期的输出

1 个答案:

答案 0 :(得分:2)

AWS Lambda默认没有aws cli

您可以在其中创建deployment package awscli或使用python boto3库。

import boto3

s3client = boto3.client('s3')
for filename in os.listdir('/tmp'): # assuming there will not be any sub-directories
    fpath = os.path.join('/tmp',filename)
    if os.path.isfile(fpath): 
        s3client.upload_file(fpath, 'targetbucket', filename)