Railsアプリケーションで外部からのファイルを受け取るためにEC2とS3のセットアップをしてみました。HerokuはDyno単位で動作するという特性上、ファイルシステムをもっていません。だいたい皆さんS3を使っているみたいなので、以下の手順でファイルの受け渡しをしてみることにしました。EC2をSFTPサーバとして外部からファイルを受け取るEC2はファイルのバリデーションをしてS3と必要なデータをSyncHerokuのアプリケーションがS3からデータ取得ちなみに、むかーしにEC2のインスタンスをちょっと立てて放置したことがあるくらいで、AWSはほぼ初心者です。S3とりあえずS3の設定をしてみます。Service)に従って進めたらBucketを作ってAmazonのコンソールからファイルをアップロードする所まではすぐにできました。Bucketを作ります。RegionはHerokuに合わせてUSにしておく。S3のConsoleから管理ができる。Serverとして使うEC2の設定です。Instances)通りに進めればすぐにインスタンスが立てられます。Hat、SUSE、UbuntuからWindowsまで選択肢が多くて困る。Linuxを基準にしてあるみたいなので。後はメモリやCPUやストレージサイズなどを適当に選んでいけばインスタンスが立ちます。Keyを使ってsshで接続すればすぐにLoginできます。EC2のConsoleからInstance増やしたりVolume追加したりなどの管理ができます。Volumeの作成とマウントもしといた。VolumeはEC2のコンソールから作るだけ。初回のみはVolumeのフォーマットが必要なので注意。ないとマウントでエラーになります。Interface)。Keyの設定とかPythonライブラリのインストールとかあって若干めんどくさい。Pythonで書かれてるらしいんだけど、Localeの設定をしてあげないと以下のように盛大に死ぬので注意。Credentialの管理ページから作れる。Keyを設定すると~/.aws/configに設定ファイルが作られる。jsonやっとアクセスできるようになった。StandardではなくEC2と同じRegionでS3のBucketを作り直したら上手く行った。configureで指定したregionと違う場合は--regionオプションで指定してあげないと上手く行かない。s3/testSFTP用のユーザ作成さすがにec2-userでファイルを送るのは問題なので、SFTP用のユーザを作成。これは素直にUnixのアカウントを作ってsshの設定をしてあげるだけ。successfully.公開鍵を置いてPerissionの設定。.ssh/authorized_keysこれでとりあえず、SFTPでデータを置いてS3にSyncするところまでは完成。Labというイギリスのケンブリッジにあるスタートアップ企業でプロジェクトマネジメントやシステム設計から開発までしています。2007年に新卒でJPモルガン証券に入社し債券リサーチやリスク管理システムの開発に携わる。2012年4月からグリーでSNSアプリやMessengerアプリの開発に従事。2013年8月より現職。