GVKun编程网logo

ubuntu – 无法让phantomjs在aws lambda上工作(ubuntu无法被ping)

12

在本文中,我们将给您介绍关于ubuntu–无法让phantomjs在awslambda上工作的详细内容,并且为您解答ubuntu无法被ping的相关问题,此外,我们还将为您提供关于AWSLambdaJ

在本文中,我们将给您介绍关于ubuntu – 无法让phantomjs在aws lambda上工作的详细内容,并且为您解答ubuntu无法被ping的相关问题,此外,我们还将为您提供关于AWS Lambda Java:Lambda无法解压缩文件、AWS Lambda-无法导入模块“ lambda_function”、aws-lambda – AWS lambda调用不调用另一个lambda函数 – Node.js、com.amazonaws.services.lambda.AWSLambdaClientBuilder的实例源码的知识。

本文目录一览:

ubuntu – 无法让phantomjs在aws lambda上工作(ubuntu无法被ping)

ubuntu – 无法让phantomjs在aws lambda上工作(ubuntu无法被ping)

我正在尝试使用node-lambda执行phantomjs,主要是我在网上找到的碎片
https://github.com/justengland/phantom-lambda-template

我在使用node43部署node-lambda时遇到了一些问题,但手动安装最新的源代码似乎在这方面有所帮助.

但是现在我在运行lambda函数时遇到了麻烦.我明白了

2016-04-12T16:47:12.133Z    3330adb9-00ce-11e6-9c08-d79a6bc84748    Calling phantom:  /var/task/phantomjs [ '/var/task/phantomjs-script.js' ]
2016-04-12T16:47:12.236Z    3330adb9-00ce-11e6-9c08-d79a6bc84748    Error: spawn EACCES
    at exports._errnoException (util.js:870:11)
    at ChildProcess.spawn (internal/child_process.js:298:11)

看起来像lambda无法访问幻像二进制文件.
有什么办法可以让函数获得更多的权限吗?

谢谢

解决方法

出现此问题的原因可能是您将本地构建的二进制文件部署到AWS Lambda. Lambda requires it’s binaries to be compiled for Amazon Linux,否则无法执行它们(除非你是超级幸运的).

如果您正在调用任何可执行文件或使用二进制文件附带的库,则需要在使用Amazon Linux的EC2计算机上编译它们,并使用Lambda函数中的结果. This is a very basic tutorial.

如果您已经这样做了,还要确保您使用的二进制文件是可执行的(您可以通过调用chmod 777 your_executable来完成此操作).我猜你已经这样做了(在你的情况下,phantomjs也应该照顾这个),但这是EACCES的主要错误来源.

AWS Lambda Java:Lambda无法解压缩文件

AWS Lambda Java:Lambda无法解压缩文件

我正在尝试将Java与AWS Lambda结合使用。我创建了一个具有所有依赖项的jar文件(使用maven-assembly-
plugin)。上传后,我无法调用lambda。我收到错误消息Calling the Invoke API failed with message: Lambda was not able to unzip the file。jar文件为11 MB。我可以用java -jar

AWS Lambda-无法导入模块“ lambda_function”

AWS Lambda-无法导入模块“ lambda_function”

像我之前的许多其他人一样,我正在尝试运行一个AWS Lambda函数,当我尝试对其进行测试时,

“ errorMessage”:“无法导入模块’lambda_function’”

我的处理程序设置为lambda_function.lambda_handler,我确实有一个名为lambda_function.py的文件,其中包含一个名为lambda_handler的函数。这是屏幕截图作为证明:
在此处输入图片说明

当我在随附的IDE中内联编写代码片段时,一切工作正常,但是当我将完整程序及其所有依赖项压缩并上传后,出现上述错误。

我正在使用Numpy和Scipy程序包,它们非常大。我的压缩目录为34 MB,未压缩的目录为122 MB。我认为这应该没问题,因为压缩目录的限制为50
MB。似乎上传正常,因为我看到以下消息:

Lambda函数“单镜头图像分类”的部署包太大,无法启用内联代码编辑。但是,您仍然可以立即调用函数。

我已经看到一些帖子通过使用virtualenv解决了这个问题,但是我对这种技术并不熟悉,我不确定如何正确使用它。

我也看到一些帖子说,有时依赖项具有依赖项,我可能需要包括这些依赖项,但是我不确定如何找到它。

这是lambda_function.py的顶部,应该足以查看我正在使用的库,并且确实具有lambda_handler函数:

import os
import boto3
import numpy as np
from scipy.ndimage import imread
from scipy.spatial.distance import cdist

def lambda_handler(event,context):

    s3 = boto3.resource('s3')

这是我要上传的目录的未压缩版本的屏幕截图:
在此处输入图片说明

如果这可能是一个问题,我还可以发布Lambda使用的策略角色。

非常感谢任何见解!

更新:

这是我尝试的一种解决方案:1. git clone https://github.com/Miserlou/lambda-packages
2.在Documents中创建一个名为new_lambda的文件夹3.将我的lambda_function.py和numpy文件夹从lambda软件包复制到new_lambda中,以及我使用Docker
for AWS编译的scipy库文章:https : //serverlesscode.com/post/scikitlearn-with-amazon-
linux-container/ 4.右键单击new_lambda文件夹并选择“ compress”压缩它

我的结果:

无法导入模块“ lambda_function”:没有名为“ lambda_function”的模块

重申一下,我的文件名为lambda_function.py,并包含一个名为lambda_handler的函数,该函数接受两个参数(如上所示)。此信息与在Handler中看到的信息相同,也与上面看到的信息相同。

如果这很重要,我正在使用Mac计算机。

更新2

如果我按照上述步骤操作,而是直接选择要压缩的文件来压缩文件,然后右键单击并选择“压缩”,则会出现错误

无法导入模块“ lambda_function”:无法导入名称“ show_config”

另外,预编译的lambda软件包表示它们是为“至少Python 2.7”编译的,但是我的lambda运行时是3.6。这可能是个问题吗?

aws-lambda – AWS lambda调用不调用另一个lambda函数 – Node.js

aws-lambda – AWS lambda调用不调用另一个lambda函数 – Node.js

赋予所有权限以调用功能.我的Lambda函数不能调用另一个函数.每次超时时间超时30秒.看起来lambda不能得到另一个lambda函数

我的羊羔在同一地区,同样的政策,同样的安全组织.另外VPC在两个羊羔都是一样的.唯一不同的是现在是lambda功能

这里是角色权利

1)创建AWSLambdaExecute和AWSLambdaBasicExecutionRole

2)创建一个要调用的lambda函数
Lambda_TEST

exports.handler = function(event,context) {
  console.log('Lambda TEST Received event:',JSON.stringify(event,null,2));
  context.succeed(event);
};

3)这是调用它的另一个函数.

var AWS = require('aws-sdk');
AWS.config.region = 'us-east-1';
var lambda = new AWS.Lambda();

exports.handler = function(event,context) {
 var params = {
   FunctionName: 'Lambda_TEST',// the lambda function we are going to invoke
   InvocationType: 'RequestResponse',LogType: 'Tail',Payload: '{ "name" : "Arpit" }'
 };

  lambda.invoke(params,function(err,data) {
   if (err) {
    context.fail(err);
   } else {
   context.succeed('Lambda_TEST said '+ data.Payload);
  }
 })
};

参考文献:This link

解决方法

注意

我将通过执行器来表示执行第二个lambda的lambda.

为什么超时?

由于执行者被“锁定”在VPC之后 – 所有互联网通信都被阻止.

这导致任何http(s)呼叫被超时,因为它们请求数据包不会到达目的地.

这就是aws-sdk完成的所有操作导致超时.

简单的解决方案

如果执行程序不必在VPC中,只需将其放在其中即可,如果没有VPC,则lambda也可以正常工作.

当lambda调用VPC中的资源时,需要在VPC中定位lambda.

真正的解决方案

从上述可以看出,位于VPC内部的资源无法访问互联网 – 这是不正确的 – 只需要进行几个配置.

>创建VPC.
>创建2个子网,一个私人和第二个公共(这些术语在前面解释,继续阅读).
>创建Internet网关 – 这是将VPC连接到互联网的虚拟路由器.
>创建NAT网关 – 选择公共子网并为其创建一个新的弹性IP(该IP是您的VPC本地) – 此组件将管道到互联网网关的通信.
>创建2个路由表 – 一个命名为public,第二个是私有的.

>在公共路由表中,转到路由并添加新路由:

Destination: 0.0.0.0/0

Target: the ID of the internet-gateway

>在私有路由表中,转到路由并添加新路由:

Destination: 0.0.0.0/0

Target: the ID of the nat-gateway

>私有子网是其路由表中的子网,没有到互联网网关的路由.
>公共子网是一个子网,它的路由表中有一个到互联网网关的路由

我们在这里

我们创建了这样的东西:

VPC with NAT and IGW

这允许私有子网中的资源调出互联网.
您可以找到更多文档here.

com.amazonaws.services.lambda.AWSLambdaClientBuilder的实例源码

com.amazonaws.services.lambda.AWSLambdaClientBuilder的实例源码

项目:lambda-selenium    文件:TestInvoker.java   
public TestResult run() {
    final LambdaSeleniumService lambdaService = LambdaInvokerFactory.builder()
            .lambdaClient(AWSLambdaClientBuilder.defaultClient())
            .build(LambdaSeleniumService.class);

    return lambdaService.runTest(request);
}
项目:aws-maven-plugin    文件:LambdaDeployer.java   
void deploy(AwsKeyPair keyPair,String region,String zipFilename,String functionName,Proxy proxy) {
    long t = System.currentTimeMillis();
    final AWSCredentialsProvider credentials = new AWsstaticCredentialsProvider(
            new BasicAWSCredentials(keyPair.key,keyPair.secret));

    AWSLambda lambda = AWSLambdaClientBuilder.standard().withCredentials(credentials)
            .withClientConfiguration(Util.createConfiguration(proxy)).withRegion(region).build();

    byte[] bytes;
    try {
        bytes = IoUtils.toByteArray(new FileInputStream(zipFilename));
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
    DecimalFormat df = new DecimalFormat("0.000");
    log.info("deploying " + zipFilename + ",length=" + df.format(bytes.length / 1024.0 / 1024.0)
            + "MB,to functionName=" + functionName);
    lambda.updateFunctionCode( //
            new UpdateFunctionCodeRequest() //
                    .withFunctionName(functionName) //
                    .withPublish(true) //
                    .withZipFile(ByteBuffer.wrap(bytes)));
    log.info("deployed in " + (System.currentTimeMillis() - t) + "ms");
}
项目:aws-xray-sdk-java    文件:TracingHandlerTest.java   
@Test
public void testLambdaInvokeSubsegmentContainsFunctionName() {
    // Setup test
    AWSLambda lambda = AWSLambdaClientBuilder.standard().withRequestHandlers(new TracingHandler()).withRegion(Regions.US_EAST_1).withCredentials(new AWsstaticCredentialsProvider(new BasicAWSCredentials("fake","fake"))).build();

    AmazonHttpClient amazonHttpClient = new AmazonHttpClient(new ClientConfiguration());
    ConnectionManagerAwareHttpClient apacheHttpClient = Mockito.mock(ConnectionManagerAwareHttpClient.class);
    HttpResponse httpResponse = new BasicHttpResponse(new BasicStatusLine(HttpVersion.HTTP_1_1,200,"OK"));
    Basichttpentity responseBody = new Basichttpentity();
    responseBody.setContent(new ByteArrayInputStream("null".getBytes(StandardCharsets.UTF_8))); // Lambda returns "null" on successful fn. with no return value
    httpResponse.setEntity(responseBody);

    try {
        Mockito.doReturn(httpResponse).when(apacheHttpClient).execute(Mockito.any(HttpUriRequest.class),Mockito.any(HttpContext.class));
    } catch (IOException e) { }

    WhiteBox.setInternalState(amazonHttpClient,"httpClient",apacheHttpClient);
    WhiteBox.setInternalState(lambda,"client",amazonHttpClient);

    // Test logic
    Segment segment = AWSXRay.beginSegment("test");

    InvokeRequest request = new InvokeRequest();
    request.setFunctionName("testFunctionName");
    InvokeResult r = lambda.invoke(request);
    System.out.println(r.getStatusCode());
    System.out.println(r);

    Assert.assertEquals(1,segment.getSubsegments().size());
    Assert.assertEquals("Invoke",segment.getSubsegments().get(0).getAws().get("operation"));
    System.out.println(segment.getSubsegments().get(0).getAws());
    Assert.assertEquals("testFunctionName",segment.getSubsegments().get(0).getAws().get("function_name"));
}
项目:intellij-idea-plugin-connector-for-aws-lambda    文件:ConnectorModel.java   
public ConnectorModel(Regions region,String profileName) {

        ProfileCredentialsProvider profileCredentialsProvider = new ProfileCredentialsProvider(profileName);

        awsLambdaClient = AWSLambdaClientBuilder.standard()
                .withRegion(region)
                .withCredentials(profileCredentialsProvider)
                .build();
    }
项目:jrestless    文件:FeignLambdaServiceInvokerClient.java   
protected AWSLambda resolveAwsLambdaClient() {
    AWSLambda resolvedClient = awsLambdaClient;
    if (resolvedClient == null && region != null) {
        resolvedClient = AWSLambdaClientBuilder.standard().withRegion(region).build();
    }
    return requiretoBuild(resolvedClient,"an awsLambdaClient or a region is required");
}
项目:openbd-core    文件:LambdaAsyncExecute.java   
/**
 * Executes a lambda function and returns the result of the execution.
 */
@Override
public cfData execute( cfSession _session,cfArgStructData argStruct ) throws cfmRunTimeException {

    AmazonKey amazonKey = getAmazonKey( _session,argStruct );

    // Arguments to extract
    String payload = getNamedStringParam( argStruct,"payload",null );
    String functionName = getNamedStringParam( argStruct,"function",null );
    String qualifier = getNamedStringParam( argStruct,"qualifier",null );

    try {

        // Construct the Lambda Client
        InvokeRequest invokeRequest = new InvokeRequest();
        invokeRequest.setInvocationType( InvocationType.Event );
        invokeRequest.setLogType( LogType.Tail );
        invokeRequest.setFunctionName( functionName );
        invokeRequest.setPayload( payload );
        if ( qualifier != null ) {
            invokeRequest.setQualifier( qualifier );
        }

        // Lambda client must be created with credentials
        BasicAWSCredentials awsCreds = new BasicAWSCredentials( amazonKey.getKey(),amazonKey.getSecret() );
        AWSLambda awsLambda = AWSLambdaClientBuilder.standard()
                .withRegion( amazonKey.getAmazonRegion().toAWSRegion().getName() )
                .withCredentials( new AWsstaticCredentialsProvider( awsCreds ) ).build();

        // Execute
        awsLambda.invoke( invokeRequest );

    } catch ( Exception e ) {
        throwException( _session,"AmazonLambdaAsyncExecute: " + e.getMessage() );
        return cfBooleanData.FALSE;
    }

    return cfBooleanData.TRUE;
}
项目:service-block-samples    文件:AWSLambdaConfigurerAdapter.java   
/**
 * Creates a proxy instance of a supplied interface that contains methods annotated with
 * {@link LambdaFunction}. Provides automatic credential support to authenticate with an IAM
 * access keys using {@link BasicSessionCredentials} auto-configured from Spring Boot
 * configuration properties in {@link AmazonProperties}.
 *
 * @param type
 * @param <T>
 * @return
 */
public <T> T getFunctionInstance(Class<T> type) {
    return LambdaInvokerFactory.builder()
            .lambdaClient(AWSLambdaClientBuilder.standard()
                    .withRegion(Regions.US_EAST_1)
                    .withCredentials(new LambdaCredentialsProvider(amazonProperties))
                    .build())
            .build(type);
}
项目:service-block-samples    文件:AWSLambdaConfigurerAdapter.java   
public AWSLambda getLambdaClient() {
    return AWSLambdaClientBuilder.standard()
            .withRegion(Regions.US_EAST_1)
            .withCredentials(new LambdaCredentialsProvider(amazonProperties))
            .build();
}
项目:openbd-core    文件:LambdaExecute.java   
/**
 * Executes a lambda function and returns the result of the execution.
 */
@Override
public cfData execute( cfSession _session,null );

    try {

        // Construct the Lambda Client
        InvokeRequest invokeRequest = new InvokeRequest();
        invokeRequest.setInvocationType( InvocationType.RequestResponse );
        invokeRequest.setLogType( LogType.Tail );
        invokeRequest.setFunctionName( functionName );
        invokeRequest.setPayload( payload );
        if ( qualifier != null ) {
            invokeRequest.setQualifier( qualifier );
        }

        // Lambda client must be created with credentials
        BasicAWSCredentials awsCreds = new BasicAWSCredentials( amazonKey.getKey(),amazonKey.getSecret() );
        AWSLambda awsLambda = AWSLambdaClientBuilder.standard()
                .withRegion( amazonKey.getAmazonRegion().toAWSRegion().getName() )
                .withCredentials( new AWsstaticCredentialsProvider( awsCreds ) ).build();

        // Execute and process the results
        InvokeResult result = awsLambda.invoke( invokeRequest );

        // Convert the returned result
        ByteBuffer resultPayload = result.getPayload();
        String resultJson = new String( resultPayload.array(),"UTF-8" );
        Map<String,Object> resultMap = Jackson.fromJsonString( resultJson,Map.class );

        return tagUtils.convertToCfData( resultMap );

    } catch ( Exception e ) {
        throwException( _session,"AmazonLambdaExecute: " + e.getMessage() );
        return cfBooleanData.FALSE;
    }

}

今天的关于ubuntu – 无法让phantomjs在aws lambda上工作ubuntu无法被ping的分享已经结束,谢谢您的关注,如果想了解更多关于AWS Lambda Java:Lambda无法解压缩文件、AWS Lambda-无法导入模块“ lambda_function”、aws-lambda – AWS lambda调用不调用另一个lambda函数 – Node.js、com.amazonaws.services.lambda.AWSLambdaClientBuilder的实例源码的相关知识,请在本站进行查询。

本文标签: