1.AWSコンソール上で、CORSの設定をする。
以下を参考に実施。設定をしないと、クロスドメインリクエスト許可されていないのでエラーになる。
2.Cognitoの設定をする。
上記の記事を参考に以下を実施する
- Amazon Cognito で Identity Pool の作成(作成したPool IDを控えておく)
- IAM ロールの設定
3.S3のConfig情報を確認する。
必要な情報
- バケットネーム
- リージョン
4.JavaScriptのコードを書く。
ファイルをローカルからアップしてアップロードボタンを押すとアップロードされるサンプル
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <!-- aws-sdk読み込み --> <script src="https://sdk.amazonaws.com/js/aws-sdk-2.12.0.min.js"></script> </head> <body> <p> <input id="upload" name="upload" type="file"> </p> <button onclick="uploadFile()"> アップロード </button> <script> // AWS Config情報 const bucketName = 'バケットネーム'; const region = 'リージョン'; // Cognito Pool ID const poolId = 'プールID'; // S3にファイルをアップロードする関数 const uploadFile = function() { const params = { IdentityPoolId: poolId } AWS.config.region = region AWS.config.credentials = new AWS.CognitoIdentityCredentials(params) const file = $('input[type=file]').prop('files')[0] AWS.config.credentials.get(function (err) { if (!err) { var bucket = new AWS.S3({ params: { Bucket: bucketName } }) var params1 = { Key: file.name, // ディレクトリ分けしたい場合 // Key: 'directory/' + file.name, ContentType: file.type, Body: file } bucket.putObject(params1, function(err, data) { if (data === null) { console.log(err) } }); } }) } </script> </body> </html>
※ディレクトリ分けたい場合は、Keyに文字列を付与する 参考 dev.classmethod.jp