2016-10-13 18 views
0

自分のプロジェクトにAWSを使用し始めました。重要なファイルをs3バケットにアップロードするプロジェクトを作成したいと思います。他のすべての開発者/ユーザーがアップロードされたドキュメントにアクセスできるように、秘密鍵を公開する必要はありません。どのように始めるべきか指針を提供してください。Java AWS SDK - Java APIからIAMプロファイルを使用してファイルをアップロードする方法

私の現在の実装:

return new AmazonS3Client(new AWSCredentials() { 
    @Override 
    public String getAWSAccessKeyId() { 
    return accessKey; 
    } 

    @Override 
    public String getAWSSecretKey() { 
    return accessKeySecret; 
    }, clientConfiguration) 

その後、私はamazonS3Client.putObject(putReq)を使用します。ファイルをアップロードする。 ここでは、他の同僚がファイルをダウンロード/表示できるようにするキーを公開しています。誰でもs3cmd、ブラウザプラグインなどからファイルをダウンロード/アップロードすることができます。

AWSのドキュメントを読むと、EC2インスタンスを使用してIAMプロファイルを設定できることが分かりました。私はJavaコードでどうすればいいのか分かりません。リンクと例を入力してください

+0

http://stackoverflow.com/questions/15076645/amazon-s3-write-only-accessの可能性のある重複この質問は、各ユーザーにS3バケット内の別のフォルダを与える - ユーザーにはありませんお互いのフォルダにアクセスする –

+0

質問は、インスタンスのIAMロールから資格を取得する方法に焦点を当てています。 – jbird

+0

それは、他の同僚がファイルをダウンロード/表示できるように私の鍵を公開してしまうことを防ぐものではないでしょうか? –

答えて

1

InstanceProfileCredentialsProviderクラスを見てください。インスタンスのメタデータからIAMクレデンシャル(アクセス/秘密鍵)を取得します。 S3へのアクセスを許可するポリシーを持つIAMロールでインスタンスを起動します。

AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(新しいInstanceProfileCredentialsProvider()) .build()。

Source reference

0

ユーザーがS3にアップロードするアクセス権が必要な場合は、キーにアクセスする必要があります。そのことについては何もできません。

あなたができることは、S3にファイルをアップロードする権限を持っているが、読み込み/ダウンロードの権限がないキーを与えることです。したがって、PutObject権限を持つアップロードポリシーと、List/Get権限を持つ読み取りポリシーがあります。

関連する問題