質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

2535閲覧

Rails6 アプリをAWS EC2にデプロイする際のcredentials周り

_dana

総合スコア15

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/08/20 08:57

Rails6 で開発したアプリをAWSのEC2インスタンスでデプロイしたいのですが、secretの扱いがよくわかりません

現在参考にしているサイトが旧バージョンのRailsを想定しており、rails6でのやり方を知りたいです

上記のサイトでは、config/secrets.ymlbundle exec rake secretで表示された数字を記述するよう書いてあります
しかし、rails 5.2以降secrets.ymlが廃止されており、credentials.yml.encになっているためこの方法が取れないのではないでしょうか

credentials.yml.encgitignoreに設定されているため、git clone時点では本番環境に降りてきていません
ローカルでcredentials.yml.encを開くと、

bash

1# aws: 2# access_key_id: 123 3# secret_access_key: 345

と表記されています
このawsのkeyなどはどこで取得できますでしょうか
また、本番環境にクローンできないファイルにawsの環境を記述する意味はないように思うのですが、そもそもどのようにしてデプロイするべきなのでしょうか

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

また、本番環境にクローンできないファイルにawsの環境を記述する意味はないように思うのですが

AWSへ反映するのであれば、AWSのキーはキーとして直接設定するのではなく、IAMロールを使ってAWSサイドの設定で片付けてしまうことをおすすめします。

投稿2020/08/20 09:01

maisumakun

総合スコア145930

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_dana

2020/08/20 09:26

ご回答ありがとうございます IAMロールの理解がかなり不足しているのですが、 その場合credential等はいじらないという認識で良いのでしょうか
maisumakun

2020/08/20 10:45

そうですね。AWSのコンソールなりCUIなりで設定するものなので、Rails側には何も書きません。
_dana

2020/08/20 14:33

お手数でなければお聞きしたいのですが、そもそもcredentials等にawsのsecret_keyを記述するのはなぜですか? その辺りが全く理解できていないので。
yu_1985

2020/08/20 15:01

AWSのリソースにアクセスするのにアクセスキーとシークレットキーを使用する場合はそれを記述して使います。 ただし、AWSの内部からAWSのリソースにアクセスする場合はIAMロールを使用することが推奨されているため、基本的にキーは使わないほうがよいです。 アクセスキーとシークレットキーさえあればどこからでもAWSのリソースが操作できてしまう上、キーが外部に漏れた場合には悪用されるまでそれを検知する方法がないからです。 キーを使用するのはAWSの外部からAWSのリソースにアクセスが必要な場合のみに限るべきです。 複数の認証情報が存在する場合、どれを優先的に使うかは下記をご参照ください。 RubyのSDKの場合について書いてありますが、基本的にはcliやSDK全てでほぼ共通の優先順位です。 IAMロールだけ設定して、他の認証情報を何も記述しなければ基本的にはIAMロールに設定されている権限を使ってくれます。 https://docs.aws.amazon.com/ja_jp/sdk-for-ruby/v3/developer-guide/setup-config.html
_dana

2020/08/20 15:07

毎度本当にありがとうございます。 「EC2の本番環境からRDSなどのリソースにアクセスするためにrailsアプリのcredentialsにアクセスキー等を記述していたけどIAMロールでEC2からRDSへの接続を許可すればその記述は必要なくなる」 という認識で合っていますでしょうか
yu_1985

2020/08/20 15:34

> IAMロールでEC2からRDSへの接続を許可すれば それは違います。 そこで言っている「RDSへのアクセス」はあくまでもDB接続です。 AWSのリソースへのアクセスとは、例えばRDSだったらインスタンスタイプの変更だったり、設定変更だったりの話で、内部のデータベースへのアクセスはまた別物です。(紛らわしいですが、ユーザとパスワードの代わりにIAMの認証情報でRDSのデータベースへアクセスさせることも可能ではあります。) WEBサーバ側から必要な権限だと、典型的なのはS3へのアクセス権限ですかね。 他によくあるのはSSMの権限とCloudWatchにメトリクスを送る権限とかです。
_dana

2020/08/20 16:12

ありがとうございます わからないことがまだまだ多いのでもっと勉強していこうと思います。 この件について新しく質問を立てたのでこちらの方にご回答いただけると大変ありがたいです https://teratail.com/questions/286219?modal=q-comp
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問