Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带.NET S3 SDK的docker上的Localstack抛出;您提供的AWS访问密钥Id在我们的记录中不存在。”;_.net_Amazon Web Services_Docker_Amazon S3_Localstack - Fatal编程技术网

带.NET S3 SDK的docker上的Localstack抛出;您提供的AWS访问密钥Id在我们的记录中不存在。”;

带.NET S3 SDK的docker上的Localstack抛出;您提供的AWS访问密钥Id在我们的记录中不存在。”;,.net,amazon-web-services,docker,amazon-s3,localstack,.net,Amazon Web Services,Docker,Amazon S3,Localstack,我正在尝试设置一个本地S3实例。我在尝试执行任何操作时出错: 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&q

我正在尝试设置一个本地S3实例。我在尝试执行任何操作时出错:

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核心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
    }
}
[ApiController]
[路线(“[控制器]”)]
公共类TestS3Controller:ControllerBase
{
[HttpGet]
[路线(“”)
公共异步任务GetAsync()
{
使用var client=newamazons3client(newamazons3config
{
服务URL=”https://myapp.s3:4566",
RegionEndpoint=RegionEndpoint.EUWest2,
ForcePathStyle=true
});
var bucket=await client.PutBucketAsync(新的PutBucketRequest
{
BucketName=“myapp测试桶”,
BucketRegion=S3Region.EUW2
}).配置等待(错误);
…//剪断
}
}
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 bucket的解决方案都是值得赞赏的,我并不真正关心清洁度,因为它只用于本地开发