标签: serverless

在 YAML 中使用 Fn::GetAtt 时,流集合条目之间缺少逗号

我正在尝试在 YAML 中为 DynamoDB 添加事件流,DynamoDB 表是一个根据其部署到的环境而变化的变量,我用来Fn::GetAtt确定TABLE_NAME,但它给了我一个例外。

  1. 语法正确吗?
  2. 除了 YAML 之外,还有其他方法可以配置流吗Fn::GetAtt

例外:

missed comma between flow collection entries in "erverless.yml" at line 60, 
column28:Fn::GetAtt: [ ${self:custom.TABLE_NAME ...
Run Code Online (Sandbox Code Playgroud)

代码:

  custom:
      TABLE_NAME : mix of account + env + name
  events:
  - stream:
      type: dynamodb
      arn:
        Fn::GetAtt: [ ${self:custom.TABLE_NAME}, StreamArn ]
Run Code Online (Sandbox Code Playgroud)

yaml serverless-framework amazon-dynamodb-streams serverless

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

使用 AWS CDK 更新基础设施是否安全

我们计划使用基于AWS CDK的无服务器堆栈工具包部署无服务器后端。

我知道某些 AWS 资源无法更新。例如,无法在现有 dynamodb 表上创建新的排序键。我认为此更新是使用 AWS CDK 自动实现的:要更新的表被销毁,然后使用新架构创建。这可能会对生产中的现有应用程序造成巨大的问题......

我们如何确定哪种更新是安全的,哪种更新是关键的?

如果您使用 AWS CDK,如何管理基础设施更新?

updates amazon-web-services serverless aws-cdk

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

Faasd - 无法从私人注册表中提取映像

我有一个使用 OpenFaaS 的应用程序。

特别是,我使用faasd,因为该函数将在处理能力较差的设备上运行。我有一个私人注册表,上面有一个“X”函数的图像。我想从 faasd 中提取此映像来部署并执行它,但我遇到了一个问题:当我尝试执行该操作时,我似乎没有经过身份验证,但我正确地传递了registryAuth令牌。

这里有一个我正在做的示例(遵循此https://ericstoekl.github.io/faas/operations/managing-images/#deploy-functions-with-private-registries-credentials

邮政

<ip_address>:8080/system/functions
Run Code Online (Sandbox Code Playgroud)

标题:

{
"Authorization": "mytoken"
}
Run Code Online (Sandbox Code Playgroud)

身体:

{
    "service": "functionName",
    "image": "<registry_ip_address>/functions/functionName:<version>",
    "envProcess": "/.../myprocess",
    "registryAuth": <base64 token obtained from 'user:password'>,
    "secrets": [
        "mysecret"
    ]
}
Run Code Online (Sandbox Code Playgroud)

我确认参数全部正确,但收到此错误:

“无法拉取映像 <registry_ip_address>/functions/functionName:: 无法拉取:无法解析引用“<registry_ip_address>/functions/functionName:”:没有为令牌身份验证质询指定范围”

注册表运行良好,因为如果我尝试使用 docker 以经典方式下载映像,我就能够拉取映像。

先感谢您!

docker faas serverless containerd openfaas

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

无服务器:配置死信SQS队列

我使用无服务器来配置通过 AWS SQS 接收事件的 Lambda 函数。现在我想添加一个死信队列。这就是我到目前为止所拥有的:

service: myservice

plugins:
  - serverless-plugin-lambda-dead-letter

provider:
  name: aws
  runtime: go1.x
  region: eu-central-1
  iamRoleStatements:
    - Effect: "Allow"
      Action:
        - "sqs:*"
      Resource:
        - "*"

package:
 exclude:
   - ./**
 include:
   - ./bin/**

functions:
  main:
    handler: bin/send-mail
    deadLetter:
      sqs:
        queueName: send-mail-dlx
        messageRetentionPeriod: 200000
    events:
      - sqs: arn:aws:sqs:eu-central-1:123456789:send-mail
Run Code Online (Sandbox Code Playgroud)

两个 SQS 队列均已成功创建,但死信队列send-mail-dlx未分配为 的死信队列send-mail。如何在我的无服务器配置中正确分配它?

amazon-sqs amazon-web-services serverless

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

如何从 Lambda NodeJS 中的 serverless.yml 获取服务名称和函数名称?

service: serverless-demo-app        
provider:
  name: aws
  runtime: nodejs10.x

functions:
  sample1:
    handler: sample1/handler
    events:
      - http:
          path: sample1
          method: get
  sample2:
    handler: sample2/handler
    events:
      - http:
          path: sample2
          method: get
Run Code Online (Sandbox Code Playgroud)

当我从sample1调用sample2时,我需要它的全名,例如:serverless-demo-app-dev-sample2

那么,如何获取function1内的服务名称、函数名称和环境名称呢?

node.js serverless

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

在 React 中单击按钮时调用 Lambda 函数

首先,我只想说我对 AWS 总体来说还是个新手(1-2 周)。所以我可能从一开始就认为不正确。

我正在开发一个应用程序,我想在 JSX 中单击按钮并触发 Lambda 函数,该函数从 dynamodb 表获取数据并将其显示在 UI 中。

我正在使用 aws cdk 将基础设施编写为代码。我该怎么面对这个?您有我可以遵循的指南吗?

amazon-web-services aws-lambda serverless aws-cdk

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

验证 AppSync DynamoDB 解析器中的用户输入

我有 AWS AppSync API 和 DynamoDb,我可以使用DynamoDb Resolvers创建并从中获取数据。(VTL模板)

我不确定如何使用 VTL 模板进行用户输入验证。我想确保联系人的“firstName”长度在 2 - 30 个字符之间。

如何使用 VTL 实现这一目标?有没有办法在 GraphQL 模式本身内进行这种验证?

这是我的 GraphQL 架构,

schema {
   query: Query
   mutation: Mutation
}

type Mutation {
   createContact(contact: ContactInput!): Contact! 
}

type Contact {
    contactId: ID!
    firstName: String!
    lastName: String!
    email: String!
}

input ContactInput {
    firstName: String!
    lastName: String!
    email: String!
}
Run Code Online (Sandbox Code Playgroud)

amazon-web-services graphql serverless aws-appsync

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

插入无服务器堆栈上的 Aws Timestream 时出现访问被拒绝错误

我正在尝试将记录插入到我的 aws 时间流表中。它的获取导致了访问被拒绝错误。

这是serverless.yml上的权限

    - Effect: Allow
      Action:
        - timestream:*
      Resource:
        - arn:aws:timestream:${self:provider.region}:*:database/*
        - arn:aws:timestream:${self:provider.region}:*:database/*/*/*
Run Code Online (Sandbox Code Playgroud)

我是 lambda 的角色详细信息。

{
            "Action": [
                "timestream:*"
            ],
            "Resource": [
                "arn:aws:timestream:us-east-1:*:database/*",
                "arn:aws:timestream:us-east-1:*:database/*/*/*"
            ],
            "Effect": "Allow"
        },

Run Code Online (Sandbox Code Playgroud)

记录样本

{
    "DatabaseName": "developmentreportsdb",
    "TableName": "developmenteventstable",
    "Records": [
        {
            "Dimensions": [
                {
                    "Name": "accountId",
                    "Value": "6921e43e-266c-4adf-8a69-d90bd8743d1b"
                },
                {
                    "Name": "userId",
                    "Value": "6921e43e-266c-4adf-8a69-d90bd8743d1b"
                }
            ],
            "MeasureName": "ACCOUNT.NEW",
            "MeasureValue": "6921e43e-266c-4adf-8a69-d90bd8743d1b",
            "MeasureValueType": "VARCHAR",
            "Time": "1644234263813",
            "TimeUnit": "MILLISECONDS",
            "Version": 1
        }
    ]
}

Run Code Online (Sandbox Code Playgroud)

错误详情:

Error writing records: AccessDeniedException: User: arn:aws:sts::344128203239:assumed-role/development-us-east-1-lambdaRole/development-worker is not authorized …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation serverless amazon-timestream

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

Azure 提供商中的 AWS lambda 层相当于什么?

问题

\n

我有一个项目是独立的aws 无服务器后端,它利用 lambda 层概念来共享node_modules和其他custom dependencies

\n

在我的案例中,自定义依赖项的用例之一是将所有常见代码(例如HTTP_STATUS_CODE枚举)以及Api responses util状态代码和续集模型和服务放在一个文件夹中,稍后将其复制到node_modules并将其托管到s3 bucket

\n

文件夹结构

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 customDependencies\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 nodejs\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sequelizeORM\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 config\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 migrations\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 seeders\n\xe2\x94\x82\xc2\xa0\xc2\xa0         \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 services\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 node_modules\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 functions\n     \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 func1\n     \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 func2\n   \xc2\xa0    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 func3\n    \n\n
Run Code Online (Sandbox Code Playgroud)\n

在将函数部署到 AWS 提供商之前,我将所有文件从customDependenciesto复制node_modules并将其推node_modules送到 S3 并创建一个所有 lambda 函数引用的层资源node_modules

\n

使用通用代码的函数示例

\n
//func1\n\nimport {HTTP_STATUS_CODE, stringifyResponse} from …
Run Code Online (Sandbox Code Playgroud)

azure amazon-web-services webpack serverless-framework serverless

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

HonoJS CORS 与 cloudflare 工作人员

我从 cloudflare worker 开始,并使用推荐的路由框架 HonoJS。现在,实现 cors 功能的记录方法在我的开发机器(npm run dev)上对我不起作用。我没有在生产中测试它,因为我需要它在开发环境中工作。

问题是:OPTION 请求返回 404。

如何设置全局 CORS 配置?

我的代码目前是这样的:

import { Hono } from 'hono'
import { cors } from 'hono/cors'
import { basicAuth } from 'hono/basic-auth'

import { default as register } from './register.js'

const app = new Hono()
app.use('*', cors())

const user = new Hono()
// also tried: user.use('/*', cors())
user.post('/register', register)

// Register route groups
app.route('/user', user)

export default app
Run Code Online (Sandbox Code Playgroud)

还尝试了以下 cors 调用:

cors({
    origin: 'http://localhost:5173',
    allowHeaders: ['X-Custom-Header', 'Upgrade-Insecure-Requests'],
    allowMethods: …
Run Code Online (Sandbox Code Playgroud)

serverless cloudflare-workers hono

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