标签: serverless-architecture

AWS CLI:Lambda无法假定为该函数定义的角色

AWS CLI版本:

aws --version
aws-cli/1.11.21 Python/2.7.12 Darwin/15.3.0 botocore/1.4.78
Run Code Online (Sandbox Code Playgroud)

尝试创建Lambda函数并获取错误:

An error occurred (InvalidParameterValueException) when calling the CreateFunction operation: The role defined for the function cannot be assumed by Lambda.
Run Code Online (Sandbox Code Playgroud)

角色创建为:

aws iam create-role --role-name microrole --assume-role-policy-document file://./trust.json
Run Code Online (Sandbox Code Playgroud)

trust.json 是:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

政策附件如下:

aws iam put-role-policy --policy-document file://./policy.json --role-name microrole --policy-name micropolicy
Run Code Online (Sandbox Code Playgroud)

policy.json 是:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup", …
Run Code Online (Sandbox Code Playgroud)

security amazon-web-services aws-cli aws-lambda serverless-architecture

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

AccessDeniedException:无法确定要授权的服务/操作名称

使用AWS CLI

aws --version
aws-cli/1.11.21 Python/2.7.12 Darwin/15.3.0 botocore/1.4.78
Run Code Online (Sandbox Code Playgroud)

按照https://github.com/arun-gupta/serverless/tree/master/aws/microservice#post-method中的说明为API网关创建POST方法.可以使用test-invoke-methodAWS Console 成功调用此方法.

使用AWS CLI创建GET方法https://github.com/arun-gupta/serverless/tree/master/aws/microservice#get-method.使用test-invoke-method和AWS Console 调用此方法会出现以下错误:

{
    "status": 500,
    "body": "{\"message\": \"Internal server error\"}",
    "log": "Execution log for request test-request\nThu Dec 29 00:58:56 UTC 2016 : Starting execution for request: test-invoke-request\nThu Dec 29 00:58:56 UTC 2016 : HTTP Method: GET, Resource Path: /books\nThu Dec 29 00:58:56 UTC 2016 : Method request path: {}\nThu Dec 29 00:58:56 UTC 2016 : Method request query string: …
Run Code Online (Sandbox Code Playgroud)

aws-cli aws-lambda aws-api-gateway serverless-architecture

6
推荐指数
2
解决办法
9006
查看次数

Kinesis的事件采购 - 重播和持久性

我正在尝试使用Amazon Kinesis作为平台的中央事件日志来实现事件驱动的体系结构.这个想法与Nordstrom与Hello-Retail项目提出的想法非常相似.

我之前和Apache Kafka做过类似的事情,但是Kinesis似乎是Kafka的一个经济有效的替代品,我决定试一试.但是,我面临着与事件持久性和重放相关的一些挑战.我有两个问题:

  1. 你们是使用Kinesis这样的用例还是你推荐使用它?
  2. 由于Kinesis无法永久保留事件(如Kafka所做的那样),如何处理来自消费者的重播?

我目前正在使用lambda函数(Firehose也是一个选项)将所有事件持久保存到Amazon S3.然后,可以从存储中读取过去的事件,然后开始收听来自流的新事件.但我对这个解决方案不满意.消费者无法使用Kinesis的检查点(Kafka的消费者抵消).另外,Java的KCL还不支持AFTER_SEQUENCE_NUMBER,这在这种实现中很有用.

amazon-web-services cqrs event-sourcing amazon-kinesis serverless-architecture

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

无服务器项目的最佳文件夹结构是什么?

我开始使用AWS Lambda和API网关进行新的无服务器项目。

什么是组织我的项目而不被锁定在诸如无服务器框架或圣杯这样的框架中的最佳方法?

到目前为止,这是我正在使用的内容。

  • 项目目录/
    • serverless.yaml(配置文件)
    • 功能/
      • function1.py
      • function2.py
    • lib /
      • common_helper_functions.py
    • 测试/
      • 单元/
        • test1.py
        • test2.py
      • 功能/
        • test1.py
        • test2.py
    • 迁移
    • 资源
      • cloudformation.templates.json

你们中有人建议组织我的项目的更好方法吗?每个微服务是否获得单独的git repo?我是否缺少其他重要文件夹?

aws-lambda aws-api-gateway serverless-framework serverless-architecture

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

无服务器离线:处理多个 API 网关

当您只有一个时,您可以使用 Serverless Framework 和 Serverless Offline Plugin 轻松调试您的无服务器应用程序,但是当您有多个 API 网关/服务时,您如何处理这种情况?

我是否应该serverless offline为每个服务运行,并在每个服务中配置不同的端口.yml
并在环境变量中对该端口进行硬编码,以便我可以访问该端口(如果process.env.offline为真)?

serverless-framework serverless-architecture serverless-offline

5
推荐指数
2
解决办法
5198
查看次数

无服务器 Web 应用程序架构

我目前正在使用无服务器设计一个简单的无服务器 Web 应用程序。

我目前的预期堆栈是;

  • API网关
  • 拉姆达
  • 动态数据库
  • 静态单页应用

我遵循了一些使用无服务器框架构建无服务器 API、Lambda 和 DynamoDB 的教程,并且我已经构建了我的单页应用程序,但是现在它们是 2 个独立的实体。

我现在要做的是将静态站点(nodejs)与我的 API、Lambda 和 DynamoDB 放在同一个项目中,并使用无服务器框架来控制部署,但是我正在努力寻找指导;

  1. 你如何在无服务器框架中表示静态网站部分
  2. 如何最好地托管该静态网站(例如 s3 静态站点托管或其他选项?)
  3. 如何最好地引用在部署发生的同时生成的 API 网关 URL(例如,通过无服务器框架)

任何人都可以提供有关它应该如何工作的任何见解,或者向我指出一些好的博客/资源的方向?

亲切的问候,约翰

serverless-framework serverless-architecture serverless

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

使用Serverlesss Framework在API Gateway和Lambda上提供多个api版本

我正在使用API​​ Gateway和Lambda(无服务器框架)构建无服务器应用程序,并试图找到一种方法来提供应用程序API的多个版本。

这是我能想到的方式。

无服务器

 handler: list.handler
 events:
     - http:
         path: {ver}/list
         method: get
         cors: true
         authorizer: aws_iam
Run Code Online (Sandbox Code Playgroud)

list.js

 export async function handler(event, context, callback) {
     const ver = event.pathParameters.ver;
     if (ver >= '1.0') {
         return fooUtil.getNo(ver);
     } else {
         return 1;
     }  
 }
Run Code Online (Sandbox Code Playgroud)

fooUtil.js

 export function getNo(ver) {
     if (ver >= 1.3) {
         return 3;
     } else {
         return 2;
     }
 }
Run Code Online (Sandbox Code Playgroud)

但是,我需要以这种方式将“ ver”参数传递给所有函数。

有什么方法可以更容易(并且可以测试)从如下所示的请求中获取版本号?

fooUtil.js

 export function getNo() {
     if (session.getValue('ver') >= 1.3) {
     }
 }
Run Code Online (Sandbox Code Playgroud)

我不希望划分存储库或git分支来管理多个版本。

amazon-web-services aws-lambda aws-api-gateway serverless-framework serverless-architecture

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

AWS Eventbridge:捕获所有事件的模式

我想在 Eventbridge 中部署一个由所有事件触发的 AWS 事件规则,没有任何过滤。

我尝试了以下模式但没有运气。

{
source: ["*"]
}
Run Code Online (Sandbox Code Playgroud)

根据文档,您不能将模式留空。此外,模式中未包含的任何字段都是通配符,这意味着它们可以是任何值。

我读过一些文章说 Eventbridge 可以取代 SNS 和 SQS 等服务,但没有这些更精细的控制,我看不到这种情况发生。

谢谢

amazon-web-services serverless-architecture serverless amazon-cloudwatch-events

5
推荐指数
2
解决办法
2585
查看次数

在 serverless.yml 文件中将“useDotenv:true”放在哪里?

我正在使用无服务器模板并且一切正常,直到突然我的所有部署都开始忽略.env文件。

我搜索了文档,它说如果我想使用 .env 文件中的环境变量,我现在必须添加useDotenv: true到我的serverless.yml文件中。所以我做了:

app: xxx
org: xxx
useDotenv: true 
Run Code Online (Sandbox Code Playgroud)

没有效果。

我的serverless.yml文件之前只包含 app 和 org 变量。

我需要在哪里添加seDotenv: true以使其读取我的.env变量?

serverless-framework serverless-architecture serverless

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

如何使用 vercel 修复 nextjs 部署中的“未构建无服务器页面”?

我正在尝试部署我的 NextJs 应用程序。过去几天我也遇到了同样的两个错误:

1: // 稍后会出错
2: 错误:未构建无服务器页面。了解更多: https: //err.sh/vercel/vercel/now-next-no-serverless-pages-built
我不知道如何修复它们。如果有人提供帮助,我将不胜感激

这是我的 package.json 文件:

{
  "name": "my-dev-portfolio",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "next",
    "bulid": "next build",
    "start": "next start",
    "now-build": "next build"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@fortawesome/fontawesome-svg-core": "^6.1.1",
    "@fortawesome/free-brands-svg-icons": "^6.1.1",
    "@fortawesome/free-solid-svg-icons": "^6.1.1",
    "@fortawesome/react-fontawesome": "^0.2.0",
    "next": "^12.2.0",
    "react-dom": "^18.2.0",
    "typewriter-effect": "^2.19.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

next.config.json 文件:

module.exports = {
    target: "serverless"
}
Run Code Online (Sandbox Code Playgroud)

now.json 文件: …

javascript reactjs serverless-architecture next.js vercel

5
推荐指数
2
解决办法
1070
查看次数