小编Jav*_*sVA的帖子

用于向 AWS Lambda 添加权限的正确 terraform 语法

我正在学习 Terraform,并尝试获取正确的语法来为其指定 IAM 角色权限。我想要这些功能:

  1. 可以从我也在 Terraform 中创建的 API 网关调用 Lambda
  2. Lambda 可以写入 Cloudwatch 日志

我有以下内容允许 API 网关调用 Lambda:

resource "aws_iam_role" "my_lambda_execution_role" {
  name = "my_lambda_execution_role"
  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": [ 
          "lambda.amazonaws.com",
          "apigateway.amazonaws.com"
        ]
      },
      "Effect": "Allow",
      "Sid": ""
    }
  ]
}
EOF
}
Run Code Online (Sandbox Code Playgroud)

我已经看到下面的代码片段允许 Lambda 写入 CloudWatch。我正在尝试组合这些片段以获得所有权限,但我无法做到正确。将所有这些权限授予角色的正确语法是什么?

{
    "Statement": [
        {
            "Action": [
                "logs:CreateLogGroup",
                 "logs:CreateLogStream",
                 "logs:PutLogEvents"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:logs:*:*:*"
        }
    ]
} 
Run Code Online (Sandbox Code Playgroud)

aws-lambda terraform

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

使用 docker-compose 运行 apache pulsar

我可以使用以下 docker 命令运行 Apache Pulsar:

docker run -it \
  -p 6650:6650 \
  -p 8080:8080 \
  --mount source=pulsardata,target=/pulsar/data \
  --mount source=pulsarconf,target=/pulsar/conf \
  apachepulsar/pulsar:2.6.0 \
  bin/pulsar standalone
Run Code Online (Sandbox Code Playgroud)

我正在尝试将其转换为 docker-compose,并使用下面的 docker-compose.yml 文件。当我运行命令时:

docker-compose up
Run Code Online (Sandbox Code Playgroud)

我收到错误:
附加到 pulsar pulsar | 错误:无法找到或加载主类“ pulsar 退出,代码为 1

我在这里做错了什么?提前致谢。

version: '3.1'
services:
  standalone:
    image: apachepulsar/pulsar:2.6.0
    container_name: pulsar
    ports:
      - 8080:8080
      - 6650:6650
    environment:
      - PULSAR_MEM=" -Xms512m -Xmx512m -XX:MaxDirectMemorySize=1g"
    volumes:
      - pulsardata:/pulsar/data
      - pulsarconf:/pulsar/conf
    command: /bin/bash -c "bin/pulsar standalone"
volumes:
  pulsardata:
  pulsarconf:
Run Code Online (Sandbox Code Playgroud)

docker-compose apache-pulsar

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

Apache Flink:设置并行性的准则?

我正在尝试获取一些简单的规则或准则,以设置操作员或工作并行性的值。在我看来,它应该是一个数字<=可用任务槽的数量?

例如,假设我有2个任务管理器计算机,每个计算机都有4个任务槽。假设没有其他作业在群集上运行,我是否将过滤器和映射之类的操作的并行性设置为8?如果没有,合理的数字是多少?

如果您请求的并行性比任务插槽更多,会发生什么?在上面的示例中,如果将操作的并行度设置为12,会发生什么情况?我假设它会使用尽可能多的可用空间?

另外,您似乎不想将并行性硬编码到源代码中,因为您在提交作业时希望对可用任务槽有一个大概的了解?您应该为所有运算符设置大致相同或不同的值的并行性,什么将指导该决策?

谢谢!

apache-flink flink-streaming

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

在 AWS Lambda 中上传和反序列化 protobuf 数据

我需要将 protobuf 数据发送到用 Node.js 编写的 AWS Lambda。我正在尝试“Hello World”示例,其中序列化和反序列化 Person 消息。示例:person.proto

syntax = "proto3";

message Person {
    required int32 id = 1;
    required string name = 2;
    optional string email = 3;
}
Run Code Online (Sandbox Code Playgroud)

使用 Node.js 和 protobufjs 包,我可以从 proto 文件生成代码,并将 Person 对象序列化和反序列化为文件:

let person = personProto.Person.create();
person.id = 42;
person.name = 'Fred';
person.email = "fred@foo.com";
console.log("Person BEFORE Serialze=" + JSON.stringify(person1,null,2));

// Serialize
let buffer = personProtos.Person.encode(person1).finish();
console.log(buffer);
fs.writeFileSync("person.pb", buffer, "binary");

// Deserialize
let bufferFromFile = fs.readFileSync("person.pb");
let decodedPerson = personProtos.Person.decode(bufferFromFile);
console.log("Decoded …
Run Code Online (Sandbox Code Playgroud)

protocol-buffers node.js aws-lambda protobuf.js

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

在 lambda_module 的预构建 ZIP 文件上计算源代码哈希?

我已经编写了一个 terraform 模块来创建一个 Lambda,但我无法弄清楚如何在预构建的 ZIP 文件上计算 source_code_hash。这将在管道中,因此每次都会构建 ZIP 文件,并且在我到达 terraform 步骤之前可能会有所不同。
我正在使用 gulp 构建 ZIP 文件(这是一个 NodeJS 应用程序)并假设它是在目录 build/myLambda.zip 中预先构建的

基本上我想这样做。文件名是一个 terraform 变量,我希望 source_code_hash 计算必须引用该文件。

module my_lambda {
  filename = "${var.my_zip_file}"
}
Run Code Online (Sandbox Code Playgroud)

该模块的相关部分是:

resource "aws_lambda_function" "lambda" {
   filename            = "${var.filename}"
   source_code_hash    = "${filebase64sha256(file("${var.filename}"))}"
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行 terraform plan 时,出现此错误:

Error: Error in function call

  on modules\lambda\main.tf line 16, in resource "aws_lambda_function" "lambda":
  16:     source_code_hash    = "${filebase64sha256(file("${var.filename}"))}"
    |----------------
    | var.filename is "build/myLambda.zip"

Call to function "file" failed: contents of
build/myLambda.zip are not …
Run Code Online (Sandbox Code Playgroud)

terraform terraform-provider-aws

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