标签: localstack

将 .net 上的 AWS 开发工具包与 localstack 结合使用(TransferUtility/S3 - 设置端点)

我正在运行 localstack ( https://github.com/localstack/localstack ),并且能够使用 aws s3 cli 将文件上传到其中。

我想要做的是将 .NET AWS ADK 与 localstack 结合使用。我想要以下代码将文件上传到 localstack 中:

        using (var tfu = new TransferUtility())
        {
            await tfu.UploadAsync(new TransferUtilityUploadRequest
            {
                Key = key,
                BucketName = bucketName,
                ContentType = document.ContentType,
                Headers = { ["Content-Disposition"] = "attachment; filename=\"test.txt\"" },
                InputStream = stream
            });
        }
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道如何设置端点以便 SDK 使用 localstack 而不是 aws。显然,您可以AWSEndpointDefinition按照 AWS SDK 文档中所述在 appSettings.config 中进行设置,例如:

<add key="AWSEndpointDefinition" value="C:\Dev\localstack\endpoints.json"/>

但是我不知道这个 endpoints.json 配置应该是什么样子。我尝试使用这个文件:

https://raw.githubusercontent.com/aws/aws-sdk-net/master/sdk/src/Core/endpoints.json

当我这样做时,一旦我新建一个TransferUtility类,我就会得到一个空引用异常 - 这是在我将任何内容指向我的本地堆栈设置之前。

AWS ASK 的版本是 3.3.0。 …

.net c# amazon-s3 amazon-web-services localstack

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

当我尝试在 localstack 中使用 aws ses 时,电子邮件地址未验证

我正在尝试使用 localstack 来测试使用 SES 发送一些电子邮件的 lambda。

但是当我尝试时,我收到下一个错误:

电子邮件地址未验证

有什么方法可以在 localstack (docker) 中验证此电子邮件吗?

谢谢!

pd:对不起我的英语

node.js docker aws-sdk localstack

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

无法配置将无服务器堆栈部署到 localstack

我正在使用无服务器来部署 AWS 无服务器堆栈。(即:lambda、sqs、sns)。我想在尝试部署到 AWS 之前先在本地运行。我已经搜索并看到localstack适合我的用例。这是我部署系统的步骤:

  1. 克隆项目并使用 docker 运行整个堆栈。(命令:docker-compose up
  2. 在我的项目中安装库serverless-localstack并更新serverless.yml

这是我的配置:

plugins:
  - serverless-localstack

custom:
  localstack:
    host: http://localhost
    debug: false
    endpoints:
    stages:
      - local
      - dev
    lambda:
      mountCode: False # Enable this flag to improve performance
Run Code Online (Sandbox Code Playgroud)

之后,我使用命令部署此堆栈:serverless deploy --stage local。但我总是遇到例外。

Serverless: Updating Stack...
Serverless: Recoverable error occurred (502), sleeping for 5 seconds. Try 1 of 4
Serverless: Recoverable error occurred (502), sleeping for 5 seconds. Try 2 of 4 …
Run Code Online (Sandbox Code Playgroud)

aws-sdk serverless localstack

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

testcontainers 的 Localstack 模块未运行以进行集成测试

我正在尝试为 Spring 启动服务提出一些集成测试。由于该服务使用 AWS SQS 和 DynamoDB,我倾向于利用 testcontainers 的 Localstack 模块进行集成测试。但是,虽然我认为我已经包含了所有必要的代码,但 LocalStackContainer 似乎没有运行,并且抛出以下错误:

com.amazonaws.SdkClientException: Unable to execute HTTP request: Connect to localhost:4576
  [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果我使用独立的 localstack(即,在终端“$localstack start”中手动运行),集成测试将通过。

谁能帮我弄清楚我错过了什么?

在 build.gradle 我有

testCompile("org.testcontainers:testcontainers:1.10.6")
testCompile("org.testcontainers:localstack:1.10.6")
Run Code Online (Sandbox Code Playgroud)

在一个超类中,我设置了一些像这样的共享测试上下文,包括作为 @ClassRule 的 LocalStackContainer

@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("local")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Application.class)
@Slf4j
public class BaseIntegrationTest extends CamelTestSupport {

    @Value("${isLocal:false}")
    protected boolean isLocal;

    @Value("${isLocalStack:true}")
    protected boolean isLocalStack;

    @Value("${instanceUrl}")
    protected String instanceUrl;

    @LocalServerPort
    private int serverPort;

    @EndpointInject(uri = "mock:endPoint")
    protected MockEndpoint mockEndpoint;

    protected …
Run Code Online (Sandbox Code Playgroud)

java spring-boot testcontainers localstack

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

在 Localstack 中调试 Node lambda

https://github.com/localstack/localstack

希望能够从我的 IDE 在本地堆栈中运行的节点 lambda 上进行逐步调试。似乎有对 JVM 调试的支持,LAMBDA_JAVA_OPTS但对于 Node.js看不到任何东西。

如何在 localstack 中为 Node 应用程序打开调试端口?

lambda node.js localstack

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

JUnit AWSCredentials NoClassDefFoundError with LocalStackContainer

我在尝试实例化 LocalstackContainer 时遇到以下异常。我确实有这个类,并且能够在我的本地找到源代码。我无法找到根本原因。我正在使用带有 Java 11 的 Windows 操作系统。

import org.testcontainers.containers.localstack.LocalStackContainer;
import org.testcontainers.junit.jupiter.Testcontainers;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;


@TestContainers
public class S3Test {
     private S3Client s3Client() {
            LocalStackContainer localstack= new LocalStackContainer().withServices(LocalStackContainer.Service.S3);
            return S3Client
                    .builder()
                    .endpointOverride(localstack.getEndpointOverride(LocalStackContainer.Service.S3))
                    .credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(
                            localstack.getAccessKey(), localstack.getSecretKey())))
                    .region(Region.of(localstack.getRegion()))
                    .build();
        }

@Test
 public void test() {   
}
Run Code Online (Sandbox Code Playgroud)

}

错误:

java.lang.NoClassDefFoundError: com/amazonaws/auth/AWSCredentials   
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)
    at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
    at 
    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$2(TestMethodTestDescriptor.java:169)     
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)
    at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)
    at …
Run Code Online (Sandbox Code Playgroud)

java amazon-s3 junit5 localstack

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

如何在 localstack 上运行 AWS Lambda dotnet

DotNet3.1 AWS Lambda

我使用 Amazon 模板使用 C# DotNet3.1 创建了一个 AWS Lambda 解决方案

dotnet new serverless.AspNetCoreWebAPI -n MyDotNet.Lambda.Service
Run Code Online (Sandbox Code Playgroud)

这将创建一个 lambda 函数,其处理程序是MyDotNet.Lambda.Service::MyDotNet.Lambda.Service.LambdaEntryPoint::FunctionHandlerAsync加上一些serverless.template文件和aws-lambda-tools-defaults.json

部署 DotNet3.1 AWS Lambda 的标准方式

部署它的标准方法是安装 Amazon.Lambda.Tools

dotnet tool update -g Amazon.Lambda.Tools
Run Code Online (Sandbox Code Playgroud)

然后运行

dotnet lambda deploy-serverless --profile myawsprofile
Run Code Online (Sandbox Code Playgroud)

请注意,配置文件是可选的,但我已经在该配置文件下配置了 AWS。这将提示输入 CloudFormation 堆栈名称(例如:foo)和一个 S3 存储桶(例如:my-bucket),并将其部署到自定义配置文件下配置的“真实”AWSmyawsprofile

LocalStack 作为 docker 容器运行

到目前为止一切都很好。现在我刚刚发现https://github.com/localstack/localstack这是在本地运行 AWS 平台的好方法,所以我使用 docker-compose 文件localstack-compose.yml来启动容器

version: '3.8'

services:
  localstack:
    container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}"
    image: localstack/localstack-full
    network_mode: bridge
    ports:
      - "4566:4566"
      - "4571:4571"
      - "${PORT_WEB_UI-8080}:${PORT_WEB_UI-8080}" …
Run Code Online (Sandbox Code Playgroud)

aws-cli aws-lambda dotnet-tool localstack .net-core-3.1

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

如何让我的证书适用于 LocalStack 中的 SSL

更新:我在原来的帖子中意识到所引用的证书是针对数据库的,而不是本地堆栈端口。我已经更新了描述和问题,因为我仍然无法获得浏览器识别的证书。

我似乎无法让我的证书与 localstack 一起使用。我尝试按照localstack中的“使用自定义 SSL 证书”说明使用它们,包括将文件添加到我的卷中列出的临时目录中,但它们没有使用。我还尝试将以下内容添加到 yml 的卷部分:

- ./support/docker/localstack/aws.local.domain.com.pem:/certs/localhost.pem/
- ./support/docker/localstack/aws.local.domain.com.crt:/certs/localhost.-cert.pem 
- ./support/docker/localstack/aws.local.domain.com.key:c2c/certs/localhost-key.pem
Run Code Online (Sandbox Code Playgroud)

不确定我的下一步,任何帮助将不胜感激。

Docker version = 20.10.2
我不确定如何获取 localstack 版本,但截至 3 月 17 日我确实对其进行了 docker pull 。

docker-compose.yml

version: '3.7'
services:
  ecms_database:
    image: 339983081851.dkr.ecr.us-east-1.amazonaws.com/ecms_mysql:1.0.3
    container_name: ecms_database
    ports:
      - '33061:3306'
  memcached:
    image: 'memcached'
    container_name: memcached
    ports:
      - '11211:11211'
  localstack:
    image: localstack/localstack
    container_name: localstack
    ports:
      - "4566:4566"
      - "4571:4571"
    environment:
      - SERVICES=s3,sqs
      - DATA_DIR=/tmp/localstack/data
    volumes:
      - "/private${TMPDIR:-/tmp/localstack}:/tmp/localstack"
Run Code Online (Sandbox Code Playgroud)

docker localstack

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

Localstack - 无法访问仪表板

我正在使用 localstack 来模拟 SNS 和 SQS,但每次尝试使用仪表板时,我都会收到此错误:

    2019-08-19T09:59:58:WARNING:localstack.dashboard.infra: Error running command: { test `which aws` || . .venv/bin/activate; }; aws --endpoint-url="http://localhost:4576" sqs list-queues [Errno 1] Operation not permitted: '/tmp/cache.b40b5dc1d0a8d40f3b34502cd285c718.json
Run Code Online (Sandbox Code Playgroud)

我正在使用 docker 标志运行 localstack,因为我认为没有 docker 就无法获得仪表板。

localstack

4
推荐指数
2
解决办法
3392
查看次数

如何使用 localstack 部署 SAM 堆栈?

我编写了一个 SAM 堆栈,我可以在 AWS 上构建、打包和部署它。我也可以使用 start-local 或 invoke 来测试。现在我需要测试其他 AWS 资源。我已将这些资源添加到我的 SAM 模板中。它在 AWS 上运行良好,但我正在寻找一种在 localstack(例如本地 dynamodb)中部署我的 SAM 堆栈的方法。现在我必须使用 CLI 创建资源,然后我可以部署我的 SAM 堆栈(在这种情况下只有 lambda,API GW)。我怎样才能做到这一点?

sam amazon-web-services serverless localstack

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