标签: localstack

docker 中的 Localstack :健康检查特定的 s3 已启动

我启动了一个运行良好的 localstack 容器,但我需要等待从位于的脚本创建的 s3 存储桶/docker-entrypoint-initaws.d完全正常运行,然后再启动我的其他容器。

我知道有可能等待 localstack 完全准备好:

healthcheck:
   test: ["CMD", "curl", "http://localhost:4566/health?reload"]
Run Code Online (Sandbox Code Playgroud)

但是有没有一种方法可以检查特定 s3 存储桶的运行状况?

amazon-s3 docker docker-compose localstack

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

是否可以在 amazon kinesis Consumer Library v2 中禁用 SSL 证书检查?

使用 Kinesis Consumer Library 版本 2 开发 Kinesis Consumer 并将 Dynamo DB 端点覆盖为 localstack 端点时,由于 SSL 握手错误,库无法创建租赁表。

我可以确认使用 AWS 的 Dynamo DB 时创建表成功,但是一旦我将端点 url 覆盖为 localstack url,Dynamo DB 客户端在多次重试后就无法创建租赁表。堆栈跟踪不是很有用,但 Wireshark 显示了所有 SSL 握手错误,因此我只能假设 Amazon SDK 不接受 localstack 证书。我找不到任何关于如何使用该software.amazon.awssdk包禁用证书验证的内容。

Region region = Region.of("us-east-1");
DefaultCredentialsProvider credentialsProvider = DefaultCredentialsProvider.create();
DynamoDbAsyncClient dynamoClient = DynamoDbAsyncClient.builder()
    .region(region)
    .endpointOverride(URI.create("https://localhost:4569"))
    .credentialsProvider(credentialsProvider)
    .build();
Run Code Online (Sandbox Code Playgroud)

/edit 这基于此处找到的 Amazon 示例: https: //docs.aws.amazon.com/streams/latest/dev/kcl2-standard-consumer-java-example.html

java amazon-dynamodb amazon-kinesis aws-sdk localstack

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

从 Java 使用 LocalStack 时获取 AmazonKinesisException 状态代码:502

我正在使用 LocalStack 编写集成测试来模拟我对 Kinesis 的调用。我创建了一个 Kinesis 客户端,但是当我尝试在 Kinesis 上放置记录时出现错误:

com.amazonaws.services.kinesis.model.AmazonKinesisException: null (Service: AmazonKinesis; Status Code: 502; Error Code: null; Request ID: null)

我尝试使用以下方法禁用 CBOR 和证书检查:

System.setProperty(SDKGlobalConfiguration.DISABLE_CERT_CHECKING_SYSTEM_PROPERTY, "false");
Run Code Online (Sandbox Code Playgroud)

System.setProperty(SDKGlobalConfiguration.AWS_CBOR_DISABLE_SYSTEM_PROPERTY, "true");

我以这种方式构建客户端:

.withEndpointConfiguration(localstack.getEndpointConfiguration(LocalStackContainer.Service.KINESIS))
.withCredentials(localstack.getDefaultCredentialsProvider())
.build()
Run Code Online (Sandbox Code Playgroud)

我每次都收到502。S3 一切正常,只是 Kinesis 服务给我带来了麻烦。有没有人见过这样的事情?

java amazon-kinesis localstack

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

使用 localstack 从另一个 lambda 调用 lambda 时出现 UnrecognizedClientException

我正在使用此docker-compose.yml文件在 docker 容器内运行 localstack 。

version: '2.1'

services:
  localstack:
    image: localstack/localstack
    ports:
      - "4567-4597:4567-4597"
      - "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}"
    environment:
      - SERVICES=${SERVICES- }
      - DEBUG=1
      - DATA_DIR=${DATA_DIR- }
      - PORT_WEB_UI=${PORT_WEB_UI- }
      - LAMBDA_EXECUTOR=docker
      - KINESIS_ERROR_PROBABILITY=${KINESIS_ERROR_PROBABILITY- }
      - DOCKER_HOST=unix:///var/run/docker.sock
    volumes:
      - "${TMPDIR:-/tmp/localstack}:/tmp/localstack"
      - "/var/run/docker.sock:/var/run/docker.sock"
Run Code Online (Sandbox Code Playgroud)

要启动 localstack,我运行TMPDIR=/private$TMPDIR docker-compose up.

我创建了两个 lambda。当我运行时,aws lambda list-functions --endpoint-url http://localhost:4574 --region=us-east-1这是输出。

{
"Functions": [
    {
        "TracingConfig": {
            "Mode": "PassThrough"
        },
        "Version": "$LATEST",
        "CodeSha256": "qmDiumefhM0UutYv32By67cj24P/NuHIhKHgouPkDBs=",
        "FunctionName": "handler",
        "LastModified": "2019-08-08T17:56:58.277+0000",
        "RevisionId": "ffea379b-4913-420b-9444-f1e5d51b5908",
        "CodeSize": 5640253,
        "FunctionArn": "arn:aws:lambda:us-east-1:000000000000:function:handler", …
Run Code Online (Sandbox Code Playgroud)

invoke amazon-web-services aws-lambda localstack

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

无法通过 aws cli 从 localstack 调用 lambda 函数

我已经推送了 lambda 函数,因为我可以在 localstack 中看到它,基于下面的命令/输出

 aws lambda get-function --function-name books1 --endpoint-url=http://localhost:4574
{
    "Code": {
        "Location": "http://localhost:4574/2015-03-31/functions/books1/code"
    }, 
    "Configuration": {
        "Version": "$LATEST", 
        "FunctionName": "books1", 
        "CodeSize": 50, 
        "FunctionArn": "arn:aws:lambda:us-east-1:000000000000:function:books1", 
        "Environment": {}, 
        "Handler": "main", 
        "Runtime": "go1.x"
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试执行它时,如下所示,出现错误,并且我的 localstack 正在 docker 容器内运行

aws --endpoint-url= http://localhost:4574 lambda 调用 --function-name books1 /tmp/output.json

An error occurred (InternalFailure) when calling the Invoke operation (reached max retries: 4): Error executing Lambda function: Unable to find executor for Lambda function "books1". Note that Node.js and .NET Core Lambdas …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-lambda aws-lambda-go localstack

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

使用 Apache Camel 测试 Localstack AWS

我正在尝试利用localstack进行本地 AWS 模拟测试。具体来说,我想使用 Apache Camel S3 路由从 localstack S3 存储桶下载文件。但是,我遇到了错误。以下是我采取的步骤...

我通过输入创建了一个测试 localstack S3 存储桶...

aws --endpoint-url=http://localhost:4572 s3 mb s3://mytestbucket
Run Code Online (Sandbox Code Playgroud)

然后,我将测试文件上传到此存储桶...

aws --endpoint-url=http://localhost:4572 s3 cp docker-compose.yml s3://mytestbucket
Run Code Online (Sandbox Code Playgroud)

两个操作都成功完成。在我的 Java 代码中,我创建了一个 CDI Producer 来生成一个 com.amazonaws.services.s3.AmazonS3 客户端对象......

AWSCredentials credentials = new BasicAWSCredentials("XXXXX", "XXXXX");
AWSCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(credentials);
AmazonS3ClientBuilder clientBuilder = AmazonS3ClientBuilder.standard()
                .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://localhost:4572", "us-east-1"))
                .withCredentials(credentialsProvider);

AmazonS3 s3Client = clientBuilder.build();  
Run Code Online (Sandbox Code Playgroud)

最后,我创建了一个 Camel 路由,旨在将 mytestbucket 的内容下载到本地目录中......

<route id="s3test">
        <from
            uri="aws-s3://arn:aws:s3:::mytestbucket?amazonS3Client=#s3Client&amp;deleteAfterRead=false&amp;maxMessagesPerPoll=25&amp;delay=5000" />
        <log message="S3 consumer fired" loggingLevel="DEBUG" />
        <log message="Sending S3 file to …
Run Code Online (Sandbox Code Playgroud)

java amazon-s3 apache-camel amazon-web-services localstack

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

获取服务:AmazonKinesis;状态代码:502(使用 apache-flink 和 localstack Kinesis)

我的本地设置包括local apache-flink(通过brew安装)并localstack运行Kinesis服务。

我的 docker-compose 有

  localstack:
    image: localstack/localstack:0.10.7
    environment:
      - SERVICES=kinesis
    ports:
      - "4568:4568"
Run Code Online (Sandbox Code Playgroud)

和我的 Kinesis 消费者:

kinesisConsumerConfig.setProperty(ConsumerConfigConstants.AWS_ACCESS_KEY_ID, "123");
kinesisConsumerConfig.setProperty(ConsumerConfigConstants.AWS_SECRET_ACCESS_KEY, "123");
kinesisConsumerConfig.setProperty(ConsumerConfigConstants.AWS_ENDPOINT, "http://localhost:4568");
Run Code Online (Sandbox Code Playgroud)

但是当我运行 Flink 程序时,出现以下错误:

引起原因:org.apache.flink.kinesis.shaded.com.amazonaws.services.kinesis.model.AmazonKinesisException:null(服务:AmazonKinesis;状态代码:502;错误代码:null;请求 ID:null)

仅在使用时才会发生localstack。如果我连接到我的 AWS 账户上的 Kinesis 流,它会完美运行。

error-code apache-flink localstack

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

Dockerized Celery 工作线程未从 Localstack SQS 队列中获取任务

我正在使用 celery 构建一个 Flask 应用程序来执行后台任务。我的应用程序使用在 Docker 容器中运行的 localstack 来为我的消息代理在本地模拟 SQS。我已经让 Flask 和 celery 在本地运行,以便与 localstack 一起正常工作,我可以看到 Flask 接收请求,将消息添加到 SQS 队列,然后 celery 接收该任务并执行它。

我尝试将 Flask 和 celery 与 localstack 一起进行 dockerize,并且我的所有服务都按预期运行,除了 celery Worker 不执行队列中的任务。我可以在本地启动一个 celery 工作程序来读取队列并执行任务,但 docker celery 工作程序不会提取任何任务。

在 Flask 容器中运行 celery Worker 达到了相同的结果,并添加了--without-gossip我在这个github 线程中找到的参数。

我是否在 docker 架构中遗漏了一些导致 celery 无法从 SQS 队列中提取的内容?

这是我的 docker-compose.yml:


services:
  dev:
    build:
      context: .
      dockerfile: 'dev.Dockerfile'
    ports:
    - "5050:5000"
    restart: always
    volumes:
    - .:/app
    environment:
    - GUNICORN_CMD_ARGS="--reload"
    - docker_env=true
    stdin_open: true …
Run Code Online (Sandbox Code Playgroud)

celery flask docker python-3.6 localstack

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

如何在 CI/CD 中启动 localstack

我能够使用 localstack 在本地创建和测试 AWS。所以,我想知道是否有任何用例可以参考如何在 ci/cd 中添加 localstack 并运行您的测试用例?任何显示样本的指针将不胜感激。

localstack

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

localstack s3 无法从 php 访问

我正在尝试在 docker 容器中使用 localstack。我为 s3 创建了 demo-bucket。我可以查看从终端上传的文件,但无法从代码访问 s3。我哪里出错了?我在下面分享我的代码。谢谢。我的 yml 文件如下所示:

version: "3.7" 

services:

php:
  image: php:7.4-fpm
  volumes:
    - ~/image.minyay.com/src:/var/www/html
    - ~/image.minyay.com/docker/php.ini:/usr/local/etc/php/php.ini
web:
  image: nginx:1.17
  ports:
   - 80:80
  volumes:
    - ~/image.minyay.com/src:/var/www/html
    - ~/image.minyay.com/docker/site.conf:/etc/nginx/conf.d/site.conf
  depends_on:
    - php

localstack:
      image: localstack/localstack:0.11.0
      container_name: localstack
      ports:
        - "4563-4599:4563-4599"
        - '8055:8080'
      environment:
        - SERVICES=s3
        - DOCKER_HOST=unix:///var/run/docker.sock
        - DATA_DIR=/tmp/localstack/data
      volumes:
        - /tmp/localstack:/tmp/localstack
        - /var/run/docker.sock:/var/run/docker.sock
        - ./aws:/docker-entrypoint-initaws.d
Run Code Online (Sandbox Code Playgroud)

我的 php 代码如下所示:

  public function get_big_folder_in_s3($file_path){

        try {
            
           $pages = $this->s3->getPaginator('ListObjects', [
                'Bucket' => $this->bucket,
                'Prefix' => $file_path, //DESTINATION
            ]);

            foreach …
Run Code Online (Sandbox Code Playgroud)

php amazon-s3 docker docker-compose localstack

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