2017-09-29 6 views
-1

すべて、 S3に一時ファイルをアップロードしようとしましたが、正直言ってS3のドキュメント。S3一時的な資格情報を使ってJavascriptでファイルをアップロードする方法

理想的には、私はこれを行うことができる必要があります:

s3Client =新しいAWS.client(新TemporaryCredential(鍵ID、アクセスキー、トークン));

しかし私はドキュメントをチェックします.3Dクライアントを作成するために一時的な資格情報を使用する方法について言及していません。

私たちの会社はすでに一時的な資格情報を取得するためにAPIを持っているので、私は本当にjavascriptでこれを行う方法を知っています。あなたの提案のための

BasicSessionCredentials sessionCredentials = new BasicSessionCredentials(
    session_creds.getAccessKeyId(), 
    session_creds.getSecretAccessKey(), 
    session_creds.getSessionToken()); 

AmazonS3 s3 = AmazonS3ClientBuilder.standard() 
         .withCredentials(new AWSStaticCredentialsProvider(sessionCredentials) 
         .build(); 

ありがとう:JS equivelant Javaコード以下の解決策がある場合、私は知らない

+0

一時的な資格情報とはどういう意味ですか?一時的に署名されたアップロードURLを意味しますか? – bryan60

+0

上記を参照して、どのように私はtempの資格情報をjavaのように同じにすることができますか? – user3006967

+0

nodejsサーバーまたはブラウザでこれを実行しようとしていますか? – bryan60

答えて

1

TemporaryCredentialは通常の資格情報です。通常の方法と同様に使用できます。

AWS.config.update({ 
    region: "us-east-1", 
    credentials: new AWS.Credentials('AccessKeyId', 'SecretAccessKey', 'SessionToken') 
}); 

var s3 = new AWS.S3(); 
var params = { 
    Body: "The quick brown fox jumps over the lazy dog", 
    Bucket: "example-bucket", 
    Key: "hello.txt" 
}; 
s3.putObject(params, function (err, data) { 
    if (err) console.log(err, err.stack); 
    else console.log(data); 
}); 

しかし、私が代わりにSTS TemporaryCredentialのファイルをアップロードするPre-Signed URLを使用している示唆するもの。あなたは、ユーザー/顧客があなたのバケツに特定のオブジェクト ことがアップロードできるようにする場合

事前に署名したURLは便利ですが、あなたはAWSのセキュリティ資格情報やアクセス権を持っている にそれらを必要としません。

からAWS Documentation

クライアント(ブラウザ)が重いAWS SDKをロードする必要はありません、単純なHTTP PUTリクエストが全てです。

var url = 'https://example-bucket.s3.amazonaws.com/hello.txt?blablabla' 
var request = new Request(url, { 
    method: 'PUT', 
    body: "The quick brown fox jumps over the lazy dog", 
}); 
fetch(request).then(function (response) { 
    console.log(response); 
}).catch(function (err) { 
    console.log(err, err.stack); 
}); 
+0

私は現在、プッシュするために事前に署名されたURLを使用しています。しかし、複数の部分からなるアップロードの大きなファイルの場合、サーバー側のAPIに重い各チャンクに署名するために事前署名されたAPIを呼び出す必要があります。したがって、私はtemp資格情報で考えています。バックエンドAPIから1回、次にS3 APIを使用してファイルをS3にプッシュします。あなたはどう思いますか – user3006967

+0

複数パートのシナリオでは、私はあなたに同意します。事前に署名されたURLははるかに複雑です。 [Plupload](https://github.com/moxiecode/plupload/blob/master/examples/jquery/s3.php)が役に立つかもしれませんが、私はテストしていません。 – silverfox

0

ここでは、フォトアルバムを読み込み、アップロード、一覧表示、削除する方法の完全な例を示します。

http://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/s3-example-photo-album.html

AWS.config.update({ 
    region: bucketRegion, 
    credentials: new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: IdentityPoolId 
    }) 
}); 

あなたの会社はすでに一時的な資格情報を取得する方法を持っている場合は、上記の資格情報は、資格情報と、それらの残りの部分を持つオブジェクト置き換えると同じです。

ありがとうございました。

+0

あなたの答えを詳しく説明できますか、どのようにしてtempの資格情報をjavaのものと同じにすることができますか? – user3006967

+0

タイトルとタグはjavascriptに関連していました。 Javaはどこにも見えません。 – Kannaiyan

関連する問題