iamTweetはじめにDocBaseでは新機能追加以外にも、日々いろいろな改善を行ってます。ロールに移行した話を書きます。ロールを使うことでアプリケーション側で、認証情報を管理をする必要がなくなるのでセキュリティを高めることができます。v1carrierwaveでS3に画像をアップロードするのにfogを使ってました。aws-sdk-rubyはAWSが提供してるAWSのAPIをRubyから使えるgemです。fogの場合はfog-awsというgemで独自実装しています。ロールから認証情報を取得する仕組みはどちらのgemでもできますが、同じことやるgemが2つ入ってる状態になってしまっているので、なんとかaws-sdkのgemに統一できないかと調べました。調べたところcarrierwave-awsがありました。carrierwave-awsはs3にアップロードするのにaws-sdk-rubyのv2を使ってましたので使えそうでした。v1からv2にアップデートして、fogは使わない方針にしました。v1についてはこちらの記事に書かれてますが、v2だとソースコードが全く新しくなっていたので調べました。]endstatic_credentialsenv_credentialsshared_credentialsinstance_profile_credentialsの順に実行されますが、認証情報が取得できたらそこで処理は終了するようになってました。config.session_token)end引数で渡した認証情報がセットされます。envar(token))end環境変数で設定したものが認証情報としてセットされます。shared_credentialsaws-sdk-core/lib/aws-sdk-core/shared_credentials.rbデフォルトだと~/.aws/credentialsに書いた設定から認証情報としてセットされます。ロールから認証情報を取得するようになっています。http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-opsworks-ec2-roleでロール名が取得できます。"2015-11-12T09:06:30Z"}そのロール名を指定することで認証情報が取得できます。これらの情報は、そのEC2インスタンスのサーバーからじゃないと取得できないようになってます。ロールが使えない)場合static_credentialsenv_credentialsshared_credentialsのどれかで、認識情報を設定します。付きで起動することで、instance_profile_credentialsが使えるので、アプリ側に認証情報を設定する必要はなくなります。Roleを使うことで、アプリケーション側に認識情報を設定する必要がなくなったのと、特定のEC2インスタンスに対して、特定のリソースのみ(例えば特定のS3のバケットのみアクセスできるように制限する)などのことがやりやすくなったのが良い点だと思いました。宣伝DocBaseとはチームを育てるをコンセプトにした情報共有サービスです。メモという形で小さく始められる、エンジニア以外のメンバーでも使いやすい仕組み、情報をまとめて整理できる、柔軟な権限設定で様々なプロジェクトで使えるなど、積極的な情報共有と業務の効率化を実現し、チームの成長を促します。モダンでインタラクティブなAPIドキュメ...「いいね!」で応援よろしくお願いします!このエントリーに対するコメントコメントはまだありません。date*日本語が含まれない投稿は無視されますのでご注意ください。fax.0422-26-9781お問い合わせはこちらからどうぞ。