标签: serverless

每当使用无服务器将文件上传到s3存储桶时,都将获取电子邮件

我想按上面的标题中所述将文件上传到s3存储桶时,我想接收电子邮件,我使用的是无服务器,问题是我在s3上创建的事件仅在s3-aws控制台上通知我,并且不不知道如何在S3上配置cloudwatch事件以触发lambda。因此,如果有人知道如何使用cloudwatch触发S3上的事件,我将不知所措。这是我的代码:

import json
import boto3
import botocore
import logging
import sys
import os
import traceback


from botocore.exceptions import ClientError
from pprint import pprint
from time import strftime, gmtime

email_from = '*****@******.com'
email_to = '******@******.com'
#email_cc = '********@gmail.com'
email_subject = 'new event on s3 '
email_body = 'a new file is uploaded'


#setup simple logging for INFO
logger = logging.getLogger()
logger.setLevel(logging.INFO)

from botocore.exceptions import ClientError

def sthree(event, context):
 """Send email whenever a file is uploaded to S3"""
body = {}
status_code …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services python-2.7 amazon-ses serverless

0
推荐指数
1
解决办法
1188
查看次数

在AWS lambda服务器上运行dockerized函数

我想知道在为无服务器计算创建函数时是否可以使用docker?


如果是这样,它会是什么样子?


如何指定函数处理程序?


有关此主题的任何文章或教程?


您如何在AWS-Lambda上下文中应用这些问题?任何细节?


谢谢.

amazon-web-services docker aws-lambda serverless

0
推荐指数
1
解决办法
438
查看次数

无服务器异步功能错误

我正在使用无服务器来运行lambda函数。

尝试执行时面临问题 sls invoke local --function myFunction

exports.myFunction = async (event) => {
                         ^
SyntaxError: Unexpected token (
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:542:28)
    at Object.Module._extensions..js (module.js:579:10)
Run Code Online (Sandbox Code Playgroud)

无服务器配置看起来像这样。

serverless.yaml

service: myService

provider:
  name: aws
  runtime: nodejs8.10
  stage: ${opt:stage, 'dev'}
  region: eu-west-1

  environment:
    CUSTOM_ENV: ${opt:stage, 'dev'}


functions:
  myFunction:
    handler: index.myFunction
    events:
      - http: 
          cors: true
          path: /{proxy+}
          method: POST
plugins:
  - serverless-offline
  - serverless-webpack
Run Code Online (Sandbox Code Playgroud)

webpack.config.js

const slsw = require("serverless-webpack");
const nodeExternals = require("webpack-node-externals");
const path = require('path');

module.exports …
Run Code Online (Sandbox Code Playgroud)

node.js async-await serverless

0
推荐指数
1
解决办法
449
查看次数

无服务器:此服务中不存在该功能

在无服务器环境中,我的功能具有以下目录结构:

serverless.yml
functions -
    stories -
        create.js
        get.js
Run Code Online (Sandbox Code Playgroud)

serverless.yml然后我的样子是这样的:

functions:
  stories:
    create:
      handler: functions/stories/create.main
      events:
        - http:
          path: stories/create
          method: post
          cors: true
          authorizer: aws_iam
    get:
      handler: functions/stories/get.main
      events:
        - http:
          path: stories/{id}
          method: get
          cors: true
          authorizer: aws_iam
Run Code Online (Sandbox Code Playgroud)

但是,当我运行测试以检查创建时:serverless invoke local --function create --path mocks/create-event.json我得到以下错误:

Serverless Error ---------------------------------------

  Function "create" doesn't exist in this Service
Run Code Online (Sandbox Code Playgroud)

我设法使一个函数看起来像这样:

functions:
  stories:
    handler: functions/stories/create.main
    events:
      - http:
        path: stories/create
        method: post
        cors: true
        authorizer: aws_iam
Run Code Online (Sandbox Code Playgroud)

由于我添加了get函数,因此我决定需要添加create和故事后的部件,但是无论我如何更改处理程序,这些函数似乎都不存在。

我尝试将路径更改为functions/stories/create/create.main无差异,是否有明显的缺失,我不允许在同一位置使用多个处理程序?

我正在看下面的 …

javascript serverless-framework serverless aws-serverless

0
推荐指数
2
解决办法
1187
查看次数

AWS Lambda是否适合实时API Rest?

我正在学习AWS Lambda,并且担心同步实时请求。lambda具有“冷启动”的事实,对于处理GET请求来说听起来并不好。

假设用户正在使用该应用程序并执行GET HTTP请求以获取产品或产品列表,如果lambda处于睡眠状态,则将需要10秒钟来响应,我认为这不是可接受的响应时间。使用AWS Lambda进行经典(同步响应)API Rest是好还是不好的做法?

amazon-web-services aws-lambda serverless

0
推荐指数
2
解决办法
2247
查看次数

在 GraphQL Playground 中设置我要使用的测试标头会导致“无法访问服务器”

因此,我创建了一堆突变和查询,并将它们拼接在一起,这些工作并希望将身份验证引入到组合中。我添加了一个 HTTP 标头“x-token”来保存我的登录令牌,以便能够删除他们的工作或用户本身等内容。

const getMe = async req => {
  const token = req.headers['x-token'];

  if (token) {
    try {
      return await jwt.verify(token, "notSoSecret");
    } catch (e) {
      throw new AuthenticationError(
        'Your session expired. Sign in again.',
      );
    }
    }
  };

  const server = new ApolloServer({
    typeDefs: schema,
    resolvers,
    formatError: error => {
      // remove the internal sequelize error message
      // leave only the important validation error
      const message = error.message
        .replace('SequelizeValidationError: ', '')
        .replace('Validation error: ', '');

      return {
        ...error, …
Run Code Online (Sandbox Code Playgroud)

node.js sequelize.js apollo graphql serverless

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

Serverless+Webpack:在 ZIP 中包含 .pem 文件

我尝试使用无服务器将 lambda 函数部署到 AWS。一切正常,但该函数无法执行,因为找不到两个文件(就是这么fs.readFileSync说的)。我将它们包含在 serverless.yml 中,并包含以下几行:

provider:
  name: aws
  runtime: nodejs10.x
  stage: dev
  region: eu-central-1

package:
  exclude:
    - .env
  include:
    - src/config/push-cert.pem
    - src/config/push-key.pem
Run Code Online (Sandbox Code Playgroud)

当我查看上传到 S3 的 .zip 文件时,两个 .pem 文件都不包含在内。我已经尝试使用__dirnamelambda 函数获取完整的文件路径。我的webpack.config.js样子如下:

const path = require("path");
const nodeExternals = require("webpack-node-externals");
const slsw = require("serverless-webpack");
module.exports = {
    entry: slsw.lib.entries,
    target: "node",
    node: {
        __dirname: true
    },
    mode: slsw.lib.webpack.isLocal?"development":"production",
    externals: [nodeExternals()],
    output: {
        libraryTarget: "commonjs",
        // pay attention to this
        path: path.join(__dirname, ".webpack"),
        filename: "[name].js" …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services webpack serverless-framework serverless aws-serverless

0
推荐指数
1
解决办法
2726
查看次数

无服务器支持 AWS DocumentDB 吗?

我在一家使用 Serverless 构建云原生应用程序和服务的公司工作。今天,我们将 DynamoDB 和 SQL 数据库与 AWS Aurora 结合使用。

我们希望将 DocumentDB 用于我们的下一个应用程序,但我们找不到有关 Serverless 和 AWS DocumentDB 的任何信息。Serverless 是否支持 AWS DocumentDB?如果没有,未来是否有计划支持它?

mongodb amazon-web-services serverless

0
推荐指数
1
解决办法
1716
查看次数

无服务器 DynamoDB 未显示在 AWS 管理控制台中

我正在学习如何使用无服务器框架来创建和管理 AWS 服务。我已经使用无服务器站点上的文档逐步部署了无服务器项目,但由于某种原因,我无法在 AWS 管理控制台中看到 DynamoDB 表。

我已检查我使用的 AWS 配置文件是否正确,当我从终端使用 cURL 时,我能够从表中发布和获取数据,并且能够在浏览器中查看这些端点上的数据,但我无法在 serverless.yml 文件之外的任何地方看到对创建的表的任何引用。这是为什么?请参阅下面的代码(完整的演示存储库位于此链接: https: //github.com/serverless/examples/tree/master/aws-node-rest-api-with-dynamodb)。

感谢您帮助学习这里的细微差别。谢谢!


org: justinbell714
app: jb-test-from-docs
service: serverless-rest-api-with-dynamodb

frameworkVersion: ">=1.1.0 <2.0.0"

provider:
  name: aws
  runtime: nodejs10.x
  environment:
    DYNAMODB_TABLE: ${self:service}-${opt:stage, self:provider.stage}
  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
      Resource: "arn:aws:dynamodb:${opt:region, self:provider.region}:*:table/${self:provider.environment.DYNAMODB_TABLE}"

functions:
  create:
    handler: todos/create.create
    events:
      - http:
          path: todos
          method: post
          cors: true

  list:
    handler: todos/list.list
    events:
      - http:
          path: todos
          method: get
          cors: …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-dynamodb aws-lambda serverless

0
推荐指数
1
解决办法
498
查看次数

如何使用无服务器框架在单个 serverless.yml 文件中创建不同的阶段或环境?

我是使用无服务器框架的新手,我想创建三个不同的环境 dev、Qa、prod。如何在单个 serverless.yml 文件中创建?提供商是AWS。

serverless

0
推荐指数
1
解决办法
1421
查看次数

从 getInitialProps 向 /api 文件夹发出请求

在我的应用程序中,我将请求发送到getInitialPropsapi 端点(在 /api 文件夹中)。在本地主机中运行我的应用程序时,一切正常,因为它都在同一域(本地主机)下。

将我的应用程序成功部署到 aws lambda (使用serverless-next.js)后,这些请求不再有效。
原因是getInitialProps在服务器中运行时的主机头是myAppBucket.s3.us-east-1.amazonaws.com,但应用程序域是https://d25q7fh11ll2cg.cloudfront.net。请求myAppBucket.s3.us-east-1.amazonaws.com/api/users不起作用但起作用https://d25q7fh11ll2cg.cloudfront.net/api/usershttps://d25q7fh11ll2cg.cloudfront.net/api/users但我运行时没有域数据(即) getInitialProps

我不想将域作为环境变量。还有另一种解决方案吗?此外,直接调用处理程序函数getInitialProps也是有问题的,因为处理程序仅使用服务器端包。谢谢

aws-lambda next.js serverless

0
推荐指数
1
解决办法
1964
查看次数

Amazon Athena:HIVE_METASTORE_ERROR:名称应位于 [...] 的位置 22,但找到了“ ”

我使用无服务器文件 + CloudFormation 在 AWS Athena 服务上创建表。

我的无服务器.yml:

...
CardBulkWorkgroup:
  Type: AWS::Athena::WorkGroup
  Properties:
    Name: ${opt:stage}-${opt:client}-CardBulk
    WorkGroupConfiguration:
      ResultConfiguration:
        OutputLocation: s3://${lower:${opt:stage}}-${lower:${opt:client}}-card-bulk-athena-result

CardBulkDatabase:
  Type: AWS::Glue::Database
  Properties:
    CatalogId: !Ref AWS::AccountId
    DatabaseInput:
      Name: ${lower:${opt:stage}}_${lower:${opt:client}}_bulkcard

CardBulkTable:
  Type: AWS::Glue::Table
  Properties:
    CatalogId: !Ref AWS::AccountId
    DatabaseName: !Ref CardBulkDatabase
    TableInput:
      Name: card
      StorageDescriptor:
        Columns:
          - Name: cardId
            Type: int
          - Name: metadata
            Type: struct<orderId:string, convertVirtualToPhysicalErrors:string>
          - Name: orderId
            Type: string
          - Name: errors
            Type: string
        Location: s3://${lower:${opt:stage}}_${lower:${opt:client}}-files/cards
        InputFormat: org.apache.hadoop.mapred.TextInputFormat
        OutputFormat: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat
        SerdeInfo:
          SerializationLibrary: org.openx.data.jsonserde.JsonSerDe
          Parameters:
            "serialization.format": "1"

CardBulkAthenaBucketResult:
  Type: AWS::S3::Bucket …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation amazon-athena serverless

0
推荐指数
1
解决办法
3205
查看次数