2016-09-01 12 views
0

私はパブリックサブネットにEC2インスタンスを持って、
EC2は、それに接続されているS3フルアクセスの役割を持っています。
.jarがS3フォルダにあります。
S3バケットはデフォルトの権限を持ち、バケットの作成時に適用されます。私が何をしたいか

EC2ユーザーデータS3のオブジェクトをフェッチする

は、ユーザーデータのスクリプトを実装S3場所からEC2上の.jarをダウンロードします
です。
私はS3公開での.jarを行わない場合は、私からそれをwgetをすることはできませんよ、私はの.jar公開
を作るときにのみの.jarをwgetをすることができ

ていますEC2
セキュリティ上の理由から.jarを公開したくありません。

S3から.jarを取得するには、.jarを公開せずにどうすればよいですか?

ここに私のユーザーデータスクリプトだ -

​​

答えて

3

方法EC2 Instance IAM Roles仕事をよりよく理解するためのマニュアルを参照してください。

S3と他のAWS APIはインスタンスを直接識別できません。依頼には依然として署名が必要です。 IAMインスタンスの役割は、簡単にアクセスできる、常に新鮮な比較的短命の一時的な資格情報(親しんでいるアクセスキーIDとアクセスキーの秘密)と、リクエストの署名と送信にも使用する必要があるトークン。これらの三つの要素を持つ

  • 、実行時に署名したURLを生成し、wgetのためにそれを渡すことができ、または
  • あなたが組み込まれているサポートインスタンスの役割を取得して使用するためのaws-cliでファイルをフェッチすることができます資格情報または
  • 環境に合っている場合は、S3に接続する際にインスタンスが使用するIPアドレスを信頼するようにバケットポリシーを構成し、そのアドレスからの要求を成功させることができます。 NATインスタンスまたはNATゲートウェイを使用している場合、またはインスタンスでElastic IPアドレスを使用している場合は、これは簡単です。 S3のVPCエンドポイントを設定する場合はサポートされません。

おそらく、上記の選択肢の最も簡単なものは、AWS-CLIを使用しています。現在の環境のパスと作業ディレクトリが知られていない可能性があるためか、予想通りのスクリプトで、それは、コマンドやファイルの完全修飾パスを使用するために通常は良いアイデアだと

/usr/local/bin/aws s3api get-object --bucket example-bucket --key path/in/s3/to/my_object.txt /tmp/local-file-name.txt 

注意。この場合、aws CLI実行ファイルが/usr/local/bin/にインストールされており、ダウンロードしたファイルを/tmp/に書き込むとします。環境に合わせてカスタマイズしてください。

も参照してください。インストールの場合はhttp://docs.aws.amazon.com/cli/latest/userguide/installing.html、このアプリケーションの場合はaws-cliの使用についてはhttp://docs.aws.amazon.com/cli/latest/reference/s3api/get-object.htmlを参照してください。

+0

しかし、私は.jarを自動的にフェッチする必要があります。自動スケーリングでは、どうすればそれを達成できますか? User Data bashスクリプトを使用して.jarをフェッチしていました。 –

+0

@AniruddhaRaje aws-cliは自動化に適しており、使い方は簡単です。私は例の使用法と答えへのリンクを追加しました。ユーザーデータスクリプトにコマンドを含めます。 –

+0

この例をお寄せいただきありがとうございます。キーパスビットは必要ありません。私は役割を使用しているので? –

1

wget経由でファイルを取得しても、あなたの身元はわかりません。 Amazon S3バケットのコンテンツはデフォルトで非公開であり、匿名ユーザーは利用できません。

あなたは、APIコールを介して、または例えば、AWS Command-Line Interface (CLI)を使用してバケットにアクセスすることができます。

aws s3 cp s3://BUCKET-NAME/FILENAME.zip . 

CLIは、AWS用のPython SDKを使用してPythonアプリケーションです。ロールで起動された結果、インスタンスに割り当てられた資格情報を取得する方法を知っています。

CLIがインスタンスにインストールされているかどうかを確認します。そうでない場合は、使用する前にインストールしてください。

+0

私はユーザーデータのbashスクリプトを使用して、S3から公開されたpublic .jarをフェッチしました。どのようにあなたのcliコマンドを使用していますか?プロセスを自動化したいのですか? –

関連する問題