シークレットキーを安全な場所に保管することに関する配備のセキュリティを向上させたいと考えていました。EC2のDockerがS3への接続に失敗しました
だから私は、このチュートリアルの後:私は自分のプロジェクト(タスク内の秘密と正常に動作フラスコアプリケーションを使用していますHow to Manage Secrets for Amazon EC2 Container Service–Based Applications by Using Amazon S3 and Docker しかし、CloudWatchのテンプレートなし(私はすでにVPC、クラスタや他のインスタンスを持っている) を
私はS3バケット、VPCエンドポイントをセットアップして、すべて正常に動作します。 しかし、ときに私ドッキングウィンドウコンテナが起動し、私はエラーを得た:
エントリポイントスクリプトがコマンドaws s3 cp s3://${SECRETS_BUCKET_NAME}/secrets.txt -
注意を実行すると、基本的に発生
download failed: s3://[my-bucket]/[my-secrets].txt to - An error occurred (403) when calling the HeadObject operation: Forbidden
:私は、タスク定義でSECRETS_BUCKET_NAMEを定義しただけでなく、秘密にする必要のない他の変数。
まず、私のインスタンスに正しい役割がないと思ったので、デバッグの目的でAdministratorAccessポリシーを付けましたが、成功しませんでした。
第2に、Dockerコンテナがホスト(EC2インスタンス)の資格情報を共有しているため、aws-cliバンドルのインスタンスに直接インストールし、AdministratorAccessポリシーを持つユーザーの資格情報を設定しました。
aws s3 cp s3://${SECRETS_BUCKET_NAME}/secrets.txt -
私のインスタンス上でコマンドをログインし、それが正常に動作しますが、私のコンテナはまだ403エラーを取得したときに今、私は手動で実行することができます。
誰も私が間違っているのかのアイデアを持っている場合私のEC2インスタンスは(不気味、AWS-CLIは含まれません)AMZN-AMI-2017.03.c-アマゾン-ECS-最適化された画像
です...
実行中のコンテナに接続し、 'env'を実行して、' SECRETS_BUCKET_NAME'がコンテナ内に定義されているかどうか確認してください。 –
'SECRET_BUCKET_NAME'が定義されています。コマンドを実行する前にチェックがあります。 'docker inspect [container]'はそこにあることを示しています。 – CloC
あなたのコンテナに 'docker run --net = host'を使い、それが動作するかどうか確認してください。 –