标签: localstack

localstack Kinesis 无法在 docker 中启动

我们在 Windows 10 上运行 Docker。我们有一个简单的 Java Springboot 应用程序,它应该与 AWS Kinesis 和 S3 交互。对于本地测试,我们想要拉取 localstack Docker 最新镜像并安装并运行。但是 Kinesis 的启动会抛出错误,而 S3 则工作正常。以下是详细信息:

docker compose:
version: '3.1'
services:
  localstack:
    image: "localstack/localstack"
    container_name: localstack_demo
    environment:
      SERVICES: kinesis, s3, sqs
      DEBUG: 1
      DATA_DIR: /tmp/localstack
      KINESIS_STREAM_SHARDS: 1
      KINESIS_ERROR_PROBABILITY: 0.0
      KINESIS_STREAM_NAME: my-stream
    ports:
      - "4567-4584:4567-4584"
      - "8055:8080"
    volumes:
      - './.localstack:/tmp/localstack'
      - '/var/run/docker.sock:/var/run/docker.sock'
Run Code Online (Sandbox Code Playgroud)

当我们尝试访问 Kinesis 的默认 URL 时http://localhost:4568,我们收到以下错误:(请注意,S3 的默认 URL 按预期响应):

localstack_demo | 2019-09-24T22:35:27:ERROR:localstack.services.generic_proxy: Error forwarding request: the JSON object must be str, bytes or bytearray, …
Run Code Online (Sandbox Code Playgroud)

amazon-kinesis localstack

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

无服务器示例不适用于 serverless-localstack 插件

我正在运行官方无服务器 GitHub页面上的示例,当我直接部署在我的 AWS 账户上时,它开箱即用,运行良好。

现在,当我尝试通过相应更改来激活serverless-localstackserverless.yml插件时:

service: serverless-rest-api-with-dynamodb

frameworkVersion: ">=1.1.0 <2.0.0"

provider:
  name: aws
  runtime: python2.7
  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}"

custom:
  localstack:
    stages:
    - local
    - dev
    endpoints:
      S3: http://localhost:4572
      DynamoDB: http://localhost:4570
      CloudFormation: http://localhost:4581
      Elasticsearch: http://localhost:4571
      ES: http://localhost:4578
      SNS: http://localhost:4575
      SQS: http://localhost:4576
      Lambda: http://localhost:4574
      Kinesis: http://localhost:4568

plugins:
  - serverless-localstack

functions:
  create:
    handler: todos/create.create
    events:
      - http:
          path: …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services serverless localstack

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

如何以编程方式使用 localstack s3 端点设置 Airflow 1.10 日志记录?

为了尝试将气流日志记录到 localstack s3 存储桶,对于本地和 kubernetes 开发环境,我按照气流文档记录到 s3。简单介绍一下,localstack是一个本地 AWS 云堆栈,其中包含本地运行的包括 s3 在内的 AWS 服务。

我将以下环境变量添加到我的气流容器中,类似于另一个堆栈溢出帖子,试图登录到我的本地 s3 存储桶。docker-compose.yaml这是我为所有气流容器添加的内容:

       - AIRFLOW__CORE__REMOTE_LOGGING=True
       - AIRFLOW__CORE__REMOTE_BASE_LOG_FOLDER=s3://local-airflow-logs
       - AIRFLOW__CORE__REMOTE_LOG_CONN_ID=MyS3Conn
       - AIRFLOW__CORE__ENCRYPT_S3_LOGS=False
Run Code Online (Sandbox Code Playgroud)

我还将我的 localstack s3 信用添加到airflow.cfg

       - AIRFLOW__CORE__REMOTE_LOGGING=True
       - AIRFLOW__CORE__REMOTE_BASE_LOG_FOLDER=s3://local-airflow-logs
       - AIRFLOW__CORE__REMOTE_LOG_CONN_ID=MyS3Conn
       - AIRFLOW__CORE__ENCRYPT_S3_LOGS=False
Run Code Online (Sandbox Code Playgroud)

此外,我还安装了 apache-airflow[hooks] 和 apache-airflow[s3],尽管根据文档并不清楚真正需要哪一个。

我按照之前的堆栈溢出帖子中的步骤尝试验证 S3Hook 是否可以写入我的 localstack s3 实例:

[MyS3Conn]
aws_access_key_id = foo
aws_secret_access_key = bar
aws_default_region = us-east-1
host = http://localstack:4572    # s3 port. not sure if this is right place …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 kubernetes docker-compose airflow localstack

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

localstack docker 给出错误权限被拒绝:'/tmp/localstack/server.test.pem.key'

在我的 ubuntu 18 机器上,我无法运行 localstack 的最新 docker 镜像。即使结束消息显示为“就绪”,我仍然无法使用以下命令访问它。

awslocal --endpoint-url=http://localhost:4575 sns list-topics

Could not connect to the endpoint URL: "http://localhost:4575/"
Run Code Online (Sandbox Code Playgroud)

docker run localstack/localstack 还显示错误: [Errno 13] Permission returned: '/tmp/localstack/server.test.pem.key'

docker run localstack/localstack  

Waiting for all LocalStack services to be ready
2020-04-09 04:28:19,502 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message. …
Run Code Online (Sandbox Code Playgroud)

mocking docker docker-machine ubuntu-18.04 localstack

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

无服务器:根配置错误:无法识别的属性“stepFunctions”

我有一些奇怪的错误,我无法找出原因,你能帮助我吗?

...
无服务器:警告:无法找到名为:TypeScriptPlugin
无服务器:根配置错误:无法识别的属性“stepFunctions”
...

无服务器.yml

service:
  name: service-name

plugins:
  - serverless-localstack
  - serverless-step-functions
  - serverless-pseudo-parameters
  - serverless-webpack

custom:
  webpackIncludeModules: true
  localstack:
    stages:
      - local
    host: http://localhost
    edgePort: 4566
    autostart: true
    lambda:
      mountCode: false
    debug: true
    docker:
      sudo: true

provider:
  configValidationMode: off
  deploymentBucket:
    name: local
  name: aws
  runtime: nodejs12.x
  stage: ${opt:stage, "dev"}
  region: ${env:AWS_REGION, "us-east-1"}
  logRetentionInDays: 30

functions:
  ...

stepFunctions:
  ...
Run Code Online (Sandbox Code Playgroud)

包.json

{
  "name": "service-name",
  "version": "0.119.0",
  "description": "Service decription.",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-step-functions serverless localstack

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

Localstack在Docker中启动,但我无法访问

我运行 docker compose 以使用 S3 服务启动 localstack 实例。它正常启动,但是当尝试使用 AWS CLI 访问它时,出现以下错误:

>  aws --endpoint-url=http://localhost:4572 s3api put-bucket-acl --bucket demo-bucket --acl public-read

Connection was closed before we received a valid response from endpoint URL: "http://localhost:4572/demo-bucket?acl".
Run Code Online (Sandbox Code Playgroud)

码头工人组成:

version: '3.7'
services:
  localstack:
    image: localstack/localstack
    container_name: localstack_service
    ports:
      - "4567-4584:4567-4584"
      - "8055:8080"
    environment:
      - SERVICES=s3
      - DEBUG=1
      - DATA_DIR=/tmp/localstack/data
    volumes:
      - ./tmp/localstack:/tmp/localstack   
      - /var/run/docker.sock:/var/run/docker.sock
networks:
  default:
    name: mock_demo
Run Code Online (Sandbox Code Playgroud)

我认为问题出在localstack上,因为我什至无法访问网页。

amazon-s3 amazon-web-services docker localstack

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

如何在 Localstack 中为 API 网关提供永久 url

我正在使用 localstack 进行本地 AWS 开发。lambda 通过 API 网关公开。每当 localstack 重新启动时(或者当它在另一台机器上第一次启动时),我必须再次创建该网关,并且它将有一个新生成的 ID。

就像这个控制台输出:

endpoints:
  http://localhost:4566/restapis/0ulz03h9kk/local/_user_request_
Run Code Online (Sandbox Code Playgroud)

我怎样才能让这个 URL 看起来很漂亮,这样我就可以有一个简单的前端启动脚本?或者至少,有没有办法使该 id0ulz03h9kk硬编码?

amazon-web-services aws-lambda aws-api-gateway localstack

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

用于与 Localstack 一起使用的 Terraform Override Provider

我有一个包含 Terraform 代码的 Git 存储库,该代码正在部署到 AWS 中。我将 Localstack 添加到此存储库,以便我可以在计划之前进行更高级别的验证测试并将其应用到我的真实 AWS 账户中。为了使用 Localstack,我必须使用自定义端点创建一个新的提供程序:

provider "aws" {
  alias  = "real"
  region = "${local.aws_region}"
}

provider "aws" {
  alias                       = "fake"
  region                      = "${local.aws_region}"
  access_key                  = "fake"
  secret_key                  = "fake"
  skip_credentials_validation = true
  skip_metadata_api_check     = true
  skip_requesting_account_id  = true

  endpoints {
    dynamodb = "http://localhost:4566"
    lambda   = "http://localhost:4566"
    kinesis  = "http://localhost:4566"
  }
}
Run Code Online (Sandbox Code Playgroud)

如何在不重复代码的情况下使用 Localstack 的一个提供商和 AWS 的一个提供商?

terraform localstack

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

AWS .NET SDK 使用 Localstack 时如何指定区域

如何实例化同时具有自定义区域和 ServiceURL 的 .NET AWSSDK SQS 客户端?


更多信息:

我在 localstack 中设置了一个队列,我可以sqs list-queues使用 CLI 通过查询来验证该队列是否存在:

> aws --endpoint-url=http://localhost:4566 --region=ap-southeast-2 sqs list-queues

{
    "QueueUrls": [
        "http://localhost:4566/000000000000/question-renderer-requests-errors",
        "http://localhost:4566/000000000000/question-renderer-requests"
    ]
}
Run Code Online (Sandbox Code Playgroud)

队列位于 Region ap-southeast-2,但是当我尝试通过 SDK 访问队列时,它找不到任何内容:

var cred = new BasicAWSCredentials("test", "test");

var sqsClientConfig = new AmazonSQSConfig()
{
    RegionEndpoint = RegionEndpoint.APSoutheast2,
    ServiceURL = "http://localhost:4566"
};

var sqsClient = new AmazonSQSClient(cred, sqsClientConfig);

var queues = await sqsClient.ListQueuesAsync(new ListQueuesRequest());
Run Code Online (Sandbox Code Playgroud)

我发现RegionEndpointServiceURL是相互排斥的:

RegionEndpoint 和 ServiceURL 是互斥的属性。无论最后设置哪个属性,都会导致另一个属性自动重置为 null。

我需要将服务端点设置为http://localhost:4566指向 localstack,如何设置区域端点?我在这件事上走的路正确吗? …

.net amazon-sqs amazon-web-services aws-sdk-net localstack

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

使用 AWS 无服务器应用程序模型和 localstack 在本地测试 Go Lambda

我正在尝试在本地测试一个 lambda 函数,该函数在 S3 存储桶上列出存储桶。

为了拥有本地 S3 存储桶进行测试,我使用 localstack:

docker run --rm -it -p 4566:4566 -p 4510-4559:4510-4559 localstack/localstack
Run Code Online (Sandbox Code Playgroud)

然后我可以创建一个存储桶(它有效):

aws s3api --endpoint-url=http://localhost:4566  --region us-east-1 create-bucket --bucket images
Run Code Online (Sandbox Code Playgroud)

然后我有一个 lambda 尝试连接到 S3 并列出存储桶:

docker run --rm -it -p 4566:4566 -p 4510-4559:4510-4559 localstack/localstack
Run Code Online (Sandbox Code Playgroud)

为了在本地测试我的 lambda,我使用 SAM。这是模板:

aws s3api --endpoint-url=http://localhost:4566  --region us-east-1 create-bucket --bucket images
Run Code Online (Sandbox Code Playgroud)

当我执行 lambda 时:

sam local invoke AdBannerLambda  -e test_data/payload.json
Run Code Online (Sandbox Code Playgroud)

我有这个错误:

START RequestId: 7c9da60f-9a68-476b-bcd8-c24da422e80c Version: $LATEST
Got an error retrieving buckets:
operation error S3: ListBuckets, exceeded maximum number of …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 go aws-lambda aws-sam localstack

5
推荐指数
0
解决办法
415
查看次数