标签: serverless-framework

无服务器框架 - Python和Requirements.txt

使用无服务器框架v1.0.0,我的服务根目录中有一个'requirements.txt',内容是依赖python包的列表.(例如请求).

但是,由于看起来这些依赖项未作为打包的一部分安装,因此我的部署函数失败了

'无法导入模块'处理程序':没有名为requests的模块'

我认为它是无服务器的pip安装,但我的结果zip文件很小,很明显它没有这样做,无论是设计还是我的错,因为我错过了什么?是因为它的Lambda这样做了吗?如果是这样,我错过了什么?)

是否有文件说明了执行此操作所需的内容及其工作原理?是pip安装这些还是在aws lambda端无服务器?

感谢谢谢!

aws-lambda serverless-framework

10
推荐指数
3
解决办法
9101
查看次数

如何在无服务器框架中分配功能级别IamRoleStatements?

我想为serverless.yml中列出的不同功能分配不同的权限

 functions:
  hello:
    handler: handler.hello
  crawl-distributor:
    handler: CrawlDistributor.handler
  product-scanner:
    handler: ProductScanner.handler
    iamRoleStatements:
      - Effect: Allow
        Action:
          - dynamodb:*
          - lambda:*
        Resource: "*"
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用.当我在提供程序级别添加iamRoleStatements时,它可以工作,但最终会将权限应用于所有函数.

 provider:
  name: aws
  runtime: nodejs4.3
  stage: api
  region: us-east-1
  profile: dev
  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:*
        - lambda:*
      Resource: "*"
Run Code Online (Sandbox Code Playgroud)

amazon-iam aws-lambda serverless-framework

10
推荐指数
1
解决办法
3162
查看次数

我们如何使用serverless.yml创建AWS S3存储桶并向其添加文件?

我想知道serverless.yml在无服务器框架的部署过程中是否可以利用创建存储桶并向其添加特定文件.

到目前为止,我已经能够添加创建存储桶的S3资源,但不知道如何添加特定文件.

resources:
  Resources:
    UploadBucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: ${self:custom.s3.bucket}
        AccessControl: Private
        CorsConfiguration:
          CorsRules:
          - AllowedMethods:
            - GET
            - PUT
            - POST
            - HEAD
            AllowedOrigins:
            - "*"
            AllowedHeaders:
            - "*"
Run Code Online (Sandbox Code Playgroud)

不确定是否可能,或者serverless.yml在部署过程中如何利用上传默认文件(如果还没有).

amazon-s3 aws-cloudformation aws-lambda serverless-framework

10
推荐指数
1
解决办法
1万
查看次数

如何使用serverless.yml部署AWS elasticsearch

我需要使用AWS elasticsearch服务,但也希望自动化它.我们有无服务器配置.我们如何使用serverless.yml创建AWS elasticsearch服务?

amazon-web-services elasticsearch serverless-framework

10
推荐指数
1
解决办法
2632
查看次数

AWS Lambda - Java Bean

我有一个如下所示的请求:

package pricing

import scala.beans.BeanProperty

class Request(@BeanProperty var name: String, @BeanProperty var surname: String) {
  def this() = this(name="defName", surname="defSurname")
}
Run Code Online (Sandbox Code Playgroud)

处理程序如下:

package pricing

import com.amazonaws.services.lambda.runtime.{Context, RequestHandler}
import scala.collection.JavaConverters
import spray.json._


class ApiGatewayHandler extends RequestHandler[Request, ApiGatewayResponse] {

  import DefaultJsonProtocol._

  def handleRequest(input: Request, context: Context): ApiGatewayResponse = {
    val headers = Map("x-foo" -> "coucou")
    val msg = "Hello " + input.name
    val message = Map[String, String]("message" -> msg )
    ApiGatewayResponse(
      200,
      message.toJson.toString(),
      JavaConverters.mapAsJavaMap[String, Object](headers),
      true
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

已被记录为:

functions:
  pricing: …
Run Code Online (Sandbox Code Playgroud)

java scala aws-lambda aws-api-gateway serverless-framework

10
推荐指数
1
解决办法
936
查看次数

如何使用无服务器框架部署到S3 Bucket中的特定对象键?

无服务器框架配置允许:

deploymentBucket:
    name: foo
Run Code Online (Sandbox Code Playgroud)

但是,它始终serverlessfoo存储桶内创建对象键.我希望能够部署到不同的密钥,如BAR.

deploymentBucket:
    name: foo/BAR # illustration only, doesn't work
Run Code Online (Sandbox Code Playgroud)

我有什么选择?

amazon-s3 amazon-web-services aws-lambda serverless-framework

10
推荐指数
1
解决办法
393
查看次数

如何在Cloudformation中获取区域AWS API网关的自定义域的目标域名?

我正在尝试在AWS上创建一个多区域无服务器应用程序.我按照这里给出的说明进行操作.我正在使用无服务器框架,它使用Cloudformation脚本在AWS上创建所有资源.

我想为API网关创建一个自定义域作为区域端点.创建区域端点时,它会生成目标域.我想知道如何在Cloudformation脚本中获取目标域的值?

当我创建Edge优化端点时,我使用该DistributionDomainName属性获取CloudFront部署的值.但是,在创建区域端点时,我没有看到目标域名的任何属性.我尝试使用DistributionDomainName区域端点的属性,但它会抛出一个错误,表示没有DistributionDomainName.

以下是我脚本的一部分 -

# Creates a custom domain for the ApiGateway
customDomain:
  Type: 'AWS::ApiGateway::DomainName'
  Properties:
    DomainName: ${self:custom.domain}
    EndpointConfiguration:
      Types:
        - REGIONAL
    RegionalCertificateArn: ${self:custom.certificateArn}

# Insert a DNS record in route53 hosted zone to redirect from the custom domain to CF distribution
dnsRecord:
  Type: AWS::Route53::RecordSet
  Properties:
    Region: ${self:provider.region}
    SetIdentifier: ${self:provider.region}
    HostedZoneId: ${self:custom.hostedZoneId}
    Name: ${self:custom.domain}
    Type: CNAME
    TTL: 60
    ResourceRecords:
      - "Fn::GetAtt": [customDomain, DistributionDomainName]
Run Code Online (Sandbox Code Playgroud)

请帮忙.谢谢!

UPDATE

Cloudformation现在通过RegionalDomainName属性返回区域域名.它可以用作Fn:GetAtt : [customDomain, …

regional amazon-web-services aws-cloudformation aws-api-gateway serverless-framework

10
推荐指数
1
解决办法
2025
查看次数

无服务器:使用私有Python包作为依赖项

我有一个使用私有Git(在Github上)repo上的Python无服务器项目.

Requirements.txt文件如下所示:

itsdangerous==0.24
boto3>=1.7
git+ssh://git@github.com/company/repo.git#egg=my_alias
Run Code Online (Sandbox Code Playgroud)

项目的配置主要是这样的

plugins:
  - serverless-python-requirements
  - serverless-wsgi
custom:
  wsgi:
    app: app.app
    packRequirements: false
  pythonRequirements:
    dockerizePip: true
    dockerSsh: true
Run Code Online (Sandbox Code Playgroud)

当我使用此命令进行部署时:

sls deploy --aws-profile my_id --stage dev --region eu-west-1
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

  Command "git clone -q ssh://git@github.com/company/repo.git /tmp/pip-install-a0_8bh5a/my_alias" failed with error code 128 in None
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我怀疑我为Github访问配置SSH密钥的方式或无服务器包的配置.

python pip serverless-framework serverless

10
推荐指数
1
解决办法
728
查看次数

使用 vscode 离线 Node 调试无服务器

我正在使用 VS Code 开发 AWS Lambda 函数,我开始使用无服务器框架和无服务器离线库,但是,我无法使用 VS Code 的调试模式在本地调试代码。

我指的是许多网站,以下是其中之一: https://medium.com/@OneMuppet_/debugging-lambada-functions-locally-in-vscode-with-actual-break-points-deee6235f590

我的项目结构如下:

在此输入图像描述

Package.json:

在此输入图像描述

launch.json:

在此输入图像描述

当我开始调试时出现以下错误:

在此输入图像描述

有人可以指导一下正确的配置吗?

javascript node.js visual-studio-code serverless-framework serverless-offline

10
推荐指数
2
解决办法
6653
查看次数

无法验证以下目标配置(S3 到 SQS)

我正在尝试使用无服务器建立一个工作流程,该工作流程创建一个新的 S3 存储桶、一个新的 SQS 队列,当在 S3 存储桶中创建一个对象时,将消息放入队列中,并在队列上有足够的消息时启动 lambda队列。我的资源块中有以下内容:

resources:
  Resources:
    AnalyticsQueue:
      Type: "AWS::SQS::Queue"
      Properties:
        QueueName: "my-queue"
    S3EventQueuePolicy:
      Type: AWS::SQS::QueuePolicy
      DependsOn: AnalyticsQueue
      Properties:
        PolicyDocument:
          Id: SQSPolicy
          Statement:
            - Effect: Allow
              Action: sqs:SendMessage:*
              Resource: !Ref AnalyticsQueue
        Queues:
          - !GetAtt AnalyticsQueue.Arn
    AnalyticsBucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: "my-bucket"
        NotificationConfiguration:
          QueueConfigurations:
            - Event: s3:ObjectCreated:*
              Queue: !GetAtt AnalyticsQueue.Arn
Run Code Online (Sandbox Code Playgroud)

当我尝试部署它时,我收到以下错误:

发生错误:AnalyticsBucket - 无法验证以下目标配置(服务:Amazon S3;状态代码:400;错误代码:InvalidArgument;请求 ID:E2A1F8BD6BEE6EF4;)。

经过一番谷歌搜索,我发现问题出NotificationConfigurationAnalyticsBucket. 如果我删除整个子块,它部署得很好,但显然在创建对象时不会在队列上生成消息。

正在寻找解决这个问题的方法。

amazon-s3 amazon-sqs aws-cloudformation serverless-framework

10
推荐指数
2
解决办法
4万
查看次数