Node.jsでAmazon S3にアップロードする方法(アクセスコントロール編)
前回、普通にS3にアップロードする方法を調べました。
今回は規定のアクセスコントロールを使って、アップロード時に表示・ダウンロードなどのパーミッションを設定する方法をメモします。
S3のアクセスコントロールの種類は公式サイトに記載があります。
Access Control List (ACL) Overview - Amazon Simple Storage Service
全パターンでアップロードしてみました。
app.js
var AWS = require('aws-sdk'); AWS.config.update({ accessKeyId: 'ACCESS_KEY', secretAccessKey: 'SECRET_KEY', //region: 'us-east-1' region: 'ap-northeast-1' }); var s3 = new AWS.S3(); var params = [ { Bucket: 'zebevogue', Key: 'private', ACL:'private', Body: 'private' }, { Bucket: 'zebevogue', Key: 'public-read', ACL:'public-read', Body: 'public-read' }, { Bucket: 'zebevogue', Key: 'public-read-write', ACL:'public-read-write', Body: 'public-read-write' }, { Bucket: 'zebevogue', Key: 'authenticated-read', ACL:'authenticated-read', Body: 'authenticated-read' }, { Bucket: 'zebevogue', Key: 'bucket-owner-read', ACL:'bucket-owner-read', Body: 'bucket-owner-read' }, { Bucket: 'zebevogue', Key: 'bucket-owner-full-control', ACL:'bucket-owner-full-control', Body: 'bucket-owner-full-control' }, { Bucket: 'zebevogue', Key: 'log-delivery-write', ACL:'log-delivery-write', Body: 'log-delivery-write' } ] ; for (var i in params) { s3.client.putObject(params[i]).done(function(resp) { console.log("Successfully uploaded data to " + resp.params.Key); }); }
それぞれのACLでアップロードしてみました。
例えば、authenticated-readの場合、以下のようなパーミッションになります。
※コールバック関数の引数respにはURLなども確認できますので、事後処理に使えます。