我正在运行 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。 …
我正在尝试使用 localstack 来测试使用 SES 发送一些电子邮件的 lambda。
但是当我尝试时,我收到下一个错误:
电子邮件地址未验证
有什么方法可以在 localstack (docker) 中验证此电子邮件吗?
谢谢!
pd:对不起我的英语
我正在使用无服务器来部署 AWS 无服务器堆栈。(即:lambda、sqs、sns)。我想在尝试部署到 AWS 之前先在本地运行。我已经搜索并看到localstack适合我的用例。这是我部署系统的步骤:
docker-compose up)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) 我正在尝试为 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) https://github.com/localstack/localstack
希望能够从我的 IDE 在本地堆栈中运行的节点 lambda 上进行逐步调试。似乎有对 JVM 调试的支持,LAMBDA_JAVA_OPTS但对于 Node.js看不到任何东西。
如何在 localstack 中为 Node 应用程序打开调试端口?
我在尝试实例化 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) 我使用 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
部署它的标准方法是安装 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
到目前为止一切都很好。现在我刚刚发现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) 更新:我在原来的帖子中意识到所引用的证书是针对数据库的,而不是本地堆栈端口。我已经更新了描述和问题,因为我仍然无法获得浏览器识别的证书。
我似乎无法让我的证书与 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) 我正在使用 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 就无法获得仪表板。
我编写了一个 SAM 堆栈,我可以在 AWS 上构建、打包和部署它。我也可以使用 start-local 或 invoke 来测试。现在我需要测试其他 AWS 资源。我已将这些资源添加到我的 SAM 模板中。它在 AWS 上运行良好,但我正在寻找一种在 localstack(例如本地 dynamodb)中部署我的 SAM 堆栈的方法。现在我必须使用 CLI 创建资源,然后我可以部署我的 SAM 堆栈(在这种情况下只有 lambda,API GW)。我怎样才能做到这一点?
localstack ×10
amazon-s3 ×2
aws-sdk ×2
docker ×2
java ×2
node.js ×2
serverless ×2
.net ×1
aws-cli ×1
aws-lambda ×1
c# ×1
dotnet-tool ×1
junit5 ×1
lambda ×1
sam ×1
spring-boot ×1