使用.NET S3 SDK的docker上的Localstack抛出“您提供的AWS Access Key ID在我们的记录中不存在”

问题描述

我正在尝试为本地S3实例设置localstack。尝试执行任何操作时出现错误:

AmazonS3Exception: The AWS Access Key Id you provided does not exist in our records.

docker-compose是:

version: '3.4'

services:
  myapp.api:
    image: ${DOCKER_REGISTRY-}myapp/api
    container_name: "myapp-api"
    build:
      context: .
      dockerfile: MyApp.Api/MyApp.Api/Dockerfile
    ports:
      - "8080:80"
    environment:
      - AWS_ACCESS_KEY_ID=root
      - AWS_SECRET_ACCESS_KEY=pass
  myapp.s3:
    image: localstack/localstack:latest
    container_name: "myapp-localstack"
    ports:
      - "14566:4566"
    environment: 
      - SERVICES=s3
      - DEFAULT_REGION=eu-west-2
      - AWS_REGION=us-west-2
      - DEBUG=1
    user: root

MyApp是整个解决方案的名称,MyApp.Api是ASP.NET Core 3.1项目。没有自定义网络,所有容器都在docker-compose创建的默认网络上运行。

与S3交互的代码如下:

[ApiController]
[Route("[controller]")]
public class TestS3Controller : ControllerBase
{
    [HttpGet]
    [Route("")]
    public async Task<IActionResult> GetAsync()
    {
        using var client = new AmazonS3Client(new AmazonS3Config
        {
            ServiceURL = "https://myapp.s3:4566",RegionEndpoint = RegionEndpoint.EUWest2,ForcePathStyle = true
        });
        
        var bucket = await client.PutBucketAsync(new PutBucketRequest
        {
            BucketName = "myapp-test-bucket",BucketRegion = S3Region.EUW2
        }).ConfigureAwait(false);

        ... // snip
    }
}

AWSSDK.S3版本为3.3.113.2。等待PutBucketAsync任务将引发上述异常。我能够找到的所有资源都告诉我,访问密钥ID和秘密密钥可以是任何东西,只要它们不是空的,但它似乎是错误的。

此外,我已经从amazon/dynamodb-local:latest映像运行了一个容器,该映像需要在环境变量中定义的root / pass凭据,并且它们可以正常工作。我可以通过本地DynamoDB正常工作以及手动实例化EnvironmentAWSCredentials产生root / pass的事实来确认已加载凭据 。从myapp.api中删除环境变量会引发另一个异常,该异常与AWSSKD无法获取任何凭证(我没有定义.aws配置文件)有关。

用于MyApp的Dockerfile是Visual Studio为ASP.NET Core生成的标准文件,用于构建项目并以MyApp.Api.dll作为入口点启动。

任何允许我在本地使用S3存储桶的解决方案都受到赞赏,只要它可以工作,我就不会真正关心它的清洁性,因为它仅用于本地开发。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...