ローカルにある画像をS3にアップロードしてみた
ローカルにある画像をnode.jsのnode-s3を使ってS3へ画像をアップロードしてみました。とてもシンプルな方法ですが、簡単にまとめてみたいと思います。
photo by Mr. Alex Garcia - Double Cliche on flickr
手順
まず今回やることからまとめてみたいと思います。
- AWSマネジメントコンソールでIAMからユーザーを作成。作成後はアクセス・キーをダウンロードしておく
- IAM > ポリシーでS3にアップロードできる権限
AmazonS3UploadOnly
ポリシーを作成 - IAM > ユーザーから作成したポリシーをアタッチする
- S3 > バケットを作成でバケット
your-bucket
を新規に作成する - S3で作成したバケット以下に
upload
フォルダーを作成する - ローカルで
node-s3
をnpmインストールする - index.jsを作成し、node.jsを実行する
Ads
IAMからポリシーを作成
ユーザー作成方法は割愛します。ポリシーについては、AWSマネジメントコンソール > IAM > ポリシーより、S3にアップロードできる権限を作成していきます。今回の例ではAmazonS3UploadOnly
ポリシーという名前にしました。
1 | { |
上記では、S3のyour-bucket
のupload
フォルダーにアップロードする事を許可しています。
nodeのコードを書く
続いて、ローカルでnode.jsの実装をします。まずは、npmからs3をインストールします。
1 | $ cd your-project |
続いてindex.js
を作成します。
1 | $ vim index.js |
index.js
には以下のようなコードを記述します。こちらはnode-s3のサンプルとほぼ同じです。
1 | var s3 = require('s3'); |
ローカルでアップロードを実行
index.js
を作成したらnode.jsで実行します。done uploading
と表示されると、アップロードは成功です。unable to upload: AccessDenied: Access Denied
と表示されるとIAMやポリシー、S3のアクセス権限が上手く行っていません。
1 | $ node index.js |