【发布时间】:2021-10-08 10:30:15
【问题描述】:
我有一个 Asp.NetCore5.0 应用程序。
我构建了一个 docker 镜像,例如:
# syntax=docker/dockerfile:1
FROM mcr.microsoft.com/dotnet/aspnet:5.0
COPY bin/Release/netcoreapp3.1/publish/ App/
WORKDIR /App
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
应用程序应使用 AWS Parameter Store,例如:
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
var envName = hostingContext.HostingEnvironment.EnvironmentName.ToString().ToLower();
config.AddSystemsManager($"/{envName}", TimeSpan.FromMinutes(5));
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
它在我的本地机器上运行(我在本地机器上安装了 AWS Cli)没有任何问题。
但它不能在我的 Linux 服务器上的 Docker 容器内运行
(AWS Cli 安装在服务器上 [不在 Docker 内] 并经过测试)。
服务器不是 AWS 云的一部分。
例外
Unhandled exception. System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> Amazon.Runtime.AmazonClientException: No RegionEndpoint or ServiceURL configured
at Amazon.Runtime.ClientConfig.Validate()
at Amazon.Runtime.AmazonServiceClient..ctor(AWSCredentials credentials, ClientConfig config)
at Amazon.SimpleSystemsManagement.AmazonSimpleSystemsManagementClient..ctor(AWSCredentials credentials, AmazonSimpleSystemsManagementConfig clientConfig)
--- End of inner exception stack trace ---
我已经尝试将未配置 RegionEndpoint 或 ServiceURL 传递为 ENV 等等,但没有成功。
docker run -d -p 12080:80 -e AWS_ACCESS_KEY_ID=thisIsMyId -e AWS_SECRET_ACCESS_KEY=secret --name nameoftheapi dockerhubuser/nameoftheapi:262
docker run -d -p 12080:80-v $HOME/.aws/credentials:/home/app/.aws/credentials:ro --name nameoftheapi dockerhubuser/nameoftheapi:262
同样的例外。
如何从 Docker 容器内部访问 AWS Cli?
我是否需要 Docker 中的 AWS Cli?有没有其他解决方案可以做这样的事情?
提前致谢
【问题讨论】:
-
“不工作” - 不具体。到底发生了什么?有任何错误信息吗?
-
抱歉,请查看更新后的帖子。
-
您不需要在 Docker 中使用 AWS Cli。向我们展示如何将 ENV 传递到容器中
-
我尝试使用 docker run -e AWS_ACCESS_KEY_ID=thisIsMyId -e AWS_SECRET_ACCESS_KEY=secret 传递信誉
标签: linux amazon-web-services docker asp.net-core