AWSSDKのAPIを使ってAWSのサービスを使う際、ユーザーのホームディレクトリにある.aws/credentialsを使って認証されますが、ローカルのDockerで実行時にはこれが無いためAPIの呼び出しに失敗します。 docker-compose.ymlで認証情報を共有できるようにします。
実行環境
- Visual Studio 2022 Version 17.2.0
- .NET 6
- ASP.NET Core Razer Pages
- Docker Engine v20.10.14
docker-compose.ymlの作成
Visual Studioのソリューションエクスプローラーでプロジェクトを右クリックして追加→コンテナーオーケストレーターのサポートを選択します。
作成されたdocker-compose.ymlにvolumesを追加します。
version: '3.4' services: containerdebugsample: image: ${DOCKER_REGISTRY-}containerdebugsample build: context: . dockerfile: ContainerDebugSample/Dockerfile volumes: - ~/.aws/:/root/.aws:ro
Docker Composeという起動プロファイルが自動的に追加されているので、このプロファイルでデバッグ実行します。
これでホストマシン上の~/.awsがコンテナ上の/roor/.awsにコピーされ、Dockerコンテナ上でアプリをデバッグ実行してもちゃんと認証が通りAWSのサービスが使えるようになります。