ひでぼ~blog

C#ときどきゲーム

Docker環境でC#プログラム実行時にローカルのAWS認証情報を渡す

AWS SDKAPIを使ってAWSのサービスを使う際、ユーザーのホームディレクトリにある.aws/credentialsを使って認証されますが、ローカルのDockerで実行時にはこれが無いためAPIの呼び出しに失敗します。 docker-compose.ymlで認証情報を共有できるようにします。

実行環境

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のサービスが使えるようになります。

参考

qiita.com